summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2017-05-23 04:56:13 -0400
committerOz Linden <oz@lindenlab.com>2017-05-23 04:56:13 -0400
commit069dd355f90116b500065b40bfb36622be1faee5 (patch)
treefe6cf12e89a715f46cf4e95ad91a5cf7f0e0c8a9 /indra
parentf9e049c9e5cc01b464e66cab3e34e33864946c0c (diff)
parent48af8529a80052e9bc42f81f36896739f8aff861 (diff)
merge changes for 5.0.5-release
Diffstat (limited to 'indra')
-rw-r--r--indra/llcommon/CMakeLists.txt15
-rw-r--r--indra/llcommon/lleventfilter.cpp245
-rw-r--r--indra/llcommon/lleventfilter.h161
-rw-r--r--indra/llcommon/llsingleton.cpp32
-rw-r--r--indra/llcommon/llstring.h23
-rw-r--r--indra/llcommon/lluri.cpp7
-rw-r--r--indra/llcommon/lluri.h8
-rw-r--r--indra/llcommon/tests/listener.h11
-rw-r--r--indra/llcommon/tests/lleventfilter_test.cpp124
-rw-r--r--indra/llinventory/llparcel.h5
-rw-r--r--indra/llmessage/llregionflags.h3
-rw-r--r--indra/llmessage/message_prehash.cpp3
-rw-r--r--indra/llmessage/message_prehash.h2
-rw-r--r--indra/llprimitive/lldaeloader.cpp4
-rw-r--r--indra/llui/llnotifications.cpp18
-rw-r--r--indra/llui/lltextbase.cpp37
-rw-r--r--indra/llui/lltextbase.h11
-rw-r--r--indra/llui/llurlentry.cpp2
-rw-r--r--indra/llvfs/lldir.cpp11
-rw-r--r--indra/llwindow/llwindowwin32.cpp2
-rw-r--r--indra/newview/CMakeLists.txt4
-rw-r--r--indra/newview/VIEWER_VERSION.txt2
-rw-r--r--indra/newview/app_settings/settings.xml70
-rw-r--r--indra/newview/llagent.cpp2
-rw-r--r--indra/newview/llappearancemgr.cpp41
-rw-r--r--indra/newview/llavataractions.cpp1
-rw-r--r--indra/newview/llenvmanager.cpp21
-rw-r--r--indra/newview/llestateinfomodel.cpp8
-rw-r--r--indra/newview/llestateinfomodel.h2
-rw-r--r--indra/newview/llexpandabletextbox.cpp2
-rw-r--r--indra/newview/llfloateravatarrendersettings.cpp49
-rw-r--r--indra/newview/llfloateravatarrendersettings.h4
-rw-r--r--indra/newview/llfloaterimnearbychat.cpp3
-rw-r--r--indra/newview/llfloaterland.cpp23
-rw-r--r--indra/newview/llfloaterlinkreplace.cpp396
-rw-r--r--indra/newview/llfloaterlinkreplace.h127
-rw-r--r--indra/newview/llfloatermodelpreview.cpp4
-rw-r--r--indra/newview/llfloaterpreviewtrash.cpp82
-rw-r--r--indra/newview/llfloaterpreviewtrash.h49
-rw-r--r--indra/newview/llfloaterregioninfo.cpp24
-rw-r--r--indra/newview/llfloaterregioninfo.h1
-rw-r--r--indra/newview/llimview.cpp91
-rw-r--r--indra/newview/llinventorybridge.cpp35
-rw-r--r--indra/newview/llinventorybridge.h3
-rw-r--r--indra/newview/llinventoryfunctions.cpp20
-rw-r--r--indra/newview/llinventorymodel.cpp33
-rw-r--r--indra/newview/llinventorymodel.h1
-rw-r--r--indra/newview/llinventorymodelbackgroundfetch.cpp18
-rw-r--r--indra/newview/llinventorypanel.cpp35
-rw-r--r--indra/newview/llinventorypanel.h3
-rw-r--r--indra/newview/lllogchat.cpp35
-rw-r--r--indra/newview/llmeshrepository.cpp10
-rw-r--r--indra/newview/llmutelist.cpp23
-rw-r--r--indra/newview/llmutelist.h3
-rw-r--r--indra/newview/lloutfitgallery.cpp30
-rw-r--r--indra/newview/lloutfitgallery.h3
-rw-r--r--indra/newview/lloutfitslist.cpp2
-rw-r--r--indra/newview/llpanelblockedlist.cpp1
-rw-r--r--indra/newview/llpanelface.cpp326
-rw-r--r--indra/newview/llpanelface.h13
-rw-r--r--indra/newview/llpanelmaininventory.cpp20
-rw-r--r--indra/newview/llpanelobjectinventory.cpp2
-rw-r--r--indra/newview/llpanelpeople.cpp10
-rw-r--r--indra/newview/llpanelpermissions.cpp86
-rw-r--r--indra/newview/llscriptfloater.cpp131
-rw-r--r--indra/newview/llscriptfloater.h17
-rw-r--r--indra/newview/llsidepaneliteminfo.cpp19
-rw-r--r--indra/newview/llsky.cpp1
-rw-r--r--indra/newview/llstartup.cpp1
-rw-r--r--indra/newview/llviewerassetupload.cpp27
-rw-r--r--indra/newview/llviewerfloaterreg.cpp4
-rw-r--r--indra/newview/llviewermessage.cpp9
-rw-r--r--indra/newview/llviewerobject.cpp18
-rw-r--r--indra/newview/llviewerobject.h4
-rw-r--r--indra/newview/llviewerparcelmgr.cpp229
-rw-r--r--indra/newview/llviewertexteditor.cpp4
-rw-r--r--indra/newview/llvoavatar.cpp7
-rw-r--r--indra/newview/llvovolume.cpp2
-rw-r--r--indra/newview/llwaterparammanager.cpp1
-rw-r--r--indra/newview/llwlparammanager.cpp43
-rw-r--r--indra/newview/llwlparammanager.h8
-rw-r--r--indra/newview/skins/default/xui/de/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/de/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/de/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/de/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/de/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/de/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/de/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/de/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/de/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/de/notifications.xml46
-rw-r--r--indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/de/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_notify_textbox.xml7
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_uploads.xml18
-rw-r--r--indra/newview/skins/default/xui/de/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/de/strings.xml26
-rw-r--r--indra/newview/skins/default/xui/en/floater_about_land.xml48
-rw-r--r--indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_linkreplace.xml106
-rw-r--r--indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml10
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_trash.xml94
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml44
-rw-r--r--indra/newview/skins/default/xui/en/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory.xml10
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_login.xml10
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml4
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml152
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_chat.xml12
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_estate.xml157
-rw-r--r--indra/newview/skins/default/xui/en/panel_tools_texture.xml16
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml19
-rw-r--r--indra/newview/skins/default/xui/es/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/es/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/es/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/es/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/es/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/es/notifications.xml50
-rw-r--r--indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/es/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_notify_textbox.xml5
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_uploads.xml19
-rw-r--r--indra/newview/skins/default/xui/es/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/es/strings.xml26
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/fr/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/fr/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml48
-rw-r--r--indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_notify_textbox.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_uploads.xml19
-rw-r--r--indra/newview/skins/default/xui/fr/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml26
-rw-r--r--indra/newview/skins/default/xui/it/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/it/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/it/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/it/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/it/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/it/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/it/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/it/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/it/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/it/notifications.xml47
-rw-r--r--indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/it/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/it/panel_notify_textbox.xml5
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_uploads.xml19
-rw-r--r--indra/newview/skins/default/xui/it/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/it/strings.xml27
-rw-r--r--indra/newview/skins/default/xui/ja/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/ja/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/ja/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/ja/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/ja/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/notifications.xml41
-rw-r--r--indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/ja/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_notify_textbox.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_uploads.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/strings.xml23
-rw-r--r--indra/newview/skins/default/xui/pt/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/pt/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/pt/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/notifications.xml50
-rw-r--r--indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/pt/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/panel_notify_textbox.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_uploads.xml19
-rw-r--r--indra/newview/skins/default/xui/pt/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/strings.xml24
-rw-r--r--indra/newview/skins/default/xui/ru/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/ru/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/ru/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/notifications.xml45
-rw-r--r--indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/ru/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/panel_notify_textbox.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_uploads.xml19
-rw-r--r--indra/newview/skins/default/xui/ru/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/strings.xml24
-rw-r--r--indra/newview/skins/default/xui/tr/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/tr/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/tr/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/notifications.xml40
-rw-r--r--indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/tr/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/panel_notify_textbox.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_uploads.xml19
-rw-r--r--indra/newview/skins/default/xui/tr/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/strings.xml24
-rw-r--r--indra/newview/skins/default/xui/zh/floater_about_land.xml4
-rw-r--r--indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml11
-rw-r--r--indra/newview/skins/default/xui/zh/floater_flickr.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/floater_preferences.xml1
-rw-r--r--indra/newview/skins/default/xui/zh/floater_tos.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/menu_attachment_other.xml8
-rw-r--r--indra/newview/skins/default/xui/zh/menu_avatar_other.xml8
-rw-r--r--indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings_add.xml5
-rw-r--r--indra/newview/skins/default/xui/zh/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/menu_inventory.xml9
-rw-r--r--indra/newview/skins/default/xui/zh/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/zh/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/zh/notifications.xml42
-rw-r--r--indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml3
-rw-r--r--indra/newview/skins/default/xui/zh/panel_flickr_photo.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/panel_notify_textbox.xml5
-rw-r--r--indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/zh/panel_preferences_uploads.xml19
-rw-r--r--indra/newview/skins/default/xui/zh/panel_snapshot_options.xml8
-rw-r--r--indra/newview/skins/default/xui/zh/strings.xml26
296 files changed, 4323 insertions, 1001 deletions
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 3493f80556..aa76a57f1d 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -324,26 +324,27 @@ if (LL_TESTS)
LL_ADD_INTEGRATION_TEST(lldeadmantimer "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(lldependencies "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llerror "" "${test_libs}")
+ LL_ADD_INTEGRATION_TEST(lleventdispatcher "" "${test_libs}")
+ LL_ADD_INTEGRATION_TEST(lleventcoro "" "${test_libs}")
+ LL_ADD_INTEGRATION_TEST(lleventfilter "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llframetimer "" "${test_libs}")
+ LL_ADD_INTEGRATION_TEST(llheteromap "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llinstancetracker "" "${test_libs}")
+ LL_ADD_INTEGRATION_TEST(llleap "" "${test_libs}")
+ LL_ADD_INTEGRATION_TEST(llpounceable "" "${test_libs}")
+ LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llprocessor "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llprocinfo "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llrand "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llsdserialize "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llsingleton "" "${test_libs}")
+ LL_ADD_INTEGRATION_TEST(llstreamqueue "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llstring "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(lltrace "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(lltreeiterators "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(lluri "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(llunits "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(stringize "" "${test_libs}")
- LL_ADD_INTEGRATION_TEST(lleventdispatcher "" "${test_libs}")
- LL_ADD_INTEGRATION_TEST(lleventcoro "" "${test_libs}")
- LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs}")
- LL_ADD_INTEGRATION_TEST(llleap "" "${test_libs}")
- LL_ADD_INTEGRATION_TEST(llstreamqueue "" "${test_libs}")
- LL_ADD_INTEGRATION_TEST(llpounceable "" "${test_libs}")
- LL_ADD_INTEGRATION_TEST(llheteromap "" "${test_libs}")
## llexception_test.cpp isn't a regression test, and doesn't need to be run
## every build. It's to help a developer make implementation choices about
diff --git a/indra/llcommon/lleventfilter.cpp b/indra/llcommon/lleventfilter.cpp
index 64ab58adcd..9fb18dc67d 100644
--- a/indra/llcommon/lleventfilter.cpp
+++ b/indra/llcommon/lleventfilter.cpp
@@ -38,12 +38,18 @@
#include "llerror.h" // LL_ERRS
#include "llsdutil.h" // llsd_matches()
+/*****************************************************************************
+* LLEventFilter
+*****************************************************************************/
LLEventFilter::LLEventFilter(LLEventPump& source, const std::string& name, bool tweak):
LLEventStream(name, tweak),
mSource(source.listen(getName(), boost::bind(&LLEventFilter::post, this, _1)))
{
}
+/*****************************************************************************
+* LLEventMatching
+*****************************************************************************/
LLEventMatching::LLEventMatching(const LLSD& pattern):
LLEventFilter("matching"),
mPattern(pattern)
@@ -64,6 +70,9 @@ bool LLEventMatching::post(const LLSD& event)
return LLEventStream::post(event);
}
+/*****************************************************************************
+* LLEventTimeoutBase
+*****************************************************************************/
LLEventTimeoutBase::LLEventTimeoutBase():
LLEventFilter("timeout")
{
@@ -148,6 +157,14 @@ bool LLEventTimeoutBase::tick(const LLSD&)
return false; // show event to other listeners
}
+bool LLEventTimeoutBase::running() const
+{
+ return mMainloop.connected();
+}
+
+/*****************************************************************************
+* LLEventTimeout
+*****************************************************************************/
LLEventTimeout::LLEventTimeout() {}
LLEventTimeout::LLEventTimeout(LLEventPump& source):
@@ -164,3 +181,231 @@ bool LLEventTimeout::countdownElapsed() const
{
return mTimer.hasExpired();
}
+
+/*****************************************************************************
+* LLEventBatch
+*****************************************************************************/
+LLEventBatch::LLEventBatch(std::size_t size):
+ LLEventFilter("batch"),
+ mBatchSize(size)
+{}
+
+LLEventBatch::LLEventBatch(LLEventPump& source, std::size_t size):
+ LLEventFilter(source, "batch"),
+ mBatchSize(size)
+{}
+
+void LLEventBatch::flush()
+{
+ // copy and clear mBatch BEFORE posting to avoid weird circularity effects
+ LLSD batch(mBatch);
+ mBatch.clear();
+ LLEventStream::post(batch);
+}
+
+bool LLEventBatch::post(const LLSD& event)
+{
+ mBatch.append(event);
+ // calling setSize(same) performs the very check we want
+ setSize(mBatchSize);
+ return false;
+}
+
+void LLEventBatch::setSize(std::size_t size)
+{
+ mBatchSize = size;
+ // changing the size might mean that we have to flush NOW
+ if (mBatch.size() >= mBatchSize)
+ {
+ flush();
+ }
+}
+
+/*****************************************************************************
+* LLEventThrottleBase
+*****************************************************************************/
+LLEventThrottleBase::LLEventThrottleBase(F32 interval):
+ LLEventFilter("throttle"),
+ mInterval(interval),
+ mPosts(0)
+{}
+
+LLEventThrottleBase::LLEventThrottleBase(LLEventPump& source, F32 interval):
+ LLEventFilter(source, "throttle"),
+ mInterval(interval),
+ mPosts(0)
+{}
+
+void LLEventThrottleBase::flush()
+{
+ // flush() is a no-op unless there's something pending.
+ // Don't test mPending because there's no requirement that the consumer
+ // post() anything but an isUndefined(). This is what mPosts is for.
+ if (mPosts)
+ {
+ mPosts = 0;
+ alarmCancel();
+ // This is not to set our alarm; we are not yet requesting
+ // any notification. This is just to track whether subsequent post()
+ // calls fall within this mInterval or not.
+ timerSet(mInterval);
+ // copy and clear mPending BEFORE posting to avoid weird circularity
+ // effects
+ LLSD pending = mPending;
+ mPending.clear();
+ LLEventStream::post(pending);
+ }
+}
+
+LLSD LLEventThrottleBase::pending() const
+{
+ return mPending;
+}
+
+bool LLEventThrottleBase::post(const LLSD& event)
+{
+ // Always capture most recent post() event data. If caller wants to
+ // aggregate multiple events, let them retrieve pending() and modify
+ // before calling post().
+ mPending = event;
+ // Always increment mPosts. Unless we count this call, flush() does
+ // nothing.
+ ++mPosts;
+ // We reset mTimer on every flush() call to let us know if we're still
+ // within the same mInterval. So -- are we?
+ F32 timeRemaining = timerGetRemaining();
+ if (! timeRemaining)
+ {
+ // more than enough time has elapsed, immediately flush()
+ flush();
+ }
+ else
+ {
+ // still within mInterval of the last flush() call: have to defer
+ if (! alarmRunning())
+ {
+ // timeRemaining tells us how much longer it will be until
+ // mInterval seconds since the last flush() call. At that time,
+ // flush() deferred events.
+ alarmActionAfter(timeRemaining, boost::bind(&LLEventThrottleBase::flush, this));
+ }
+ }
+ return false;
+}
+
+void LLEventThrottleBase::setInterval(F32 interval)
+{
+ F32 oldInterval = mInterval;
+ mInterval = interval;
+ // If we are not now within oldInterval of the last flush(), we're done:
+ // this will only affect behavior starting with the next flush().
+ F32 timeRemaining = timerGetRemaining();
+ if (timeRemaining)
+ {
+ // We are currently within oldInterval of the last flush(). Figure out
+ // how much time remains until (the new) mInterval of the last
+ // flush(). Bt we don't actually store a timestamp for the last
+ // flush(); it's implicit. There are timeRemaining seconds until what
+ // used to be the end of the interval. Move that endpoint by the
+ // difference between the new interval and the old.
+ timeRemaining += (mInterval - oldInterval);
+ // If we're called with a larger interval, the difference is positive
+ // and timeRemaining increases.
+ // If we're called with a smaller interval, the difference is negative
+ // and timeRemaining decreases. The interesting case is when it goes
+ // nonpositive: when the new interval means we can flush immediately.
+ if (timeRemaining <= 0.0f)
+ {
+ flush();
+ }
+ else
+ {
+ // immediately reset mTimer
+ timerSet(timeRemaining);
+ // and if mAlarm is running, reset that too
+ if (alarmRunning())
+ {
+ alarmActionAfter(timeRemaining, boost::bind(&LLEventThrottleBase::flush, this));
+ }
+ }
+ }
+}
+
+F32 LLEventThrottleBase::getDelay() const
+{
+ return timerGetRemaining();
+}
+
+/*****************************************************************************
+* LLEventThrottle implementation
+*****************************************************************************/
+LLEventThrottle::LLEventThrottle(F32 interval):
+ LLEventThrottleBase(interval)
+{}
+
+LLEventThrottle::LLEventThrottle(LLEventPump& source, F32 interval):
+ LLEventThrottleBase(source, interval)
+{}
+
+void LLEventThrottle::alarmActionAfter(F32 interval, const LLEventTimeoutBase::Action& action)
+{
+ mAlarm.actionAfter(interval, action);
+}
+
+bool LLEventThrottle::alarmRunning() const
+{
+ return mAlarm.running();
+}
+
+void LLEventThrottle::alarmCancel()
+{
+ return mAlarm.cancel();
+}
+
+void LLEventThrottle::timerSet(F32 interval)
+{
+ mTimer.setTimerExpirySec(interval);
+}
+
+F32 LLEventThrottle::timerGetRemaining() const
+{
+ return mTimer.getRemainingTimeF32();
+}
+
+/*****************************************************************************
+* LLEventBatchThrottle
+*****************************************************************************/
+LLEventBatchThrottle::LLEventBatchThrottle(F32 interval, std::size_t size):
+ LLEventThrottle(interval),
+ mBatchSize(size)
+{}
+
+LLEventBatchThrottle::LLEventBatchThrottle(LLEventPump& source, F32 interval, std::size_t size):
+ LLEventThrottle(source, interval),
+ mBatchSize(size)
+{}
+
+bool LLEventBatchThrottle::post(const LLSD& event)
+{
+ // simply retrieve pending value and append the new event to it
+ LLSD partial = pending();
+ partial.append(event);
+ bool ret = LLEventThrottle::post(partial);
+ // The post() call above MIGHT have called flush() already. If it did,
+ // then pending() was reset to empty. If it did not, though, but the batch
+ // size has grown to the limit, flush() anyway. If there's a limit at all,
+ // of course. Calling setSize(same) performs the very check we want.
+ setSize(mBatchSize);
+ return ret;
+}
+
+void LLEventBatchThrottle::setSize(std::size_t size)
+{
+ mBatchSize = size;
+ // Changing the size might mean that we have to flush NOW. Don't forget
+ // that 0 means unlimited.
+ if (mBatchSize && pending().size() >= mBatchSize)
+ {
+ flush();
+ }
+}
diff --git a/indra/llcommon/lleventfilter.h b/indra/llcommon/lleventfilter.h
index 66f3c14869..ff8fc9bc7f 100644
--- a/indra/llcommon/lleventfilter.h
+++ b/indra/llcommon/lleventfilter.h
@@ -177,6 +177,9 @@ public:
/// Cancel timer without event
void cancel();
+ /// Is this timer currently running?
+ bool running() const;
+
protected:
virtual void setCountdown(F32 seconds) = 0;
virtual bool countdownElapsed() const = 0;
@@ -215,4 +218,162 @@ private:
LLTimer mTimer;
};
+/**
+ * LLEventBatch: accumulate post() events (LLSD blobs) into an LLSD Array
+ * until the array reaches a certain size, then call listeners with the Array
+ * and clear it back to empty.
+ */
+class LL_COMMON_API LLEventBatch: public LLEventFilter
+{
+public:
+ // pass batch size
+ LLEventBatch(std::size_t size);
+ // construct and connect
+ LLEventBatch(LLEventPump& source, std::size_t size);
+
+ // force out the pending batch
+ void flush();
+
+ // accumulate an event and flush() when big enough
+ virtual bool post(const LLSD& event);
+
+ // query or reset batch size
+ std::size_t getSize() const { return mBatchSize; }
+ void setSize(std::size_t size);
+
+private:
+ LLSD mBatch;
+ std::size_t mBatchSize;
+};
+
+/**
+ * LLEventThrottleBase: construct with a time interval. Regardless of how
+ * frequently you call post(), LLEventThrottle will pass on an event to
+ * its listeners no more often than once per specified interval.
+ *
+ * A new event after more than the specified interval will immediately be
+ * passed along to listeners. But subsequent events will be delayed until at
+ * least one time interval since listeners were last called. Consider the
+ * sequence below. Suppose we have an LLEventThrottle constructed with an
+ * interval of 3 seconds. The numbers on the left are timestamps in seconds
+ * relative to an arbitrary reference point.
+ *
+ * 1: post(): event immediately passed to listeners, next no sooner than 4
+ * 2: post(): deferred: waiting for 3 seconds to elapse
+ * 3: post(): deferred
+ * 4: no post() call, but event delivered to listeners; next no sooner than 7
+ * 6: post(): deferred
+ * 7: no post() call, but event delivered; next no sooner than 10
+ * 12: post(): immediately passed to listeners, next no sooner than 15
+ * 17: post(): immediately passed to listeners, next no sooner than 20
+ *
+ * For a deferred event, the LLSD blob delivered to listeners is from the most
+ * recent deferred post() call. However, a sender may obtain the previous
+ * event blob by calling pending(), modifying it as desired and post()ing the
+ * new value. (See LLEventBatchThrottle.) Each time an event is delivered to
+ * listeners, the pending() value is reset to isUndefined().
+ *
+ * You may also call flush() to immediately pass along any deferred events to
+ * all listeners.
+ *
+ * @NOTE This is an abstract base class so that, for testing, we can use an
+ * alternate "timer" that doesn't actually consume real time. See
+ * LLEventThrottle.
+ */
+class LL_COMMON_API LLEventThrottleBase: public LLEventFilter
+{
+public:
+ // pass time interval
+ LLEventThrottleBase(F32 interval);
+ // construct and connect
+ LLEventThrottleBase(LLEventPump& source, F32 interval);
+
+ // force out any deferred events
+ void flush();
+
+ // retrieve (aggregate) deferred event since last event sent to listeners
+ LLSD pending() const;
+
+ // register an event, may be either passed through or deferred
+ virtual bool post(const LLSD& event);
+
+ // query or reset interval
+ F32 getInterval() const { return mInterval; }
+ void setInterval(F32 interval);
+
+ // deferred posts
+ std::size_t getPostCount() const { return mPosts; }
+
+ // time until next event would be passed through, 0.0 if now
+ F32 getDelay() const;
+
+protected:
+ // Implement these time-related methods for a valid LLEventThrottleBase
+ // subclass (see LLEventThrottle). For testing, we use a subclass that
+ // doesn't involve actual elapsed time.
+ virtual void alarmActionAfter(F32 interval, const LLEventTimeoutBase::Action& action) = 0;
+ virtual bool alarmRunning() const = 0;
+ virtual void alarmCancel() = 0;
+ virtual void timerSet(F32 interval) = 0;
+ virtual F32 timerGetRemaining() const = 0;
+
+private:
+ // remember throttle interval
+ F32 mInterval;
+ // count post() calls since last flush()
+ std::size_t mPosts;
+ // pending event data from most recent deferred event
+ LLSD mPending;
+};
+
+/**
+ * Production implementation of LLEventThrottle.
+ */
+class LLEventThrottle: public LLEventThrottleBase
+{
+public:
+ LLEventThrottle(F32 interval);
+ LLEventThrottle(LLEventPump& source, F32 interval);
+
+private:
+ virtual void alarmActionAfter(F32 interval, const LLEventTimeoutBase::Action& action) /*override*/;
+ virtual bool alarmRunning() const /*override*/;
+ virtual void alarmCancel() /*override*/;
+ virtual void timerSet(F32 interval) /*override*/;
+ virtual F32 timerGetRemaining() const /*override*/;
+
+ // use this to arrange a deferred flush() call
+ LLEventTimeout mAlarm;
+ // use this to track whether we're within mInterval of last flush()
+ LLTimer mTimer;
+};
+
+/**
+ * LLEventBatchThrottle: like LLEventThrottle, it's reluctant to pass events
+ * to listeners more often than once per specified time interval -- but only
+ * reluctant, since exceeding the specified batch size limit can cause it to
+ * deliver accumulated events sooner. Like LLEventBatch, it accumulates
+ * pending events into an LLSD Array, optionally flushing when the batch grows
+ * to a certain size.
+ */
+class LLEventBatchThrottle: public LLEventThrottle
+{
+public:
+ // pass time interval and (optionally) max batch size; 0 means batch can
+ // grow arbitrarily large
+ LLEventBatchThrottle(F32 interval, std::size_t size = 0);
+ // construct and connect
+ LLEventBatchThrottle(LLEventPump& source, F32 interval, std::size_t size = 0);
+
+ // append a new event to current batch
+ virtual bool post(const LLSD& event);
+
+ // query or reset batch size
+ std::size_t getSize() const { return mBatchSize; }
+ void setSize(std::size_t size);
+
+private:
+ std::size_t mBatchSize;
+};
+
#endif /* ! defined(LL_LLEVENTFILTER_H) */
diff --git a/indra/llcommon/llsingleton.cpp b/indra/llcommon/llsingleton.cpp
index 9025e53bb2..a3a87edd88 100644
--- a/indra/llcommon/llsingleton.cpp
+++ b/indra/llcommon/llsingleton.cpp
@@ -220,6 +220,9 @@ void LLSingletonBase::capture_dependency(list_t& initializing, EInitState initSt
std::find(initializing.begin(), initializing.end(), this);
if (found != initializing.end())
{
+ list_t::const_iterator it_next = found;
+ it_next++;
+
// Report the circularity. Requiring the coder to dig through the
// logic to diagnose exactly how we got here is less than helpful.
std::ostringstream out;
@@ -238,11 +241,30 @@ void LLSingletonBase::capture_dependency(list_t& initializing, EInitState initSt
// otherwise we'd be returning a pointer to a partially-
// constructed object! But from initSingleton() is okay: that
// method exists specifically to support circularity.
- // Decide which log helper to call based on initState. They have
- // identical signatures.
- ((initState == CONSTRUCTING)? logerrs : logwarns)
- ("LLSingleton circularity: ", out.str().c_str(),
- demangle(typeid(*this).name()).c_str(), "");
+ // Decide which log helper to call.
+ if (initState == CONSTRUCTING)
+ {
+ logerrs("LLSingleton circularity in Constructor: ", out.str().c_str(),
+ demangle(typeid(*this).name()).c_str(), "");
+ }
+ else if (it_next == initializing.end())
+ {
+ // Points to self after construction, but during initialization.
+ // Singletons can initialize other classes that depend onto them,
+ // so this is expected.
+ //
+ // Example: LLNotifications singleton initializes default channels.
+ // Channels register themselves with singleton once done.
+ logdebugs("LLSingleton circularity: ", out.str().c_str(),
+ demangle(typeid(*this).name()).c_str(), "");
+ }
+ else
+ {
+ // Actual circularity with other singleton (or single singleton is used extensively).
+ // Dependency can be unclear.
+ logwarns("LLSingleton circularity: ", out.str().c_str(),
+ demangle(typeid(*this).name()).c_str(), "");
+ }
}
else
{
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index a40db0f8cc..2255e638c2 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -336,6 +336,7 @@ public:
static void addCRLF(string_type& string);
static void removeCRLF(string_type& string);
+ static void removeWindowsCR(string_type& string);
static void replaceTabsWithSpaces( string_type& string, size_type spaces_per_tab );
static void replaceNonstandardASCII( string_type& string, T replacement );
@@ -1322,6 +1323,28 @@ void LLStringUtilBase<T>::removeCRLF(string_type& string)
//static
template<class T>
+void LLStringUtilBase<T>::removeWindowsCR(string_type& string)
+{
+ const T LF = 10;
+ const T CR = 13;
+
+ size_type cr_count = 0;
+ size_type len = string.size();
+ size_type i;
+ for( i = 0; i < len - cr_count - 1; i++ )
+ {
+ if( string[i+cr_count] == CR && string[i+cr_count+1] == LF)
+ {
+ cr_count++;
+ }
+
+ string[i] = string[i+cr_count];
+ }
+ string.erase(i, cr_count);
+}
+
+//static
+template<class T>
void LLStringUtilBase<T>::replaceChar( string_type& string, T target, T replacement )
{
size_type found_pos = 0;
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp
index 9f12d49244..758b98e143 100644
--- a/indra/llcommon/lluri.cpp
+++ b/indra/llcommon/lluri.cpp
@@ -40,7 +40,8 @@
#include <boost/algorithm/string/find_iterator.hpp>
#include <boost/algorithm/string/finder.hpp>
-void encode_character(std::ostream& ostr, std::string::value_type val)
+// static
+void LLURI::encodeCharacter(std::ostream& ostr, std::string::value_type val)
{
ostr << "%"
@@ -95,7 +96,7 @@ std::string LLURI::escape(
}
else
{
- encode_character(ostr, c);
+ encodeCharacter(ostr, c);
}
}
}
@@ -106,7 +107,7 @@ std::string LLURI::escape(
c = *it;
if(allowed.find(c) == std::string::npos)
{
- encode_character(ostr, c);
+ encodeCharacter(ostr, c);
}
else
{
diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h
index c82a666e48..9e44cc7da2 100644
--- a/indra/llcommon/lluri.h
+++ b/indra/llcommon/lluri.h
@@ -121,6 +121,14 @@ public:
/** @name Escaping Utilities */
//@{
/**
+ * @brief 'Escape' symbol into stream
+ *
+ * @param ostr Output stream.
+ * @param val Symbol to encode.
+ */
+ static void encodeCharacter(std::ostream& ostr, std::string::value_type val);
+
+ /**
* @brief Escape the string passed except for unreserved
*
* ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
diff --git a/indra/llcommon/tests/listener.h b/indra/llcommon/tests/listener.h
index 9c5c18a150..6072060bb6 100644
--- a/indra/llcommon/tests/listener.h
+++ b/indra/llcommon/tests/listener.h
@@ -138,4 +138,15 @@ struct Collect
StringVec result;
};
+struct Concat
+{
+ bool operator()(const LLSD& event)
+ {
+ result += event.asString();
+ return false;
+ }
+ void clear() { result.clear(); }
+ std::string result;
+};
+
#endif /* ! defined(LL_LISTENER_H) */
diff --git a/indra/llcommon/tests/lleventfilter_test.cpp b/indra/llcommon/tests/lleventfilter_test.cpp
index 2cdfb52f2f..eb98b12ef5 100644
--- a/indra/llcommon/tests/lleventfilter_test.cpp
+++ b/indra/llcommon/tests/lleventfilter_test.cpp
@@ -70,6 +70,85 @@ private:
bool mElapsed;
};
+// Similar remarks about LLEventThrottle: we're actually testing the logic in
+// LLEventThrottleBase, dummying out the LLTimer and LLEventTimeout used by
+// the production LLEventThrottle class.
+class TestEventThrottle: public LLEventThrottleBase
+{
+public:
+ TestEventThrottle(F32 interval):
+ LLEventThrottleBase(interval),
+ mAlarmRemaining(-1),
+ mTimerRemaining(-1)
+ {}
+ TestEventThrottle(LLEventPump& source, F32 interval):
+ LLEventThrottleBase(source, interval),
+ mAlarmRemaining(-1),
+ mTimerRemaining(-1)
+ {}
+
+ /*----- implementation of LLEventThrottleBase timing functionality -----*/
+ virtual void alarmActionAfter(F32 interval, const LLEventTimeoutBase::Action& action) /*override*/
+ {
+ mAlarmRemaining = interval;
+ mAlarmAction = action;
+ }
+
+ virtual bool alarmRunning() const /*override*/
+ {
+ // decrementing to exactly 0 should mean the alarm fires
+ return mAlarmRemaining > 0;
+ }
+
+ virtual void alarmCancel() /*override*/
+ {
+ mAlarmRemaining = -1;
+ }
+
+ virtual void timerSet(F32 interval) /*override*/
+ {
+ mTimerRemaining = interval;
+ }
+
+ virtual F32 timerGetRemaining() const /*override*/
+ {
+ // LLTimer.getRemainingTimeF32() never returns negative; 0.0 means expired
+ return (mTimerRemaining > 0.0)? mTimerRemaining : 0.0;
+ }
+
+ /*------------------- methods for manipulating time --------------------*/
+ void alarmAdvance(F32 delta)
+ {
+ bool wasRunning = alarmRunning();
+ mAlarmRemaining -= delta;
+ if (wasRunning && ! alarmRunning())
+ {
+ mAlarmAction();
+ }
+ }
+
+ void timerAdvance(F32 delta)
+ {
+ // This simple implementation, like alarmAdvance(), completely ignores
+ // HOW negative mTimerRemaining might go. All that matters is whether
+ // it's negative. We trust that no test method in this source will
+ // drive it beyond the capacity of an F32. Seems like a safe assumption.
+ mTimerRemaining -= delta;
+ }
+
+ void advance(F32 delta)
+ {
+ // Advance the timer first because it has no side effects.
+ // alarmAdvance() might call flush(), which will need to see the
+ // change in the timer.
+ timerAdvance(delta);
+ alarmAdvance(delta);
+ }
+
+ F32 mAlarmRemaining, mTimerRemaining;
+ LLEventTimeoutBase::Action mAlarmAction;
+};
+
/*****************************************************************************
* TUT
*****************************************************************************/
@@ -116,7 +195,9 @@ namespace tut
listener0.listenTo(driver));
// Construct a pattern LLSD: desired Event must have a key "foo"
// containing string "bar"
- LLEventMatching filter(driver, LLSD().insert("foo", "bar"));
+ LLSD pattern;
+ pattern.insert("foo", "bar");
+ LLEventMatching filter(driver, pattern);
listener1.reset(0);
LLTempBoundListener temp2(
listener1.listenTo(filter));
@@ -285,6 +366,47 @@ namespace tut
mainloop.post(17);
check_listener("no timeout 3", listener0, LLSD(0));
}
+
+ template<> template<>
+ void filter_object::test<5>()
+ {
+ set_test_name("LLEventThrottle");
+ TestEventThrottle throttle(3);
+ Concat cat;
+ throttle.listen("concat", boost::ref(cat));
+
+ // (sequence taken from LLEventThrottleBase Doxygen comments)
+ // 1: post(): event immediately passed to listeners, next no sooner than 4
+ throttle.advance(1);
+ throttle.post("1");
+ ensure_equals("1", cat.result, "1"); // delivered immediately
+ // 2: post(): deferred: waiting for 3 seconds to elapse
+ throttle.advance(1);
+ throttle.post("2");
+ ensure_equals("2", cat.result, "1"); // "2" not yet delivered
+ // 3: post(): deferred
+ throttle.advance(1);
+ throttle.post("3");
+ ensure_equals("3", cat.result, "1"); // "3" not yet delivered
+ // 4: no post() call, but event delivered to listeners; next no sooner than 7
+ throttle.advance(1);
+ ensure_equals("4", cat.result, "13"); // "3" delivered
+ // 6: post(): deferred
+ throttle.advance(2);
+ throttle.post("6");
+ ensure_equals("6", cat.result, "13"); // "6" not yet delivered
+ // 7: no post() call, but event delivered; next no sooner than 10
+ throttle.advance(1);
+ ensure_equals("7", cat.result, "136"); // "6" delivered
+ // 12: post(): immediately passed to listeners, next no sooner than 15
+ throttle.advance(5);
+ throttle.post(";12");
+ ensure_equals("12", cat.result, "136;12"); // "12" delivered
+ // 17: post(): immediately passed to listeners, next no sooner than 20
+ throttle.advance(5);
+ throttle.post(";17");
+ ensure_equals("17", cat.result, "136;12;17"); // "17" delivered
+ }
} // namespace tut
/*****************************************************************************
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index e68331b99a..135d0ca7b9 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -508,6 +508,9 @@ public:
{ return mRegionDenyAnonymousOverride; }
BOOL getRegionDenyAgeUnverifiedOverride() const
{ return mRegionDenyAgeUnverifiedOverride; }
+ BOOL getRegionAllowAccessOverride() const
+ { return mRegionAllowAccessoverride; }
+
BOOL getAllowGroupAVSounds() const { return mAllowGroupAVSounds; }
BOOL getAllowAnyAVSounds() const { return mAllowAnyAVSounds; }
@@ -576,6 +579,7 @@ public:
void setRegionPushOverride(BOOL override) {mRegionPushOverride = override; }
void setRegionDenyAnonymousOverride(BOOL override) { mRegionDenyAnonymousOverride = override; }
void setRegionDenyAgeUnverifiedOverride(BOOL override) { mRegionDenyAgeUnverifiedOverride = override; }
+ void setRegionAllowAccessOverride(BOOL override) { mRegionAllowAccessoverride = override; }
// Accessors for parcel sellWithObjects
void setPreviousOwnerID(LLUUID prev_owner) { mPreviousOwnerID = prev_owner; }
@@ -657,6 +661,7 @@ protected:
BOOL mRegionPushOverride;
BOOL mRegionDenyAnonymousOverride;
BOOL mRegionDenyAgeUnverifiedOverride;
+ BOOL mRegionAllowAccessoverride;
BOOL mAllowGroupAVSounds;
BOOL mAllowAnyAVSounds;
diff --git a/indra/llmessage/llregionflags.h b/indra/llmessage/llregionflags.h
index eb0c4e6d1e..d3791ef4d1 100644
--- a/indra/llmessage/llregionflags.h
+++ b/indra/llmessage/llregionflags.h
@@ -42,6 +42,9 @@ const U64 REGION_FLAGS_RESET_HOME_ON_TELEPORT = (1 << 3);
// Does the sun move?
const U64 REGION_FLAGS_SUN_FIXED = (1 << 4);
+// Does the estate owner allow private parcels?
+const U64 REGION_FLAGS_ALLOW_ACCESS_OVERRIDE = (1 << 5);
+
// Can't change the terrain heightfield, even on owned parcels,
// but can plant trees and grass.
const U64 REGION_FLAGS_BLOCK_TERRAFORM = (1 << 6);
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index 6675e12649..1ae8a6ac15 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -1373,6 +1373,9 @@ char const* const _PREHASH_OwnerMask = LLMessageStringTable::getInstance()->getS
char const* const _PREHASH_TransferInventoryAck = LLMessageStringTable::getInstance()->getString("TransferInventoryAck");
char const* const _PREHASH_RegionDenyAgeUnverified = LLMessageStringTable::getInstance()->getString("RegionDenyAgeUnverified");
char const* const _PREHASH_AgeVerificationBlock = LLMessageStringTable::getInstance()->getString("AgeVerificationBlock");
+char const* const _PREHASH_RegionAllowAccessBlock = LLMessageStringTable::getInstance()->getString("RegionAllowAccessBlock");
+char const* const _PREHASH_RegionAllowAccessOverride = LLMessageStringTable::getInstance()->getString("RegionAllowAccessOverride");
+
char const* const _PREHASH_UCoord = LLMessageStringTable::getInstance()->getString("UCoord");
char const* const _PREHASH_VCoord = LLMessageStringTable::getInstance()->getString("VCoord");
char const* const _PREHASH_FaceIndex = LLMessageStringTable::getInstance()->getString("FaceIndex");
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
index a510b4498f..7910fde305 100644
--- a/indra/llmessage/message_prehash.h
+++ b/indra/llmessage/message_prehash.h
@@ -1373,6 +1373,8 @@ extern char const* const _PREHASH_OwnerMask;
extern char const* const _PREHASH_TransferInventoryAck;
extern char const* const _PREHASH_RegionDenyAgeUnverified;
extern char const* const _PREHASH_AgeVerificationBlock;
+extern char const* const _PREHASH_RegionAllowAccessBlock;
+extern char const* const _PREHASH_RegionAllowAccessOverride;
extern char const* const _PREHASH_UCoord;
extern char const* const _PREHASH_VCoord;
extern char const* const _PREHASH_FaceIndex;
diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp
index 76d3a405d8..768dc8284b 100644
--- a/indra/llprimitive/lldaeloader.cpp
+++ b/indra/llprimitive/lldaeloader.cpp
@@ -305,6 +305,8 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& fa
}
face = LLVolumeFace();
+ face.mExtents[0].set(v[0], v[1], v[2]);
+ face.mExtents[1].set(v[0], v[1], v[2]);
point_map.clear();
}
}
@@ -549,6 +551,8 @@ LLModel::EModelStatus load_face_from_dom_polylist(std::vector<LLVolumeFace>& fac
}
face = LLVolumeFace();
+ face.mExtents[0].set(v[0], v[1], v[2]);
+ face.mExtents[1].set(v[0], v[1], v[2]);
verts.clear();
indices.clear();
point_map.clear();
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index 0cb959a315..604092d536 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -1405,20 +1405,14 @@ void LLNotifications::createDefaultChannels()
mDefaultChannels.push_back(new LLPersistentNotificationChannel());
// connect action methods to these channels
- LLNotifications::instance().getChannel("Enabled")->
- connectFailedFilter(&defaultResponse);
- LLNotifications::instance().getChannel("Expiration")->
- connectChanged(boost::bind(&LLNotifications::expirationHandler, this, _1));
+ getChannel("Enabled")->connectFailedFilter(&defaultResponse);
+ getChannel("Expiration")->connectChanged(boost::bind(&LLNotifications::expirationHandler, this, _1));
// uniqueHandler slot should be added as first slot of the signal due to
// usage LLStopWhenHandled combiner in LLStandardSignal
- LLNotifications::instance().getChannel("Unique")->
- connectAtFrontChanged(boost::bind(&LLNotifications::uniqueHandler, this, _1));
- LLNotifications::instance().getChannel("Unique")->
- connectFailedFilter(boost::bind(&LLNotifications::failedUniquenessTest, this, _1));
- LLNotifications::instance().getChannel("Ignore")->
- connectFailedFilter(&handleIgnoredNotification);
- LLNotifications::instance().getChannel("VisibilityRules")->
- connectFailedFilter(&visibilityRuleMached);
+ getChannel("Unique")->connectAtFrontChanged(boost::bind(&LLNotifications::uniqueHandler, this, _1));
+ getChannel("Unique")->connectFailedFilter(boost::bind(&LLNotifications::failedUniquenessTest, this, _1));
+ getChannel("Ignore")->connectFailedFilter(&handleIgnoredNotification);
+ getChannel("VisibilityRules")->connectFailedFilter(&visibilityRuleMached);
}
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index f3a99dcef2..c570285856 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1505,8 +1505,8 @@ void LLTextBase::reflow()
segment_set_t::iterator seg_iter = mSegments.begin();
S32 seg_offset = 0;
S32 line_start_index = 0;
- const S32 text_available_width = mVisibleTextRect.getWidth() - mHPad; // reserve room for margin
- S32 remaining_pixels = text_available_width;
+ const F32 text_available_width = mVisibleTextRect.getWidth() - mHPad; // reserve room for margin
+ F32 remaining_pixels = text_available_width;
S32 line_count = 0;
// find and erase line info structs starting at start_index and going to end of document
@@ -1532,14 +1532,15 @@ void LLTextBase::reflow()
S32 cur_index = segment->getStart() + seg_offset;
// ask segment how many character fit in remaining space
- S32 character_count = segment->getNumChars(getWordWrap() ? llmax(0, remaining_pixels) : S32_MAX,
+ S32 character_count = segment->getNumChars(getWordWrap() ? llmax(0, ll_round(remaining_pixels)) : S32_MAX,
seg_offset,
cur_index - line_start_index,
S32_MAX,
line_count - seg_line_offset);
- S32 segment_width, segment_height;
- bool force_newline = segment->getDimensions(seg_offset, character_count, segment_width, segment_height);
+ F32 segment_width;
+ S32 segment_height;
+ bool force_newline = segment->getDimensionsF32(seg_offset, character_count, segment_width, segment_height);
// grow line height as necessary based on reported height of this segment
line_height = llmax(line_height, segment_height);
remaining_pixels -= segment_width;
@@ -1548,11 +1549,13 @@ void LLTextBase::reflow()
S32 last_segment_char_on_line = segment->getStart() + seg_offset;
- S32 text_actual_width = text_available_width - remaining_pixels;
+ // Note: make sure text will fit in width - use ceil, but also make sure
+ // ceil is used only once per line
+ S32 text_actual_width = llceil(text_available_width - remaining_pixels);
S32 text_left = getLeftOffset(text_actual_width);
LLRect line_rect(text_left,
cur_top,
- text_left + text_actual_width,
+ text_left + text_actual_width,
cur_top - line_height);
// if we didn't finish the current segment...
@@ -3066,7 +3069,15 @@ boost::signals2::connection LLTextBase::setIsObjectBlockedCallback(const is_bloc
LLTextSegment::~LLTextSegment()
{}
-bool LLTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const { width = 0; height = 0; return false;}
+bool LLTextSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const { width = 0; height = 0; return false; }
+bool LLTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+{
+ F32 fwidth = 0;
+ bool result = getDimensionsF32(first_char, num_chars, fwidth, height);
+ width = ll_round(fwidth);
+ return result;
+}
+
S32 LLTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const { return 0; }
S32 LLTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const { return 0; }
void LLTextSegment::updateLayout(const LLTextBase& editor) {}
@@ -3314,7 +3325,7 @@ void LLNormalTextSegment::setToolTip(const std::string& tooltip)
mTooltip = tooltip;
}
-bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+bool LLNormalTextSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
{
height = 0;
width = 0;
@@ -3323,7 +3334,7 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt
height = mFontHeight;
const LLWString &text = getWText();
// if last character is a newline, then return true, forcing line break
- width = mStyle->getFont()->getWidth(text.c_str(), mStart + first_char, num_chars);
+ width = mStyle->getFont()->getWidthF32(text.c_str(), mStart + first_char, num_chars);
}
return false;
}
@@ -3491,7 +3502,7 @@ LLInlineViewSegment::~LLInlineViewSegment()
mView->die();
}
-bool LLInlineViewSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+bool LLInlineViewSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
{
if (first_char == 0 && num_chars == 0)
{
@@ -3578,7 +3589,7 @@ LLLineBreakTextSegment::LLLineBreakTextSegment(LLStyleConstSP style,S32 pos):LLT
LLLineBreakTextSegment::~LLLineBreakTextSegment()
{
}
-bool LLLineBreakTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+bool LLLineBreakTextSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
{
width = 0;
height = mFontHeight;
@@ -3607,7 +3618,7 @@ LLImageTextSegment::~LLImageTextSegment()
static const S32 IMAGE_HPAD = 3;
-bool LLImageTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+bool LLImageTextSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
{
width = 0;
height = mStyle->getFont()->getLineHeight();
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index c7b6203445..5fdde445ef 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -61,8 +61,9 @@ public:
mEnd(end)
{}
virtual ~LLTextSegment();
+ bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
- virtual bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+ virtual bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
virtual S32 getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const;
/**
@@ -126,7 +127,7 @@ public:
LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible = TRUE);
virtual ~LLNormalTextSegment();
- /*virtual*/ bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+ /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
/*virtual*/ S32 getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const;
/*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const;
/*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
@@ -212,7 +213,7 @@ public:
LLInlineViewSegment(const Params& p, S32 start, S32 end);
~LLInlineViewSegment();
- /*virtual*/ bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+ /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
/*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const;
/*virtual*/ void updateLayout(const class LLTextBase& editor);
/*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
@@ -236,7 +237,7 @@ public:
LLLineBreakTextSegment(LLStyleConstSP style,S32 pos);
LLLineBreakTextSegment(S32 pos);
~LLLineBreakTextSegment();
- bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+ /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const;
F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
@@ -249,7 +250,7 @@ class LLImageTextSegment : public LLTextSegment
public:
LLImageTextSegment(LLStyleConstSP style,S32 pos,class LLTextBase& editor);
~LLImageTextSegment();
- bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+ /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 char_offset, S32 max_chars, S32 line_ind) const;
F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index b211829496..a4243ebfa1 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -917,7 +917,7 @@ std::string LLUrlEntryInventory::getLabel(const std::string &url, const LLUrlLab
//
LLUrlEntryObjectIM::LLUrlEntryObjectIM()
{
- mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?.*",
+ mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?\\S*\\w",
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_objectim.xml";
}
diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp
index 86a15f2ef2..924e1166ee 100644
--- a/indra/llvfs/lldir.cpp
+++ b/indra/llvfs/lldir.cpp
@@ -720,6 +720,15 @@ std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,
<< ((constraint == CURRENT_SKIN)? "CURRENT_SKIN" : "ALL_SKINS")
<< LL_ENDL;
+ // Build results vector.
+ std::vector<std::string> results;
+ // Disallow filenames that may escape subdir
+ if (filename.find("..") != std::string::npos)
+ {
+ LL_WARNS("LLDir") << "Ignoring potentially relative filename '" << filename << "'" << LL_ENDL;
+ return results;
+ }
+
// Cache the default language directory for each subdir we've encountered.
// A cache entry whose value is the empty string means "not localized,
// don't bother checking again."
@@ -784,8 +793,6 @@ std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,
}
}
- // Build results vector.
- std::vector<std::string> results;
// The process we use depends on 'constraint'.
if (constraint != CURRENT_SKIN) // meaning ALL_SKINS
{
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 321792eb14..b5ed53fd4f 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2801,7 +2801,7 @@ BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst)
if (utf16str)
{
dst = utf16str_to_wstring(utf16str);
- LLWStringUtil::removeCRLF(dst);
+ LLWStringUtil::removeWindowsCR(dst);
GlobalUnlock(h_data);
success = TRUE;
}
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index bb161d6321..6132787205 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -255,6 +255,7 @@ set(viewer_SOURCE_FILES
llfloaterlagmeter.cpp
llfloaterland.cpp
llfloaterlandholdings.cpp
+ llfloaterlinkreplace.cpp
llfloaterloadprefpreset.cpp
llfloatermarketplacelistings.cpp
llfloatermap.cpp
@@ -277,6 +278,7 @@ set(viewer_SOURCE_FILES
llfloaterperms.cpp
llfloaterpostprocess.cpp
llfloaterpreference.cpp
+ llfloaterpreviewtrash.cpp
llfloaterproperties.cpp
llfloaterregiondebugconsole.cpp
llfloaterregioninfo.cpp
@@ -876,6 +878,7 @@ set(viewer_HEADER_FILES
llfloaterlagmeter.h
llfloaterland.h
llfloaterlandholdings.h
+ llfloaterlinkreplace.h
llfloaterloadprefpreset.h
llfloatermap.h
llfloatermarketplacelistings.h
@@ -898,6 +901,7 @@ set(viewer_HEADER_FILES
llfloaterperms.h
llfloaterpostprocess.h
llfloaterpreference.h
+ llfloaterpreviewtrash.h
llfloaterproperties.h
llfloaterregiondebugconsole.h
llfloaterregioninfo.h
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index ab0fa336dd..c20c645d7e 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-5.0.5
+5.0.6
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9279a9f8e1..4b03dc0701 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -333,7 +333,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>0.5</real>
+ <real>0.3</real>
</map>
<key>AudioLevelMic</key>
<map>
@@ -355,7 +355,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>0.5</real>
+ <real>0.3</real>
</map>
<key>AudioLevelRolloff</key>
<map>
@@ -1619,6 +1619,17 @@
<key>Value</key>
<string>default</string>
</map>
+ <key>ChatAutocompleteGestures</key>
+ <map>
+ <key>Comment</key>
+ <string>Auto-complete gestures in nearby chat</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>ChatBarStealsFocus</key>
<map>
<key>Comment</key>
@@ -5439,6 +5450,28 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>LinkReplaceBatchSize</key>
+ <map>
+ <key>Comment</key>
+ <string>The maximum size of a batch in a link replace operation</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <integer>25</integer>
+ </map>
+ <key>LinkReplaceBatchPauseTime</key>
+ <map>
+ <key>Comment</key>
+ <string>The time in seconds between two batches in a link replace operation</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>1.0</real>
+ </map>
<key>LipSyncAah</key>
<map>
<key>Comment</key>
@@ -10168,6 +10201,17 @@
<key>Value</key>
<integer>10</integer>
</map>
+ <key>MaxAttachmentComplexity</key>
+ <map>
+ <key>Comment</key>
+ <string>Attachment's render weightlimit</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>1.0E6</real>
+ </map>
<key>ComplexityChangesPopUpDelay</key>
<map>
<key>Comment</key>
@@ -10734,6 +10778,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>ScriptDialogLimitations</key>
+ <map>
+ <key>Comment</key>
+ <string>Limits amount of dialogs per script (0 - per object, 1 - per channel, 2 - per channel for attachments, 3 - per channel for HUDs, 4 -unconstrained for HUDs)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>SecondLifeEnterprise</key>
<map>
<key>Comment</key>
@@ -11845,6 +11900,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>SyncMaterialSettings</key>
+ <map>
+ <key>Comment</key>
+ <string>SyncMaterialSettings</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>SnapshotQuality</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 7d0d39e22a..8dd0b06ed2 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1644,7 +1644,7 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
if (user_cancel && !mAutoPilotBehaviorName.empty())
{
if (mAutoPilotBehaviorName == "Sit")
- LLNotificationsUtil::add("CancelledSit");
+ LL_INFOS("Agent") << "Autopilot-Sit was canceled by user action" << LL_ENDL;
else if (mAutoPilotBehaviorName == "Attach")
LLNotificationsUtil::add("CancelledAttach");
else
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index feb981217d..c928cf0601 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2917,11 +2917,32 @@ void LLAppearanceMgr::removeAllAttachmentsFromAvatar()
removeItemsFromAvatar(ids_to_remove);
}
-void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, LLPointer<LLInventoryCallback> cb)
+class LLUpdateOnCOFLinkRemove : public LLInventoryCallback
{
- gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
+public:
+ LLUpdateOnCOFLinkRemove(const LLUUID& remove_item_id, LLPointer<LLInventoryCallback> cb = NULL):
+ mItemID(remove_item_id),
+ mCB(cb)
+ {
+ }
- LLInventoryModel::cat_array_t cat_array;
+ /* virtual */ void fire(const LLUUID& item_id)
+ {
+ // just removed cof link, "(wear)" suffix depends on presence of link, so update label
+ gInventory.addChangedMask(LLInventoryObserver::LABEL, mItemID);
+ if (mCB.notNull())
+ {
+ mCB->fire(item_id);
+ }
+ }
+
+private:
+ LLUUID mItemID;
+ LLPointer<LLInventoryCallback> mCB;
+};
+
+void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, LLPointer<LLInventoryCallback> cb)
+{ LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t item_array;
gInventory.collectDescendents(LLAppearanceMgr::getCOF(),
cat_array,
@@ -2932,12 +2953,20 @@ void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, LLPointer<LLInve
const LLInventoryItem* item = item_array.at(i).get();
if (item->getIsLinkType() && item->getLinkedUUID() == item_id)
{
- bool immediate_delete = false;
if (item->getType() == LLAssetType::AT_OBJECT)
{
- immediate_delete = true;
+ // Immediate delete
+ remove_inventory_item(item->getUUID(), cb, true);
+ gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
+ }
+ else
+ {
+ // Delayed delete
+ // Pointless to update item_id label here since link still exists and first notifyObservers
+ // call will restore (wear) suffix, mark for update after deletion
+ LLPointer<LLUpdateOnCOFLinkRemove> cb_label = new LLUpdateOnCOFLinkRemove(item_id, cb);
+ remove_inventory_item(item->getUUID(), cb_label, false);
}
- remove_inventory_item(item->getUUID(), cb, immediate_delete);
}
}
}
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 2045c3e297..219d9da01f 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -929,7 +929,6 @@ void LLAvatarActions::shareWithAvatars(LLView * panel)
LLNotificationsUtil::add("ShareNotification");
}
-
// static
bool LLAvatarActions::canShareSelectedItems(LLInventoryPanel* inv_panel /* = NULL*/)
{
diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp
index b97e483fd9..12c3070474 100644
--- a/indra/newview/llenvmanager.cpp
+++ b/indra/newview/llenvmanager.cpp
@@ -476,7 +476,7 @@ void LLEnvManagerNew::onRegionSettingsResponse(const LLSD& content)
mCachedRegionPrefs = new_settings;
// Load region sky presets.
- LLWLParamManager::instance().refreshRegionPresets();
+ LLWLParamManager::instance().refreshRegionPresets(getRegionSettings().getSkyMap());
// If using server settings, update managers.
if (getUseRegionSettings())
@@ -509,6 +509,25 @@ void LLEnvManagerNew::initSingleton()
LL_DEBUGS("Windlight") << "Initializing LLEnvManagerNew" << LL_ENDL;
loadUserPrefs();
+
+ // preferences loaded, can set params
+ std::string preferred_day = getDayCycleName();
+ if (!useDayCycle(preferred_day, LLEnvKey::SCOPE_LOCAL))
+ {
+ LL_WARNS() << "No day cycle named " << preferred_day << ", reverting LLWLParamManager to defaults" << LL_ENDL;
+ LLWLParamManager::instance().setDefaultDay();
+ }
+
+ std::string sky = getSkyPresetName();
+ if (!useSkyPreset(sky))
+ {
+ LL_WARNS() << "No sky preset named " << sky << ", falling back to defaults" << LL_ENDL;
+ LLWLParamManager::instance().setDefaultSky();
+
+ // *TODO: Fix user preferences accordingly.
+ }
+
+ LLWLParamManager::instance().resetAnimator(0.5 /*noon*/, getUseDayCycle());
}
void LLEnvManagerNew::updateSkyFromPrefs()
diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp
index 8f2eb41307..e422581129 100644
--- a/indra/newview/llestateinfomodel.cpp
+++ b/indra/newview/llestateinfomodel.cpp
@@ -71,14 +71,16 @@ bool LLEstateInfoModel::getIsExternallyVisible() const { return getFlag(REGION_F
bool LLEstateInfoModel::getAllowDirectTeleport() const { return getFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT); }
bool LLEstateInfoModel::getDenyAnonymous() const { return getFlag(REGION_FLAGS_DENY_ANONYMOUS); }
bool LLEstateInfoModel::getDenyAgeUnverified() const { return getFlag(REGION_FLAGS_DENY_AGEUNVERIFIED); }
-bool LLEstateInfoModel::getAllowVoiceChat() const { return getFlag(REGION_FLAGS_ALLOW_VOICE); }
+bool LLEstateInfoModel::getAllowVoiceChat() const { return getFlag(REGION_FLAGS_ALLOW_VOICE); }
+bool LLEstateInfoModel::getAllowAccessOverride() const { return getFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE); }
void LLEstateInfoModel::setUseFixedSun(bool val) { setFlag(REGION_FLAGS_SUN_FIXED, val); }
void LLEstateInfoModel::setIsExternallyVisible(bool val) { setFlag(REGION_FLAGS_EXTERNALLY_VISIBLE, val); }
void LLEstateInfoModel::setAllowDirectTeleport(bool val) { setFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, val); }
void LLEstateInfoModel::setDenyAnonymous(bool val) { setFlag(REGION_FLAGS_DENY_ANONYMOUS, val); }
void LLEstateInfoModel::setDenyAgeUnverified(bool val) { setFlag(REGION_FLAGS_DENY_AGEUNVERIFIED, val); }
-void LLEstateInfoModel::setAllowVoiceChat(bool val) { setFlag(REGION_FLAGS_ALLOW_VOICE, val); }
+void LLEstateInfoModel::setAllowVoiceChat(bool val) { setFlag(REGION_FLAGS_ALLOW_VOICE, val); }
+void LLEstateInfoModel::setAllowAccessOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE, val); }
void LLEstateInfoModel::update(const strings_t& strings)
{
@@ -145,6 +147,7 @@ void LLEstateInfoModel::commitEstateInfoCapsCoro(std::string url)
body["deny_anonymous"] = getDenyAnonymous();
body["deny_age_unverified"] = getDenyAgeUnverified();
body["allow_voice_chat"] = getAllowVoiceChat();
+ body["override_public_access"] = getAllowAccessOverride();
body["invoice"] = LLFloaterRegionInfo::getLastInvoice();
@@ -218,6 +221,7 @@ std::string LLEstateInfoModel::getInfoDump()
dump["deny_anonymous" ] = getDenyAnonymous();
dump["deny_age_unverified" ] = getDenyAgeUnverified();
dump["allow_voice_chat" ] = getAllowVoiceChat();
+ dump["override_public_access"] = getAllowAccessOverride();
std::stringstream dump_str;
dump_str << dump;
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h
index e7a6a2a725..0082b5b1f4 100644
--- a/indra/newview/llestateinfomodel.h
+++ b/indra/newview/llestateinfomodel.h
@@ -55,6 +55,7 @@ public:
bool getDenyAnonymous() const;
bool getDenyAgeUnverified() const;
bool getAllowVoiceChat() const;
+ bool getAllowAccessOverride() const;
const std::string& getName() const { return mName; }
const LLUUID& getOwnerID() const { return mOwnerID; }
@@ -68,6 +69,7 @@ public:
void setDenyAnonymous(bool val);
void setDenyAgeUnverified(bool val);
void setAllowVoiceChat(bool val);
+ void setAllowAccessOverride(bool val);
void setSunHour(F32 sun_hour) { mSunHour = sun_hour; }
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index 314b859cea..711a87dc99 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -44,7 +44,7 @@ public:
mExpanderLabel(more_text)
{}
- /*virtual*/ bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+ /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
{
// more label always spans width of text box
if (num_chars == 0)
diff --git a/indra/newview/llfloateravatarrendersettings.cpp b/indra/newview/llfloateravatarrendersettings.cpp
index e7ac3f2737..2bae7d63aa 100644
--- a/indra/newview/llfloateravatarrendersettings.cpp
+++ b/indra/newview/llfloateravatarrendersettings.cpp
@@ -33,6 +33,7 @@
#include "llfloaterreg.h"
#include "llnamelistctrl.h"
#include "llmenugl.h"
+#include "lltrans.h"
#include "llviewerobjectlist.h"
#include "llvoavatar.h"
@@ -144,6 +145,8 @@ void LLFloaterAvatarRenderSettings::updateList()
item_params.columns.add().value(av_name.getCompleteName()).column("name");
std::string setting = getString(iter->second == 1 ? "av_never_render" : "av_always_render");
item_params.columns.add().value(setting).column("setting");
+ std::string timestamp = createTimestamp(LLRenderMuteList::getInstance()->getVisualMuteDate(iter->first));
+ item_params.columns.add().value(timestamp).column("timestamp");
mAvatarSettingsList->addNameItemRow(item_params);
}
}
@@ -205,15 +208,7 @@ void LLFloaterAvatarRenderSettings::onCustomAction (const LLSD& userdata, const
new_setting = S32(LLVOAvatar::AV_ALWAYS_RENDER);
}
- LLVOAvatar *avatarp = find_avatar(av_id);
- if (avatarp)
- {
- avatarp->setVisualMuteSettings(LLVOAvatar::VisualMuteSettings(new_setting));
- }
- else
- {
- LLRenderMuteList::getInstance()->saveVisualMuteSetting(av_id, new_setting);
- }
+ setAvatarRenderSetting(av_id, new_setting);
}
@@ -273,14 +268,44 @@ void LLFloaterAvatarRenderSettings::onClickAdd(const LLSD& userdata)
void LLFloaterAvatarRenderSettings::callbackAvatarPicked(const uuid_vec_t& ids, S32 visual_setting)
{
if (ids.empty()) return;
+ setAvatarRenderSetting(ids[0], visual_setting);
+}
- LLVOAvatar *avatarp = find_avatar(ids[0]);
+void LLFloaterAvatarRenderSettings::setAvatarRenderSetting(const LLUUID& av_id, S32 new_setting)
+{
+ LLVOAvatar *avatarp = find_avatar(av_id);
if (avatarp)
{
- avatarp->setVisualMuteSettings(LLVOAvatar::VisualMuteSettings(visual_setting));
+ avatarp->setVisualMuteSettings(LLVOAvatar::VisualMuteSettings(new_setting));
}
else
{
- LLRenderMuteList::getInstance()->saveVisualMuteSetting(ids[0], visual_setting);
+ LLRenderMuteList::getInstance()->saveVisualMuteSetting(av_id, new_setting);
+ }
+}
+
+BOOL LLFloaterAvatarRenderSettings::handleKeyHere(KEY key, MASK mask )
+{
+ BOOL handled = FALSE;
+
+ if (KEY_DELETE == key)
+ {
+ setAvatarRenderSetting(mAvatarSettingsList->getCurrentID(), (S32)LLVOAvatar::AV_RENDER_NORMALLY);
+ handled = TRUE;
}
+ return handled;
+}
+
+std::string LLFloaterAvatarRenderSettings::createTimestamp(S32 datetime)
+{
+ std::string timeStr;
+ LLSD substitution;
+ substitution["datetime"] = datetime;
+
+ timeStr = "["+LLTrans::getString ("TimeMonth")+"]/["
+ +LLTrans::getString ("TimeDay")+"]/["
+ +LLTrans::getString ("TimeYear")+"]";
+
+ LLStringUtil::format (timeStr, substitution);
+ return timeStr;
}
diff --git a/indra/newview/llfloateravatarrendersettings.h b/indra/newview/llfloateravatarrendersettings.h
index fe727bcf32..6790b24b90 100644
--- a/indra/newview/llfloateravatarrendersettings.h
+++ b/indra/newview/llfloateravatarrendersettings.h
@@ -43,6 +43,7 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void draw();
+ /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask );
void onAvatarListRightClick(LLUICtrl* ctrl, S32 x, S32 y);
@@ -51,6 +52,9 @@ public:
void onCustomAction (const LLSD& userdata, const LLUUID& av_id);
bool isActionChecked(const LLSD& userdata, const LLUUID& av_id);
void onClickAdd(const LLSD& userdata);
+ void setAvatarRenderSetting(const LLUUID& av_id, S32 new_setting);
+
+ std::string createTimestamp(S32 datetime);
static void setNeedsUpdate();
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index 40ae22bb4e..7895a5ff48 100644
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -485,7 +485,8 @@ void LLFloaterIMNearbyChat::onChatBoxKeystroke()
KEY key = gKeyboard->currentKey();
// Ignore "special" keys, like backspace, arrows, etc.
- if (length > 1
+ if (gSavedSettings.getBOOL("ChatAutocompleteGestures")
+ && length > 1
&& raw_text[0] == '/'
&& key < KEY_SPECIAL)
{
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index a340cd1143..4352909706 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2432,9 +2432,16 @@ void LLPanelLandAccess::refresh()
BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
BOOL public_access = !use_access_list;
- getChild<LLUICtrl>("public_access")->setValue(public_access );
- getChild<LLUICtrl>("GroupCheck")->setValue(use_group );
-
+ if (parcel->getRegionAllowAccessOverride())
+ {
+ getChild<LLUICtrl>("public_access")->setValue(public_access);
+ getChild<LLUICtrl>("GroupCheck")->setValue(use_group);
+ }
+ else
+ {
+ getChild<LLUICtrl>("public_access")->setValue(TRUE);
+ getChild<LLUICtrl>("GroupCheck")->setValue(FALSE);
+ }
std::string group_name;
gCacheName->getGroupName(parcel->getGroupID(), group_name);
getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name );
@@ -2610,9 +2617,14 @@ void LLPanelLandAccess::refresh_ui()
LLParcel *parcel = mParcel->getParcel();
if (parcel && !gDisconnected)
{
- BOOL can_manage_allowed = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_ALLOWED);
+ BOOL can_manage_allowed = false;
BOOL can_manage_banned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_BANNED);
+ if (parcel->getRegionAllowAccessOverride())
+ { // Estate owner may have disabled allowing the parcel owner from managing access.
+ can_manage_allowed = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_ALLOWED);
+ }
+
getChildView("public_access")->setEnabled(can_manage_allowed);
BOOL public_access = getChild<LLUICtrl>("public_access")->getValue().asBoolean();
if (public_access)
@@ -2666,7 +2678,8 @@ void LLPanelLandAccess::refresh_ui()
std::string group_name;
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
{
- getChildView("GroupCheck")->setEnabled(can_manage_allowed);
+ bool can_allow_groups = !public_access || (public_access && (getChild<LLUICtrl>("limit_payment")->getValue().asBoolean() ^ getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean()));
+ getChildView("GroupCheck")->setEnabled(can_manage_allowed && can_allow_groups);
}
getChildView("AccessList")->setEnabled(can_manage_allowed);
S32 allowed_list_count = parcel->mAccessList.size();
diff --git a/indra/newview/llfloaterlinkreplace.cpp b/indra/newview/llfloaterlinkreplace.cpp
new file mode 100644
index 0000000000..3f80d6f1a4
--- /dev/null
+++ b/indra/newview/llfloaterlinkreplace.cpp
@@ -0,0 +1,396 @@
+/**
+ * @file llfloaterlinkreplace.cpp
+ * @brief Allows replacing link targets in inventory links
+ * @author Ansariel Hiller
+ *
+ * $LicenseInfo:firstyear=2017&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2017, 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 "llfloaterlinkreplace.h"
+
+#include "llagent.h"
+#include "llappearancemgr.h"
+#include "lllineeditor.h"
+#include "lltextbox.h"
+#include "llviewercontrol.h"
+
+LLFloaterLinkReplace::LLFloaterLinkReplace(const LLSD& key)
+ : LLFloater(key),
+ LLEventTimer(gSavedSettings.getF32("LinkReplaceBatchPauseTime")),
+ mRemainingItems(0),
+ mSourceUUID(LLUUID::null),
+ mTargetUUID(LLUUID::null),
+ mInstance(NULL),
+ mBatchSize(gSavedSettings.getU32("LinkReplaceBatchSize"))
+{
+ mEventTimer.stop();
+ mInstance = this;
+}
+
+LLFloaterLinkReplace::~LLFloaterLinkReplace()
+{
+ mInstance = NULL;
+}
+
+BOOL LLFloaterLinkReplace::postBuild()
+{
+ mStartBtn = getChild<LLButton>("btn_start");
+ mStartBtn->setCommitCallback(boost::bind(&LLFloaterLinkReplace::onStartClicked, this));
+
+ mRefreshBtn = getChild<LLButton>("btn_refresh");
+ mRefreshBtn->setCommitCallback(boost::bind(&LLFloaterLinkReplace::checkEnableStart, this));
+
+ mSourceEditor = getChild<LLInventoryLinkReplaceDropTarget>("source_uuid_editor");
+ mTargetEditor = getChild<LLInventoryLinkReplaceDropTarget>("target_uuid_editor");
+
+ mSourceEditor->setDADCallback(boost::bind(&LLFloaterLinkReplace::onSourceItemDrop, this, _1));
+ mTargetEditor->setDADCallback(boost::bind(&LLFloaterLinkReplace::onTargetItemDrop, this, _1));
+
+ mStatusText = getChild<LLTextBox>("status_text");
+
+ return TRUE;
+}
+
+void LLFloaterLinkReplace::onOpen(const LLSD& key)
+{
+ if (key.asUUID().notNull())
+ {
+ LLUUID item_id = key.asUUID();
+ LLViewerInventoryItem* item = gInventory.getItem(item_id);
+ mSourceEditor->setItem(item);
+ onSourceItemDrop(item->getLinkedUUID());
+ }
+ else
+ {
+ checkEnableStart();
+ }
+}
+
+void LLFloaterLinkReplace::onSourceItemDrop(const LLUUID& source_item_id)
+{
+ mSourceUUID = source_item_id;
+ checkEnableStart();
+}
+
+void LLFloaterLinkReplace::onTargetItemDrop(const LLUUID& target_item_id)
+{
+ mTargetUUID = target_item_id;
+ checkEnableStart();
+}
+
+void LLFloaterLinkReplace::updateFoundLinks()
+{
+ LLInventoryModel::item_array_t items;
+ LLInventoryModel::cat_array_t cat_array;
+ LLLinkedItemIDMatches is_linked_item_match(mSourceUUID);
+ gInventory.collectDescendentsIf(gInventory.getRootFolderID(),
+ cat_array,
+ items,
+ LLInventoryModel::INCLUDE_TRASH,
+ is_linked_item_match);
+ mRemainingItems = (U32)items.size();
+
+ LLStringUtil::format_map_t args;
+ args["NUM"] = llformat("%d", mRemainingItems);
+ mStatusText->setText(getString("ItemsFound", args));
+}
+
+void LLFloaterLinkReplace::checkEnableStart()
+{
+ if (mSourceUUID.notNull() && mTargetUUID.notNull() && mSourceUUID == mTargetUUID)
+ {
+ mStatusText->setText(getString("ItemsIdentical"));
+ }
+ else if (mSourceUUID.notNull())
+ {
+ updateFoundLinks();
+ }
+
+ mStartBtn->setEnabled(mRemainingItems > 0 && mSourceUUID.notNull() && mTargetUUID.notNull() && mSourceUUID != mTargetUUID);
+}
+
+void LLFloaterLinkReplace::onStartClicked()
+{
+ LL_INFOS() << "Starting inventory link replace" << LL_ENDL;
+
+ if (mSourceUUID.isNull() || mTargetUUID.isNull())
+ {
+ LL_WARNS() << "Cannot replace. Either source or target UUID is null." << LL_ENDL;
+ return;
+ }
+
+ if (mSourceUUID == mTargetUUID)
+ {
+ LL_WARNS() << "Cannot replace. Source and target are identical." << LL_ENDL;
+ return;
+ }
+
+ LLInventoryModel::cat_array_t cat_array;
+ LLLinkedItemIDMatches is_linked_item_match(mSourceUUID);
+ gInventory.collectDescendentsIf(gInventory.getRootFolderID(),
+ cat_array,
+ mRemainingInventoryItems,
+ LLInventoryModel::INCLUDE_TRASH,
+ is_linked_item_match);
+ LL_INFOS() << "Found " << mRemainingInventoryItems.size() << " inventory links that need to be replaced." << LL_ENDL;
+
+ if (mRemainingInventoryItems.size() > 0)
+ {
+ LLViewerInventoryItem* target_item = gInventory.getItem(mTargetUUID);
+ if (target_item)
+ {
+ mRemainingItems = (U32)mRemainingInventoryItems.size();
+
+ LLStringUtil::format_map_t args;
+ args["NUM"] = llformat("%d", mRemainingItems);
+ mStatusText->setText(getString("ItemsRemaining", args));
+
+ mStartBtn->setEnabled(FALSE);
+ mRefreshBtn->setEnabled(FALSE);
+
+ mEventTimer.start();
+ tick();
+ }
+ else
+ {
+ mStatusText->setText(getString("TargetNotFound"));
+ LL_WARNS() << "Link replace target not found." << LL_ENDL;
+ }
+ }
+}
+
+void LLFloaterLinkReplace::linkCreatedCallback(const LLUUID& old_item_id,
+ const LLUUID& target_item_id,
+ bool needs_wearable_ordering_update,
+ bool needs_description_update,
+ const LLUUID& outfit_folder_id)
+{
+ LL_DEBUGS() << "Inventory link replace:" << LL_NEWLINE
+ << " - old_item_id = " << old_item_id.asString() << LL_NEWLINE
+ << " - target_item_id = " << target_item_id.asString() << LL_NEWLINE
+ << " - order update = " << (needs_wearable_ordering_update ? "true" : "false") << LL_NEWLINE
+ << " - description update = " << (needs_description_update ? "true" : "false") << LL_NEWLINE
+ << " - outfit_folder_id = " << outfit_folder_id.asString() << LL_ENDL;
+
+ // If we are replacing an object, bodypart or gesture link within an outfit folder,
+ // we need to change the actual description of the link itself. LLAppearanceMgr *should*
+ // have created COF links that will be used to save the outfit with an empty description.
+ // Since link_inventory_array() will set the description of the linked item for the link
+ // itself, this will lead to a dirty outfit state when the outfit with the replaced
+ // link is worn. So we have to correct this.
+ if (needs_description_update && outfit_folder_id.notNull())
+ {
+ LLInventoryModel::item_array_t items;
+ LLInventoryModel::cat_array_t cats;
+ LLLinkedItemIDMatches is_target_link(target_item_id);
+ gInventory.collectDescendentsIf(outfit_folder_id,
+ cats,
+ items,
+ LLInventoryModel::EXCLUDE_TRASH,
+ is_target_link);
+
+ for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); ++it)
+ {
+ LLPointer<LLViewerInventoryItem> item = *it;
+
+ if ((item->getType() == LLAssetType::AT_BODYPART ||
+ item->getType() == LLAssetType::AT_OBJECT ||
+ item->getType() == LLAssetType::AT_GESTURE)
+ && !item->getActualDescription().empty())
+ {
+ LL_DEBUGS() << "Updating description for " << item->getName() << LL_ENDL;
+
+ LLSD updates;
+ updates["desc"] = "";
+ update_inventory_item(item->getUUID(), updates, LLPointer<LLInventoryCallback>(NULL));
+ }
+ }
+ }
+
+ LLUUID outfit_update_folder = LLUUID::null;
+ if (needs_wearable_ordering_update && outfit_folder_id.notNull())
+ {
+ // If a wearable item was involved in the link replace operation and replaced
+ // a link in an outfit folder, we need to update the clothing ordering information
+ // *after* the original link has been removed. LLAppearanceMgr abuses the actual link
+ // description to store the clothing ordering information it. We will have to update
+ // the clothing ordering information or the outfit will be in dirty state when worn.
+ outfit_update_folder = outfit_folder_id;
+ }
+
+ LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLFloaterLinkReplace::itemRemovedCallback, this, outfit_update_folder));
+ remove_inventory_object(old_item_id, cb);
+}
+
+void LLFloaterLinkReplace::itemRemovedCallback(const LLUUID& outfit_folder_id)
+{
+ if (outfit_folder_id.notNull())
+ {
+ LLAppearanceMgr::getInstance()->updateClothingOrderingInfo(outfit_folder_id);
+ }
+
+ if (mInstance)
+ {
+ decreaseOpenItemCount();
+ }
+}
+
+void LLFloaterLinkReplace::decreaseOpenItemCount()
+{
+ mRemainingItems--;
+
+ if (mRemainingItems == 0)
+ {
+ mStatusText->setText(getString("ReplaceFinished"));
+ mStartBtn->setEnabled(TRUE);
+ mRefreshBtn->setEnabled(TRUE);
+ mEventTimer.stop();
+ LL_INFOS() << "Inventory link replace finished." << LL_ENDL;
+ }
+ else
+ {
+ LLStringUtil::format_map_t args;
+ args["NUM"] = llformat("%d", mRemainingItems);
+ mStatusText->setText(getString("ItemsRemaining", args));
+ LL_DEBUGS() << "Inventory link replace: " << mRemainingItems << " links remaining..." << LL_ENDL;
+ }
+}
+
+BOOL LLFloaterLinkReplace::tick()
+{
+ LL_DEBUGS() << "Calling tick - remaining items = " << mRemainingInventoryItems.size() << LL_ENDL;
+
+ LLInventoryModel::item_array_t current_batch;
+
+ for (U32 i = 0; i < mBatchSize; ++i)
+ {
+ if (!mRemainingInventoryItems.size())
+ {
+ mEventTimer.stop();
+ break;
+ }
+
+ current_batch.push_back(mRemainingInventoryItems.back());
+ mRemainingInventoryItems.pop_back();
+ }
+ processBatch(current_batch);
+
+ return FALSE;
+}
+
+void LLFloaterLinkReplace::processBatch(LLInventoryModel::item_array_t items)
+{
+ const LLViewerInventoryItem* target_item = gInventory.getItem(mTargetUUID);
+ const LLUUID cof_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false);
+ const LLUUID outfit_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false);
+
+ for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); ++it)
+ {
+ LLPointer<LLInventoryItem> source_item = *it;
+
+ if (source_item->getParentUUID() != cof_folder_id)
+ {
+ bool is_outfit_folder = gInventory.isObjectDescendentOf(source_item->getParentUUID(), outfit_folder_id);
+ // If either the new or old item in the COF is a wearable, we need to update wearable ordering after the link has been replaced
+ bool needs_wearable_ordering_update = (is_outfit_folder && source_item->getType() == LLAssetType::AT_CLOTHING) || target_item->getType() == LLAssetType::AT_CLOTHING;
+ // Other items in the COF need a description update (description of the actual link item must be empty)
+ bool needs_description_update = is_outfit_folder && target_item->getType() != LLAssetType::AT_CLOTHING;
+
+ LL_DEBUGS() << "is_outfit_folder = " << (is_outfit_folder ? "true" : "false") << LL_NEWLINE
+ << "needs_wearable_ordering_update = " << (needs_wearable_ordering_update ? "true" : "false") << LL_NEWLINE
+ << "needs_description_update = " << (needs_description_update ? "true" : "false") << LL_ENDL;
+
+ LLInventoryObject::const_object_list_t obj_array;
+ obj_array.push_back(LLConstPointer<LLInventoryObject>(target_item));
+ LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLFloaterLinkReplace::linkCreatedCallback,
+ this,
+ source_item->getUUID(),
+ target_item->getUUID(),
+ needs_wearable_ordering_update,
+ needs_description_update,
+ (is_outfit_folder ? source_item->getParentUUID() : LLUUID::null) ));
+ link_inventory_array(source_item->getParentUUID(), obj_array, cb);
+ }
+ else
+ {
+ decreaseOpenItemCount();
+ }
+ }
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// LLInventoryLinkReplaceDropTarget
+
+static LLDefaultChildRegistry::Register<LLInventoryLinkReplaceDropTarget> r("inventory_link_replace_drop_target");
+
+BOOL LLInventoryLinkReplaceDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg)
+{
+ LLInventoryItem* item = (LLInventoryItem*)cargo_data;
+
+ if (cargo_type >= DAD_TEXTURE && cargo_type <= DAD_LINK &&
+ item && item->getActualType() != LLAssetType::AT_LINK_FOLDER && item->getType() != LLAssetType::AT_CATEGORY &&
+ (
+ LLAssetType::lookupCanLink(item->getType()) ||
+ (item->getType() == LLAssetType::AT_LINK && !gInventory.getObject(item->getLinkedUUID())) // Broken Link!
+ ))
+ {
+ if (drop)
+ {
+ setItem(item);
+ if (!mDADSignal.empty())
+ {
+ mDADSignal(mItemID);
+ }
+ }
+ else
+ {
+ *accept = ACCEPT_YES_SINGLE;
+ }
+ }
+ else
+ {
+ *accept = ACCEPT_NO;
+ }
+
+ return TRUE;
+}
+
+void LLInventoryLinkReplaceDropTarget::setItem(LLInventoryItem* item)
+{
+ if (item)
+ {
+ mItemID = item->getLinkedUUID();
+ setText(item->getName());
+ }
+ else
+ {
+ mItemID.setNull();
+ setText(LLStringExplicit(""));
+ }
+}
diff --git a/indra/newview/llfloaterlinkreplace.h b/indra/newview/llfloaterlinkreplace.h
new file mode 100644
index 0000000000..377dd1d450
--- /dev/null
+++ b/indra/newview/llfloaterlinkreplace.h
@@ -0,0 +1,127 @@
+/**
+ * @file llfloaterlinkreplace.h
+ * @brief Allows replacing link targets in inventory links
+ * @author Ansariel Hiller
+ *
+ * $LicenseInfo:firstyear=2017&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2017, 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_FLOATERLINKREPLACE_H
+#define LL_FLOATERLINKREPLACE_H
+
+#include "llfloater.h"
+#include "lleventtimer.h"
+#include "lllineeditor.h"
+#include "llinventoryfunctions.h"
+#include "llviewerinventory.h"
+
+class LLButton;
+class LLTextBox;
+
+class LLInventoryLinkReplaceDropTarget : public LLLineEditor
+{
+public:
+ struct Params : public LLInitParam::Block<Params, LLLineEditor::Params>
+ {
+ Params()
+ {}
+ };
+
+ LLInventoryLinkReplaceDropTarget(const Params& p)
+ : LLLineEditor(p) {}
+ ~LLInventoryLinkReplaceDropTarget() {}
+
+ typedef boost::signals2::signal<void(const LLUUID& id)> item_dad_callback_t;
+ boost::signals2::connection setDADCallback(const item_dad_callback_t::slot_type& cb)
+ {
+ return mDADSignal.connect(cb);
+ }
+
+ virtual BOOL postBuild()
+ {
+ setEnabled(FALSE);
+ return LLLineEditor::postBuild();
+ }
+
+ virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg);
+
+ LLUUID getItemID() const { return mItemID; }
+ void setItem(LLInventoryItem* item);
+
+private:
+ LLUUID mItemID;
+
+ item_dad_callback_t mDADSignal;
+};
+
+
+class LLFloaterLinkReplace : public LLFloater, LLEventTimer
+{
+ LOG_CLASS(LLFloaterLinkReplace);
+
+public:
+ LLFloaterLinkReplace(const LLSD& key);
+ virtual ~LLFloaterLinkReplace();
+
+ BOOL postBuild();
+ virtual void onOpen(const LLSD& key);
+
+ virtual BOOL tick();
+
+private:
+ void checkEnableStart();
+ void onStartClicked();
+ void decreaseOpenItemCount();
+ void updateFoundLinks();
+ void processBatch(LLInventoryModel::item_array_t items);
+
+ void linkCreatedCallback(const LLUUID& old_item_id,
+ const LLUUID& target_item_id,
+ bool needs_wearable_ordering_update,
+ bool needs_description_update,
+ const LLUUID& outfit_folder_id);
+ void itemRemovedCallback(const LLUUID& outfit_folder_id);
+
+ void onSourceItemDrop(const LLUUID& source_item_id);
+ void onTargetItemDrop(const LLUUID& target_item_id);
+
+ LLInventoryLinkReplaceDropTarget* mSourceEditor;
+ LLInventoryLinkReplaceDropTarget* mTargetEditor;
+ LLButton* mStartBtn;
+ LLButton* mRefreshBtn;
+ LLTextBox* mStatusText;
+
+ LLUUID mSourceUUID;
+ LLUUID mTargetUUID;
+ U32 mRemainingItems;
+ U32 mBatchSize;
+
+ LLInventoryModel::item_array_t mRemainingInventoryItems;
+
+ LLFloaterLinkReplace* mInstance;
+};
+
+#endif // LL_FLOATERLINKREPLACE_H
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index c654817849..b3885bf36c 100644
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -1262,6 +1262,10 @@ LLModelPreview::~LLModelPreview()
// glod.dll!glodShutdown() + 0x77 bytes
//
//glodShutdown();
+ if(mModelLoader)
+ {
+ mModelLoader->shutdown();
+ }
}
U32 LLModelPreview::calcResourceCost()
diff --git a/indra/newview/llfloaterpreviewtrash.cpp b/indra/newview/llfloaterpreviewtrash.cpp
new file mode 100644
index 0000000000..cf4e3f04e6
--- /dev/null
+++ b/indra/newview/llfloaterpreviewtrash.cpp
@@ -0,0 +1,82 @@
+/**
+ * @file llfloaterpreviewtrash.cpp
+ * @author AndreyK Productengine
+ * @brief LLFloaterPreviewTrash 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 "llviewerprecompiledheaders.h"
+
+#include "llfloaterpreviewtrash.h"
+
+#include "llinventoryfunctions.h"
+#include "llfloaterreg.h"
+
+LLFloaterPreviewTrash::LLFloaterPreviewTrash(const LLSD& key)
+: LLFloater(key)
+{
+}
+
+BOOL LLFloaterPreviewTrash::postBuild()
+{
+ getChild<LLUICtrl>("empty_btn")->setCommitCallback(
+ boost::bind(&LLFloaterPreviewTrash::onClickEmpty, this));
+ getChild<LLUICtrl>("cancel_btn")->setCommitCallback(
+ boost::bind(&LLFloaterPreviewTrash::onClickCancel, this));
+ // Always center the dialog. User can change the size,
+ // but purchases are important and should be center screen.
+ // This also avoids problems where the user resizes the application window
+ // mid-session and the saved rect is off-center.
+ center();
+
+ return TRUE;
+}
+
+LLFloaterPreviewTrash::~LLFloaterPreviewTrash()
+{
+}
+
+
+// static
+void LLFloaterPreviewTrash::show()
+{
+ LLFloaterReg::showTypedInstance<LLFloaterPreviewTrash>("preview_trash", LLSD(), TRUE);
+}
+
+// static
+bool LLFloaterPreviewTrash::isVisible()
+{
+ return LLFloaterReg::instanceVisible("preview_trash");
+}
+
+
+void LLFloaterPreviewTrash::onClickEmpty()
+{
+ gInventory.emptyFolderType("PurgeSelectedItems", LLFolderType::FT_TRASH);
+ closeFloater();
+}
+
+void LLFloaterPreviewTrash::onClickCancel()
+{
+ closeFloater();
+}
diff --git a/indra/newview/llfloaterpreviewtrash.h b/indra/newview/llfloaterpreviewtrash.h
new file mode 100644
index 0000000000..465c0c677f
--- /dev/null
+++ b/indra/newview/llfloaterpreviewtrash.h
@@ -0,0 +1,49 @@
+/**
+ * @file llfloaterpreviewtrash.h
+ * @author AndreyK Productengine
+ * @brief LLFloaterPreviewTrash class header file
+ *
+ * $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_LLFLOATERPREVIEWTRASH_H
+#define LL_LLFLOATERPREVIEWTRASH_H
+
+#include "llfloater.h"
+
+class LLFloaterPreviewTrash
+: public LLFloater
+{
+public:
+ static void show();
+ static bool isVisible();
+
+ LLFloaterPreviewTrash(const LLSD& key);
+ ~LLFloaterPreviewTrash();
+ /*virtual*/ BOOL postBuild();
+
+protected:
+ void onClickEmpty();
+ void onClickCancel();
+};
+
+#endif
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 75d7d787b1..c33dee5fb4 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -2235,11 +2235,12 @@ bool LLPanelEstateInfo::estateUpdate(LLMessageSystem* msg)
BOOL LLPanelEstateInfo::postBuild()
{
// set up the callbacks for the generic controls
- initCtrl("externally_visible_check");
+ initCtrl("externally_visible_radio");
initCtrl("allow_direct_teleport");
initCtrl("limit_payment");
initCtrl("limit_age_verified");
initCtrl("voice_chat_check");
+ initCtrl("parcel_access_override");
getChild<LLUICtrl>("allowed_avatar_name_list")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeChildCtrl, this, _1));
LLNameListCtrl *avatar_name_list = getChild<LLNameListCtrl>("allowed_avatar_name_list");
@@ -2287,13 +2288,15 @@ BOOL LLPanelEstateInfo::postBuild()
childSetAction("message_estate_btn", boost::bind(&LLPanelEstateInfo::onClickMessageEstate, this));
childSetAction("kick_user_from_estate_btn", boost::bind(&LLPanelEstateInfo::onClickKickUser, this));
+ getChild<LLUICtrl>("parcel_access_override")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeAccessOverride, this));
+
return LLPanelRegionInfo::postBuild();
}
void LLPanelEstateInfo::refresh()
{
// Disable access restriction controls if they make no sense.
- bool public_access = getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean();
+ bool public_access = getChild<LLRadioGroup>("externally_visible_radio")->getSelectedIndex();
getChildView("Only Allow")->setEnabled(public_access);
getChildView("limit_payment")->setEnabled(public_access);
@@ -2314,11 +2317,12 @@ void LLPanelEstateInfo::refreshFromEstate()
getChild<LLUICtrl>("estate_name")->setValue(estate_info.getName());
setOwnerName(LLSLURL("agent", estate_info.getOwnerID(), "inspect").getSLURLString());
- getChild<LLUICtrl>("externally_visible_check")->setValue(estate_info.getIsExternallyVisible());
+ getChild<LLRadioGroup>("externally_visible_radio")->setSelectedIndex(estate_info.getIsExternallyVisible() ? 1 : 0);
getChild<LLUICtrl>("voice_chat_check")->setValue(estate_info.getAllowVoiceChat());
getChild<LLUICtrl>("allow_direct_teleport")->setValue(estate_info.getAllowDirectTeleport());
getChild<LLUICtrl>("limit_payment")->setValue(estate_info.getDenyAnonymous());
getChild<LLUICtrl>("limit_age_verified")->setValue(estate_info.getDenyAgeUnverified());
+ getChild<LLUICtrl>("parcel_access_override")->setValue(estate_info.getAllowAccessOverride());
// Ensure appriopriate state of the management UI
updateControls(gAgent.getRegion());
@@ -2356,12 +2360,14 @@ bool LLPanelEstateInfo::callbackChangeLindenEstate(const LLSD& notification, con
// update model
estate_info.setUseFixedSun(false); // we don't support fixed sun estates anymore
- estate_info.setIsExternallyVisible(getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean());
+ estate_info.setIsExternallyVisible(getChild<LLRadioGroup>("externally_visible_radio")->getSelectedIndex());
estate_info.setAllowDirectTeleport(getChild<LLUICtrl>("allow_direct_teleport")->getValue().asBoolean());
estate_info.setDenyAnonymous(getChild<LLUICtrl>("limit_payment")->getValue().asBoolean());
estate_info.setDenyAgeUnverified(getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean());
estate_info.setAllowVoiceChat(getChild<LLUICtrl>("voice_chat_check")->getValue().asBoolean());
-
+ estate_info.setAllowAccessOverride(getChild<LLUICtrl>("parcel_access_override")->getValue().asBoolean());
+ // JIGGLYPUFF
+ //estate_info.setAllowAccessOverride(getChild<LLUICtrl>("")->getValue().asBoolean());
// send the update to sim
estate_info.sendEstateInfo();
}
@@ -2462,6 +2468,14 @@ bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& re
return false;
}
+void LLPanelEstateInfo::onChangeAccessOverride()
+{
+ if (!getChild<LLUICtrl>("parcel_access_override")->getValue().asBoolean())
+ {
+ LLNotificationsUtil::add("EstateParcelAccessOverride");
+ }
+}
+
LLPanelEstateCovenant::LLPanelEstateCovenant()
:
mCovenantID(LLUUID::null),
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index dbb0ad05e9..c9d0e51640 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -274,6 +274,7 @@ public:
void onChangeFixedSun();
void onChangeUseGlobalTime();
+ void onChangeAccessOverride();
void onClickEditSky();
void onClickEditSkyHelp();
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index ff8b8b0403..feef726630 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -269,8 +269,11 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
{
if(!gAgent.isDoNotDisturb())
{
- // Open conversations floater
- LLFloaterReg::showInstance("im_container");
+ if(!LLAppViewer::instance()->quitRequested() && !LLFloater::isVisible(im_box))
+ {
+ // Open conversations floater
+ LLFloaterReg::showInstance("im_container");
+ }
im_box->collapseMessagesPane(false);
if (session_floater)
{
@@ -2677,49 +2680,57 @@ void LLIMMgr::addMessage(
LLIMModel::getInstance()->newSession(new_session_id, fixed_session_name, dialog, other_participant_id, false, is_offline_msg);
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(new_session_id);
- skip_message &= !session->isGroupSessionType(); // Do not skip group chats...
- if(skip_message)
- {
- gIMMgr->leaveSession(new_session_id);
- }
- // When we get a new IM, and if you are a god, display a bit
- // of information about the source. This is to help liaisons
- // when answering questions.
- if(gAgent.isGodlike())
+ if (session)
{
- // *TODO:translate (low priority, god ability)
- std::ostringstream bonus_info;
- bonus_info << LLTrans::getString("***")+ " "+ LLTrans::getString("IMParentEstate") + ":" + " "
- << parent_estate_id
- << ((parent_estate_id == 1) ? "," + LLTrans::getString("IMMainland") : "")
- << ((parent_estate_id == 5) ? "," + LLTrans::getString ("IMTeen") : "");
-
- // once we have web-services (or something) which returns
- // information about a region id, we can print this out
- // and even have it link to map-teleport or something.
- //<< "*** region_id: " << region_id << std::endl
- //<< "*** position: " << position << std::endl;
+ skip_message &= !session->isGroupSessionType(); // Do not skip group chats...
+ if (skip_message)
+ {
+ gIMMgr->leaveSession(new_session_id);
+ }
+ // When we get a new IM, and if you are a god, display a bit
+ // of information about the source. This is to help liaisons
+ // when answering questions.
+ if (gAgent.isGodlike())
+ {
+ // *TODO:translate (low priority, god ability)
+ std::ostringstream bonus_info;
+ bonus_info << LLTrans::getString("***") + " " + LLTrans::getString("IMParentEstate") + ":" + " "
+ << parent_estate_id
+ << ((parent_estate_id == 1) ? "," + LLTrans::getString("IMMainland") : "")
+ << ((parent_estate_id == 5) ? "," + LLTrans::getString("IMTeen") : "");
+
+ // once we have web-services (or something) which returns
+ // information about a region id, we can print this out
+ // and even have it link to map-teleport or something.
+ //<< "*** region_id: " << region_id << std::endl
+ //<< "*** position: " << position << std::endl;
+
+ LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
+ }
- LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
- }
+ // Logically it would make more sense to reject the session sooner, in another area of the
+ // code, but the session has to be established inside the server before it can be left.
+ if (LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !from_linden)
+ {
+ LL_WARNS() << "Leaving IM session from initiating muted resident " << from << LL_ENDL;
+ if (!gIMMgr->leaveSession(new_session_id))
+ {
+ LL_INFOS() << "Session " << new_session_id << " does not exist." << LL_ENDL;
+ }
+ return;
+ }
- // Logically it would make more sense to reject the session sooner, in another area of the
- // code, but the session has to be established inside the server before it can be left.
- if (LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !from_linden)
- {
- LL_WARNS() << "Leaving IM session from initiating muted resident " << from << LL_ENDL;
- if(!gIMMgr->leaveSession(new_session_id))
+ //Play sound for new conversations
+ if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation") == TRUE))
{
- LL_INFOS() << "Session " << new_session_id << " does not exist." << LL_ENDL;
+ make_ui_sound("UISndNewIncomingIMSession");
}
- return;
}
-
- //Play sound for new conversations
- if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation") == TRUE))
- {
- make_ui_sound("UISndNewIncomingIMSession");
- }
+ else
+ {
+ // Failed to create a session, most likely due to empty name (name cache failed?)
+ LL_WARNS() << "Failed to create IM session " << fixed_session_name << LL_ENDL;
+ }
}
if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !skip_message)
@@ -3022,7 +3033,7 @@ void LLIMMgr::inviteToSession(
LLIncomingCallDialog::processCallResponse(1, payload);
return;
}
- else if (LLMuteList::getInstance()->isMuted(caller_id, LLMute::flagAll & ~LLMute::flagVoiceChat))
+ else if (LLMuteList::getInstance()->isMuted(caller_id, LLMute::flagAll & ~LLMute::flagVoiceChat) && !voice_invite)
{
LL_INFOS() << "Rejecting session invite from initiating muted resident " << caller_name << LL_ENDL;
return;
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 555c19baac..1b32fc9dfe 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -391,6 +391,7 @@ void LLInvFVBridge::removeBatch(std::vector<LLFolderViewModelItem*>& batch)
}
}
removeBatchNoCheck(batch);
+ model->checkTrashOverflow();
}
void LLInvFVBridge::removeBatchNoCheck(std::vector<LLFolderViewModelItem*>& batch)
@@ -851,6 +852,7 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
getClipboardEntries(true, items, disabled_items, flags);
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -1051,6 +1053,20 @@ void LLInvFVBridge::addMarketplaceContextMenuOptions(U32 flags,
items.push_back(std::string("Marketplace Listings Separator"));
}
+void LLInvFVBridge::addLinkReplaceMenuOption(menuentry_vec_t& items, menuentry_vec_t& disabled_items)
+{
+ const LLInventoryObject* obj = getInventoryObject();
+
+ if (isAgentInventory() && obj && obj->getType() != LLAssetType::AT_CATEGORY && obj->getType() != LLAssetType::AT_LINK_FOLDER)
+ {
+ items.push_back(std::string("Replace Links"));
+
+ if (mRoot->getSelectedCount() != 1)
+ {
+ disabled_items.push_back(std::string("Replace Links"));
+ }
+ }
+}
// *TODO: remove this
BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
@@ -3855,6 +3871,13 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
}
if(trash_id == mUUID)
{
+ bool is_recent_panel = false;
+ LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
+ if (active_panel && (active_panel->getName() == "Recent Items"))
+ {
+ is_recent_panel = true;
+ }
+
// This is the trash.
items.push_back(std::string("Empty Trash"));
@@ -3862,7 +3885,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
LLInventoryModel::item_array_t* item_array;
gInventory.getDirectDescendentsOf(mUUID, cat_array, item_array);
// Enable Empty menu item only when there is something to act upon.
- if (0 == cat_array->size() && 0 == item_array->size())
+ if ((0 == cat_array->size() && 0 == item_array->size()) || is_recent_panel)
{
disabled_items.push_back(std::string("Empty Trash"));
}
@@ -5179,6 +5202,7 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
disabled_items.push_back(std::string("Save As"));
}
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -5251,6 +5275,7 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
items.push_back(std::string("Sound Play"));
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -5339,6 +5364,7 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
disabled_items.push_back(std::string("About Landmark"));
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -5641,6 +5667,7 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
disabled_items.push_back(std::string("Conference Chat"));
}
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -5910,6 +5937,7 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
items.push_back(std::string("Activate"));
}
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -5967,6 +5995,7 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
items.push_back(std::string("Animation Audition"));
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -6283,6 +6312,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
}
}
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -6511,6 +6541,7 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
}
}
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -6682,6 +6713,7 @@ void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
items.push_back(std::string("Properties"));
addDeleteContextMenuOptions(items, disabled_items);
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@@ -6733,6 +6765,7 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
getClipboardEntries(true, items, disabled_items, flags);
}
+ addLinkReplaceMenuOption(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index b7d8c9d034..e6fcb6be96 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -148,6 +148,9 @@ protected:
virtual void addMarketplaceContextMenuOptions(U32 flags,
menuentry_vec_t &items,
menuentry_vec_t &disabled_items);
+ virtual void addLinkReplaceMenuOption(menuentry_vec_t& items,
+ menuentry_vec_t& disabled_items);
+
protected:
LLInvFVBridge(LLInventoryPanel* inventory, LLFolderView* root, const LLUUID& uuid);
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index f04d6cc753..bccc654fbf 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -2306,6 +2306,26 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
// Clear the clipboard before we start adding things on it
LLClipboard::instance().reset();
}
+ if ("replace_links" == action)
+ {
+ LLSD params;
+ if (root->getSelectedCount() == 1)
+ {
+ LLFolderViewItem* folder_item = root->getSelectedItems().front();
+ LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem();
+
+ if (bridge)
+ {
+ LLInventoryObject* obj = bridge->getInventoryObject();
+ if (obj && obj->getType() != LLAssetType::AT_CATEGORY && obj->getActualType() != LLAssetType::AT_LINK_FOLDER)
+ {
+ params = LLSD(obj->getUUID());
+ }
+ }
+ }
+ LLFloaterReg::showInstance("linkreplace", params);
+ return;
+ }
static const std::string change_folder_string = "change_folder_type_";
if (action.length() > change_folder_string.length() &&
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 855f7c750e..e5fd126d53 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -41,6 +41,7 @@
#include "llinventoryfunctions.h"
#include "llinventoryobserver.h"
#include "llinventorypanel.h"
+#include "llfloaterpreviewtrash.h"
#include "llnotificationsutil.h"
#include "llmarketplacefunctions.h"
#include "llwindow.h"
@@ -3299,9 +3300,7 @@ void LLInventoryModel::processMoveInventoryItem(LLMessageSystem* msg, void**)
}
//----------------------------------------------------------------------------
-
// Trash: LLFolderType::FT_TRASH, "ConfirmEmptyTrash"
-// Trash: LLFolderType::FT_TRASH, "TrashIsFull" when trash exceeds maximum capacity
// Lost&Found: LLFolderType::FT_LOST_AND_FOUND, "ConfirmEmptyLostAndFound"
bool LLInventoryModel::callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLFolderType::EType preferred_type)
@@ -3319,7 +3318,14 @@ void LLInventoryModel::emptyFolderType(const std::string notification, LLFolderT
{
if (!notification.empty())
{
- LLNotificationsUtil::add(notification, LLSD(), LLSD(),
+ LLSD args;
+ if(LLFolderType::FT_TRASH == preferred_type)
+ {
+ static const U32 trash_max_capacity = gSavedSettings.getU32("InventoryTrashMaxCapacity");
+ const LLUUID trash_id = findCategoryUUIDForType(preferred_type);
+ args["COUNT"] = (S32)getDescendentsCountRecursive(trash_id, trash_max_capacity);
+ }
+ LLNotificationsUtil::add(notification, args, LLSD(),
boost::bind(&LLInventoryModel::callbackEmptyFolderType, this, _1, _2, preferred_type));
}
else
@@ -3415,13 +3421,32 @@ void LLInventoryModel::removeObject(const LLUUID& object_id)
}
}
+bool callback_preview_trash_folder(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (option == 0) // YES
+ {
+ LLFloaterPreviewTrash::show();
+ }
+ return false;
+}
+
void LLInventoryModel::checkTrashOverflow()
{
static const U32 trash_max_capacity = gSavedSettings.getU32("InventoryTrashMaxCapacity");
const LLUUID trash_id = findCategoryUUIDForType(LLFolderType::FT_TRASH);
if (getDescendentsCountRecursive(trash_id, trash_max_capacity) >= trash_max_capacity)
{
- gInventory.emptyFolderType("TrashIsFull", LLFolderType::FT_TRASH);
+ if (LLFloaterPreviewTrash::isVisible())
+ {
+ // bring to front
+ LLFloaterPreviewTrash::show();
+ }
+ else
+ {
+ LLNotificationsUtil::add("TrashIsFull", LLSD(), LLSD(),
+ boost::bind(callback_preview_trash_folder, _1, _2));
+ }
}
}
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index dee1769172..c558c0803b 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -411,6 +411,7 @@ public:
/// removeItem() or removeCategory(), whichever is appropriate
void removeObject(const LLUUID& object_id);
+ // "TrashIsFull" when trash exceeds maximum capacity
void checkTrashOverflow();
protected:
diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
index a8919db828..406c8b89d0 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.cpp
+++ b/indra/newview/llinventorymodelbackgroundfetch.cpp
@@ -76,13 +76,6 @@
// * Review the download rate throttling. Slow then fast?
// Detect bandwidth usage and speed up when it drops?
//
-// * A lot of calls to notifyObservers(). It looks like
-// these could be collapsed by maintaining a 'dirty'
-// bit and there appears to be an attempt to do this.
-// But it isn't used or is used in a limited fashion.
-// Are there semanic issues requiring a call after certain
-// updateItem() calls?
-//
// * An error on a fetch could be due to one item in the batch.
// If the batch were broken up, perhaps more of the inventory
// would download. (Handwave here, not certain this is an
@@ -393,6 +386,12 @@ void LLInventoryModelBackgroundFetch::bulkFetch()
{
// Process completed background HTTP requests
gInventory.handleResponses(false);
+ // Just processed a bunch of items.
+ // Note: do we really need notifyObservers() here?
+ // OnIdle it will be called anyway due to Add flag for processed item.
+ // It seems like in some cases we are updaiting on fail (no flag),
+ // but is there anything to update?
+ gInventory.notifyObservers();
}
if ((mFetchCount > max_concurrent_fetches) ||
@@ -711,7 +710,6 @@ void BGFolderHttpHandler::processData(LLSD & content, LLCore::HttpResponse * res
titem->setParent(lost_uuid);
titem->updateParentOnServer(FALSE);
gInventory.updateItem(titem);
- gInventory.notifyObservers();
}
}
}
@@ -784,8 +782,6 @@ void BGFolderHttpHandler::processData(LLSD & content, LLCore::HttpResponse * res
{
fetcher->setAllFoldersFetched();
}
-
- gInventory.notifyObservers();
}
@@ -828,7 +824,6 @@ void BGFolderHttpHandler::processFailure(LLCore::HttpStatus status, LLCore::Http
fetcher->setAllFoldersFetched();
}
}
- gInventory.notifyObservers();
}
@@ -866,7 +861,6 @@ void BGFolderHttpHandler::processFailure(const char * const reason, LLCore::Http
fetcher->setAllFoldersFetched();
}
}
- gInventory.notifyObservers();
}
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index bd15ba4975..4b117941a0 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -43,6 +43,7 @@
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
+#include "llnotificationsutil.h"
#include "llpreview.h"
#include "llsidepanelinventory.h"
#include "lltrans.h"
@@ -1211,6 +1212,33 @@ void LLInventoryPanel::fileUploadLocation(const LLSD& userdata)
}
}
+void LLInventoryPanel::purgeSelectedItems()
+{
+ const std::set<LLFolderViewItem*> inventory_selected = mFolderRoot.get()->getSelectionList();
+ if (inventory_selected.empty()) return;
+ LLSD args;
+ args["COUNT"] = (S32)inventory_selected.size();
+ LLNotificationsUtil::add("PurgeSelectedItems", args, LLSD(), boost::bind(&LLInventoryPanel::callbackPurgeSelectedItems, this, _1, _2));
+}
+
+void LLInventoryPanel::callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (option == 0)
+ {
+ const std::set<LLFolderViewItem*> inventory_selected = mFolderRoot.get()->getSelectionList();
+ if (inventory_selected.empty()) return;
+
+ std::set<LLFolderViewItem*>::const_iterator it = inventory_selected.begin();
+ const std::set<LLFolderViewItem*>::const_iterator it_end = inventory_selected.end();
+ for (; it != it_end; ++it)
+ {
+ LLUUID item_id = static_cast<LLFolderViewModelItemInventory*>((*it)->getViewModelItem())->getUUID();
+ remove_inventory_object(item_id, NULL);
+ }
+ }
+}
+
bool LLInventoryPanel::attachObject(const LLSD& userdata)
{
// Copy selected item UUIDs to a vector.
@@ -1448,6 +1476,11 @@ void LLInventoryPanel::updateSelection()
void LLInventoryPanel::doToSelected(const LLSD& userdata)
{
+ if (("purge" == userdata.asString()))
+ {
+ purgeSelectedItems();
+ return;
+ }
LLInventoryAction::doToSelected(mInventory, mFolderRoot.get(), userdata.asString());
return;
@@ -1482,7 +1515,9 @@ BOOL LLInventoryPanel::handleKeyHere( KEY key, MASK mask )
}
break;
case KEY_DELETE:
+#if LL_DARWIN
case KEY_BACKSPACE:
+#endif
// Delete selected items if delete or backspace key hit on the inventory panel
// Note: on Mac laptop keyboards, backspace and delete are one and the same
if (isSelectionRemovable() && (mask == MASK_NONE))
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 5cb9dde47a..5ee58707b0 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -202,6 +202,7 @@ public:
void doCreate(const LLSD& userdata);
bool beginIMSession();
void fileUploadLocation(const LLSD& userdata);
+ void purgeSelectedItems();
bool attachObject(const LLSD& userdata);
static void idle(void* user_data);
@@ -232,6 +233,8 @@ public:
// Clean up stuff when the folder root gets deleted
void clearFolderRoot();
+ void callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response);
+
protected:
void openStartFolderOrMyInventory(); // open the first level of inventory
void onItemsCompletion(); // called when selected items are complete
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index b9194c6c67..5abd99d36f 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -67,7 +67,8 @@ const std::string LL_IM_FROM("from");
const std::string LL_IM_FROM_ID("from_id");
const std::string LL_TRANSCRIPT_FILE_EXTENSION("txt");
-const static std::string IM_SEPARATOR(": ");
+const static char IM_SYMBOL_SEPARATOR(':');
+const static std::string IM_SEPARATOR(std::string() + IM_SYMBOL_SEPARATOR + " ");
const static std::string NEW_LINE("\n");
const static std::string NEW_LINE_SPACE_PREFIX("\n ");
const static std::string TWO_SPACES(" ");
@@ -838,7 +839,7 @@ void LLChatLogFormatter::format(const LLSD& im, std::ostream& ostr) const
}
if (im[LL_IM_TIME].isDefined())
-{
+ {
std::string timestamp = im[LL_IM_TIME].asString();
boost::trim(timestamp);
ostr << '[' << timestamp << ']' << TWO_SPACES;
@@ -851,9 +852,29 @@ void LLChatLogFormatter::format(const LLSD& im, std::ostream& ostr) const
{
std::string from = im[LL_IM_FROM].asString();
boost::trim(from);
- if (from.size())
+
+ std::size_t found = from.find(IM_SYMBOL_SEPARATOR);
+ std::size_t len = from.size();
+ std::size_t start = 0;
+ while (found != std::string::npos)
{
- ostr << from << IM_SEPARATOR;
+ std::size_t sub_len = found - start;
+ if (sub_len > 0)
+ {
+ ostr << from.substr(start, sub_len);
+ }
+ LLURI::encodeCharacter(ostr, IM_SYMBOL_SEPARATOR);
+ start = found + 1;
+ found = from.find(IM_SYMBOL_SEPARATOR, start);
+ }
+ if (start < len)
+ {
+ std::string str_end = from.substr(start, len - start);
+ ostr << str_end;
+ }
+ if (len > 0)
+ {
+ ostr << IM_SEPARATOR;
}
}
@@ -865,7 +886,7 @@ void LLChatLogFormatter::format(const LLSD& im, std::ostream& ostr) const
boost::replace_all(im_text, NEW_LINE, NEW_LINE_SPACE_PREFIX);
ostr << im_text;
}
- }
+}
bool LLChatLogParser::parse(std::string& raw, LLSD& im, const LLSD& parse_params)
{
@@ -912,7 +933,7 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im, const LLSD& parse_params
if (!boost::regex_match(stuff, name_and_text, NAME_AND_TEXT)) return false;
bool has_name = name_and_text[IDX_NAME].matched;
- std::string name = name_and_text[IDX_NAME];
+ std::string name = LLURI::unescape(name_and_text[IDX_NAME]);
//we don't need a name/text separator
if (has_name && name.length() && name[name.length()-1] == ':')
@@ -933,7 +954,7 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im, const LLSD& parse_params
U32 divider_pos = stuff.find(NAME_TEXT_DIVIDER);
if (divider_pos != std::string::npos && divider_pos < (stuff.length() - NAME_TEXT_DIVIDER.length()))
{
- im[LL_IM_FROM] = stuff.substr(0, divider_pos);
+ im[LL_IM_FROM] = LLURI::unescape(stuff.substr(0, divider_pos));
im[LL_IM_TEXT] = stuff.substr(divider_pos + NAME_TEXT_DIVIDER.length());
return true;
}
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 1a533dace7..f7e0e32256 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -3626,7 +3626,15 @@ void LLMeshRepository::notifyLoadedMeshes()
//popup queued error messages from background threads
while (!mUploadErrorQ.empty())
{
- LLNotificationsUtil::add("MeshUploadError", mUploadErrorQ.front());
+ LLSD substitutions(mUploadErrorQ.front());
+ if (substitutions.has("DETAILS"))
+ {
+ LLNotificationsUtil::add("MeshUploadErrorDetails", substitutions);
+ }
+ else
+ {
+ LLNotificationsUtil::add("MeshUploadError", substitutions);
+ }
mUploadErrorQ.pop();
}
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 02b28a2bf8..5b53a05274 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -825,13 +825,14 @@ bool LLRenderMuteList::saveToFile()
LL_WARNS() << "Couldn't open render mute list file: " << filename << LL_ENDL;
return false;
}
+
for (std::map<LLUUID, S32>::iterator it = sVisuallyMuteSettingsMap.begin(); it != sVisuallyMuteSettingsMap.end(); ++it)
{
if (it->second != 0)
{
std::string id_string;
it->first.toString(id_string);
- fprintf(fp, "%d %s\n", (S32)it->second, id_string.c_str());
+ fprintf(fp, "%d %s [%d]\n", (S32)it->second, id_string.c_str(), (S32)sVisuallyMuteDateMap[it->first]);
}
}
fclose(fp);
@@ -854,8 +855,10 @@ bool LLRenderMuteList::loadFromFile()
{
id_buffer[0] = '\0';
S32 setting = 0;
- sscanf(buffer, " %d %254s\n", &setting, id_buffer);
+ S32 time = 0;
+ sscanf(buffer, " %d %254s [%d]\n", &setting, id_buffer, &time);
sVisuallyMuteSettingsMap[LLUUID(id_buffer)] = setting;
+ sVisuallyMuteDateMap[LLUUID(id_buffer)] = (time == 0) ? (S32)time_corrected() : time;
}
fclose(fp);
return true;
@@ -866,10 +869,15 @@ void LLRenderMuteList::saveVisualMuteSetting(const LLUUID& agent_id, S32 setting
if(setting == 0)
{
sVisuallyMuteSettingsMap.erase(agent_id);
+ sVisuallyMuteDateMap.erase(agent_id);
}
else
{
sVisuallyMuteSettingsMap[agent_id] = setting;
+ if (sVisuallyMuteDateMap.find(agent_id) == sVisuallyMuteDateMap.end())
+ {
+ sVisuallyMuteDateMap[agent_id] = (S32)time_corrected();
+ }
}
saveToFile();
notifyObservers();
@@ -886,6 +894,17 @@ S32 LLRenderMuteList::getSavedVisualMuteSetting(const LLUUID& agent_id)
return 0;
}
+S32 LLRenderMuteList::getVisualMuteDate(const LLUUID& agent_id)
+{
+ std::map<LLUUID, S32>::iterator iter = sVisuallyMuteDateMap.find(agent_id);
+ if (iter != sVisuallyMuteDateMap.end())
+ {
+ return iter->second;
+ }
+
+ return 0;
+}
+
void LLRenderMuteList::addObserver(LLMuteListObserver* observer)
{
mObservers.insert(observer);
diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h
index 9ab978353b..f2fcf3dbb3 100644
--- a/indra/newview/llmutelist.h
+++ b/indra/newview/llmutelist.h
@@ -184,10 +184,13 @@ public:
S32 getSavedVisualMuteSetting(const LLUUID& agent_id);
void saveVisualMuteSetting(const LLUUID& agent_id, S32 setting);
+ S32 getVisualMuteDate(const LLUUID& agent_id);
+
void addObserver(LLMuteListObserver* observer);
void removeObserver(LLMuteListObserver* observer);
std::map<LLUUID, S32> sVisuallyMuteSettingsMap;
+ std::map<LLUUID, S32> sVisuallyMuteDateMap;
private:
void notifyObservers();
diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp
index eeeb7e5c25..31e89c0ed0 100644
--- a/indra/newview/lloutfitgallery.cpp
+++ b/indra/newview/lloutfitgallery.cpp
@@ -34,6 +34,7 @@
#include "llcommonutils.h"
#include "llvfile.h"
+#include "llaccordionctrltab.h"
#include "llappearancemgr.h"
#include "lleconomy.h"
#include "llerror.h"
@@ -46,6 +47,8 @@
#include "llinventorymodel.h"
#include "lllocalbitmaps.h"
#include "llnotificationsutil.h"
+#include "llpaneloutfitsinventory.h"
+#include "lltabcontainer.h"
#include "lltexturectrl.h"
#include "lltrans.h"
#include "llviewercontrol.h"
@@ -742,6 +745,33 @@ BOOL LLOutfitGalleryItem::handleRightMouseDown(S32 x, S32 y, MASK mask)
return LLUICtrl::handleRightMouseDown(x, y, mask);
}
+BOOL LLOutfitGallery::handleDoubleClick(S32 x, S32 y, MASK mask)
+{
+ LLTabContainer* appearence_tabs = LLPanelOutfitsInventory::findInstance()->getChild<LLTabContainer>("appearance_tabs");
+ LLPanel* panel = NULL;
+ LLAccordionCtrl* accordion = NULL;
+ if (appearence_tabs != NULL)
+ {
+ appearence_tabs->selectTabByName("outfitslist_tab");
+ panel = appearence_tabs->getCurrentPanel();
+ if (panel != NULL)
+ {
+ accordion = panel->getChild<LLAccordionCtrl>("outfits_accordion");
+ LLOutfitsList* outfit_list = dynamic_cast<LLOutfitsList*>(panel);
+ if (accordion != NULL && outfit_list != NULL)
+ {
+ LLUUID item_id = getSelectedOutfitUUID();
+ outfit_list->setSelectedOutfitByUUID(item_id);
+ LLAccordionCtrlTab* tab = accordion->getSelectedTab();
+ tab->showAndFocusHeader();
+ return TRUE;
+ }
+ }
+ }
+
+ return LLUICtrl::handleDoubleClick(x, y, mask);
+}
+
void LLOutfitGalleryItem::setImageAssetId(LLUUID image_asset_id)
{
mImageAssetId = image_asset_id;
diff --git a/indra/newview/lloutfitgallery.h b/indra/newview/lloutfitgallery.h
index b9fc10f015..37e75f1109 100644
--- a/indra/newview/lloutfitgallery.h
+++ b/indra/newview/lloutfitgallery.h
@@ -114,6 +114,9 @@ public:
void onTexturePickerUpdateImageStats(LLPointer<LLViewerTexture> texture);
void onBeforeOutfitSnapshotSave();
void onAfterOutfitSnapshotSave();
+
+ /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
+
protected:
/*virtual*/ void onHighlightBaseOutfit(LLUUID base_id, LLUUID prev_id);
/*virtual*/ void onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid);
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index e1f51e62e3..f87ce8aa52 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -311,7 +311,7 @@ void LLOutfitsList::onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid)
tab->setFocus(TRUE);
ChangeOutfitSelection(list, outfit_uuid);
- tab->setDisplayChildren(true);
+ tab->changeOpenClose(false);
}
}
}
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 25ae4774fc..3322e8a3df 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -123,6 +123,7 @@ void LLPanelBlockedList::onOpen(const LLSD& key)
void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
{
+ mBlockedList->resetSelection();
mBlockedList->selectItemByUUID(mute_id);
}
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index ad600358dd..a16259886d 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -131,13 +131,13 @@ BOOL LLPanelFace::postBuild()
childSetCommitCallback("combobox shininess",&LLPanelFace::onCommitShiny,this);
childSetCommitCallback("combobox bumpiness",&LLPanelFace::onCommitBump,this);
childSetCommitCallback("combobox alphamode",&LLPanelFace::onCommitAlphaMode,this);
- childSetCommitCallback("TexScaleU",&LLPanelFace::onCommitTextureInfo, this);
- childSetCommitCallback("TexScaleV",&LLPanelFace::onCommitTextureInfo, this);
- childSetCommitCallback("TexRot",&LLPanelFace::onCommitTextureInfo, this);
+ childSetCommitCallback("TexScaleU",&LLPanelFace::onCommitTextureScaleX, this);
+ childSetCommitCallback("TexScaleV",&LLPanelFace::onCommitTextureScaleY, this);
+ childSetCommitCallback("TexRot",&LLPanelFace::onCommitTextureRot, this);
childSetCommitCallback("rptctrl",&LLPanelFace::onCommitRepeatsPerMeter, this);
childSetCommitCallback("checkbox planar align",&LLPanelFace::onCommitPlanarAlign, this);
- childSetCommitCallback("TexOffsetU",LLPanelFace::onCommitTextureInfo, this);
- childSetCommitCallback("TexOffsetV",LLPanelFace::onCommitTextureInfo, this);
+ childSetCommitCallback("TexOffsetU",LLPanelFace::onCommitTextureOffsetX, this);
+ childSetCommitCallback("TexOffsetV",LLPanelFace::onCommitTextureOffsetY, this);
childSetCommitCallback("bumpyScaleU",&LLPanelFace::onCommitMaterialBumpyScaleX, this);
childSetCommitCallback("bumpyScaleV",&LLPanelFace::onCommitMaterialBumpyScaleY, this);
@@ -691,6 +691,8 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
}
getChildView("radio_material_type")->setEnabled(editable);
+ getChildView("checkbox_sync_settings")->setEnabled(editable);
+ childSetValue("checkbox_sync_settings", gSavedSettings.getBOOL("SyncMaterialSettings"));
updateVisibility();
bool identical = true; // true because it is anded below
@@ -1863,11 +1865,38 @@ void LLPanelFace::onSelectNormalTexture(const LLSD& data)
}
//static
+void LLPanelFace::syncOffsetX(LLPanelFace* self, F32 offsetU)
+{
+ LLSelectedTEMaterial::setNormalOffsetX(self,offsetU);
+ LLSelectedTEMaterial::setSpecularOffsetX(self,offsetU);
+ self->getChild<LLSpinCtrl>("TexOffsetU")->forceSetValue(offsetU);
+ self->sendTextureInfo();
+}
+
+//static
+void LLPanelFace::syncOffsetY(LLPanelFace* self, F32 offsetV)
+{
+ LLSelectedTEMaterial::setNormalOffsetY(self,offsetV);
+ LLSelectedTEMaterial::setSpecularOffsetY(self,offsetV);
+ self->getChild<LLSpinCtrl>("TexOffsetV")->forceSetValue(offsetV);
+ self->sendTextureInfo();
+}
+
+//static
void LLPanelFace::onCommitMaterialBumpyOffsetX(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
llassert_always(self);
- LLSelectedTEMaterial::setNormalOffsetX(self,self->getCurrentBumpyOffsetU());
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ syncOffsetX(self,self->getCurrentBumpyOffsetU());
+ }
+ else
+ {
+ LLSelectedTEMaterial::setNormalOffsetX(self,self->getCurrentBumpyOffsetU());
+ }
+
}
//static
@@ -1875,7 +1904,15 @@ void LLPanelFace::onCommitMaterialBumpyOffsetY(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
llassert_always(self);
- LLSelectedTEMaterial::setNormalOffsetY(self,self->getCurrentBumpyOffsetV());
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ syncOffsetY(self,self->getCurrentBumpyOffsetV());
+ }
+ else
+ {
+ LLSelectedTEMaterial::setNormalOffsetY(self,self->getCurrentBumpyOffsetV());
+ }
}
//static
@@ -1883,7 +1920,15 @@ void LLPanelFace::onCommitMaterialShinyOffsetX(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
llassert_always(self);
- LLSelectedTEMaterial::setSpecularOffsetX(self,self->getCurrentShinyOffsetU());
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ syncOffsetX(self, self->getCurrentShinyOffsetU());
+ }
+ else
+ {
+ LLSelectedTEMaterial::setSpecularOffsetX(self,self->getCurrentShinyOffsetU());
+ }
}
//static
@@ -1891,7 +1936,31 @@ void LLPanelFace::onCommitMaterialShinyOffsetY(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
llassert_always(self);
- LLSelectedTEMaterial::setSpecularOffsetY(self,self->getCurrentShinyOffsetV());
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ syncOffsetY(self,self->getCurrentShinyOffsetV());
+ }
+ else
+ {
+ LLSelectedTEMaterial::setSpecularOffsetY(self,self->getCurrentShinyOffsetV());
+ }
+}
+
+//static
+void LLPanelFace::syncRepeatX(LLPanelFace* self, F32 scaleU)
+{
+ LLSelectedTEMaterial::setNormalRepeatX(self,scaleU);
+ LLSelectedTEMaterial::setSpecularRepeatX(self,scaleU);
+ self->sendTextureInfo();
+}
+
+//static
+void LLPanelFace::syncRepeatY(LLPanelFace* self, F32 scaleV)
+{
+ LLSelectedTEMaterial::setNormalRepeatY(self,scaleV);
+ LLSelectedTEMaterial::setSpecularRepeatY(self,scaleV);
+ self->sendTextureInfo();
}
//static
@@ -1904,7 +1973,16 @@ void LLPanelFace::onCommitMaterialBumpyScaleX(LLUICtrl* ctrl, void* userdata)
{
bumpy_scale_u *= 0.5f;
}
- LLSelectedTEMaterial::setNormalRepeatX(self,bumpy_scale_u);
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ self->getChild<LLSpinCtrl>("TexScaleU")->forceSetValue(self->getCurrentBumpyScaleU());
+ syncRepeatX(self, bumpy_scale_u);
+ }
+ else
+ {
+ LLSelectedTEMaterial::setNormalRepeatX(self,bumpy_scale_u);
+ }
}
//static
@@ -1917,7 +1995,17 @@ void LLPanelFace::onCommitMaterialBumpyScaleY(LLUICtrl* ctrl, void* userdata)
{
bumpy_scale_v *= 0.5f;
}
- LLSelectedTEMaterial::setNormalRepeatY(self,bumpy_scale_v);
+
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ self->getChild<LLSpinCtrl>("TexScaleV")->forceSetValue(self->getCurrentBumpyScaleV());
+ syncRepeatY(self, bumpy_scale_v);
+ }
+ else
+ {
+ LLSelectedTEMaterial::setNormalRepeatY(self,bumpy_scale_v);
+ }
}
//static
@@ -1930,7 +2018,16 @@ void LLPanelFace::onCommitMaterialShinyScaleX(LLUICtrl* ctrl, void* userdata)
{
shiny_scale_u *= 0.5f;
}
- LLSelectedTEMaterial::setSpecularRepeatX(self,shiny_scale_u);
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ self->getChild<LLSpinCtrl>("TexScaleU")->forceSetValue(self->getCurrentShinyScaleU());
+ syncRepeatX(self, shiny_scale_u);
+ }
+ else
+ {
+ LLSelectedTEMaterial::setSpecularRepeatX(self,shiny_scale_u);
+ }
}
//static
@@ -1943,7 +2040,24 @@ void LLPanelFace::onCommitMaterialShinyScaleY(LLUICtrl* ctrl, void* userdata)
{
shiny_scale_v *= 0.5f;
}
- LLSelectedTEMaterial::setSpecularRepeatY(self,shiny_scale_v);
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ self->getChild<LLSpinCtrl>("TexScaleV")->forceSetValue(self->getCurrentShinyScaleV());
+ syncRepeatY(self, shiny_scale_v);
+ }
+ else
+ {
+ LLSelectedTEMaterial::setSpecularRepeatY(self,shiny_scale_v);
+ }
+}
+
+//static
+void LLPanelFace::syncMaterialRot(LLPanelFace* self, F32 rot)
+{
+ LLSelectedTEMaterial::setNormalRotation(self,rot * DEG_TO_RAD);
+ LLSelectedTEMaterial::setSpecularRotation(self,rot * DEG_TO_RAD);
+ self->sendTextureInfo();
}
//static
@@ -1951,7 +2065,16 @@ void LLPanelFace::onCommitMaterialBumpyRot(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
llassert_always(self);
- LLSelectedTEMaterial::setNormalRotation(self,self->getCurrentBumpyRot() * DEG_TO_RAD);
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ self->getChild<LLSpinCtrl>("TexRot")->forceSetValue(self->getCurrentBumpyRot());
+ syncMaterialRot(self, self->getCurrentBumpyRot());
+ }
+ else
+ {
+ LLSelectedTEMaterial::setNormalRotation(self,self->getCurrentBumpyRot() * DEG_TO_RAD);
+ }
}
//static
@@ -1959,7 +2082,16 @@ void LLPanelFace::onCommitMaterialShinyRot(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
llassert_always(self);
- LLSelectedTEMaterial::setSpecularRotation(self,self->getCurrentShinyRot() * DEG_TO_RAD);
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ self->getChild<LLSpinCtrl>("TexRot")->forceSetValue(self->getCurrentShinyRot());
+ syncMaterialRot(self, self->getCurrentShinyRot());
+ }
+ else
+ {
+ LLSelectedTEMaterial::setSpecularRotation(self,self->getCurrentShinyRot() * DEG_TO_RAD);
+ }
}
//static
@@ -1994,6 +2126,92 @@ void LLPanelFace::onCommitTextureInfo( LLUICtrl* ctrl, void* userdata )
self->updateUI(true);
}
+// static
+void LLPanelFace::onCommitTextureScaleX( LLUICtrl* ctrl, void* userdata )
+{
+ LLPanelFace* self = (LLPanelFace*) userdata;
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ F32 bumpy_scale_u = self->getChild<LLUICtrl>("TexScaleU")->getValue().asReal();
+ if (self->isIdenticalPlanarTexgen())
+ {
+ bumpy_scale_u *= 0.5f;
+ }
+ syncRepeatX(self, bumpy_scale_u);
+ }
+ else
+ {
+ self->sendTextureInfo();
+ }
+ self->updateUI(true);
+}
+
+// static
+void LLPanelFace::onCommitTextureScaleY( LLUICtrl* ctrl, void* userdata )
+{
+ LLPanelFace* self = (LLPanelFace*) userdata;
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ F32 bumpy_scale_v = self->getChild<LLUICtrl>("TexScaleV")->getValue().asReal();
+ if (self->isIdenticalPlanarTexgen())
+ {
+ bumpy_scale_v *= 0.5f;
+ }
+ syncRepeatY(self, bumpy_scale_v);
+ }
+ else
+ {
+ self->sendTextureInfo();
+ }
+ self->updateUI(true);
+}
+
+// static
+void LLPanelFace::onCommitTextureRot( LLUICtrl* ctrl, void* userdata )
+{
+ LLPanelFace* self = (LLPanelFace*) userdata;
+
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ syncMaterialRot(self, self->getChild<LLUICtrl>("TexRot")->getValue().asReal());
+ }
+ else
+ {
+ self->sendTextureInfo();
+ }
+ self->updateUI(true);
+}
+
+// static
+void LLPanelFace::onCommitTextureOffsetX( LLUICtrl* ctrl, void* userdata )
+{
+ LLPanelFace* self = (LLPanelFace*) userdata;
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ syncOffsetX(self, self->getChild<LLUICtrl>("TexOffsetU")->getValue().asReal());
+ }
+ else
+ {
+ self->sendTextureInfo();
+ }
+ self->updateUI(true);
+}
+
+// static
+void LLPanelFace::onCommitTextureOffsetY( LLUICtrl* ctrl, void* userdata )
+{
+ LLPanelFace* self = (LLPanelFace*) userdata;
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+ {
+ syncOffsetY(self, self->getChild<LLUICtrl>("TexOffsetV")->getValue().asReal());
+ }
+ else
+ {
+ self->sendTextureInfo();
+ }
+ self->updateUI(true);
+}
+
// Commit the number of repeats per meter
// static
void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)
@@ -2017,44 +2235,62 @@ void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)
LLSelectedTE::getObjectScaleS(obj_scale_s, identical_scale_s);
LLSelectedTE::getObjectScaleS(obj_scale_t, identical_scale_t);
+
+ LLUICtrl* bumpy_scale_u = self->getChild<LLUICtrl>("bumpyScaleU");
+ LLUICtrl* bumpy_scale_v = self->getChild<LLUICtrl>("bumpyScaleV");
+ LLUICtrl* shiny_scale_u = self->getChild<LLUICtrl>("shinyScaleU");
+ LLUICtrl* shiny_scale_v = self->getChild<LLUICtrl>("shinyScaleV");
- switch (material_type)
+ if (gSavedSettings.getBOOL("SyncMaterialSettings"))
{
- case MATTYPE_DIFFUSE:
- {
- LLSelectMgr::getInstance()->selectionTexScaleAutofit( repeats_per_meter );
-}
- break;
+ LLSelectMgr::getInstance()->selectionTexScaleAutofit( repeats_per_meter );
- case MATTYPE_NORMAL:
- {
- LLUICtrl* bumpy_scale_u = self->getChild<LLUICtrl>("bumpyScaleU");
- LLUICtrl* bumpy_scale_v = self->getChild<LLUICtrl>("bumpyScaleV");
-
- bumpy_scale_u->setValue(obj_scale_s * repeats_per_meter);
- bumpy_scale_v->setValue(obj_scale_t * repeats_per_meter);
+ bumpy_scale_u->setValue(obj_scale_s * repeats_per_meter);
+ bumpy_scale_v->setValue(obj_scale_t * repeats_per_meter);
- LLSelectedTEMaterial::setNormalRepeatX(self,obj_scale_s * repeats_per_meter);
- LLSelectedTEMaterial::setNormalRepeatY(self,obj_scale_t * repeats_per_meter);
- }
- break;
+ LLSelectedTEMaterial::setNormalRepeatX(self,obj_scale_s * repeats_per_meter);
+ LLSelectedTEMaterial::setNormalRepeatY(self,obj_scale_t * repeats_per_meter);
- case MATTYPE_SPECULAR:
+ shiny_scale_u->setValue(obj_scale_s * repeats_per_meter);
+ shiny_scale_v->setValue(obj_scale_t * repeats_per_meter);
+
+ LLSelectedTEMaterial::setSpecularRepeatX(self,obj_scale_s * repeats_per_meter);
+ LLSelectedTEMaterial::setSpecularRepeatY(self,obj_scale_t * repeats_per_meter);
+ }
+ else
+ {
+ switch (material_type)
{
- LLUICtrl* shiny_scale_u = self->getChild<LLUICtrl>("shinyScaleU");
- LLUICtrl* shiny_scale_v = self->getChild<LLUICtrl>("shinyScaleV");
-
- shiny_scale_u->setValue(obj_scale_s * repeats_per_meter);
- shiny_scale_v->setValue(obj_scale_t * repeats_per_meter);
+ case MATTYPE_DIFFUSE:
+ {
+ LLSelectMgr::getInstance()->selectionTexScaleAutofit( repeats_per_meter );
+ }
+ break;
- LLSelectedTEMaterial::setSpecularRepeatX(self,obj_scale_s * repeats_per_meter);
- LLSelectedTEMaterial::setSpecularRepeatY(self,obj_scale_t * repeats_per_meter);
- }
- break;
+ case MATTYPE_NORMAL:
+ {
+ bumpy_scale_u->setValue(obj_scale_s * repeats_per_meter);
+ bumpy_scale_v->setValue(obj_scale_t * repeats_per_meter);
- default:
- llassert(false);
- break;
+ LLSelectedTEMaterial::setNormalRepeatX(self,obj_scale_s * repeats_per_meter);
+ LLSelectedTEMaterial::setNormalRepeatY(self,obj_scale_t * repeats_per_meter);
+ }
+ break;
+
+ case MATTYPE_SPECULAR:
+ {
+ shiny_scale_u->setValue(obj_scale_s * repeats_per_meter);
+ shiny_scale_v->setValue(obj_scale_t * repeats_per_meter);
+
+ LLSelectedTEMaterial::setSpecularRepeatX(self,obj_scale_s * repeats_per_meter);
+ LLSelectedTEMaterial::setSpecularRepeatY(self,obj_scale_t * repeats_per_meter);
+ }
+ break;
+
+ default:
+ llassert(false);
+ break;
+ }
}
// vertical scale and repeats per meter depends on each other, so force set on changes
self->updateUI(true);
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index 078995e787..7c084cb0ab 100644
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -162,7 +162,12 @@ protected:
// Callback funcs for individual controls
//
- static void onCommitTextureInfo( LLUICtrl* ctrl, void* userdata);
+ static void onCommitTextureInfo(LLUICtrl* ctrl, void* userdata);
+ static void onCommitTextureScaleX(LLUICtrl* ctrl, void* userdata);
+ static void onCommitTextureScaleY(LLUICtrl* ctrl, void* userdata);
+ static void onCommitTextureRot(LLUICtrl* ctrl, void* userdata);
+ static void onCommitTextureOffsetX(LLUICtrl* ctrl, void* userdata);
+ static void onCommitTextureOffsetY(LLUICtrl* ctrl, void* userdata);
static void onCommitMaterialBumpyScaleX( LLUICtrl* ctrl, void* userdata);
static void onCommitMaterialBumpyScaleY( LLUICtrl* ctrl, void* userdata);
@@ -170,6 +175,12 @@ protected:
static void onCommitMaterialBumpyOffsetX( LLUICtrl* ctrl, void* userdata);
static void onCommitMaterialBumpyOffsetY( LLUICtrl* ctrl, void* userdata);
+ static void syncRepeatX(LLPanelFace* self, F32 scaleU);
+ static void syncRepeatY(LLPanelFace* self, F32 scaleV);
+ static void syncOffsetX(LLPanelFace* self, F32 offsetU);
+ static void syncOffsetY(LLPanelFace* self, F32 offsetV);
+ static void syncMaterialRot(LLPanelFace* self, F32 rot);
+
static void onCommitMaterialShinyScaleX( LLUICtrl* ctrl, void* userdata);
static void onCommitMaterialShinyScaleY( LLUICtrl* ctrl, void* userdata);
static void onCommitMaterialShinyRot( LLUICtrl* ctrl, void* userdata);
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index fa946ee5c7..3db9500de0 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -1158,6 +1158,26 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
mFilterEditor->setText(item_name);
mFilterEditor->setFocus(TRUE);
}
+
+ if (command_name == "replace_links")
+ {
+ LLSD params;
+ LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem();
+ if (current_item)
+ {
+ LLInvFVBridge* bridge = (LLInvFVBridge*)current_item->getViewModelItem();
+
+ if (bridge)
+ {
+ LLInventoryObject* obj = bridge->getInventoryObject();
+ if (obj && obj->getType() != LLAssetType::AT_CATEGORY && obj->getActualType() != LLAssetType::AT_LINK_FOLDER)
+ {
+ params = LLSD(obj->getUUID());
+ }
+ }
+ }
+ LLFloaterReg::showInstance("linkreplace", params);
+ }
}
void LLPanelMainInventory::onVisibilityChange( BOOL new_visibility )
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 6409620336..dbfebf901a 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -2052,7 +2052,9 @@ BOOL LLPanelObjectInventory::handleKeyHere( KEY key, MASK mask )
switch (key)
{
case KEY_DELETE:
+#if LL_DARWIN
case KEY_BACKSPACE:
+#endif
// Delete selected items if delete or backspace key hit on the inventory panel
// Note: on Mac laptop keyboards, backspace and delete are one and the same
if (isSelectionRemovable() && mask == MASK_NONE)
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index bc177abc57..eb2a297a35 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -1465,7 +1465,17 @@ void LLPanelPeople::onOpen(const LLSD& key)
{
std::string tab_name = key["people_panel_tab_name"];
if (!tab_name.empty())
+ {
mTabContainer->selectTabByName(tab_name);
+ if(tab_name == BLOCKED_TAB_NAME)
+ {
+ LLPanel* blocked_tab = mTabContainer->getCurrentPanel()->findChild<LLPanel>("panel_block_list_sidetray");
+ if(blocked_tab)
+ {
+ blocked_tab->onOpen(key);
+ }
+ }
+ }
}
bool LLPanelPeople::notifyChildren(const LLSD& info)
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index 203c57b732..29ca172f60 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -56,15 +56,20 @@
#include "llfloatergroups.h"
#include "llfloaterreg.h"
#include "llavataractions.h"
+#include "llavatariconctrl.h"
#include "llnamebox.h"
#include "llviewercontrol.h"
#include "lluictrlfactory.h"
#include "llspinctrl.h"
#include "roles_constants.h"
#include "llgroupactions.h"
+#include "llgroupiconctrl.h"
#include "lltrans.h"
#include "llinventorymodel.h"
+#include "llavatarnamecache.h"
+#include "llcachename.h"
+
U8 string_value_to_click_action(std::string p_value);
std::string click_action_to_string_value( U8 action);
@@ -186,10 +191,13 @@ void LLPanelPermissions::disableAll()
getChild<LLUICtrl>("pathfinding_attributes_value")->setValue(LLStringUtil::null);
getChildView("Creator:")->setEnabled(FALSE);
+ getChild<LLUICtrl>("Creator Icon")->setVisible(FALSE);
getChild<LLUICtrl>("Creator Name")->setValue(LLStringUtil::null);
getChildView("Creator Name")->setEnabled(FALSE);
getChildView("Owner:")->setEnabled(FALSE);
+ getChild<LLUICtrl>("Owner Icon")->setVisible(FALSE);
+ getChild<LLUICtrl>("Owner Group Icon")->setVisible(FALSE);
getChild<LLUICtrl>("Owner Name")->setValue(LLStringUtil::null);
getChildView("Owner Name")->setEnabled(FALSE);
@@ -366,39 +374,87 @@ void LLPanelPermissions::refresh()
// Update creator text field
getChildView("Creator:")->setEnabled(TRUE);
- std::string creator_name;
- LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_name);
-
- getChild<LLUICtrl>("Creator Name")->setValue(creator_name);
+ std::string creator_app_link;
+ LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_app_link);
+
+ // Style for creator and owner links (both group and agent)
+ LLStyle::Params style_params;
+ LLColor4 link_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+ style_params.color = link_color;
+ style_params.readonly_color = link_color;
+ style_params.is_link = true; // link will be added later
+ const LLFontGL* fontp = getChild<LLTextBox>("Creator Name")->getFont();
+ style_params.font.name = LLFontGL::nameFromFont(fontp);
+ style_params.font.size = LLFontGL::sizeFromFont(fontp);
+ style_params.font.style = "UNDERLINE";
+
+ LLAvatarName av_name;
+ if (LLAvatarNameCache::get(mCreatorID, &av_name))
+ {
+ // If name isn't present, this will 'request' it and trigger refresh() again
+ LLTextBox* text_box = getChild<LLTextBox>("Creator Name");
+ style_params.link_href = creator_app_link;
+ text_box->setText(av_name.getCompleteName(), style_params);
+ }
+ getChild<LLAvatarIconCtrl>("Creator Icon")->setValue(mCreatorID);
+ getChild<LLAvatarIconCtrl>("Creator Icon")->setVisible(TRUE);
getChildView("Creator Name")->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())
+ std::string owner_app_link;
+ const BOOL owners_identical = LLSelectMgr::getInstance()->selectGetOwner(mOwnerID, owner_app_link);
+
+
+ if (LLSelectMgr::getInstance()->selectIsGroupOwned())
{
- if (LLSelectMgr::getInstance()->selectIsGroupOwned())
+ // Group owned already displayed by selectGetOwner
+ LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(mOwnerID);
+ if (group_data && group_data->isGroupPropertiesDataComplete())
{
- // Group owned already displayed by selectGetOwner
+ LLTextBox* text_box = getChild<LLTextBox>("Owner Name");
+ style_params.link_href = owner_app_link;
+ text_box->setText(group_data->mName, style_params);
+ getChild<LLGroupIconCtrl>("Owner Group Icon")->setIconId(group_data->mInsigniaID);
+ getChild<LLGroupIconCtrl>("Owner Group Icon")->setVisible(TRUE);
+ getChild<LLUICtrl>("Owner Icon")->setVisible(FALSE);
}
else
{
+ // Triggers refresh
+ LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mOwnerID);
+ }
+ }
+ else
+ {
+ LLUUID owner_id = mOwnerID;
+ if (owner_id.isNull())
+ {
// Display last owner if public
- std::string last_owner_name;
- LLSelectMgr::getInstance()->selectGetLastOwner(mLastOwnerID, last_owner_name);
+ std::string last_owner_app_link;
+ LLSelectMgr::getInstance()->selectGetLastOwner(mLastOwnerID, last_owner_app_link);
// It should never happen that the last owner is null and the owner
// is null, but it seems to be a bug in the simulator right now. JC
- if (!mLastOwnerID.isNull() && !last_owner_name.empty())
+ if (!mLastOwnerID.isNull() && !last_owner_app_link.empty())
{
- owner_name.append(", last ");
- owner_name.append(last_owner_name);
+ owner_app_link.append(", last ");
+ owner_app_link.append(last_owner_app_link);
}
+ owner_id = mLastOwnerID;
+ }
+ if (LLAvatarNameCache::get(owner_id, &av_name))
+ {
+ // If name isn't present, this will 'request' it and trigger refresh() again
+ LLTextBox* text_box = getChild<LLTextBox>("Owner Name");
+ style_params.link_href = owner_app_link;
+ text_box->setText(av_name.getCompleteName(), style_params);
}
+ getChild<LLAvatarIconCtrl>("Owner Icon")->setValue(owner_id);
+ getChild<LLAvatarIconCtrl>("Owner Icon")->setVisible(TRUE);
+ getChild<LLUICtrl>("Owner Group Icon")->setVisible(FALSE);
}
- getChild<LLUICtrl>("Owner Name")->setValue(owner_name);
getChildView("Owner Name")->setEnabled(TRUE);
// update group text field
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 1d021ec28f..b2c450aa0c 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -40,6 +40,7 @@
#include "lltoastnotifypanel.h"
#include "lltoastscripttextbox.h"
#include "lltrans.h"
+#include "llviewerobjectlist.h"
#include "llviewerwindow.h"
#include "llfloaterimsession.h"
@@ -61,6 +62,7 @@ LLUUID notification_id_to_object_id(const LLUUID& notification_id)
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
+
LLScriptFloater::LLScriptFloater(const LLSD& key)
: LLDockableFloater(NULL, true, key)
, mScriptForm(NULL)
@@ -346,6 +348,11 @@ void LLScriptFloater::hideToastsIfNeeded()
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
+LLScriptFloaterManager::LLScriptFloaterManager()
+{
+ gSavedSettings.getControl("ScriptDialogLimitations")->getCommitSignal()->connect(boost::bind(&clearScriptNotifications));
+}
+
void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
{
if(notification_id.isNull())
@@ -365,16 +372,86 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
// LLDialog can spawn only one instance, LLLoadURL and LLGiveInventory can spawn unlimited number of instances
if(OBJ_SCRIPT == obj_type)
{
- // If an Object spawns more-than-one floater, only the newest one is shown.
- // The previous is automatically closed.
- script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
+ static LLCachedControl<U32> script_dialog_limitations(gSavedSettings, "ScriptDialogLimitations", 0);
+ script_notification_map_t::const_iterator it = mNotifications.end();
+ switch (script_dialog_limitations)
+ {
+ case SCRIPT_PER_CHANNEL:
+ {
+ // If an Object spawns more-than-one floater per channel, only the newest one is shown.
+ // The previous is automatically closed.
+ LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+ if (notification)
+ {
+ it = findUsingObjectIdAndChannel(object_id, notification->getPayload()["chat_channel"].asInteger());
+ }
+ break;
+ }
+ case SCRIPT_ATTACHMENT_PER_CHANNEL:
+ {
+ LLViewerObject* objectp = gObjectList.findObject(object_id);
+ if (objectp && objectp->getAttachmentItemID().notNull()) //in user inventory
+ {
+ LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+ if (notification)
+ {
+ it = findUsingObjectIdAndChannel(object_id, notification->getPayload()["chat_channel"].asInteger());
+ }
+ }
+ else
+ {
+ it = findUsingObjectId(object_id);
+ }
+ break;
+ }
+ case SCRIPT_HUD_PER_CHANNEL:
+ {
+ LLViewerObject* objectp = gObjectList.findObject(object_id);
+ if (objectp && objectp->isHUDAttachment())
+ {
+ LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+ if (notification)
+ {
+ it = findUsingObjectIdAndChannel(object_id, notification->getPayload()["chat_channel"].asInteger());
+ }
+ }
+ else
+ {
+ it = findUsingObjectId(object_id);
+ }
+ break;
+ }
+ case SCRIPT_HUD_UNCONSTRAINED:
+ {
+ LLViewerObject* objectp = gObjectList.findObject(object_id);
+ if (objectp && objectp->isHUDAttachment())
+ {
+ // don't remove existing floaters
+ break;
+ }
+ else
+ {
+ it = findUsingObjectId(object_id);
+ }
+ break;
+ }
+ case SCRIPT_PER_OBJECT:
+ default:
+ {
+ // If an Object spawns more-than-one floater, only the newest one is shown.
+ // The previous is automatically closed.
+ it = findUsingObjectId(object_id);
+ break;
+ }
+ }
+
if(it != mNotifications.end())
{
LLChicletPanel * chiclet_panelp = LLChicletBar::getInstance()->getChicletPanel();
if (NULL != chiclet_panelp)
{
LLIMChiclet * chicletp = chiclet_panelp->findChiclet<LLIMChiclet>(it->first);
- if(NULL != chicletp)
+ if (NULL != chicletp)
{
// Pass the new_message icon state further.
set_new_message = chicletp->getShowNewMessagesIcon();
@@ -383,7 +460,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
}
LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", it->first);
- if(floater)
+ if (floater)
{
// Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142.
set_new_message |= !floater->hasFocus();
@@ -579,6 +656,23 @@ LLScriptFloaterManager::script_notification_map_t::const_iterator LLScriptFloate
return mNotifications.end();
}
+LLScriptFloaterManager::script_notification_map_t::const_iterator LLScriptFloaterManager::findUsingObjectIdAndChannel(const LLUUID& object_id, S32 im_channel)
+{
+ script_notification_map_t::const_iterator it = mNotifications.begin();
+ for (; mNotifications.end() != it; ++it)
+ {
+ if (object_id == it->second)
+ {
+ LLNotificationPtr notification = LLNotifications::instance().find(it->first);
+ if (notification && (im_channel == notification->getPayload()["chat_channel"].asInteger()))
+ {
+ return it;
+ }
+ }
+ }
+ return mNotifications.end();
+}
+
void LLScriptFloaterManager::saveFloaterPosition(const LLUUID& object_id, const FloaterPositionInfo& fpi)
{
if(object_id.notNull())
@@ -612,6 +706,33 @@ void LLScriptFloaterManager::setFloaterVisible(const LLUUID& notification_id, bo
}
}
+//static
+void LLScriptFloaterManager::clearScriptNotifications()
+{
+ LLScriptFloaterManager* inst = LLScriptFloaterManager::getInstance();
+ static const object_type_map TYPE_MAP = initObjectTypeMap();
+
+ script_notification_map_t::const_iterator ntf_it = inst->mNotifications.begin();
+ while (inst->mNotifications.end() != ntf_it)
+ {
+ LLUUID notification_id = ntf_it->first;
+ ntf_it++; // onRemoveNotification() erases notification
+ LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+ if (notification)
+ {
+ object_type_map::const_iterator map_it = TYPE_MAP.find(notification->getName());
+ if (map_it != TYPE_MAP.end() && map_it->second == OBJ_SCRIPT)
+ {
+ if (notification != NULL && !notification->isCancelled())
+ {
+ LLNotificationsUtil::cancel(notification);
+ }
+ inst->onRemoveNotification(notification_id);
+ }
+ }
+ }
+}
+
//////////////////////////////////////////////////////////////////
bool LLScriptFloater::isScriptTextbox(LLNotificationPtr notification)
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index c0b84abdcb..0192a8893e 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -41,7 +41,7 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
// *TODO
// LLScriptFloaterManager and LLScriptFloater will need some refactoring after we
// know how script notifications should look like.
- LLSINGLETON_EMPTY_CTOR(LLScriptFloaterManager);
+ LLSINGLETON(LLScriptFloaterManager);
public:
typedef enum e_object_type
@@ -53,6 +53,15 @@ public:
OBJ_UNKNOWN
}EObjectType;
+ typedef enum e_limitation_type
+ {
+ SCRIPT_PER_OBJECT = 0,
+ SCRIPT_PER_CHANNEL = 1,
+ SCRIPT_ATTACHMENT_PER_CHANNEL,
+ SCRIPT_HUD_PER_CHANNEL,
+ SCRIPT_HUD_UNCONSTRAINED
+ }ELimitationType;
+
/**
* Handles new notifications.
* Saves notification and object ids, removes old notification if needed, creates script chiclet
@@ -104,6 +113,11 @@ public:
protected:
+ /**
+ * Removes all script-dialog notifications
+ */
+ static void clearScriptNotifications();
+
typedef std::map<std::string, EObjectType> object_type_map;
static object_type_map initObjectTypeMap();
@@ -112,6 +126,7 @@ protected:
typedef std::map<LLUUID, LLUUID> script_notification_map_t;
script_notification_map_t::const_iterator findUsingObjectId(const LLUUID& object_id);
+ script_notification_map_t::const_iterator findUsingObjectIdAndChannel(const LLUUID& object_id, S32 im_channel);
private:
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 3c58dd7194..43e7e57814 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -815,40 +815,49 @@ void LLSidepanelItemInfo::onCommitPermissions()
//LL_INFOS() << "LLSidepanelItemInfo::onCommitPermissions()" << LL_ENDL;
LLViewerInventoryItem* item = findItem();
if(!item) return;
+
+ BOOL is_group_owned;
+ LLUUID owner_id;
+ LLUUID group_id;
LLPermissions perm(item->getPermissions());
+ perm.getOwnership(owner_id, is_group_owned);
+ if (is_group_owned && gAgent.hasPowerInGroup(owner_id, GP_OBJECT_MANIPULATE))
+ {
+ group_id = owner_id;
+ }
LLCheckBoxCtrl* CheckShareWithGroup = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
if(CheckShareWithGroup)
{
- perm.setGroupBits(gAgent.getID(), gAgent.getGroupID(),
+ perm.setGroupBits(gAgent.getID(), group_id,
CheckShareWithGroup->get(),
PERM_MODIFY | PERM_MOVE | PERM_COPY);
}
LLCheckBoxCtrl* CheckEveryoneCopy = getChild<LLCheckBoxCtrl>("CheckEveryoneCopy");
if(CheckEveryoneCopy)
{
- perm.setEveryoneBits(gAgent.getID(), gAgent.getGroupID(),
+ perm.setEveryoneBits(gAgent.getID(), group_id,
CheckEveryoneCopy->get(), PERM_COPY);
}
LLCheckBoxCtrl* CheckNextOwnerModify = getChild<LLCheckBoxCtrl>("CheckNextOwnerModify");
if(CheckNextOwnerModify)
{
- perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+ perm.setNextOwnerBits(gAgent.getID(), group_id,
CheckNextOwnerModify->get(), PERM_MODIFY);
}
LLCheckBoxCtrl* CheckNextOwnerCopy = getChild<LLCheckBoxCtrl>("CheckNextOwnerCopy");
if(CheckNextOwnerCopy)
{
- perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+ perm.setNextOwnerBits(gAgent.getID(), group_id,
CheckNextOwnerCopy->get(), PERM_COPY);
}
LLCheckBoxCtrl* CheckNextOwnerTransfer = getChild<LLCheckBoxCtrl>("CheckNextOwnerTransfer");
if(CheckNextOwnerTransfer)
{
- perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+ perm.setNextOwnerBits(gAgent.getID(), group_id,
CheckNextOwnerTransfer->get(), PERM_TRANSFER);
}
if(perm != item->getPermissions()
diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp
index a961f0e3b4..3ef89ba920 100644
--- a/indra/newview/llsky.cpp
+++ b/indra/newview/llsky.cpp
@@ -51,6 +51,7 @@
#include "llvosky.h"
#include "llcubemap.h"
#include "llviewercontrol.h"
+#include "llenvmanager.h"
#include "llvowlsky.h"
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 0a85344025..33b6352bf5 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1462,6 +1462,7 @@ bool idle_startup()
LLGLState::checkStates();
LLGLState::checkTextureChannels();
+ LLEnvManagerNew::getInstance()->usePrefs(); // Load all presets and settings
gSky.init(initial_sun_direction);
LLGLState::checkStates();
diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp
index 49d29c0e4e..01b4fcfbe1 100644
--- a/indra/newview/llviewerassetupload.cpp
+++ b/indra/newview/llviewerassetupload.cpp
@@ -53,6 +53,8 @@
void dialog_refresh_all();
+static const U32 LL_ASSET_UPLOAD_TIMEOUT_SEC = 60;
+
LLResourceUploadInfo::LLResourceUploadInfo(LLTransactionID transactId,
LLAssetType::EType assetType, std::string name, std::string description,
S32 compressionInfo, LLFolderType::EType destinationType,
@@ -678,6 +680,8 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
const LLUUID &id, std::string url, LLResourceUploadInfo::ptr_t uploadInfo)
{
LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
+ LLCore::HttpOptions::ptr_t httpOptions(new LLCore::HttpOptions);
+ httpOptions->setTimeout(LL_ASSET_UPLOAD_TIMEOUT_SEC);
LLSD result = uploadInfo->prepareUpload();
uploadInfo->logPreparedUpload();
@@ -699,7 +703,7 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
LLSD body = uploadInfo->generatePostBody();
- result = httpAdapter->postAndSuspend(httpRequest, url, body);
+ result = httpAdapter->postAndSuspend(httpRequest, url, body, httpOptions);
LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
@@ -717,7 +721,7 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
bool success = false;
if (!uploader.empty() && uploadInfo->getAssetId().notNull())
{
- result = httpAdapter->postFileAndSuspend(httpRequest, uploader, uploadInfo->getAssetId(), uploadInfo->getAssetType());
+ result = httpAdapter->postFileAndSuspend(httpRequest, uploader, uploadInfo->getAssetId(), uploadInfo->getAssetType(), httpOptions);
httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
@@ -811,14 +815,19 @@ void LLViewerAssetUpload::HandleUploadError(LLCore::HttpStatus status, LLSD &res
}
else
{
- if (status.getType() == 499)
- {
- reason = "The server is experiencing unexpected difficulties.";
- }
- else
+ switch (status.getType())
{
- reason = "Error in upload request. Please visit "
- "http://secondlife.com/support for help fixing this problem.";
+ case 404:
+ reason = LLTrans::getString("AssetUploadServerUnreacheble");
+ break;
+ case 499:
+ reason = LLTrans::getString("AssetUploadServerDifficulties");
+ break;
+ case 503:
+ reason = LLTrans::getString("AssetUploadServerUnavaliable");
+ break;
+ default:
+ reason = LLTrans::getString("AssetUploadRequestInvalid");
}
}
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index cf18299b0b..0ebacddd9b 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -83,6 +83,7 @@
#include "llfloaterlagmeter.h"
#include "llfloaterland.h"
#include "llfloaterlandholdings.h"
+#include "llfloaterlinkreplace.h"
#include "llfloaterloadprefpreset.h"
#include "llfloatermap.h"
#include "llfloatermarketplacelistings.h"
@@ -103,6 +104,7 @@
#include "llfloaterperms.h"
#include "llfloaterpostprocess.h"
#include "llfloaterpreference.h"
+#include "llfloaterpreviewtrash.h"
#include "llfloaterproperties.h"
#include "llfloaterregiondebugconsole.h"
#include "llfloaterregioninfo.h"
@@ -257,6 +259,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLagMeter>);
LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>);
+ LLFloaterReg::add("linkreplace", "floater_linkreplace.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLinkReplace>);
LLFloaterReg::add("load_pref_preset", "floater_load_pref_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLoadPrefPreset>);
LLFloaterReg::add("mem_leaking", "floater_mem_leaking.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMemLeak>);
@@ -307,6 +310,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("preview_scriptedit", "floater_live_lsleditor.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLLiveLSLEditor>, "preview");
LLFloaterReg::add("preview_sound", "floater_preview_sound.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewSound>, "preview");
LLFloaterReg::add("preview_texture", "floater_preview_texture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewTexture>, "preview");
+ LLFloaterReg::add("preview_trash", "floater_preview_trash.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreviewTrash>);
LLFloaterReg::add("properties", "floater_inventory_item_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterProperties>);
LLFloaterReg::add("publish_classified", "floater_publish_classified.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPublishClassifiedFloater>);
LLFloaterReg::add("save_pref_preset", "floater_save_pref_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSavePrefPreset>);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index ab76653ba6..507087d1ae 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -6042,7 +6042,14 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
return LLMarketplaceData::instance().getListing(llsdBlock["listing_id"].asInteger());
}
}
-
+
+ // Error Notification can come with and without reason
+ if (notificationID == "JoinGroupError" && llsdBlock.has("reason"))
+ {
+ LLNotificationsUtil::add("JoinGroupErrorReason", llsdBlock);
+ return true;
+ }
+
LLNotificationsUtil::add(notificationID, llsdBlock);
return true;
}
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 45dbd95bea..1d6daed9cc 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -6274,6 +6274,24 @@ BOOL LLViewerObject::isTempAttachment() const
return (mID.notNull() && (mID == mAttachmentItemID));
}
+BOOL LLViewerObject::isHiglightedOrBeacon() const
+{
+ if (LLFloaterReg::instanceVisible("beacons") && (gPipeline.getRenderBeacons(NULL) || gPipeline.getRenderHighlights(NULL)))
+ {
+ BOOL has_media = (getMediaType() == LLViewerObject::MEDIA_SET);
+ BOOL is_scripted = !isAvatar() && !getParent() && flagScripted();
+ BOOL is_physical = !isAvatar() && flagUsePhysics();
+
+ return (isParticleSource() && gPipeline.getRenderParticleBeacons(NULL))
+ || (isAudioSource() && gPipeline.getRenderSoundBeacons(NULL))
+ || (has_media && gPipeline.getRenderMOAPBeacons(NULL))
+ || (is_scripted && gPipeline.getRenderScriptedBeacons(NULL))
+ || (is_scripted && flagHandleTouch() && gPipeline.getRenderScriptedTouchBeacons(NULL))
+ || (is_physical && gPipeline.getRenderPhysicalBeacons(NULL));
+ }
+ return FALSE;
+}
+
const LLUUID &LLViewerObject::getAttachmentItemID() const
{
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 1e8f3f4ec2..24fcf0517e 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -178,6 +178,8 @@ public:
virtual BOOL isHUDAttachment() const { return FALSE; }
virtual BOOL isTempAttachment() const;
+ virtual BOOL isHiglightedOrBeacon() const;
+
virtual void updateRadius() {};
virtual F32 getVObjRadius() const; // default implemenation is mDrawable->getRadius()
@@ -388,7 +390,7 @@ public:
// Create if necessary
LLAudioSource *getAudioSource(const LLUUID& owner_id);
- bool isAudioSource() {return mAudioSourcep != NULL;}
+ BOOL isAudioSource() const {return mAudioSourcep != NULL;}
U8 getMediaType() const;
void setMediaType(U8 media_type);
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 2a126c9f01..a61181bada 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -1427,122 +1427,128 @@ void LLViewerParcelMgr::processParcelOverlay(LLMessageSystem *msg, void **user)
// static
void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **user)
{
- S32 request_result;
- S32 sequence_id;
- BOOL snap_selection = FALSE;
- S32 self_count = 0;
- S32 other_count = 0;
- S32 public_count = 0;
- S32 local_id;
- LLUUID owner_id;
- BOOL is_group_owned;
- U32 auction_id = 0;
- S32 claim_price_per_meter = 0;
- S32 rent_price_per_meter = 0;
- S32 claim_date = 0;
- LLVector3 aabb_min;
- LLVector3 aabb_max;
- S32 area = 0;
- S32 sw_max_prims = 0;
- S32 sw_total_prims = 0;
- //LLUUID buyer_id;
- U8 status = 0;
- S32 max_prims = 0;
- S32 total_prims = 0;
- S32 owner_prims = 0;
- S32 group_prims = 0;
- S32 other_prims = 0;
- S32 selected_prims = 0;
- F32 parcel_prim_bonus = 1.f;
- BOOL region_push_override = false;
- BOOL region_deny_anonymous_override = false;
- BOOL region_deny_identified_override = false; // Deprecated
- BOOL region_deny_transacted_override = false; // Deprecated
- BOOL region_deny_age_unverified_override = false;
+ S32 request_result;
+ S32 sequence_id;
+ BOOL snap_selection = FALSE;
+ S32 self_count = 0;
+ S32 other_count = 0;
+ S32 public_count = 0;
+ S32 local_id;
+ LLUUID owner_id;
+ BOOL is_group_owned;
+ U32 auction_id = 0;
+ S32 claim_price_per_meter = 0;
+ S32 rent_price_per_meter = 0;
+ S32 claim_date = 0;
+ LLVector3 aabb_min;
+ LLVector3 aabb_max;
+ S32 area = 0;
+ S32 sw_max_prims = 0;
+ S32 sw_total_prims = 0;
+ //LLUUID buyer_id;
+ U8 status = 0;
+ S32 max_prims = 0;
+ S32 total_prims = 0;
+ S32 owner_prims = 0;
+ S32 group_prims = 0;
+ S32 other_prims = 0;
+ S32 selected_prims = 0;
+ F32 parcel_prim_bonus = 1.f;
+ BOOL region_push_override = false;
+ BOOL region_deny_anonymous_override = false;
+ BOOL region_deny_identified_override = false; // Deprecated
+ BOOL region_deny_transacted_override = false; // Deprecated
+ BOOL region_deny_age_unverified_override = false;
+ BOOL region_allow_access_override = true;
BOOL agent_parcel_update = false; // updating previous(existing) agent parcel
- S32 other_clean_time = 0;
+ S32 other_clean_time = 0;
- LLViewerParcelMgr& parcel_mgr = LLViewerParcelMgr::instance();
+ LLViewerParcelMgr& parcel_mgr = LLViewerParcelMgr::instance();
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_RequestResult, request_result );
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SequenceID, sequence_id );
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_RequestResult, request_result);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SequenceID, sequence_id);
- if (request_result == PARCEL_RESULT_NO_DATA)
- {
- // no valid parcel data
- LL_INFOS() << "no valid parcel data" << LL_ENDL;
- return;
- }
-
- // Decide where the data will go.
- LLParcel* parcel = NULL;
- if (sequence_id == SELECTED_PARCEL_SEQ_ID)
- {
- // ...selected parcels report this sequence id
- parcel_mgr.mRequestResult = PARCEL_RESULT_SUCCESS;
- parcel = parcel_mgr.mCurrentParcel;
- }
- else if (sequence_id == HOVERED_PARCEL_SEQ_ID)
- {
- parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
- parcel = parcel_mgr.mHoverParcel;
- }
- else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID ||
- sequence_id == COLLISION_NOT_ON_LIST_PARCEL_SEQ_ID ||
- sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
- {
- parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
- parcel = parcel_mgr.mCollisionParcel;
- }
- else if (sequence_id == 0 || sequence_id > parcel_mgr.mAgentParcelSequenceID)
- {
- // new agent parcel
- parcel_mgr.mAgentParcelSequenceID = sequence_id;
- parcel = parcel_mgr.mAgentParcel;
- }
- else
- {
- LL_INFOS() << "out of order agent parcel sequence id " << sequence_id
- << " last good " << parcel_mgr.mAgentParcelSequenceID
- << LL_ENDL;
- return;
- }
-
- msg->getBOOL("ParcelData", "SnapSelection", snap_selection);
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SelfCount, self_count);
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OtherCount, other_count);
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_PublicCount, public_count);
- msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_LocalID, local_id );
- msg->getUUIDFast(_PREHASH_ParcelData, _PREHASH_OwnerID, owner_id);
- msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_IsGroupOwned, is_group_owned);
- msg->getU32Fast(_PREHASH_ParcelData, _PREHASH_AuctionID, auction_id);
- msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_ClaimDate, claim_date);
- msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_ClaimPrice, claim_price_per_meter);
- msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_RentPrice, rent_price_per_meter);
- msg->getVector3Fast(_PREHASH_ParcelData, _PREHASH_AABBMin, aabb_min);
- msg->getVector3Fast(_PREHASH_ParcelData, _PREHASH_AABBMax, aabb_max);
- msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_Area, area );
- //msg->getUUIDFast( _PREHASH_ParcelData, _PREHASH_BuyerID, buyer_id);
- msg->getU8("ParcelData", "Status", status);
- msg->getS32("ParcelData", "SimWideMaxPrims", sw_max_prims );
- msg->getS32("ParcelData", "SimWideTotalPrims", sw_total_prims );
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_MaxPrims, max_prims );
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_TotalPrims, total_prims );
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OwnerPrims, owner_prims );
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_GroupPrims, group_prims );
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OtherPrims, other_prims );
- msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SelectedPrims, selected_prims );
- msg->getF32Fast(_PREHASH_ParcelData, _PREHASH_ParcelPrimBonus, parcel_prim_bonus );
- msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionPushOverride, region_push_override );
- msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyAnonymous, region_deny_anonymous_override );
- msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyIdentified, region_deny_identified_override ); // Deprecated
- msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyTransacted, region_deny_transacted_override ); // Deprecated
- if (msg->getNumberOfBlocksFast(_PREHASH_AgeVerificationBlock))
- {
- // this block was added later and may not be on older sims, so we have to test its existence first
- msg->getBOOLFast(_PREHASH_AgeVerificationBlock, _PREHASH_RegionDenyAgeUnverified, region_deny_age_unverified_override );
- }
+ if (request_result == PARCEL_RESULT_NO_DATA)
+ {
+ // no valid parcel data
+ LL_INFOS() << "no valid parcel data" << LL_ENDL;
+ return;
+ }
+
+ // Decide where the data will go.
+ LLParcel* parcel = NULL;
+ if (sequence_id == SELECTED_PARCEL_SEQ_ID)
+ {
+ // ...selected parcels report this sequence id
+ parcel_mgr.mRequestResult = PARCEL_RESULT_SUCCESS;
+ parcel = parcel_mgr.mCurrentParcel;
+ }
+ else if (sequence_id == HOVERED_PARCEL_SEQ_ID)
+ {
+ parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
+ parcel = parcel_mgr.mHoverParcel;
+ }
+ else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID ||
+ sequence_id == COLLISION_NOT_ON_LIST_PARCEL_SEQ_ID ||
+ sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
+ {
+ parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
+ parcel = parcel_mgr.mCollisionParcel;
+ }
+ else if (sequence_id == 0 || sequence_id > parcel_mgr.mAgentParcelSequenceID)
+ {
+ // new agent parcel
+ parcel_mgr.mAgentParcelSequenceID = sequence_id;
+ parcel = parcel_mgr.mAgentParcel;
+ }
+ else
+ {
+ LL_INFOS() << "out of order agent parcel sequence id " << sequence_id
+ << " last good " << parcel_mgr.mAgentParcelSequenceID
+ << LL_ENDL;
+ return;
+ }
+
+ msg->getBOOL("ParcelData", "SnapSelection", snap_selection);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SelfCount, self_count);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OtherCount, other_count);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_PublicCount, public_count);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_LocalID, local_id);
+ msg->getUUIDFast(_PREHASH_ParcelData, _PREHASH_OwnerID, owner_id);
+ msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_IsGroupOwned, is_group_owned);
+ msg->getU32Fast(_PREHASH_ParcelData, _PREHASH_AuctionID, auction_id);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_ClaimDate, claim_date);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_ClaimPrice, claim_price_per_meter);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_RentPrice, rent_price_per_meter);
+ msg->getVector3Fast(_PREHASH_ParcelData, _PREHASH_AABBMin, aabb_min);
+ msg->getVector3Fast(_PREHASH_ParcelData, _PREHASH_AABBMax, aabb_max);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_Area, area);
+ //msg->getUUIDFast( _PREHASH_ParcelData, _PREHASH_BuyerID, buyer_id);
+ msg->getU8("ParcelData", "Status", status);
+ msg->getS32("ParcelData", "SimWideMaxPrims", sw_max_prims);
+ msg->getS32("ParcelData", "SimWideTotalPrims", sw_total_prims);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_MaxPrims, max_prims);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_TotalPrims, total_prims);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OwnerPrims, owner_prims);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_GroupPrims, group_prims);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OtherPrims, other_prims);
+ msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SelectedPrims, selected_prims);
+ msg->getF32Fast(_PREHASH_ParcelData, _PREHASH_ParcelPrimBonus, parcel_prim_bonus);
+ msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionPushOverride, region_push_override);
+ msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyAnonymous, region_deny_anonymous_override);
+ msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyIdentified, region_deny_identified_override); // Deprecated
+ msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyTransacted, region_deny_transacted_override); // Deprecated
+ if (msg->getNumberOfBlocksFast(_PREHASH_AgeVerificationBlock))
+ {
+ // this block was added later and may not be on older sims, so we have to test its existence first
+ msg->getBOOLFast(_PREHASH_AgeVerificationBlock, _PREHASH_RegionDenyAgeUnverified, region_deny_age_unverified_override);
+ }
+
+ if (msg->getNumberOfBlocks(_PREHASH_RegionAllowAccessBlock))
+ {
+ msg->getBOOLFast(_PREHASH_RegionAllowAccessBlock, _PREHASH_RegionAllowAccessOverride, region_allow_access_override);
+ }
msg->getS32("ParcelData", "OtherCleanTime", other_clean_time );
@@ -1585,6 +1591,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
parcel->setRegionPushOverride(region_push_override);
parcel->setRegionDenyAnonymousOverride(region_deny_anonymous_override);
parcel->setRegionDenyAgeUnverifiedOverride(region_deny_age_unverified_override);
+ parcel->setRegionAllowAccessOverride(region_allow_access_override);
parcel->unpackMessage(msg);
if (parcel == parcel_mgr.mAgentParcel)
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 9e09971ced..7d2d6e25c7 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -176,7 +176,7 @@ public:
mToolTip = inv_item->getName() + '\n' + inv_item->getDescription();
}
- /*virtual*/ bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+ /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
{
if (num_chars == 0)
{
@@ -185,7 +185,7 @@ public:
}
else
{
- width = EMBEDDED_ITEM_LABEL_PADDING + mImage->getWidth() + mStyle->getFont()->getWidth(mLabel.c_str());
+ width = EMBEDDED_ITEM_LABEL_PADDING + mImage->getWidth() + mStyle->getFont()->getWidthF32(mLabel.c_str());
height = llmax(mImage->getHeight(), mStyle->getFont()->getLineHeight());
}
return false;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f6a16f7da1..3968266c27 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -119,7 +119,7 @@ const F32 MAX_HOVER_Z = 2.0;
const F32 MIN_HOVER_Z = -2.0;
const F32 MIN_ATTACHMENT_COMPLEXITY = 0.f;
-const F32 MAX_ATTACHMENT_COMPLEXITY = 1.0e6f;
+const F32 DEFAULT_MAX_ATTACHMENT_COMPLEXITY = 1.0e6f;
using namespace LLAvatarAppearanceDefines;
@@ -9018,6 +9018,9 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
* the official viewer for consideration.
*****************************************************************/
static const U32 COMPLEXITY_BODY_PART_COST = 200;
+ static LLCachedControl<F32> max_complexity_setting(gSavedSettings,"MaxAttachmentComplexity");
+ F32 max_attachment_complexity = max_complexity_setting;
+ max_attachment_complexity = llmax(max_attachment_complexity, DEFAULT_MAX_ATTACHMENT_COMPLEXITY);
// Diagnostic list of all textures on our avatar
static std::set<LLUUID> all_textures;
@@ -9099,7 +9102,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
<< " children: " << attachment_children_cost
<< LL_ENDL;
// Limit attachment complexity to avoid signed integer flipping of the wearer's ACI
- cost += (U32)llclamp(attachment_total_cost, MIN_ATTACHMENT_COMPLEXITY, MAX_ATTACHMENT_COMPLEXITY);
+ cost += (U32)llclamp(attachment_total_cost, MIN_ATTACHMENT_COMPLEXITY, max_attachment_complexity);
}
}
}
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 657babd92c..90ba814a15 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -3977,7 +3977,7 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a&
start_face = face;
end_face = face+1;
}
-
+ pick_transparent |= isHiglightedOrBeacon();
bool special_cursor = specialHoverCursor();
for (S32 i = start_face; i < end_face; ++i)
{
diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp
index 28ae569ba2..b484b6d709 100644
--- a/indra/newview/llwaterparammanager.cpp
+++ b/indra/newview/llwaterparammanager.cpp
@@ -427,7 +427,6 @@ void LLWaterParamManager::initSingleton()
{
LL_DEBUGS("Windlight") << "Initializing water" << LL_ENDL;
loadAllPresets();
- LLEnvManagerNew::instance().usePrefs();
}
// static
diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp
index 2b6d88efef..4b4393b07b 100644
--- a/indra/newview/llwlparammanager.cpp
+++ b/indra/newview/llwlparammanager.cpp
@@ -50,8 +50,6 @@
#include "llagent.h"
#include "llviewerregion.h"
-#include "lldaycyclemanager.h"
-#include "llenvmanager.h"
#include "llwlparamset.h"
#include "llpostprocess.h"
@@ -252,13 +250,13 @@ void LLWLParamManager::addAllSkies(const LLWLParamKey::EScope scope, const LLSD&
}
}
-void LLWLParamManager::refreshRegionPresets()
+void LLWLParamManager::refreshRegionPresets(const LLSD& region_sky_presets)
{
// Remove all region sky presets because they may belong to a previously visited region.
clearParamSetsOfScope(LLEnvKey::SCOPE_REGION);
// Add all sky presets belonging to the current region.
- addAllSkies(LLEnvKey::SCOPE_REGION, LLEnvManagerNew::instance().getRegionSettings().getSkyMap());
+ addAllSkies(LLEnvKey::SCOPE_REGION, region_sky_presets);
}
void LLWLParamManager::loadAllPresets()
@@ -487,6 +485,11 @@ bool LLWLParamManager::applyDayCycleParams(const LLSD& params, LLEnvKey::EScope
return true;
}
+void LLWLParamManager::setDefaultDay()
+{
+ mDay.loadDayCycleFromFile("Default.xml");
+}
+
bool LLWLParamManager::applySkyParams(const LLSD& params)
{
mAnimator.deactivate();
@@ -494,6 +497,12 @@ bool LLWLParamManager::applySkyParams(const LLSD& params)
return true;
}
+void LLWLParamManager::setDefaultSky()
+{
+ getParamSet(LLWLParamKey("Default", LLWLParamKey::SCOPE_LOCAL), mCurParams);
+}
+
+
void LLWLParamManager::resetAnimator(F32 curTime, bool run)
{
mAnimator.setTrack(mDay.mTimeMap, mDay.mDayRate,
@@ -672,34 +681,8 @@ void LLWLParamManager::initSingleton()
loadAllPresets();
- // load the day
- std::string preferred_day = LLEnvManagerNew::instance().getDayCycleName();
- if (!LLDayCycleManager::instance().getPreset(preferred_day, mDay))
- {
- // Fall back to default.
- LL_WARNS() << "No day cycle named " << preferred_day << ", falling back to defaults" << LL_ENDL;
- mDay.loadDayCycleFromFile("Default.xml");
-
- // *TODO: Fix user preferences accordingly.
- }
-
- // *HACK - sets cloud scrolling to what we want... fix this better in the future
- std::string sky = LLEnvManagerNew::instance().getSkyPresetName();
- if (!getParamSet(LLWLParamKey(sky, LLWLParamKey::SCOPE_LOCAL), mCurParams))
- {
- LL_WARNS() << "No sky preset named " << sky << ", falling back to defaults" << LL_ENDL;
- getParamSet(LLWLParamKey("Default", LLWLParamKey::SCOPE_LOCAL), mCurParams);
-
- // *TODO: Fix user preferences accordingly.
- }
-
- // set it to noon
- resetAnimator(0.5, LLEnvManagerNew::instance().getUseDayCycle());
-
// but use linden time sets it to what the estate is
mAnimator.setTimeType(LLWLAnimator::TIME_LINDEN);
-
- LLEnvManagerNew::instance().usePrefs();
}
// static
diff --git a/indra/newview/llwlparammanager.h b/indra/newview/llwlparammanager.h
index a10102edf7..a8029839a7 100644
--- a/indra/newview/llwlparammanager.h
+++ b/indra/newview/llwlparammanager.h
@@ -29,7 +29,6 @@
#include <list>
#include <map>
-#include "llenvmanager.h"
#include "llwlparamset.h"
#include "llwlanimator.h"
#include "llwldaycycle.h"
@@ -240,9 +239,14 @@ public:
/// apply specified day cycle, setting time to noon by default
bool applyDayCycleParams(const LLSD& params, LLEnvKey::EScope scope, F32 time = 0.5);
+ /// Apply Default.xml map
+ void setDefaultDay();
+
/// apply specified fixed sky params
bool applySkyParams(const LLSD& params);
+ void setDefaultSky();
+
// get where the light is pointing
inline LLVector4 getLightDir(void) const;
@@ -302,7 +306,7 @@ public:
void addAllSkies(LLEnvKey::EScope scope, const LLSD& preset_map);
/// refresh region-scope presets
- void refreshRegionPresets();
+ void refreshRegionPresets(const LLSD& region_sky_presets);
// returns all skies referenced by the current day cycle (in mDay), with their final names
// side effect: applies changes to all internal structures! (trashes all unreferenced skies in scope, keys in day cycle rescoped to scope, etc.)
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 07f297cf0a..fbd75618ca 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -449,7 +449,7 @@ Nur groe Parzellen k繹nnen in der Suche aufgef羹hrt werden.
<spinner label="Online-Zeit:" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="Immer erlauben" name="AllowedText">
- Zul瓣ssige Einwohner ([COUNT])
+ Zul瓣ssige Einwohner ([COUNT], max. [MAX])
</text>
<name_list name="AccessList" tool_tip="([LISTED] aufgef羹hrt, [MAX] max)"/>
<button label="Hinzuf羹gen" name="add_allowed"/>
@@ -457,7 +457,7 @@ Nur groe Parzellen k繹nnen in der Suche aufgef羹hrt werden.
</panel>
<panel name="Banned_layout_panel">
<text label="Verbannen" name="BanCheck">
- Verbannte Einwohner ([COUNT])
+ Verbannte Einwohner ([COUNT], max. [MAX])
</text>
<name_list name="BannedList" tool_tip="([LISTED] aufgef羹hrt, [MAX] max)"/>
<button label="Hinzuf羹gen" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..e73ace4296
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="EINSTELLUNGEN ZUR DARSTELLUNG VON AVATAREN">
+ <string name="av_never_render" value="Nie"/>
+ <string name="av_always_render" value="Immer"/>
+ <filter_editor label="Nach Personen filtern" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="Aktionen f羹r ausgew瓣hlte Person"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="Name" name="name"/>
+ <name_list.columns label="Darstellungseinstellung" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_flickr.xml b/indra/newview/skins/default/xui/de/floater_flickr.xml
index b50fa19ec8..525d015c2b 100644
--- a/indra/newview/skins/default/xui/de/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/de/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="AUF FLICKR HOCHLADEN">
+<floater name="floater_flickr" title="AUF FLICKR TEILEN">
<panel name="background">
<tab_container name="tabs">
<panel label="FOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/de/floater_preferences.xml b/indra/newview/skins/default/xui/de/floater_preferences.xml
index 3624c4c968..a4f6df515d 100644
--- a/indra/newview/skins/default/xui/de/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/de/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="Privatsph瓣re" name="im"/>
<panel label="Konfiguration" name="input"/>
<panel label="Erweitert" name="advanced1"/>
+ <panel label="Uploads" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_tos.xml b/indra/newview/skins/default/xui/de/floater_tos.xml
index 0193cf619d..6fee9b5204 100644
--- a/indra/newview/skins/default/xui/de/floater_tos.xml
+++ b/indra/newview/skins/default/xui/de/floater_tos.xml
@@ -13,6 +13,6 @@
Lesen Sie die folgenden Servicebedingungen und Datenbestimmungen sorgf瓣ltig durch. Sie m羹ssen den Servicebedingungen zustimmen, um sich bei [SECOND_LIFE] anmelden zu k繹nnen.
</text>
<text name="external_tos_required">
- Sie m羹ssen sich auf my.secondlife.com anmelden und die Servicebedingungen akzeptieren, bevor Sie fortfahren k繹nnen. Vielen Dank!
+ Sie m羹ssen sich unter https://my.secondlife.com anmelden und die Servicebedingungen akzeptieren, bevor Sie fortfahren k繹nnen. Vielen Dank!
</text>
</floater>
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 e0f0ea72ed..7d8fc9a1f6 100644
--- a/indra/newview/skins/default/xui/de/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="Hineinzoomen" name="Zoom In"/>
<menu_item_call label="Bezahlen" name="Pay..."/>
<menu_item_call label="Objektprofil" name="Object Inspect"/>
- <menu_item_check label="Normal darstellen" name="RenderNormally"/>
- <menu_item_check label="Nicht darstellen" name="DoNotRender"/>
- <menu_item_check label="Komplett darstellen" name="AlwaysRenderFully"/>
+ <context_menu label="Avatar darstellen" name="Render Avatar">
+ <menu_item_check label="Standard" name="RenderNormally"/>
+ <menu_item_check label="Immer" name="AlwaysRenderFully"/>
+ <menu_item_check label="Nie" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Partikeleigent羹mer blockieren" name="Mute Particle"/>
</context_menu>
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 9c24dc2199..9bfab36f76 100644
--- a/indra/newview/skins/default/xui/de/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="XML ausgeben" name="Dump XML"/>
<menu_item_call label="Hineinzoomen" name="Zoom In"/>
<menu_item_call label="Bezahlen" name="Pay..."/>
- <menu_item_check label="Normal darstellen" name="RenderNormally"/>
- <menu_item_check label="Nicht darstellen" name="DoNotRender"/>
- <menu_item_check label="Komplett darstellen" name="AlwaysRenderFully"/>
+ <context_menu label="Avatar darstellen" name="Render Avatar">
+ <menu_item_check label="Standard" name="RenderNormally"/>
+ <menu_item_check label="Immer" name="AlwaysRenderFully"/>
+ <menu_item_check label="Nie" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Partikeleigent羹mer blockieren" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..8d8498e77c
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="Standard" name="default"/>
+ <menu_item_check label="Immer darstellen" name="always_render"/>
+ <menu_item_check label="Nie darstellen" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..01125c0799
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="Einwohner immer darstellen..." name="add_avatar_always_render"/>
+ <menu_item_call label="Einwohner nie darstellen..." name="add_avatar_never_render"/>
+</toggleable_menu>
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..c3e6e94e51 100644
--- a/indra/newview/skins/default/xui/de/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_gesture_gear">
- <menu_item_call label="Zu Favoriten hinzuf羹gen/daraus entfernen" name="activate"/>
+ <menu_item_call label="Ausgew瓣hlte Geste aktivieren/deaktivieren" name="activate"/>
<menu_item_call label="Kopieren" name="copy_gesture"/>
<menu_item_call label="Einf羹gen" name="paste"/>
<menu_item_call label="UUID kopieren" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml
index e1f545adfc..178f8f6589 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="Neues Haar" name="New Hair"/>
<menu_item_call label="Neue Augen" name="New Eyes"/>
</menu>
+ <menu label="Als Standard verwenden f羹r" name="upload_def">
+ <menu_item_call label="Hochgeladene Bilder" name="Image uploads"/>
+ <menu_item_call label="Hochgeladene Sounds" name="Sound uploads"/>
+ <menu_item_call label="Hochgeladene Animationen" name="Animation uploads"/>
+ <menu_item_call label="Hochgeladene Modelle" name="Model uploads"/>
+ </menu>
<menu label="Typ 瓣ndern" name="Change Type">
<menu_item_call label="Standard" name="Default"/>
<menu_item_call label="Handschuhe" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="Aktuelles Outfit ersetzen" name="Replace Outfit"/>
<menu_item_call label="Zum aktuellen Outfit hinzuf羹gen" name="Add To Outfit"/>
<menu_item_call label="Vom aktuellen Outfit entfernen" name="Remove From Outfit"/>
+ <menu_item_call label="Outfitliste in Zwischenablage kopieren" name="Copy outfit list to clipboard"/>
<menu_item_call label="Original suchen" name="Find Original"/>
<menu_item_call label="Objekt l繹schen" name="Purge Item"/>
<menu_item_call label="Objekt wiederherstellen" name="Restore Item"/>
@@ -72,7 +79,6 @@
<menu_item_call label="Kopieren" name="Copy"/>
<menu_item_call label="Einf羹gen" name="Paste"/>
<menu_item_call label="Als Link einf羹gen" name="Paste As Link"/>
- <menu_item_call label="L繹schen" name="Remove Link"/>
<menu_item_call label="L繹schen" name="Delete"/>
<menu_item_call label="Systemordner l繹schen" name="Delete System Folder"/>
<menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
<menu_item_call label="Bearbeiten" name="Wearable Edit"/>
<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-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--"/>
diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml
index ff21f07943..69856c0852 100644
--- a/indra/newview/skins/default/xui/de/menu_login.xml
+++ b/indra/newview/skins/default/xui/de/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="Ich" name="File">
<menu_item_call label="Einstellungen..." name="Preferences..."/>
+ <menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/>
<menu_item_call label="[APP_NAME] schlieen" name="Quit"/>
</menu>
<menu label="Hilfe" name="Help">
@@ -33,7 +34,6 @@
<menu_item_check label="Fehler" name="Error"/>
<menu_item_check label="Keine" name="None"/>
</menu>
- <menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/>
<menu_item_call label="Benachrichtigungs-Konsole anzeigen" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
index f69a453e58..4508465d25 100644
--- a/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="Nicht mehr ignorieren" name="unblock"/>
+ <menu_item_check label="Voice ignorieren" name="BlockVoice"/>
+ <menu_item_check label="Text ignorieren" name="MuteText"/>
+ <menu_item_check label="Objektsounds ignorieren" name="BlockObjectSounds"/>
<menu_item_call label="Profil..." name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index db57e41661..2a8eaf26ec 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -44,6 +44,7 @@
<menu_item_check label="Kein Voice-Morphing" name="NoVoiceMorphing"/>
<menu_item_check label="Vorschau..." name="Preview"/>
<menu_item_call label="Abonnieren..." name="Subscribe"/>
+ <menu_item_call label="Premium-Vorteil..." name="PremiumPerk"/>
</menu>
<menu_item_check label="Gesten..." name="Gestures"/>
<menu_item_check label="Freunde" name="My Friends"/>
@@ -57,7 +58,8 @@
<menu_item_call label="Ziele..." name="Destinations"/>
<menu_item_check label="Karte" name="World Map"/>
<menu_item_check label="Minikarte" name="Mini-Map"/>
- <menu_item_check label="Suchen" name="Search"/>
+ <menu_item_call label="Events" name="Events"/>
+ <menu_item_check label="Suchen..." name="Search"/>
<menu_item_call label="Nach Hause teleportieren" name="Teleport Home"/>
<menu_item_call label="Hier als Zuhause w瓣hlen" name="Set Home to Here"/>
<menu_item_call label="Foto" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
<menu_item_call label="Kopie nehmen" name="Take Copy"/>
<menu_item_call label="Wieder in Objektinhalt speichern" name="Save Object Back to Object Contents"/>
<menu_item_call label="Objekt zur羹ckgeben" name="Return Object back to Owner"/>
+ <menu_item_call label="Duplizieren" name="DuplicateObject"/>
</menu>
<menu label="Skripts" name="Scripts">
+ <menu_item_check label="Skriptwarnungen/Fehler..." name="Script debug"/>
<menu_item_call label="Skripts rekompilieren (Mono)" name="Mono"/>
<menu_item_call label="Skripts rekompilieren (LSL)" name="LSL"/>
<menu_item_call label="Skripts zur羹cksetzen" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index c7ba67ccd5..93f05e38ed 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -144,8 +144,7 @@ Marktplatzinitialisierung aufgrund eines System- oder Netzwerkfehlers fehlgeschl
<notification name="MerchantTransactionFailed">
Marktplatztransaktion fehlgeschlagen mit Fehler:
- Grund: [ERROR_REASON]
- [ERROR_DESCRIPTION]
+ [ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -769,6 +768,9 @@ Stellen Sie sicher, dass kein Objekt gesperrt ist und alle Objekte Ihnen geh繹re
<notification name="CannotLinkPermanent">
Objekte k繹nnen nicht 羹ber Regionsgrenzen hinweg verkn羹pft werden.
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ Objekte k繹nnen nicht 羹ber Regionsgrenzen hinweg verkn羹pft werden.
+ </notification>
<notification name="CannotLinkDifferentOwners">
Verkn羹pfung nicht m繹glich, da nicht alle Objekte denselben Eigent羹mer haben.
@@ -1798,7 +1800,6 @@ Diese Gruppe verlassen?
Nicht-st繹ren-Modus ist aktiviert: Sie erhalten keine Benachrichtigung 羹ber eingehende Kommunikation.
- Andere Einwohner erhalten Ihre Nicht-st繹ren-Antwort (festgelegt in Einstellungen &gt; Allgemein).
-- Teleport-Angebote werden abgelehnt.
- Voice-Anrufe werden abgelehnt.
<usetemplate ignoretext="Ich 瓣ndere meinen Status zu Nicht st繹ren" name="okignore" yestext="OK"/>
</notification>
@@ -2568,9 +2569,6 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies
<notification name="Cancelled">
Abgebrochen
</notification>
- <notification name="CancelledSit">
- Sitzen beendet
- </notification>
<notification name="CancelledAttach">
Anh瓣ngen abgebrochen
</notification>
@@ -3894,32 +3892,32 @@ Warten Sie kurz und versuchen Sie es noch einmal.
<notification name="AvatarEjectFailed">
Hinauswerfen fehlgeschlagen, da Sie keine Admin-Berechtigung f羹r diese Parzelle haben.
</notification>
- <notification name="CantMoveObjectParcelFull">
- Objekt [OBJECT_NAME] kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die Parzelle voll ist.
+ <notification name="CMOParcelFull">
+ Objekt [O] kann nicht nach
+[P] in Region [R] verschoben werden, da die Parzelle voll ist.
</notification>
- <notification name="CantMoveObjectParcelPerms">
- Objekt [OBJECT_NAME] kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Ihre Objekte auf dieser Parzelle nicht gestattet sind.
+ <notification name="CMOParcelPerms">
+ Objekt [O] kann nicht nach
+[P] in Region [R] verschoben werden, da Ihre Objekte auf dieser Parzelle nicht gestattet sind.
</notification>
- <notification name="CantMoveObjectParcelResources">
- Objekt [OBJECT_NAME] kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da nicht gen羹gend Ressourcen f羹r dieses Objekt auf dieser Parzelle vorhanden sind.
+ <notification name="CMOParcelResources">
+ Objekt [O] kann nicht nach
+[P] in Region [R] verschoben werden, da nicht gen羹gend Ressourcen f羹r dieses Objekt auf dieser Parzelle vorhanden sind.
</notification>
<notification name="NoParcelPermsNoObject">
Kopiervorgang fehlgeschlagen, da Sie keinen Zugriff auf diese Parzelle haben.
</notification>
- <notification name="CantMoveObjectRegionVersion">
- Objekt [OBJECT_NAME] kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die andere Region eine 瓣ltere Version verwendet, die das Empfangen dieses Objekts per Regionswechsel nicht unterst羹tzt.
+ <notification name="CMORegionVersion">
+ Objekt [O] kann nicht nach
+ [P] in Region [R] verschoben werden, da die andere Region eine 瓣ltere Version verwendet, die das Empfangen dieses Objekts per Regionswechsel nicht unterst羹tzt.
</notification>
- <notification name="CantMoveObjectNavMesh">
- Objekt [OBJECT_NAME] kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Sie das Navmesh nicht regions羹bergreifend modifizieren k繹nnen.
+ <notification name="CMONavMesh">
+ Objekt [O] kann nicht nach
+[P] in Region [R] verschoben werden, da Sie das Navmesh nicht regions羹bergreifend modifizieren k繹nnen.
</notification>
- <notification name="CantMoveObjectWTF">
- Objekt [OBJECT_NAME] kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da ein unbekannter Fehler vorliegt. ([FAILURE_TYPE])
+ <notification name="CMOWTF">
+ Objekt [O] kann nicht nach
+[P] in Region [R] verschoben werden, da ein unbekannter Fehler vorliegt. ([F])
</notification>
<notification name="NoPermModifyObject">
Ihnen fehlt die Berechtigung zum Modifizieren dieses Objekts.
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..5c399280df 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="Einwohner oder Objekt zum ignorieren ausw瓣hlen"/>
<button name="unblock_btn" tool_tip="Einwohner oder Objekt aus der Liste der ignorierten Einwohner oder Objekte entfernen"/>
</panel>
+ <text name="block_limit">
+ [COUNT] Eintr瓣ge in Ihrer Liste der ignorierten Einwohner. H繹chstwert: [LIMIT].
+ </text>
<block_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
</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 38b5302fef..d8bc1f310d 100644
--- a/indra/newview/skins/default/xui/de/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/de/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ F羹r Markierungen, die aus mehreren W繹rtern bestehen, &quot;&quot; verwenden.
<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="Teilen" name="post_photo_btn"/>
<button label="Abbrechen" name="cancel_photo_btn"/>
</panel>
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..40d323a2b0 100644
--- a/indra/newview/skins/default/xui/de/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/de/panel_notify_textbox.xml
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
- <text_editor name="message" value="message"/>
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
+ <text_editor name="message" value="Nachricht"/>
</panel>
<panel label="control_panel" name="control_panel">
<button label="Senden" name="btn_submit"/>
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 74fb4d0f85..ff0a6614bd 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
<text name="BetterText">
Besser
</text>
+ <check_box initial_value="true" label="Atmosph瓣ren-Shader" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Erweitertes Beleuchtungsmodell" name="UseLightShaders"/>
<slider label="Maximale Avatarkomplexit瓣t:" name="IndirectMaxComplexity" tool_tip="Bestimmt, an welchem Punkt ein visuell komplexer Avatar als JellyDoll dargestellt wird"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="Atmosph瓣ren-Shader" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="Erweitertes Beleuchtungsmodell" name="UseLightShaders"/>
+ <check_box initial_value="true" label="Freunde immer darstellen" name="AlwaysRenderFriends"/>
+ <button label="Ausnahmen..." name="RenderExceptionsButton"/>
<button label="Einstellungen als Voreinstellung speichern..." name="PrefSaveButton"/>
<button label="Voreinstellung laden..." name="PrefLoadButton"/>
min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/de/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..e2759715d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_preferences_uploads.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Uploads" name="uploads">
+ <text name="title">
+ Aktuelle Zielorder f羹r Uploads
+ </text>
+ <text name="title_models">
+ Bilder
+ </text>
+ <text name="title_sounds">
+ Sounds
+ </text>
+ <text name="title_animation">
+ Animationen
+ </text>
+ <text name="upload_help">
+ Um einen Zielordner zu 瓣ndern, klicken Sie im Inventar mit der rechten Maustaste auf den Ordner und w瓣hlen Sie Als Standard verwenden f羹r.
+ </text>
+</panel>
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 82e2b56f3f..dab20d63eb 100644
--- a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<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="Im Profil-Feed teilen" name="save_to_profile_btn"/>
+ <button label="Auf Facebook teilen" name="send_to_facebook_btn"/>
+ <button label="Auf Twitter teilen" name="send_to_twitter_btn"/>
+ <button label="Auf Flickr teilen" name="send_to_flickr_btn"/>
<button label="Per E-Mail senden" name="save_to_email_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 4a2cbcc81f..ec3e68ce33 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1491,7 +1491,8 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
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.
+ Beim ffnen der Marktplatz-Auflistungen ist ein Fehler aufgetreten.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich unter http://support.secondlife.com an den Support von Second Life.
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
Ihr Ordner mit Marktplatz-Auflistungen ist leer.
@@ -4444,7 +4445,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
Konferenz mit [AGENT_NAME]
</string>
<string name="inventory_item_offered-im">
- Inventarobjekt angeboten
+ Inventarobjekt [ITEM_NAME] angeboten
+ </string>
+ <string name="inventory_folder_offered-im">
+ Inventarordner [ITEM_NAME] angeboten
</string>
<string name="share_alert">
Objekte aus dem Inventar hier her ziehen
@@ -4531,7 +4535,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
Position f羹r Zuhause festgelegt.
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
[NAME] hat Ihnen [REASON] [AMOUNT]L$ bezahlt.
@@ -4902,8 +4909,8 @@ Missbrauchsbericht
<string name="server_is_down">
Trotz all unserer Bem羹hungen ist ein unerwarteter Fehler aufgetreten.
- Bitte 羹berpr羹fen Sie status.secondlifegrid.net, um herauszufinden, ob ein Problem besteht.
- Falls Sie weiterhin Problem haben, 羹berpr羹fen Sie bitte Ihre Netzwerk- und Firewalleinstellungen.
+Bitte 羹berpr羹fen Sie http://status.secondlifegrid.net, um herauszufinden, ob ein Problem mit dem Service vorliegt.
+ Falls Sie weiterhin Problem haben, 羹berpr羹fen Sie bitte Ihre Netzwerk- und Firewalleinstellungen.
</string>
<string name="dateTimeWeekdaysNames">
Sonntag:Montag:Dienstag:Mittwoch:Donnerstag:Freitag:Samstag
@@ -5363,6 +5370,9 @@ Setzen Sie den Editorpfad in Anf羹hrungszeichen
<string name="Command_Gestures_Label">
Gesten
</string>
+ <string name="Command_Grid_Status_Label">
+ Grid-Status
+ </string>
<string name="Command_HowTo_Label">
Infos
</string>
@@ -5456,6 +5466,9 @@ Setzen Sie den Editorpfad in Anf羹hrungszeichen
<string name="Command_Gestures_Tooltip">
Gesten f羹r Ihren Avatar
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ Aktuellen Grid-Status anzeigen
+ </string>
<string name="Command_HowTo_Tooltip">
Wie f羹hre ich g瓣ngige Aufgaben aus?
</string>
@@ -5678,6 +5691,9 @@ Setzen Sie den Editorpfad in Anf羹hrungszeichen
<string name="loading_chat_logs">
Laden...
</string>
+ <string name="na">
+ Nicht zutreffend
+ </string>
<string name="preset_combo_label">
-Leere Liste-
</string>
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 a137770e26..535af317d9 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1896,49 +1896,37 @@ Only large parcels can be listed in search.
layout="topleft"
left="8"
name="public_access"
- label="Allow Public Access (Unchecking this will create ban lines)"
+ label="Anyone can visit (Unchecking this will create ban lines)"
top_pad="10"
width="278" />
- <text
- type="string"
- length="1"
- follows="top|left"
- height="16"
- layout="topleft"
- left_delta="20"
- name="Only Allow"
- top="30"
- width="325">
- Allow access only to Residents who:
- </text>
<check_box
follows="top|left"
height="16"
- label="Have payment Information on File [ESTATE_PAYMENT_LIMIT]"
+ label="Must be 18+ [ESTATE_AGE_LIMIT]"
layout="topleft"
- left_delta="0"
- name="limit_payment"
- tool_tip="Residents must have payment information on file to access this parcel. See the [SUPPORT_SITE] for more information."
+ left_delta="20"
+ name="limit_age_verified"
+ tool_tip="Residents must be age 18 or older to access this parcel. See the [SUPPORT_SITE] for more information."
top_pad="4"
width="278" />
<check_box
follows="top|left"
height="16"
- label="Are age 18 or older [ESTATE_AGE_LIMIT]"
+ label="Must have payment info on file [ESTATE_PAYMENT_LIMIT]"
layout="topleft"
left_delta="0"
- name="limit_age_verified"
- tool_tip="Residents must be age 18 or older to access this parcel. See the [SUPPORT_SITE] for more information."
+ name="limit_payment"
+ tool_tip="Residents must have payment information on file to access this parcel. See the [SUPPORT_SITE] for more information."
top_pad="4"
width="278" />
<check_box
height="16"
- label="Allow Group Access: [GROUP]"
+ label="Allow group [GROUP] with no restrictions"
layout="topleft"
left="8"
name="GroupCheck"
tool_tip="Set group in the General tab."
- top="89"
+ top="73"
width="278" />
<check_box
enabled="false"
@@ -1996,6 +1984,18 @@ Only large parcels can be listed in search.
name="HoursSpin"
top_pad="5"
width="200" />
+ <text
+ type="string"
+ length="1"
+ follows="top|left"
+ height="16"
+ layout="topleft"
+ left="8"
+ name="OwnerLimited"
+ top_pad="5"
+ width="400">
+ (The estate owner may have limited these choices)
+ </text>
<panel
name="Allowed_layout_panel"
follows="top|left"
@@ -2014,7 +2014,7 @@ Only large parcels can be listed in search.
name="AllowedText"
top="0"
width="230">
- Allowed Residents ([COUNT], max [MAX])
+ Always allowed ([COUNT], max [MAX])
</text>
<name_list
column_padding="0"
@@ -2063,7 +2063,7 @@ Only large parcels can be listed in search.
name="BanCheck"
top="0"
width="200">
- Banned Residents ([COUNT], max [MAX])
+ Always banned ([COUNT], max [MAX])
</text>
<name_list
column_padding="0"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
index 03e812d36d..e088d4d2a1 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
@@ -57,10 +57,14 @@
<name_list.columns
label="Name"
name="name"
- relative_width="0.65" />
+ relative_width="0.5" />
<name_list.columns
label="Render setting"
name="setting"
- relative_width="0.35" />
+ relative_width="0.25" />
+ <name_list.columns
+ label="Date added"
+ name="timestamp"
+ relative_width="0.25" />
</name_list>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_linkreplace.xml b/indra/newview/skins/default/xui/en/floater_linkreplace.xml
new file mode 100644
index 0000000000..ece75e2576
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_linkreplace.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ name="linkreplace"
+ help_topic="linkreplace"
+ positioning="centered"
+ title="REPLACE INVENTORY LINKS"
+ width="333"
+ height="130"
+ save_rect="true"
+ can_minimize="true"
+ can_close="true">
+ <string name="Ready">
+ Ready...
+ </string>
+ <string name="TargetNotFound">
+ Target item not found.
+ </string>
+ <string name="ItemsIdentical">
+ Source and target are identical.
+ </string>
+ <string name="ItemsFound">
+ Found [NUM] inventory links.
+ </string>
+ <string name="ItemsRemaining">
+ Links remaining: [NUM]
+ </string>
+ <string name="ReplaceFinished">
+ Finished replacing inventory links.
+ </string>
+ <text
+ type="string"
+ follows="left|top"
+ font="SansSerif"
+ height="23"
+ layout="topleft"
+ left="10"
+ width="35"
+ name="source_label"
+ top="10">
+ Old:
+ </text>
+ <inventory_link_replace_drop_target
+ name="source_uuid_editor"
+ follows="left|top|right"
+ height="23"
+ layout="topleft"
+ left_pad="10"
+ max_length_bytes="255"
+ top_delta="-3"
+ right="-10"
+ tool_tip="Drag and drop the current inventory item here that should be replaced."/>
+ <text
+ type="string"
+ follows="left|top"
+ font="SansSerif"
+ height="23"
+ layout="topleft"
+ left="10"
+ width="35"
+ name="target_label"
+ top_pad="10">
+ New:
+ </text>
+ <inventory_link_replace_drop_target
+ name="target_uuid_editor"
+ follows="left|top|right"
+ height="23"
+ layout="topleft"
+ left_pad="10"
+ max_length_bytes="255"
+ top_delta="-3"
+ right="-10"
+ tool_tip="Drag and drop new inventory item here."/>
+ <text
+ type="string"
+ follows="left|top|right"
+ font="SansSerif"
+ height="20"
+ layout="topleft"
+ left="10"
+ right="-10"
+ name="status_text"
+ top_pad="10">
+ Ready...
+ </text>
+ <button
+ top_pad="5"
+ left="10"
+ height="22"
+ width="90"
+ follows="left|top"
+ mouse_opaque="true"
+ halign="center"
+ name="btn_refresh"
+ label="Refresh"/>
+ <button
+ top_delta="0"
+ right="-10"
+ height="22"
+ width="90"
+ follows="right|top"
+ mouse_opaque="true"
+ halign="center"
+ name="btn_start"
+ label="Start"/>
+</floater>
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 00d70556b4..41384a77b8 100644
--- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
@@ -13,14 +13,14 @@
reuse_instance="true"
save_rect="false"
single_instance="true"
- title="Pathfinding linksets">
+ title="REGION OBJECTS">
<floater.string name="messaging_initial"></floater.string>
<floater.string name="messaging_get_inprogress">Querying for pathfinding linksets ...</floater.string>
<floater.string name="messaging_get_error">Error detected while querying for pathfinding linksets.</floater.string>
<floater.string name="messaging_set_inprogress">Modifying selected pathfinding linksets ...</floater.string>
<floater.string name="messaging_set_error">Error detected while modifying selected pathfinding linksets.</floater.string>
<floater.string name="messaging_complete_none_found">No pathfinding linksets.</floater.string>
- <floater.string name="messaging_complete_available">[NUM_SELECTED] linksets selected out of [NUM_TOTAL].</floater.string>
+ <floater.string name="messaging_complete_available">[NUM_SELECTED] selected out of [NUM_TOTAL].</floater.string>
<floater.string name="messaging_not_enabled">This region is not enabled for pathfinding.</floater.string>
<floater.string name="linkset_terrain_name">[Terrain]</floater.string>
<floater.string name="linkset_terrain_description">--</floater.string>
@@ -211,7 +211,7 @@
name="dist_from_you"
width="65" />
<scroll_list.columns
- label="Linkset use"
+ label="Pathfinding use"
name="linkset_use"
width="236" />
<scroll_list.columns
@@ -305,7 +305,7 @@
layout="topleft"
top_pad="8"
width="580">
- Actions on selected linksets (If a linkset is removed from the world, its attributes may be lost):
+ Actions on selected
</text>
<check_box
height="19"
@@ -393,7 +393,7 @@
left="18"
top_pad="8"
width="972">
- Edit attributes of selected linksets and press the button to apply changes
+ Edit pathfinding attributes
</text>
<combo_box
height="20"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_trash.xml b/indra/newview/skins/default/xui/en/floater_preview_trash.xml
new file mode 100644
index 0000000000..9e50e89ac9
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_preview_trash.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="330"
+ width="310"
+ layout="topleft"
+ min_height="200"
+ min_width="310"
+ name="floater_preview_trash"
+ save_rect="true"
+ title="TRASH"
+ single_instance="true"
+ reuse_instance="true"
+ can_minimize="false">
+ <inventory_panel
+ name="inventory_outbox"
+ start_folder.name="Trash"
+ show_empty_message="false"
+ start_folder.type="trash"
+ follows="all"
+ layout="topleft"
+ top="18" left="7" height="280" width="296"
+ top_pad="0"
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ border="false"
+ bevel_style="none"
+ scroll.reserve_scroll_corner="false">
+ <folder folder_arrow_image="Folder_Arrow"
+ folder_indentation="8"
+ item_height="20"
+ item_top_pad="4"
+ selection_image="Rounded_Square"
+ left_pad="5"
+ icon_pad="2"
+ icon_width="16"
+ text_pad="1"
+ text_pad_right="4"
+ arrow_size="12"
+ max_folder_item_overlap="2"/>
+ <item allow_wear="false"/>
+ </inventory_panel>
+
+ <layout_stack follows="bottom|left|right"
+ height="23"
+ layout="topleft"
+ mouse_opaque="false"
+ name="button_panel_ls"
+ left="0"
+ orientation="horizontal"
+ top_pad="5"
+ width="310">
+ <layout_panel follows="bottom|left|right"
+ height="23"
+ layout="bottomleft"
+ left="0"
+ mouse_opaque="false"
+ name="empty_btn_lp"
+ auto_resize="true"
+ width="155">
+ <button enabled="true"
+ follows="bottom|left|right"
+ height="23"
+ label="Empty Trash"
+ layout="topleft"
+ left="30"
+ name="empty_btn"
+ top="0"
+ width="120" />
+ </layout_panel>
+ <layout_panel
+ follows="bottom|left|right"
+ height="23"
+ layout="bottomleft"
+ left_pad="0"
+ mouse_opaque="false"
+ name="share_btn_lp"
+ auto_resize="true"
+ width="155">
+ <button
+ enabled="true"
+ follows="bottom|left|right"
+ height="23"
+ label="Cancel"
+ layout="topleft"
+ left="5"
+ name="cancel_btn"
+ top="0"
+ width="120" />
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 91e4c1b603..ed3cc26851 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -946,18 +946,29 @@
width="90">
Creator:
</text>
+ <avatar_icon
+ default_icon_name="Generic_Person"
+ height="18"
+ follows="left|top"
+ layout="topleft"
+ left_pad="1"
+ name="Creator Icon"
+ visible="false"
+ top_delta="0"
+ width="18" />
<!-- *NOTE: Intentionally wide for long names -->
<text
type="string"
length="1"
follows="left|top"
- left_pad="0"
+ left_pad="1"
height="29"
layout="topleft"
name="Creator Name"
- top_delta="0"
+ font="SansSerifSmall"
+ top_delta="-1"
translate="false"
- width="190"
+ width="170"
word_wrap="true"
use_ellipses="true">
TestString PleaseIgnore (please.ignore)
@@ -974,6 +985,26 @@
width="90">
Owner:
</text>
+ <avatar_icon
+ default_icon_name="Generic_Person"
+ height="18"
+ follows="left|top"
+ layout="topleft"
+ left_pad="1"
+ name="Owner Icon"
+ visible="false"
+ top_delta="0"
+ width="18" />
+ <group_icon
+ default_icon_name="Generic_Group"
+ height="18"
+ follows="left|top"
+ layout="topleft"
+ left_pad="-18"
+ name="Owner Group Icon"
+ visible="false"
+ top_delta="0"
+ width="18" />
<!-- *NOTE: Intentionally wide for long names -->
<text
type="string"
@@ -982,10 +1013,11 @@
height="29"
layout="topleft"
name="Owner Name"
- left_pad="0"
- top_delta="0"
+ font="SansSerifSmall"
+ left_pad="1"
+ top_delta="-1"
translate="false"
- width="190"
+ width="170"
word_wrap="true"
use_ellipses="true">
TestString PleaseIgnore (please.ignore)
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 49b9ac273d..38f4b7715f 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
@@ -164,6 +164,14 @@
function="Avatar.SetImpostorMode"
parameter="1" />
</menu_item_check>
+ <menu_item_separator />
+ <menu_item_call
+ label="Exceptions..."
+ name="RenderExceptions">
+ <menu_item_call.on_click
+ function="Floater.ToggleOrBringToFront"
+ parameter="avatar_render_settings" />
+ </menu_item_call>
</context_menu>
<menu_item_separator
layout="topleft" name="Impostor seperator"/>
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 c5426cb232..f9fb847910 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
@@ -155,6 +155,14 @@
function="Avatar.SetImpostorMode"
parameter="1" />
</menu_item_check>
+ <menu_item_separator />
+ <menu_item_call
+ label="Exceptions..."
+ name="RenderExceptions">
+ <menu_item_call.on_click
+ function="Floater.ToggleOrBringToFront"
+ parameter="avatar_render_settings" />
+ </menu_item_call>
</context_menu>
<menu_item_separator
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index e1f9269c70..ec9f947338 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -519,7 +519,7 @@
name="Purge Item">
<menu_item_call.on_click
function="Inventory.DoToSelected"
- parameter="purge" />
+ parameter="purge"/>
</menu_item_call>
<menu_item_call
label="Restore Item"
@@ -604,6 +604,14 @@
function="Inventory.DoToSelected"
parameter="paste_link" />
</menu_item_call>
+ <menu_item_call
+ label="Replace Links"
+ layout="topleft"
+ name="Replace Links">
+ <menu_item_call.on_click
+ function="Inventory.DoToSelected"
+ parameter="replace_links" />
+ </menu_item_call>
<menu_item_separator
layout="topleft"
name="Paste Separator" />
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 d95541df80..3eacdbc781 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
@@ -146,6 +146,14 @@
function="Inventory.GearDefault.Enable"
parameter="find_links" />
</menu_item_call>
+ <menu_item_call
+ label="Replace Links"
+ layout="topleft"
+ name="Replace Links">
+ <on_click
+ function="Inventory.GearDefault.Custom.Action"
+ parameter="replace_links" />
+ </menu_item_call>
<menu_item_separator
layout="topleft" />
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 8cd0c415f4..7a73fd6d7c 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -20,6 +20,16 @@
function="Floater.Toggle"
parameter="preferences" />
</menu_item_call>
+ <menu_item_call
+ label="Close Window"
+ name="Close Window"
+ visible="false"
+ shortcut="control|W">
+ <menu_item_call.on_click
+ function="File.CloseWindow" />
+ <menu_item_call.on_enable
+ function="File.EnableCloseWindow" />
+ </menu_item_call>
<menu_item_check
label="Show Grid Picker"
name="Show Grid Picker"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 12df3749f6..697d27907d 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -943,7 +943,7 @@
</menu_item_call>
</menu>
<menu_item_call
- label="Linksets..."
+ label="Region Objects"
name="pathfinding_linkset_menu_item">
<menu_item_call.on_click
function="Floater.ToggleOrBringToFront"
@@ -1103,7 +1103,7 @@
name="Pathfinding"
tear_off="true">
<menu_item_call
- label="Linksets..."
+ label="Region Objects"
name="pathfinding_linksets_menu_item">
<menu_item_call.on_click
function="Floater.ToggleOrBringToFront"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 60cbcb6729..14481bd386 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -909,6 +909,108 @@ Please invite members within 48 hours.
<notification
icon="alertmodal.tga"
+ name="JoinGroupInaccessible"
+ type="alertmodal">
+This group is not accessible to you.
+ <tag>group_id</tag>
+ <tag>success</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="JoinGroupError"
+ type="alertmodal">
+Error processing your group membership request.
+ <tag>group_id</tag>
+ <tag>success</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="JoinGroupErrorReason"
+ type="alertmodal">
+Unable to join group: [reason]
+ <tag>group_id</tag>
+ <tag>success</tag>
+ <tag>reason</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="JoinGroupTrialUser"
+ type="alertmodal">
+Sorry, trial users can't join groups.
+ <tag>group_id</tag>
+ <tag>success</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="JoinGroupMaxGroups"
+ type="alertmodal">
+You cannot join '[group_name]':
+You are already a member of [group_count] groups, the maximum number allowed is [max_groups]
+ <tag>success</tag>
+ <tag>group_id</tag>
+ <tag>group_name</tag>
+ <tag>group_count</tag>
+ <tag>max_groups</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="JoinGroupClosedEnrollment"
+ type="alertmodal">
+You cannot join '[group_name]':
+The group no longer has open enrollment.
+ <tag>group_id</tag>
+ <tag>success</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="JoinGroupSuccess"
+ type="alertmodal">
+You have been added to the group
+ <tag>group_id</tag>
+ <tag>success</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="JoinGroupInsufficientFunds"
+ type="alertmodal">
+Unable to transfer the required L$ [membership_fee] membership fee.
+ <tag>group_id</tag>
+ <tag>success</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
name="LandBuyPass"
type="alertmodal">
<tag>fail</tag>
@@ -4985,6 +5087,17 @@ Are you sure you want to change the Estate Covenant?
<notification
icon="alertmodal.tga"
+ name="EstateParcelAccessOverride"
+ type="alertmodal">
+Unchecking this option may remove restrictions that parcel owners have added to prevent griefing, maintain privacy, or protect underage residents from adult material. Please discuss with your parcel owners as needed.
+ <tag>confirm</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
name="RegionEntryAccessBlocked"
type="alertmodal">
<tag>fail</tag>
@@ -6075,13 +6188,24 @@ The folder &apos;[FOLDERNAME]&apos; is a system folder. Deleting system folders
<notification
icon="alertmodal.tga"
+ name="PurgeSelectedItems"
+ type="alertmodal">
+[COUNT] item(s) will be permanently deleted. Are you sure you want to permanently delete selected item(s) from your Trash?
+ <tag>confirm</tag>
+ <usetemplate
+ name="okcancelbuttons"
+ notext="Cancel"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
name="ConfirmEmptyTrash"
type="alertmodal">
-Are you sure you want to permanently delete the contents of your Trash?
+[COUNT] items will be permanently deleted. Are you sure you want to permanently delete the contents of your Trash?
<tag>confirm</tag>
<usetemplate
- ignoretext="Confirm before I empty the inventory Trash folder"
- name="okcancelignore"
+ name="okcancelbuttons"
notext="Cancel"
yestext="OK"/>
</notification>
@@ -6095,7 +6219,7 @@ Your trash is overflowing. This may cause problems logging in.
<usetemplate
name="okcancelbuttons"
notext="I will empty trash later"
- yestext="Empty trash now"/>
+ yestext="Check trash folder"/>
</notification>
<notification
@@ -6392,13 +6516,6 @@ Cancelled
<notification
icon="notifytip.tga"
- name="CancelledSit"
- type="notifytip">
-Cancelled Sit
- </notification>
-
- <notification
- icon="notifytip.tga"
name="CancelledAttach"
type="notifytip">
Cancelled Attach
@@ -8497,12 +8614,21 @@ Select residents to share with.
</notification>
<notification
- name="MeshUploadError"
+ name="MeshUploadErrorDetails"
icon="alert.tga"
type="alert">
- [LABEL] failed to upload: [MESSAGE] [IDENTIFIER]
+ [LABEL] failed to upload: [MESSAGE]
[DETAILS]See SecondLife.log for details
</notification>
+
+ <notification
+ name="MeshUploadError"
+ icon="alert.tga"
+ type="alert">
+ [LABEL] failed to upload: [MESSAGE]
+
+See SecondLife.log for details
+ </notification>
<notification
name="MeshUploadPermError"
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 440c6613d5..78f771cd51 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -9,6 +9,18 @@
name="chat"
top="1"
width="517">
+
+ <check_box
+ control_name="ChatAutocompleteGestures"
+ height="16"
+ initial_value="true"
+ label="Auto-complete gestures in nearby chat"
+ layout="topleft"
+ top="17"
+ left="13"
+ name="auto_complete_gestures"
+ width="330">
+ </check_box>
<panel
border="false"
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..a0c1dd0be6 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -82,36 +82,72 @@
<view_border
bevel_style="none"
follows="top|left"
- height="95"
+ height="105"
layout="topleft"
left="10"
top_pad="5"
- width="470" />
-
+ width="505" />
+ <radio_group
+ height="32"
+ layout="topleft"
+ name="externally_visible_radio"
+ top_delta="5"
+ left="20"
+ width="200">
+ <radio_item
+ height="16"
+ label="Allow only residents and groups listed below"
+ layout="topleft"
+ name="estate_restricted_access" />
+ <radio_item
+ height="16"
+ label="Anyone can visit"
+ layout="topleft"
+ name="estate_public_access" />
+ </radio_group>
<check_box
- height="20"
- label="Allow Public Access"
+ follows="top|left"
+ height="18"
+ label="Must be 18+"
+ layout="topleft"
+ left_delta="20"
+ name="limit_age_verified"
+ tool_tip="Residents must be age 18 or older to access this estate. See the [SUPPORT_SITE] for more information."
+ top_delta="40"
+ width="278" />
+ <check_box
+ follows="top|left"
+ height="18"
+ label="Must have payment info on file"
+ layout="topleft"
+ left_delta="0"
+ name="limit_payment"
+ tool_tip="Residents must have payment information on file to access this estate. See the [SUPPORT_SITE] for more information."
+ top_pad="2"
+ width="278" />
+ <check_box
+ height="18"
+ label="Parcel owners can be more restrictive"
layout="topleft"
left="20"
- name="externally_visible_check"
- top_delta="5"
- width="200" />
-
+ name="parcel_access_override"
+ top_pad="2"
+ width="240" />
<check_box
- height="20"
+ height="18"
label="Allow Voice Chat"
layout="topleft"
- left="280"
+ left="290"
name="voice_chat_check"
- top_delta="0"
+ top_delta="-78"
width="200" />
<check_box
- height="20"
+ height="18"
label="Allow Direct Teleport"
layout="topleft"
left_delta="0"
name="allow_direct_teleport"
- top_pad="4"
+ top_pad="2"
width="80" />
<button
enabled="false"
@@ -120,43 +156,10 @@
label="Apply"
layout="topleft"
name="apply_btn"
- top_pad="15"
+ top_pad="30"
left_delta="0"
width="97" />
-
- <text
- type="string"
- length="1"
- follows="top|left"
- height="16"
- layout="topleft"
- left="20"
- name="Only Allow"
- top_delta="-30"
- width="278">
- Allow access only to Residents who:
- </text>
- <check_box
- follows="top|left"
- height="16"
- label="Have payment information on file"
- layout="topleft"
- left_delta="0"
- name="limit_payment"
- tool_tip="Residents must have payment information on file to access this estate. See the [SUPPORT_SITE] for more information."
- top_pad="2"
- width="278" />
- <check_box
- follows="top|left"
- height="16"
- label="Are age 18 or older"
- layout="topleft"
- left_delta="0"
- name="limit_age_verified"
- tool_tip="Residents must be age 18 or older to access this estate. See the [SUPPORT_SITE] for more information."
- top_pad="2"
- width="278" />
-
+
<text
type="string"
length="1"
@@ -165,7 +168,7 @@
height="20"
layout="topleft"
name="estate_manager_label"
- top_pad="30"
+ top_pad="25"
left="10"
width="200">
Estate Managers:
@@ -180,7 +183,7 @@
name="allow_resident_label"
top_delta="0"
width="200">
- Allowed Residents:
+ Always allowed:
</text>
<!-- Estate Managers box -->
@@ -191,7 +194,7 @@
layout="topleft"
left="10"
top_pad="-5"
- width="200" />
+ width="235" />
<name_list
follows="left|top"
height="71"
@@ -200,9 +203,9 @@
multi_select="true"
name="estate_manager_name_list"
top_delta="0"
- width="200" />
+ width="235" />
- <!-- Allowed Residents box -->
+ <!-- Always allowed box -->
<view_border
bevel_style="none"
follows="top|left"
@@ -210,7 +213,7 @@
layout="topleft"
left="280"
top_delta="0"
- width="200" />
+ width="235" />
<name_list
follows="left|top"
height="71"
@@ -219,7 +222,7 @@
multi_select="true"
name="allowed_avatar_name_list"
top_delta="0"
- width="200" />
+ width="235" />
<!-- Estate Managers buttons -->
<button
@@ -230,7 +233,7 @@
left="10"
name="add_estate_manager_btn"
top_pad="6"
- width="97" />
+ width="114" />
<button
follows="left|top"
height="23"
@@ -238,9 +241,9 @@
layout="topleft"
name="remove_estate_manager_btn"
left_pad="6"
- width="97" />
+ width="114" />
- <!-- Allowed Residents buttons -->
+ <!-- Always allowed buttons -->
<button
follows="left|top"
height="23"
@@ -249,7 +252,7 @@
layout="topleft"
name="add_allowed_avatar_btn"
top_delta="0"
- width="97" />
+ width="114" />
<button
follows="left|top"
height="23"
@@ -258,7 +261,7 @@
name="remove_allowed_avatar_btn"
left_pad="6"
top_delta="0"
- width="97" />
+ width="114" />
<text
type="string"
@@ -270,7 +273,7 @@
name="allow_group_label"
top_pad="10"
width="200">
- Allowed Groups:
+ Groups always allowed:
</text>
<text
type="string"
@@ -282,10 +285,10 @@
name="ban_resident_label"
top_delta="0"
width="200">
- Banned Residents:
+ Always banned:
</text>
- <!-- Allowed Groups box -->
+ <!-- Groups always allowed box -->
<view_border
bevel_style="none"
follows="top|left"
@@ -293,7 +296,7 @@
layout="topleft"
left="10"
top_pad="-5"
- width="200" />
+ width="235" />
<name_list
follows="left|top"
height="71"
@@ -302,9 +305,9 @@
multi_select="true"
name="allowed_group_name_list"
top_delta="0"
- width="200" />
+ width="235" />
- <!-- Banned Residents box -->
+ <!-- Always banned box -->
<view_border
bevel_style="none"
follows="top|left"
@@ -312,7 +315,7 @@
layout="topleft"
left="280"
top_delta="0"
- width="200" />
+ width="235" />
<name_list
follows="left|top"
height="71"
@@ -321,9 +324,9 @@
multi_select="true"
name="banned_avatar_name_list"
top_delta="0"
- width="200" />
+ width="235" />
- <!-- Allowed Groups buttons -->
+ <!-- Groups always allowed buttons -->
<button
follows="left|top"
height="23"
@@ -332,7 +335,7 @@
left="10"
name="add_allowed_group_btn"
top_pad="6"
- width="97" />
+ width="114" />
<button
follows="left|top"
height="23"
@@ -341,9 +344,9 @@
name="remove_allowed_group_btn"
left_pad="6"
top_delta="0"
- width="97" />
+ width="114" />
- <!-- Banned Residents buttons -->
+ <!-- Always banned buttons -->
<button
follows="left|top"
height="23"
@@ -352,7 +355,7 @@
left="280"
name="add_banned_avatar_btn"
top_delta="0"
- width="97" />
+ width="114" />
<button
follows="left|top"
height="23"
@@ -361,7 +364,7 @@
name="remove_banned_avatar_btn"
top_delta="0"
left_pad="6"
- width="97" />
+ width="114" />
<button
follows="left|top"
@@ -371,7 +374,7 @@
left="10"
name="message_estate_btn"
top_pad="20"
- width="220" />
+ width="235" />
<button
follows="left|top"
height="23"
@@ -380,6 +383,6 @@
left="280"
name="kick_user_from_estate_btn"
top_delta="0"
- width="220" />
+ width="235" />
</panel>
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 2dae1025ec..ffdbc5d227 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -148,6 +148,18 @@
top_pad="1"
value="2"/>
</radio_group>
+ <check_box
+ control_name="SyncMaterialSettings"
+ follows="top|left"
+ height="20"
+ initial_value="false"
+ label="Lock repeat"
+ layout="topleft"
+ left="8"
+ name="checkbox_sync_settings"
+ tool_tip="Adjust all maps repeats simultaneously"
+ top_pad="-16"
+ width="160" />
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -159,7 +171,7 @@
left="10"
name="texture control"
tool_tip="Click to choose a picture"
- top_pad="7"
+ top_pad="5"
width="64" />
<text
type="string"
@@ -586,7 +598,7 @@
label_width="205"
left="10"
max_val="100"
- min_val="0.1"
+ min_val="-100"
name="rptctrl"
width="265" />
<spinner
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index d6c06b0ecc..c9be141427 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -360,6 +360,15 @@ Please try logging in again in a minute.</string>
<string name="AssetErrorPriceMismatch">Viewer and server do not agree on price</string>
<string name="AssetErrorUnknownStatus">Unknown status</string>
+ <!-- Asset upload errors. -->
+ <string name="AssetUploadServerUnreacheble">Service unreachable.</string>
+ <string name="AssetUploadServerDifficulties">The server is experiencing unexpected difficulties.</string>
+ <string name="AssetUploadServerUnavaliable">Service not available or upload timeout was reached.</string>
+ <string name="AssetUploadRequestInvalid">
+Error in upload request. Please visit
+http://secondlife.com/support for help fixing this problem.
+</string>
+
<!-- Asset Type human readable names: these will replace variable [TYPE] in notification FailedToFindWearable* -->
<!-- Will also replace [OBJECTTYPE] in notifications: UserGiveItem, ObjectGiveItem -->
<string name="texture">texture</string>
@@ -2644,12 +2653,12 @@ If you continue to receive this message, please contact Second Life support for
<string name="RegionInfoAllEstatesYouManage">
all estates that you manage for [OWNER]
</string>
- <string name="RegionInfoAllowedResidents">Allowed Residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
- <string name="RegionInfoAllowedGroups">Allowed Groups: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
+ <string name="RegionInfoAllowedResidents">Always allowed: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
+ <string name="RegionInfoAllowedGroups">Groups always allowed: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
<string name="RegionInfoEstateManagers">Estate Managers: ([ESTATEMANAGERS], max [MAXMANAGERS])</string>
- <string name="RegionInfoBannedResidents">Banned Residents: ([BANNEDAGENTS], max [MAXBANNED])</string>
- <string name="RegionInfoListTypeAllowedAgents">Allowed Residents</string>
- <string name="RegionInfoListTypeBannedAgents">Banned Residents</string>
+ <string name="RegionInfoBannedResidents">Always banned: ([BANNEDAGENTS], max [MAXBANNED])</string>
+ <string name="RegionInfoListTypeAllowedAgents">Always allowed</string>
+ <string name="RegionInfoListTypeBannedAgents">Always banned</string>
<!-- script limits floater -->
<string name="ScriptLimitsParcelScriptMemory">Parcel Script Memory</string>
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index 39426b2aaf..a272835154 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -451,7 +451,7 @@ los media:
<spinner label="Horas de acceso:" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="Always Allow" name="AllowedText">
- Residentes permitidos ([COUNT])
+ Residentes admitidos ([COUNT], m獺x. [MAX])
</text>
<name_list name="AccessList" tool_tip="([LISTED] listados de un m獺x. de [MAX])"/>
<button label="A簽adir" name="add_allowed"/>
@@ -459,7 +459,7 @@ los media:
</panel>
<panel name="Banned_layout_panel">
<text label="Ban" name="BanCheck">
- Residentes no admitidos ([COUNT])
+ Residentes no admitidos ([COUNT], m獺x. [MAX])
</text>
<name_list name="BannedList" tool_tip="([LISTED] listados de un m獺x. de [MAX])"/>
<button label="A簽adir" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..727b1118c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="CONFIGURACIN DE RENDERIZADO DE AVATAR">
+ <string name="av_never_render" value="Nunca"/>
+ <string name="av_always_render" value="Siempre"/>
+ <filter_editor label="Filtrar la gente" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="Acciones en la persona seleccionada"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="Nombre" name="name"/>
+ <name_list.columns label="Configuraci籀n de renderizado" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_flickr.xml b/indra/newview/skins/default/xui/es/floater_flickr.xml
index 7f95d948fe..e254d8ba77 100644
--- a/indra/newview/skins/default/xui/es/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/es/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="SUBIR A FLICKR">
+<floater name="floater_flickr" title="COMPARTIR EN FLICKR">
<panel name="background">
<tab_container name="tabs">
<panel label="FOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/es/floater_preferences.xml b/indra/newview/skins/default/xui/es/floater_preferences.xml
index 372680f55d..cb2a1dde14 100644
--- a/indra/newview/skins/default/xui/es/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/es/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="Privacidad" name="im"/>
<panel label="Configurar" name="input"/>
<panel label="Avanzado" name="advanced1"/>
+ <panel label="Subidas" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_tos.xml b/indra/newview/skins/default/xui/es/floater_tos.xml
index d1cd912f87..25048c9dd6 100644
--- a/indra/newview/skins/default/xui/es/floater_tos.xml
+++ b/indra/newview/skins/default/xui/es/floater_tos.xml
@@ -13,6 +13,6 @@
Por favor, lee detenidamente las siguientes Condiciones del servicio y Pol穩tica de privacidad. Debes aceptar el acuerdo para poder iniciar sesi籀n en [SECOND_LIFE].
</text>
<text name="external_tos_required">
- Para poder proseguir, debes iniciar sesi籀n en my.secondlife.com y aceptar las Condiciones del servicio. Gracias.
+ Para poder proseguir, debes iniciar sesi籀n en https://my.secondlife.com y aceptar las Condiciones del servicio. Gracias.
</text>
</floater>
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 f1394dad05..66db2f4969 100644
--- a/indra/newview/skins/default/xui/es/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/es/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="Acercar el zoom" name="Zoom In"/>
<menu_item_call label="Pagar" name="Pay..."/>
<menu_item_call label="Perfil del objeto" name="Object Inspect"/>
- <menu_item_check label="Renderizar normalmente" name="RenderNormally"/>
- <menu_item_check label="No renderizar" name="DoNotRender"/>
- <menu_item_check label="Renderizar completamente" name="AlwaysRenderFully"/>
+ <context_menu label="Renderizar avatar" name="Render Avatar">
+ <menu_item_check label="Predeterminado" name="RenderNormally"/>
+ <menu_item_check label="Siempre" name="AlwaysRenderFully"/>
+ <menu_item_check label="Nunca" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Ignorar al propietario de la part穩cula" name="Mute Particle"/>
</context_menu>
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 80f16d3e82..d3e87d7bfb 100644
--- a/indra/newview/skins/default/xui/es/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/es/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="Volcar XML" name="Dump XML"/>
<menu_item_call label="Acercar el zoom" name="Zoom In"/>
<menu_item_call label="Pagar" name="Pay..."/>
- <menu_item_check label="Renderizar normalmente" name="RenderNormally"/>
- <menu_item_check label="No renderizar" name="DoNotRender"/>
- <menu_item_check label="Renderizar completamente" name="AlwaysRenderFully"/>
+ <context_menu label="Renderizar avatar" name="Render Avatar">
+ <menu_item_check label="Predeterminado" name="RenderNormally"/>
+ <menu_item_check label="Siempre" name="AlwaysRenderFully"/>
+ <menu_item_check label="Nunca" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Ignorar al propietario de la part穩cula" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..11f68e7792
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="Predeterminado" name="default"/>
+ <menu_item_check label="Renderizar siempre" name="always_render"/>
+ <menu_item_check label="No renderizar nunca" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..a7c673cf2c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="Renderizar siempre un Residente..." name="add_avatar_always_render"/>
+ <menu_item_call label="No renderizar nunca un Residente..." name="add_avatar_never_render"/>
+</toggleable_menu>
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..01a98359e3 100644
--- a/indra/newview/skins/default/xui/es/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_gesture_gear">
- <menu_item_call label="A簽adir a / Quitar de los favoritos" name="activate"/>
+ <menu_item_call label="Activar/Desactivar el gesto elegido" name="activate"/>
<menu_item_call label="Copiar" name="copy_gesture"/>
<menu_item_call label="Pegar" name="paste"/>
<menu_item_call label="Copiar la UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml
index 5d108abf67..074defb006 100644
--- a/indra/newview/skins/default/xui/es/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/es/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="Pelo nuevo" name="New Hair"/>
<menu_item_call label="Ojos nuevos" name="New Eyes"/>
</menu>
+ <menu label="Usar como valor predeterminado para" name="upload_def">
+ <menu_item_call label="Im獺genes subidas" name="Image uploads"/>
+ <menu_item_call label="Sonidos subidos" name="Sound uploads"/>
+ <menu_item_call label="Animaciones subidas" name="Animation uploads"/>
+ <menu_item_call label="Modelos subidos" name="Model uploads"/>
+ </menu>
<menu label="Change Type" name="Change Type">
<menu_item_call label="Por defecto" name="Default"/>
<menu_item_call label="Guantes" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="Reemplazar el vestuario" name="Replace Outfit"/>
<menu_item_call label="A簽adir al vestuario" name="Add To Outfit"/>
<menu_item_call label="Quitar del vestuario actual" name="Remove From Outfit"/>
+ <menu_item_call label="Copiar la lista del vestuario al portapapeles" name="Copy outfit list to clipboard"/>
<menu_item_call label="Encontrar el original" name="Find Original"/>
<menu_item_call label="Eliminar el 穩tem" name="Purge Item"/>
<menu_item_call label="Restaurar el 穩tem" name="Restore Item"/>
@@ -71,7 +78,6 @@
<menu_item_call label="Copiar" name="Copy"/>
<menu_item_call label="Pegar" name="Paste"/>
<menu_item_call label="Pegar como enlace" name="Paste As Link"/>
- <menu_item_call label="Borrar" name="Remove Link"/>
<menu_item_call label="Borrar" name="Delete"/>
<menu_item_call label="Borrar carpeta del sistema" name="Delete System Folder"/>
<menu_item_call label="Empezar multiconferencia" name="Conference Chat Folder"/>
@@ -94,7 +100,6 @@
<menu_item_call label="Editar" name="Wearable Edit"/>
<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="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--"/>
diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
index d9f8f23576..4ab6bc84a3 100644
--- a/indra/newview/skins/default/xui/es/menu_login.xml
+++ b/indra/newview/skins/default/xui/es/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="Yo" name="File">
<menu_item_call label="Preferencias..." name="Preferences..."/>
+ <menu_item_check label="Mostrar selector del Grid" name="Show Grid Picker"/>
<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
</menu>
<menu label="Ayuda" name="Help">
@@ -32,7 +33,6 @@
<menu_item_check label="Error" name="Error"/>
<menu_item_check label="Ninguno" name="None"/>
</menu>
- <menu_item_check label="Mostrar el selector de Grid" name="Show Grid Picker"/>
<menu_item_call label="Mostrar la consola de notificaciones" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
index 986389a4fe..98b0798011 100644
--- a/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="No ignorar" name="unblock"/>
+ <menu_item_check label="Bloquear la voz" name="BlockVoice"/>
+ <menu_item_check label="Bloquear el texto" name="MuteText"/>
+ <menu_item_check label="Bloquear los sonidos de objeto" name="BlockObjectSounds"/>
<menu_item_call label="Perfil..." name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index c4986821f1..99aab42db8 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -44,6 +44,7 @@
<menu_item_check label="Sin transformaci籀n de voz" name="NoVoiceMorphing"/>
<menu_item_check label="Probar..." name="Preview"/>
<menu_item_call label="Suscribir..." name="Subscribe"/>
+ <menu_item_call label="Ventaja Premium..." name="PremiumPerk"/>
</menu>
<menu_item_check label="Gestos..." name="Gestures"/>
<menu_item_check label="Amigos" name="My Friends"/>
@@ -57,7 +58,8 @@
<menu_item_call label="Destinos..." name="Destinations"/>
<menu_item_check label="Mapa del mundo" name="World Map"/>
<menu_item_check label="Minimapa" name="Mini-Map"/>
- <menu_item_check label="Buscar" name="Search"/>
+ <menu_item_call label="Eventos" name="Events"/>
+ <menu_item_check label="Buscar..." name="Search"/>
<menu_item_call label="Teleportar a la Base" name="Teleport Home"/>
<menu_item_call label="Fijar mi Base aqu穩" name="Set Home to Here"/>
<menu_item_call label="Foto" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
<menu_item_call label="Coger una copia" name="Take Copy"/>
<menu_item_call label="Guardar una copia del objeto en los contenidos de donde sali籀" name="Save Object Back to Object Contents"/>
<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
+ <menu_item_call label="Duplicar" name="DuplicateObject"/>
</menu>
<menu label="Scripts" name="Scripts">
+ <menu_item_check label="Advertencias/errores de script..." name="Script debug"/>
<menu_item_call label="Recompilar los scripts (Mono)" name="Mono"/>
<menu_item_call label="Recompilar los scripts (LSL)" name="LSL"/>
<menu_item_call label="Reiniciar los scripts" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 2eddedf687..ee381ace7d 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -144,8 +144,7 @@ La inicializaci籀n del mercado ha fallado por un error del sistema o de la red.
<notification name="MerchantTransactionFailed">
La transacci籀n con el Mercado ha fallado por el siguiente error:
- Motivo: &apos;[ERROR_REASON]&apos;
- [ERROR_DESCRIPTION]
+ [ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -761,6 +760,9 @@ Por favor, aseg繳rate de que no hay ninguno bloqueado, y de que eres el propieta
<notification name="CannotLinkPermanent">
No se pueden vincular objetos a trav矇s de l穩mites de regi籀n.
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ No se pueden vincular objetos a trav矇s de l穩mites de regi籀n.
+ </notification>
<notification name="CannotLinkDifferentOwners">
Imposible enlazarlos, porque hay objetos de distintos propietarios.
@@ -1689,7 +1691,7 @@ Se est獺 descargando en segundo plano y, en cuanto est矇 lista, te pediremos que
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="UpdateCheckError">
- Ha ocurrido un error al comprobar si hay actualizaciones.
+ Ha ocurrido un error al buscar actualizaciones.
Repite la operaci籀n m獺s adelante.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
@@ -1790,10 +1792,9 @@ Si est獺s impaciente por probar las nuevas funciones y correcciones, lee la p獺g
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="DoNotDisturbModeSet">
- Est獺 activado No molestar. No obtendr獺s un aviso cuando recibas comunicaciones.
+ Est獺 activado No molestar. No obtendr獺s un aviso cuando recibas comunicaciones.
- Los otros residentes recibir獺n tu respuesta de No molestar (se configura en Preferencias &gt; General).
-- Se rehusar獺n los ofrecimientos de teleporte.
- Se rechazar獺n las llamadas de voz.
<usetemplate ignoretext="Cambio mi estado al modo No molestar" name="okignore" yestext="OK"/>
</notification>
@@ -2563,9 +2564,6 @@ Publ穩cala en una p獺gina web para que otros puedan acceder f獺cilmente a esta p
<notification name="Cancelled">
Cancelado
</notification>
- <notification name="CancelledSit">
- Cancelado el sentarte
- </notification>
<notification name="CancelledAttach">
Cancelado el anexar
</notification>
@@ -3880,32 +3878,32 @@ Prueba otra vez dentro de un minuto.
<notification name="AvatarEjectFailed">
Error al expulsar: no tienes permiso de administrador en esa parcela.
</notification>
- <notification name="CantMoveObjectParcelFull">
- No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la regi籀n [REGION_NAME] porque la parcela est獺 llena.
+ <notification name="CMOParcelFull">
+ No se puede mover el objeto &apos;[O]&apos; a
+[P] de la regi籀n [R] porque la parcela est獺 llena.
</notification>
- <notification name="CantMoveObjectParcelPerms">
- No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la regi籀n [REGION_NAME] porque tus objetos no est獺n permitidos en esta parcela.
+ <notification name="CMOParcelPerms">
+ No se puede mover el objeto &apos;[O]&apos; a
+[P] de la regi籀n [R] porque tus objetos no est獺n permitidos en esta parcela.
</notification>
- <notification name="CantMoveObjectParcelResources">
- No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la regi籀n [REGION_NAME] porque no hay suficientes recursos para este objeto en esta parcela.
+ <notification name="CMOParcelResources">
+ No se puede mover el objeto &apos;[O]&apos; a
+[P] de la regi籀n [R] porque no hay suficientes recursos para este objeto en esta parcela.
</notification>
<notification name="NoParcelPermsNoObject">
Error al copiar: no tienes acceso a esa parcela.
</notification>
- <notification name="CantMoveObjectRegionVersion">
- No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la regi籀n [REGION_NAME] porque la otra regi籀n ejecuta una versi籀n m獺s antigua que no admite la recepci籀n de este objeto atravesando regiones.
+ <notification name="CMORegionVersion">
+ No se puede mover el objeto &apos;[O]&apos; a
+[P] de la regi籀n [R] porque la otra regi籀n ejecuta una versi籀n m獺s antigua que no admite la recepci籀n de este objeto atravesando regiones.
</notification>
- <notification name="CantMoveObjectNavMesh">
- No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la regi籀n [REGION_NAME] porque no puedes modificar el navmesh a trav矇s de l穩mites de regi籀n.
+ <notification name="CMONavMesh">
+ No se puede mover el objeto &apos;[O]&apos; a
+[P] de la regi籀n [R] porque no puedes modificar el navmesh a trav矇s de l穩mites de regi籀n.
</notification>
- <notification name="CantMoveObjectWTF">
- No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la regi籀n [REGION_NAME] por un motivo desconocido. ([FAILURE_TYPE])
+ <notification name="CMOWTF">
+ No se puede mover el objeto &apos;[O]&apos; a
+[P] de la regi籀n [R] por un motivo desconocido. ([F])
</notification>
<notification name="NoPermModifyObject">
No tienes permiso para modificar ese objeto
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..73f80bfa90 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="Elige un residente o un objeto para ignorarlo"/>
<button name="unblock_btn" tool_tip="Quita al Residente o al objeto de la lista de ignorados"/>
</panel>
+ <text name="block_limit">
+ [COUNT] entradas en tu lista de bloqueados, y el l穩mite es [LIMIT].
+ </text>
<block_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
</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 fe80199355..f8cc8c1de7 100644
--- a/indra/newview/skins/default/xui/es/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/es/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Usa &quot;&quot; para las etiquetas con varias palabras
<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="Compartir" name="post_photo_btn"/>
<button label="Cancelar" name="cancel_photo_btn"/>
</panel>
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..bc8586f53e 100644
--- a/indra/newview/skins/default/xui/es/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/es/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
<text_editor name="message" value="message"/>
</panel>
<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
index 2db4274e44..816c698548 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
<text name="BetterText">
M獺s calidad
</text>
+ <check_box initial_value="true" label="Shaders de la atm籀sfera" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Modelo de iluminaci籀n avanzado" name="UseLightShaders"/>
<slider label="Complejidad m獺xima de avatar:" name="IndirectMaxComplexity" tool_tip="Controla en qu矇 momento un avatar visualmente complejo se dibuja como un &quot;JellyDoll&quot;"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="Shaders de la atm籀sfera" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="Modelo de iluminaci籀n avanzado" name="UseLightShaders"/>
+ <check_box initial_value="true" label="Renderizar siempre los amigos" name="AlwaysRenderFriends"/>
+ <button label="Excepciones..." name="RenderExceptionsButton"/>
<button label="Guardar configuraci籀n como valor predefinido..." name="PrefSaveButton"/>
<button label="Cargar predefinido..." name="PrefLoadButton"/>
min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/es/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..b095ed6c67
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Subidas" name="uploads">
+ <text name="title">
+ Carpetas de destino actuales para las subidas
+ </text>
+ <text name="title_models">
+ Im獺genes
+ </text>
+ <text name="title_sounds">
+ Sonidos
+ </text>
+ <text name="title_animation">
+ Animaciones
+ </text>
+ <text name="upload_help">
+ Para cambiar una carpeta de destino, pulsa con el bot籀n derecho en ella en el inventario y elige
+&quot;Usar como valor predeterminado para&quot;
+ </text>
+</panel>
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 c1955f1fde..4eb9ecf28f 100644
--- a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<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="Compartir en los comentarios de Mi perfil" name="save_to_profile_btn"/>
+ <button label="Compartir en Facebook" name="send_to_facebook_btn"/>
+ <button label="Compartir en Twitter" name="send_to_twitter_btn"/>
+ <button label="Compartir en 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/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 192d32c267..7cbd969ca0 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -1473,7 +1473,8 @@ Intenta iniciar sesi籀n de nuevo en unos instantes.
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].
+ Se ha producido un error al abrir Art穩culos del Mercado.
+Si sigues recibiendo el mismo mensaje, solicita ayuda al personal de asistencia de Second Life en http://support.secondlife.com
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
Tu carpeta Art穩culos del mercado est獺 vac穩a.
@@ -4354,7 +4355,10 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
Conferencia con [AGENT_NAME]
</string>
<string name="inventory_item_offered-im">
- Ofrecido el item del inventario
+ tem del inventario &apos;[ITEM_NAME]&apos; ofrecido
+ </string>
+ <string name="inventory_folder_offered-im">
+ Carpeta del inventario &apos;[ITEM_NAME]&apos; ofrecida
</string>
<string name="share_alert">
Arrastra los 穩tems desde el invenbtario hasta aqu穩
@@ -4441,7 +4445,10 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
Posici籀n inicial establecida.
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
[NAME] te ha pagado [AMOUNT] L$ [REASON].
@@ -4650,7 +4657,7 @@ Denuncia de infracci籀n
Var籀n - Encogimiento de hombros
</string>
<string name="Male - Stick tougue out">
- Var籀n - Sacando la lengua
+ Hombre - Sacando la lengua
</string>
<string name="Male - Wow">
Var籀n - Admiraci籀n
@@ -4812,7 +4819,7 @@ Denuncia de infracci籀n
<string name="server_is_down">
Parece que hay alg繳n problema que ha escapado a nuestros controles.
- Visita status.secondlifegrid.net para ver si hay alguna incidencia conocida que est矇 afectando al servicio.
+Visita http://status.secondlifegrid.net para ver si hay alguna incidencia conocida que est矇 afectando al servicio.
Si sigues teniendo problemas, comprueba la configuraci籀n de la red y del servidor de seguridad.
</string>
<string name="dateTimeWeekdaysNames">
@@ -5273,6 +5280,9 @@ Int矇ntalo incluyendo la ruta de acceso al editor entre comillas
<string name="Command_Gestures_Label">
Gestos
</string>
+ <string name="Command_Grid_Status_Label">
+ Estado del Grid
+ </string>
<string name="Command_HowTo_Label">
C籀mo
</string>
@@ -5366,6 +5376,9 @@ Int矇ntalo incluyendo la ruta de acceso al editor entre comillas
<string name="Command_Gestures_Tooltip">
Gestos para tu avatar
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ Mostrar el estado actual del Grid
+ </string>
<string name="Command_HowTo_Tooltip">
C籀mo hacer las tareas habituales
</string>
@@ -5588,6 +5601,9 @@ Int矇ntalo incluyendo la ruta de acceso al editor entre comillas
<string name="loading_chat_logs">
Cargando...
</string>
+ <string name="na">
+ n/c
+ </string>
<string name="preset_combo_label">
-Lista vac穩a-
</string>
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index 6aea44e650..2e57cd1612 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -456,7 +456,7 @@ musique :
<spinner label="Dur矇e en heures:" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="Toujours autoriser" name="AllowedText">
- R矇sidents autoris矇s ([COUNT])
+ R矇sidents autoris矇s ([COUNT], max. [MAX])
</text>
<name_list name="AccessList" tool_tip="([LISTED] dans la liste, [MAX] max.)"/>
<button label="Ajouter" name="add_allowed"/>
@@ -464,7 +464,7 @@ musique :
</panel>
<panel name="Banned_layout_panel">
<text label="Bannir" name="BanCheck">
- R矇sidents bannis ([COUNT])
+ R矇sidents bannis ([COUNT], max. [MAX])
</text>
<name_list name="BannedList" tool_tip="([LISTED] dans la liste, [MAX] max.)"/>
<button label="Ajouter" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..5d178bf2dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="PARAMTRES DE RENDU DE LAVATAR">
+ <string name="av_never_render" value="Jamais"/>
+ <string name="av_always_render" value="Toujours"/>
+ <filter_editor label="Filtrer les personnes" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="Actions sur la personne s矇lectionn矇e"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="Nom" name="name"/>
+ <name_list.columns label="Param癡tre de rendu" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_flickr.xml b/indra/newview/skins/default/xui/fr/floater_flickr.xml
index 0432ae9459..721d6aa6bf 100644
--- a/indra/newview/skins/default/xui/fr/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/fr/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="CHARGER DANS FLICKR">
+<floater name="floater_flickr" title="PARTAGER SUR FLICKR">
<panel name="background">
<tab_container name="tabs">
<panel label="PHOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml
index 0f9fb1334b..25887bb5f7 100644
--- a/indra/newview/skins/default/xui/fr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="Confidentialit矇" name="im"/>
<panel label="Configuration" name="input"/>
<panel label="Avanc矇es" name="advanced1"/>
+ <panel label="Chargements" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_tos.xml b/indra/newview/skins/default/xui/fr/floater_tos.xml
index c43139ce0f..9d2f034399 100644
--- a/indra/newview/skins/default/xui/fr/floater_tos.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tos.xml
@@ -13,6 +13,6 @@
Veuillez lire attentivement les Conditions d&apos;utilisation et le R癡glement sur le respect de la vie priv矇e suivants. Vous devez les accepter pour pouvoir vous connecter [SECOND_LIFE].
</text>
<text name="external_tos_required">
- Vous devez vous rendre sur my.secondlife.com et vous connecter pour accepter les Conditions dutilisation avant de pouvoir continuer. Merci!
+ Vous devez vous rendre sur https://my.secondlife.com et vous connecter pour accepter les Conditions dutilisation avant de pouvoir continuer. Merci!
</text>
</floater>
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 ae19e78d54..23416421bc 100644
--- a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="Zoomer en avant" name="Zoom In"/>
<menu_item_call label="Payer" name="Pay..."/>
<menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
- <menu_item_check label="Effectuer le rendu normalement" name="RenderNormally"/>
- <menu_item_check label="Ne pas effectuer le rendu" name="DoNotRender"/>
- <menu_item_check label="Effectuer le rendu total" name="AlwaysRenderFully"/>
+ <context_menu label="Effectuer le rendu de lavatar" name="Render Avatar">
+ <menu_item_check label="Valeur par d矇faut" name="RenderNormally"/>
+ <menu_item_check label="Toujours" name="AlwaysRenderFully"/>
+ <menu_item_check label="Jamais" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Ignorer le propri矇taire des particules" name="Mute Particle"/>
</context_menu>
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 2a0ae38605..fb675b3877 100644
--- a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="Dump XML" name="Dump XML"/>
<menu_item_call label="Zoomer en avant" name="Zoom In"/>
<menu_item_call label="Payer" name="Pay..."/>
- <menu_item_check label="Effectuer le rendu normalement" name="RenderNormally"/>
- <menu_item_check label="Ne pas effectuer le rendu" name="DoNotRender"/>
- <menu_item_check label="Effectuer le rendu total" name="AlwaysRenderFully"/>
+ <context_menu label="Effectuer le rendu de lavatar" name="Render Avatar">
+ <menu_item_check label="Valeur par d矇faut" name="RenderNormally"/>
+ <menu_item_check label="Toujours" name="AlwaysRenderFully"/>
+ <menu_item_check label="Jamais" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Ignorer le propri矇taire des particules" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..59dad01a11
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="Valeur par d矇faut" name="default"/>
+ <menu_item_check label="Toujours effectuer le rendu" name="always_render"/>
+ <menu_item_check label="Ne jamais effectuer le rendu" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..44f3961f1a
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="Toujours effectuer le rendu dun r矇sident" name="add_avatar_always_render"/>
+ <menu_item_call label="Ne jamais effectuer le rendu dun r矇sident" name="add_avatar_never_render"/>
+</toggleable_menu>
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..d48b273ee6 100644
--- a/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_gesture_gear">
- <menu_item_call label="Ajouter/Supprimer des favoris" name="activate"/>
+ <menu_item_call label="Activer/d矇sactiver le geste s矇lectionn矇" name="activate"/>
<menu_item_call label="Copier" name="copy_gesture"/>
<menu_item_call label="Coller" name="paste"/>
<menu_item_call label="Copier l&apos;UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index c0808f1139..ba4e8db61a 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
</menu>
+ <menu label="Utiliser comme d矇faut pour" name="upload_def">
+ <menu_item_call label="Chargements dimages" name="Image uploads"/>
+ <menu_item_call label="Chargements de sons" name="Sound uploads"/>
+ <menu_item_call label="Chargements danimations" name="Animation uploads"/>
+ <menu_item_call label="Chargements de mod癡les" name="Model uploads"/>
+ </menu>
<menu label="Changer de type" name="Change Type">
<menu_item_call label="D矇faut" name="Default"/>
<menu_item_call label="Gants" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="Remplacer la tenue actuelle" name="Replace Outfit"/>
<menu_item_call label="Ajouter la tenue actuelle" name="Add To Outfit"/>
<menu_item_call label="Enlever de la tenue actuelle" name="Remove From Outfit"/>
+ <menu_item_call label="Copier la liste de la tenue dans le presse-papiers" name="Copy outfit list to clipboard"/>
<menu_item_call label="Trouver l&apos;original" name="Find Original"/>
<menu_item_call label="Purger l&apos;objet" name="Purge Item"/>
<menu_item_call label="Restaurer l&apos;objet" name="Restore Item"/>
@@ -72,7 +79,6 @@
<menu_item_call label="Copier" name="Copy"/>
<menu_item_call label="Coller" name="Paste"/>
<menu_item_call label="Coller comme lien" name="Paste As Link"/>
- <menu_item_call label="Supprimer" name="Remove Link"/>
<menu_item_call label="Supprimer" name="Delete"/>
<menu_item_call label="Supprimer le dossier syst癡me" name="Delete System Folder"/>
<menu_item_call label="D矇marrer le chat conf矇rence" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
<menu_item_call label="Modifier" name="Wearable Edit"/>
<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&apos;envoi vendeur" name="Merchant Copy"/>
<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--"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
index 7fd68baf67..cbfdcdaf22 100644
--- a/indra/newview/skins/default/xui/fr/menu_login.xml
+++ b/indra/newview/skins/default/xui/fr/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="Moi" name="File">
<menu_item_call label="Pr矇f矇rences..." name="Preferences..."/>
+ <menu_item_check label="Afficher le s矇lecteur de grille" name="Show Grid Picker"/>
<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
</menu>
<menu label="Aide" name="Help">
@@ -33,7 +34,6 @@
<menu_item_check label="Erreur" name="Error"/>
<menu_item_check label="Aucun" name="None"/>
</menu>
- <menu_item_check label="Afficher le s矇lecteur de grille" name="Show Grid Picker"/>
<menu_item_call label="Afficher la console des notifications" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
index 47589572c2..adce6f5682 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="Ne plus ignorer" name="unblock"/>
+ <menu_item_check label="Bloquer le chat vocal" name="BlockVoice"/>
+ <menu_item_check label="Ignorer le texte" name="MuteText"/>
+ <menu_item_check label="Bloquer les sons des objets" name="BlockObjectSounds"/>
<menu_item_call label="Profil..." name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index d40e979d08..98a69aa043 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -44,6 +44,7 @@
<menu_item_check label="Aucun effet de voix" name="NoVoiceMorphing"/>
<menu_item_check label="Aper癟u..." name="Preview"/>
<menu_item_call label="S&apos;abonner..." name="Subscribe"/>
+ <menu_item_call label="Avantage Premium..." name="PremiumPerk"/>
</menu>
<menu_item_check label="Gestes..." name="Gestures"/>
<menu_item_check label="Amis" name="My Friends"/>
@@ -57,7 +58,8 @@
<menu_item_call label="Destinations..." name="Destinations"/>
<menu_item_check label="Carte du monde" name="World Map"/>
<menu_item_check label="Mini-carte" name="Mini-Map"/>
- <menu_item_check label="Rechercher" name="Search"/>
+ <menu_item_call label="v矇nements" name="Events"/>
+ <menu_item_check label="Recherche..." name="Search"/>
<menu_item_call label="Me t矇l矇porter chez moi" name="Teleport Home"/>
<menu_item_call label="D矇finir le domicile ici" name="Set Home to Here"/>
<menu_item_call label="Photo" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
<menu_item_call label="Prendre une copie" name="Take Copy"/>
<menu_item_call label="Enregistrer dans le contenu des objets" name="Save Object Back to Object Contents"/>
<menu_item_call label="Renvoi de l&apos;objet" name="Return Object back to Owner"/>
+ <menu_item_call label="Dupliquer" name="DuplicateObject"/>
</menu>
<menu label="Scripts" name="Scripts">
+ <menu_item_check label="Avertissements/Erreurs de scripts..." name="Script debug"/>
<menu_item_call label="Recompiler les scripts (Mono)" name="Mono"/>
<menu_item_call label="Recompiler les scripts (LSL)" name="LSL"/>
<menu_item_call label="R矇initialiser les scripts" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 21826a9603..197f187b79 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -142,10 +142,9 @@ L&apos;initialisation de la Place du march矇 a 矇chou矇 en raison d&apos;une err
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantTransactionFailed">
- La transaction avec la Place du march矇 a 矇chou矇 en raison de l&apos;erreur suivante:
+ La transaction avec la Place du march矇 a 矇chou矇 en renvoyant lerreur suivante:
- Motif: &apos;[ERROR_REASON]&apos;
- [ERROR_DESCRIPTION]
+ [ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -761,6 +760,9 @@ Assurez-vous que vous 礙tes le propri矇taire de tous les objets et qu&apos;aucun
<notification name="CannotLinkPermanent">
Impossible de lier des objets d&apos;une r矇gion une autre.
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ Impossible de lier des objets dune r矇gion une autre.
+ </notification>
<notification name="CannotLinkDifferentOwners">
Impossible de lier car les objets n&apos;ont pas tous le m礙me propri矇taire.
@@ -1783,7 +1785,6 @@ Quitter le groupe ?
Ne pas d矇ranger est activ矇. Vous ne recevrez pas les notifications de communications entrantes.
- Les autres r矇sidents recevront votre r矇ponse Ne pas d矇ranger (d矇finie dans Pr矇f矇rences &gt; G矇n矇ral).
-- Toutes les offres de t矇l矇portation seront refus矇es.
- Les appels vocaux seront refus矇s.
<usetemplate ignoretext="J&apos;ai chang矇 mon statut et suis d矇sormais en mode Ne pas d矇ranger." name="okignore" yestext="OK"/>
</notification>
@@ -2554,9 +2555,6 @@ Liez-la partir d&apos;une page web pour permettre aux autres r矇sidents d&apo
<notification name="Cancelled">
Annul矇
</notification>
- <notification name="CancelledSit">
- Action annul矇e
- </notification>
<notification name="CancelledAttach">
Attachement annul矇
</notification>
@@ -3881,32 +3879,32 @@ Veuillez r矇essayer dans une minute.
<notification name="AvatarEjectFailed">
Vous n&apos;avez pas pu r矇aliser l&apos;exclusion car vous ne disposez pas des droits d&apos;admin pour cette parcelle.
</notification>
- <notification name="CantMoveObjectParcelFull">
- Impossible de d矇placer [OBJECT_NAME] jusqu&apos;
-[OBJ_POSITION] dans la r矇gion [REGION_NAME] car la parcelle est pleine.
+ <notification name="CMOParcelFull">
+ Impossible de d矇placer lobjet [O] jusqu
+[P] dans la r矇gion [R] car la parcelle est pleine.
</notification>
- <notification name="CantMoveObjectParcelPerms">
- Impossible de d矇placer [OBJECT_NAME] jusqu&apos;
-[OBJ_POSITION] dans la r矇gion [REGION_NAME] car vos objets ne sont pas autoris矇s sur cette parcelle.
+ <notification name="CMOParcelPerms">
+ Impossible de d矇placer lobjet [O] jusqu
+[P] dans la r矇gion [R] car vos objets ne sont pas autoris矇s sur cette parcelle.
</notification>
- <notification name="CantMoveObjectParcelResources">
- Impossible de d矇placer [OBJECT_NAME] jusqu&apos;
-[OBJ_POSITION] dans la r矇gion [REGION_NAME] car il n&apos;y a pas suffisamment de ressources pour cet objet sur cette parcelle.
+ <notification name="CMOParcelResources">
+ Impossible de d矇placer lobjet [O] jusqu
+[P] dans la r矇gion [R] car il ny a pas suffisamment de ressources pour cet objet sur cette parcelle.
</notification>
<notification name="NoParcelPermsNoObject">
La copie a 矇chou矇 car vous navez pas acc癡s cette parcelle.
</notification>
- <notification name="CantMoveObjectRegionVersion">
- Impossible de d矇placer [OBJECT_NAME] jusqu&apos;
-[OBJ_POSITION] dans la r矇gion [REGION_NAME] car l&apos;autre r矇gion ex矇cute une version plus ancienne qui ne prend pas en charge la r矇ception de cet objet via le passage une autre r矇gion.
+ <notification name="CMORegionVersion">
+ Impossible de d矇placer lobjet [O] jusqu
+[P] dans la r矇gion [R] car lautre r矇gion ex矇cute une version plus ancienne qui ne prend pas en charge la r矇ception de cet objet via le passage une autre r矇gion.
</notification>
- <notification name="CantMoveObjectNavMesh">
- Impossible de d矇placer [OBJECT_NAME] jusqu&apos;
-[OBJ_POSITION] dans la r矇gion [REGION_NAME] car vous ne pouvez pas modifier le maillage de navigation d&apos;une r矇gion une autre.
+ <notification name="CMONavMesh">
+ Impossible de d矇placer lobjet [O] jusqu
+[P] dans la r矇gion [R] car vous ne pouvez pas modifier le maillage de navigtion dune r矇gion une autre.
</notification>
- <notification name="CantMoveObjectWTF">
- Impossible de d矇placer [OBJECT_NAME] jusqu&apos;
-[OBJ_POSITION] dans la r矇gion [REGION_NAME] pour une raison inconnue. ([FAILURE_TYPE])
+ <notification name="CMOWTF">
+ Impossible de d矇placer lobjet [O] jusqu
+[P] dans la r矇gion [R] pour une raison inconnue. ([F])
</notification>
<notification name="NoPermModifyObject">
Vous n&apos;礙tes pas autoris矇 modifier cet objet.
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..e2970d1485 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="Choisir un r矇sident ou un objet ignorer"/>
<button name="unblock_btn" tool_tip="Enlever le r矇sident ou lobjet de la liste des ignor矇s"/>
</panel>
+ <text name="block_limit">
+ [COUNT]entr矇es dans votre liste des ignor矇s, la limite est de [LIMIT].
+ </text>
<block_list name="blocked" tool_tip="Liste des r矇sidents actuellement ignor矇s"/>
</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 7b3a176703..9dac26b165 100644
--- a/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Utiliser &quot;&quot; pour les balises contenant plusieurs mots
<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="Partager" name="post_photo_btn"/>
<button label="Annuler" name="cancel_photo_btn"/>
</panel>
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..fc4c005a25 100644
--- a/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
<text_editor name="message" value="message"/>
</panel>
<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index 60cdd5df41..7117ace7e1 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
<text name="BetterText">
Meilleure
</text>
+ <check_box initial_value="true" label="Effets atmosph矇riques" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Mod癡le d矇clairage avanc矇" name="UseLightShaders"/>
<slider label="Complexit矇 max. de l&apos;avatar:" name="IndirectMaxComplexity" tool_tip="Contr繫le quel moment un avatar complexe est repr矇sent矇 comme un 竄JellyDoll罈"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="Effets atmosph矇riques" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="Mod癡le d矇clairage avanc矇" name="UseLightShaders"/>
+ <check_box initial_value="true" label="Toujours effectuer le rendu des amis" name="AlwaysRenderFriends"/>
+ <button label="Exceptions..." name="RenderExceptionsButton"/>
<button label="Enregistrer les param癡tres comme pr矇r矇glage..." name="PrefSaveButton"/>
<button label="Charger un pr矇r矇glage..." name="PrefLoadButton"/>
min_val=&quot;0,125&quot;
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/fr/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..c1d9d15a93
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Chargements" name="uploads">
+ <text name="title">
+ Dossiers de destination actuels pour les chargements
+ </text>
+ <text name="title_models">
+ Images
+ </text>
+ <text name="title_sounds">
+ Sons
+ </text>
+ <text name="title_animation">
+ Animations
+ </text>
+ <text name="upload_help">
+ Pour modifier un dossier de destination, cliquez-droit sur ce dossier dans linventaire et faites votre choix
+ &quot;Utiliser comme d矇faut pour&quot;
+ </text>
+</panel>
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 eb724f4bd1..bdedb9162f 100644
--- a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<button label="Enreg. sur le disque" name="save_to_computer_btn"/>
<button label="Enreg. dans l&apos;inventaire ([AMOUNT] L$)" name="save_to_inventory_btn"/>
- <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="Partager sur le flux de profil" name="save_to_profile_btn"/>
+ <button label="Partager sur Facebook" name="send_to_facebook_btn"/>
+ <button label="Partager sur Twitter" name="send_to_twitter_btn"/>
+ <button label="Partager 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/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 40a41b93ab..6f95039aea 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1491,7 +1491,8 @@ Veuillez r矇essayer de vous connecter dans une minute.
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.
+ Une erreur est survenue lors de louverture des annonces de la Place du march矇.
+Si vous continuez de recevoir ce message, contactez lassistance Second Life http://support.secondlife.com pour obtenir de laide.
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
Votre dossier Annonces de la Place du march矇 est vide.
@@ -4444,7 +4445,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Conf矇rence avec [AGENT_NAME]
</string>
<string name="inventory_item_offered-im">
- Objet de l&apos;inventaire offert
+ Objet de linventaire [ITEM_NAME] offert
+ </string>
+ <string name="inventory_folder_offered-im">
+ Dossier de linventaire [ITEM_NAME] offert
</string>
<string name="share_alert">
Faire glisser les objets de l&apos;inventaire ici
@@ -4531,7 +4535,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Emplacement du domicile d矇fini.
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
[NAME] vous a pay矇 [AMOUNT]L$ [REASON].
@@ -4900,9 +4907,9 @@ du rapport d&apos;infraction
</string>
<string name="words_separator" value=","/>
<string name="server_is_down">
- Malgr矇 nos efforts, une erreur inattendue s&apos;est produite.
+ Malgr矇 nos efforts, une erreur inattendue sest produite.
- Veuillez vous reporter status.secondlifegrid.net afin de d矇terminer si un probl癡me connu existe avec ce service.
+Veuillez vous reporter http://status.secondlifegrid.net afin de d矇terminer si un probl癡me connu existe avec ce service.
Si le probl癡me persiste, v矇rifiez la configuration de votre r矇seau et de votre pare-feu.
</string>
<string name="dateTimeWeekdaysNames">
@@ -5363,6 +5370,9 @@ Essayez avec le chemin d&apos;acc癡s l&apos;矇diteur entre guillemets doubles
<string name="Command_Gestures_Label">
Gestes
</string>
+ <string name="Command_Grid_Status_Label">
+ tat de la grille
+ </string>
<string name="Command_HowTo_Label">
Aide rapide
</string>
@@ -5456,6 +5466,9 @@ Essayez avec le chemin d&apos;acc癡s l&apos;矇diteur entre guillemets doubles
<string name="Command_Gestures_Tooltip">
Gestes de votre avatar
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ Afficher l矇tat actuel de la grille
+ </string>
<string name="Command_HowTo_Tooltip">
Comment effectuer les op矇rations courantes
</string>
@@ -5678,6 +5691,9 @@ Essayez avec le chemin d&apos;acc癡s l&apos;矇diteur entre guillemets doubles
<string name="loading_chat_logs">
Chargement...
</string>
+ <string name="na">
+ s.o.
+ </string>
<string name="preset_combo_label">
-Liste vide-
</string>
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index 62960d8755..8311321a96 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -456,7 +456,7 @@ Media:
<spinner label="Ore di accesso:" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="Consenti sempre" name="AllowedText">
- Residenti consentiti ([COUNT])
+ Residenti consentiti ([COUNT], max [MAX])
</text>
<name_list name="AccessList" tool_tip="([LISTED] in lista, [MAX] max)"/>
<button label="Aggiungi" name="add_allowed"/>
@@ -464,7 +464,7 @@ Media:
</panel>
<panel name="Banned_layout_panel">
<text label="Espelli" name="BanCheck">
- Residenti espulsi ([COUNT])
+ Residenti espulsi ([COUNT], max [MAX])
</text>
<name_list name="BannedList" tool_tip="([LISTED] in lista, [MAX] max)"/>
<button label="Aggiungi" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..4c992dceb4
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="IMPOSTAZIONI DI RENDERING AVATAR">
+ <string name="av_never_render" value="Mai"/>
+ <string name="av_always_render" value="Sempre"/>
+ <filter_editor label="Filtro persone" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="Azioni per la persona selezionata"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="Nome" name="name"/>
+ <name_list.columns label="Impostazione di rendering" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_flickr.xml b/indra/newview/skins/default/xui/it/floater_flickr.xml
index c19eb337af..85482a44a4 100644
--- a/indra/newview/skins/default/xui/it/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/it/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="CARICA SU FLICKR">
+<floater name="floater_flickr" title="CONDIVIDI SU FLICKR">
<panel name="background">
<tab_container name="tabs">
<panel label="FOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml
index 7a1d2966ed..189ba195c5 100644
--- a/indra/newview/skins/default/xui/it/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/it/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="Riservatezza" name="im"/>
<panel label="Impostazione" name="input"/>
<panel label="Avanzate" name="advanced1"/>
+ <panel label="Caricamenti" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_tos.xml b/indra/newview/skins/default/xui/it/floater_tos.xml
index 0dd116d613..0382312462 100644
--- a/indra/newview/skins/default/xui/it/floater_tos.xml
+++ b/indra/newview/skins/default/xui/it/floater_tos.xml
@@ -13,6 +13,6 @@
Sei pregato di leggere attentamente i Termini del servizio e le Regole sulla privacy di seguito. Per continuare l&apos;accesso a [SECOND_LIFE], devi accettare le condizioni.
</text>
<text name="external_tos_required">
- Per continuare, visita my.secondlife.com e accedi per accettare i Termini del servizio. Grazie.
+ Per continuare, visita https://my.secondlife.com e accedi per accettare i Termini del servizio. Grazie.
</text>
</floater>
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 1832400298..b7faee0e85 100644
--- a/indra/newview/skins/default/xui/it/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/it/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="Zoom avanti" name="Zoom In"/>
<menu_item_call label="Paga" name="Pay..."/>
<menu_item_call label="Profilo dell&apos;oggetto" name="Object Inspect"/>
- <menu_item_check label="Esegui il rendering normalmente" name="RenderNormally"/>
- <menu_item_check label="Non eseguire il rendering" name="DoNotRender"/>
- <menu_item_check label="Esegui il rendering completamente" name="AlwaysRenderFully"/>
+ <context_menu label="Rendering avatar" name="Render Avatar">
+ <menu_item_check label="Impostazione predefinita" name="RenderNormally"/>
+ <menu_item_check label="Sempre" name="AlwaysRenderFully"/>
+ <menu_item_check label="Mai" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Blocca proprietario particella" name="Mute Particle"/>
</context_menu>
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 f3b4075a29..5e8002f247 100644
--- a/indra/newview/skins/default/xui/it/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/it/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="Dump XML" name="Dump XML"/>
<menu_item_call label="Zoom avanti" name="Zoom In"/>
<menu_item_call label="Paga" name="Pay..."/>
- <menu_item_check label="Esegui il rendering normalmente" name="RenderNormally"/>
- <menu_item_check label="Non eseguire il rendering" name="DoNotRender"/>
- <menu_item_check label="Esegui il rendering completamente" name="AlwaysRenderFully"/>
+ <context_menu label="Rendering avatar" name="Render Avatar">
+ <menu_item_check label="Impostazione predefinita" name="RenderNormally"/>
+ <menu_item_check label="Sempre" name="AlwaysRenderFully"/>
+ <menu_item_check label="Mai" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Blocca proprietario particella" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..f29b3166fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="Impostazione predefinita" name="default"/>
+ <menu_item_check label="Esegui sempre il rendering" name="always_render"/>
+ <menu_item_check label="Non eseguire mai il rendering" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..d8918d07d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="Esegui sempre il rendering di un residente..." name="add_avatar_always_render"/>
+ <menu_item_call label="Non eseguire mai il rendering di un residente..." name="add_avatar_never_render"/>
+</toggleable_menu>
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..b54dec75ee 100644
--- a/indra/newview/skins/default/xui/it/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_gesture_gear">
- <menu_item_call label="Aggiungi/Rimuovi dai preferiti" name="activate"/>
+ <menu_item_call label="Attiva/disattiva gesture selezionata" name="activate"/>
<menu_item_call label="Copia" name="copy_gesture"/>
<menu_item_call label="Incolla" name="paste"/>
<menu_item_call label="Copia UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml
index 2cd0d2c078..a6dbc722b8 100644
--- a/indra/newview/skins/default/xui/it/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/it/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="Nuovi capelli" name="New Hair"/>
<menu_item_call label="Nuovi occhi" name="New Eyes"/>
</menu>
+ <menu label="Usa come impostazione predefinita per" name="upload_def">
+ <menu_item_call label="Caricamenti immagini" name="Image uploads"/>
+ <menu_item_call label="Caricamenti suoni" name="Sound uploads"/>
+ <menu_item_call label="Caricamenti animazioni" name="Animation uploads"/>
+ <menu_item_call label="Caricamenti modelli" name="Model uploads"/>
+ </menu>
<menu label="Cambia tipo" name="Change Type">
<menu_item_call label="Predefinito" name="Default"/>
<menu_item_call label="Guanti" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="Sostituisci vestiti" name="Replace Outfit"/>
<menu_item_call label="Aggiungi al vestiario" name="Add To Outfit"/>
<menu_item_call label="Rimuovi dal vestiario attuale" name="Remove From Outfit"/>
+ <menu_item_call label="Copia gruppo vestiti negli Appunti" name="Copy outfit list to clipboard"/>
<menu_item_call label="Trova originale" name="Find Original"/>
<menu_item_call label="Elimina oggetto" name="Purge Item"/>
<menu_item_call label="Ripristina oggetto" name="Restore Item"/>
@@ -72,7 +79,6 @@
<menu_item_call label="Copia" name="Copy"/>
<menu_item_call label="Incolla" name="Paste"/>
<menu_item_call label="Incolla come link" name="Paste As Link"/>
- <menu_item_call label="Elimina" name="Remove Link"/>
<menu_item_call label="Cancella" name="Delete"/>
<menu_item_call label="Elimina la cartella di sistema" name="Delete System Folder"/>
<menu_item_call label="Inizia la conferenza chat" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
<menu_item_call label="Modifica" name="Wearable Edit"/>
<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="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--"/>
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
index 3d2a556fe2..6dafc68f7c 100644
--- a/indra/newview/skins/default/xui/it/menu_login.xml
+++ b/indra/newview/skins/default/xui/it/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="Io" name="File">
<menu_item_call label="Preferenze..." name="Preferences..."/>
+ <menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/>
<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
</menu>
<menu label="Aiuto" name="Help">
@@ -32,7 +33,6 @@
<menu_item_check label="Errore" name="Error"/>
<menu_item_check label="Nessuno" name="None"/>
</menu>
- <menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/>
<menu_item_call label="Mostra Console notifiche" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
index e9955923b2..172d712a1e 100644
--- a/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="Sblocca" name="unblock"/>
+ <menu_item_check label="Blocca voce" name="BlockVoice"/>
+ <menu_item_check label="Blocca testo" name="MuteText"/>
+ <menu_item_check label="Blocca suoni oggetto" name="BlockObjectSounds"/>
<menu_item_call label="Profilo..." name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index 96f06d5f98..216af0e458 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -44,6 +44,7 @@
<menu_item_check label="Nessuna manipolazione voce" name="NoVoiceMorphing"/>
<menu_item_check label="Anteprima..." name="Preview"/>
<menu_item_call label="Abbonati..." name="Subscribe"/>
+ <menu_item_call label="Vantaggio Premium..." name="PremiumPerk"/>
</menu>
<menu_item_check label="Gesture..." name="Gestures"/>
<menu_item_check label="Amici" name="My Friends"/>
@@ -57,7 +58,8 @@
<menu_item_call label="Destinazioni..." name="Destinations"/>
<menu_item_check label="Mappamondo" name="World Map"/>
<menu_item_check label="Mini mappa" name="Mini-Map"/>
- <menu_item_check label="Cerca" name="Search"/>
+ <menu_item_call label="Eventi" name="Events"/>
+ <menu_item_check label="Cerca..." name="Search"/>
<menu_item_call label="Teleport a Casa" name="Teleport Home"/>
<menu_item_call label="Imposta come Casa mia" name="Set Home to Here"/>
<menu_item_call label="Istantanea" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
<menu_item_call label="Prendi copia" name="Take Copy"/>
<menu_item_call label="Salva nei contenuti oggetto" name="Save Object Back to Object Contents"/>
<menu_item_call label="Restituisci oggetto" name="Return Object back to Owner"/>
+ <menu_item_call label="Duplica" name="DuplicateObject"/>
</menu>
<menu label="Script" name="Scripts">
+ <menu_item_check label="Avvertenze/errori dello script..." name="Script debug"/>
<menu_item_call label="Ricompila script (Mono)" name="Mono"/>
<menu_item_call label="Ricompila gli script (LSL)" name="LSL"/>
<menu_item_call label="Reimposta script" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index 76579ccc13..a7c7b9d66f 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -144,8 +144,7 @@ L&apos;inizializzazione con il Marketplace non ha avuto successo a causa di un e
<notification name="MerchantTransactionFailed">
La transazione in Marketplace non 癡 riuscita a causa dell&apos;errore seguente:
- Motivo: &apos;[ERROR_REASON]&apos;
- [ERROR_DESCRIPTION]
+ [ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -760,6 +759,9 @@ Accertati che nessuno sia bloccato e che li possiedi tutti.
<notification name="CannotLinkPermanent">
Gli oggetti non possono essere collegati attraverso i confini.
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ Gli oggetti non possono essere collegati attraverso i confini.
+ </notification>
<notification name="CannotLinkDifferentOwners">
Impossibile unire perche non tutti gli oggetti hanno lo stesso proprietario.
@@ -1785,11 +1787,10 @@ Vuoi cancellare quell&apos;elemento?
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="DoNotDisturbModeSet">
- Non disturbare 癡 attivo. Non riceverai la notifica delle comunicazioni in arrivo.
+ La funzione Non disturbare 癡 attiva. Non riceverai nessuna comunicazione.
-- Gli altri residenti riceveranno la tua risposta Non disturbare (impostata in Preferenze &gt; Generali).
-- Le offerte di teleport verranno rifiutate.
-- Le chiamate voce verranno rifiutate.
+- Gli altri residenti riceveranno la risposta che hai impostato per la funzione &quot;Non disturbare&quot; in Preferenze &gt; Generali.
+- Le chiamate vocali verranno rifiutate.
<usetemplate ignoretext="Io cambio il mio stato alla modalit Non disturbare." name="okignore" yestext="OK"/>
</notification>
<notification name="JoinedTooManyGroupsMember">
@@ -2559,9 +2560,6 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
<notification name="Cancelled">
Annullato
</notification>
- <notification name="CancelledSit">
- Seduta annullata
- </notification>
<notification name="CancelledAttach">
Attaccamento annullato
</notification>
@@ -3886,32 +3884,27 @@ Riprova tra un minuto.
<notification name="AvatarEjectFailed">
L&apos;espulsione non ha avuto successo perch矇 non hai l&apos;autorizzazione dell&apos;amministratore del lotto.
</notification>
- <notification name="CantMoveObjectParcelFull">
- Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perch矇 il lotto 癡 pieno.
+ <notification name="CMOParcelFull">
+ Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perch矇 il lotto 癡 pieno.
</notification>
- <notification name="CantMoveObjectParcelPerms">
- Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perch矇 i tuoi oggetti non sono ammessi su questo lotto.
+ <notification name="CMOParcelPerms">
+ Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perch矇 i tuoi oggetti non sono permessi in questo lotto.
</notification>
- <notification name="CantMoveObjectParcelResources">
- Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perch矇 non ci sono risorse sufficienti per l&apos;oggetto su questo lotto.
+ <notification name="CMOParcelResources">
+ Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perch矇 non esistono risorse sufficienti per questo oggetto nel lotto.
</notification>
<notification name="NoParcelPermsNoObject">
Copia non riuscita perch矇 non hai accesso a quel lotto.
</notification>
- <notification name="CantMoveObjectRegionVersion">
- Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perch矇 nell&apos;altra regione 癡 in esecuzione una versione precedente che non consente la ricezione di questo oggetto attraverso i confini tra regioni.
+ <notification name="CMORegionVersion">
+ Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perch矇 l&apos;altra regione esegue una versione pi羅 vecchia, che non supporta il ricevimento di questo oggetto mediante attraversamento di regioni.
</notification>
- <notification name="CantMoveObjectNavMesh">
- Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perch矇 non puoi modificare il navmesh attraverso il confine tra regioni.
+ <notification name="CMONavMesh">
+ Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perch矇 non puoi modificare il navmesh attraverso i confini delle regioni.
</notification>
- <notification name="CantMoveObjectWTF">
- Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] per un motivo sconosciuto. ([FAILURE_TYPE])
+ <notification name="CMOWTF">
+ Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] a causa di un motivo sconosciuto.
+ ([F])
</notification>
<notification name="NoPermModifyObject">
Non hai l&apos;autorizzazione necessaria per modificare questa immagine
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..af6ae5bd45 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="Seleziona un residente o un oggetto da bloccare"/>
<button name="unblock_btn" tool_tip="Rimuovi un residente o un oggetto dalla lista bloccati"/>
</panel>
+ <text name="block_limit">
+ [COUNT] voci nella lista dei bloccati, ma il limite 癡 [LIMIT].
+ </text>
<block_list name="blocked" tool_tip="Lista degli attuali residenti bloccati"/>
</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 e989fb2081..f6700b6150 100644
--- a/indra/newview/skins/default/xui/it/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/it/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Usa &quot;&quot; per tag con pi羅 di una parola
<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="Condividi" name="post_photo_btn"/>
<button label="Annulla" name="cancel_photo_btn"/>
</panel>
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..de3deaafa2 100644
--- a/indra/newview/skins/default/xui/it/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/it/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
<text_editor name="message" value="messaggio"/>
</panel>
<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
index 4fa1835b0e..f3ca9fafb3 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
<text name="BetterText">
Migliore
</text>
+ <check_box initial_value="true" label="Shader atmosfera..." name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Modello illuminazione avanzato" name="UseLightShaders"/>
<slider label="Massima conplessit dell&apos;avatar:" name="IndirectMaxComplexity" tool_tip="Definisce il punto in cui un avatar dall&apos;aspetto complesso viene visualizzato come JellyDoll"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="Shader atmosfera..." name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="Modello illuminazione avanzato" name="UseLightShaders"/>
+ <check_box initial_value="true" label="Esegui sempre il rendering degli amici" name="AlwaysRenderFriends"/>
+ <button label="Eccezioni..." name="RenderExceptionsButton"/>
<button label="Salva impostazioni come valori predefiniti..." name="PrefSaveButton"/>
<button label="Carica valore predefinito..." name="PrefLoadButton"/>
min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/it/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..5083ceb552
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Caricamenti" name="uploads">
+ <text name="title">
+ Cartelle correnti di destinazione dei caricamenti
+ </text>
+ <text name="title_models">
+ Immagini
+ </text>
+ <text name="title_sounds">
+ Suoni
+ </text>
+ <text name="title_animation">
+ Animazioni
+ </text>
+ <text name="upload_help">
+ Per cambiare una cartella di destinazione, fai clic col pulsante destro del mouse sulla cartella desiderata nell&apos;inventario e sceglila
+ &quot;Usa come impostazione predefinita per&quot;
+ </text>
+</panel>
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 ba56499987..50fb3d39fa 100644
--- a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<button label="Salva sul disco" name="save_to_computer_btn"/>
<button label="Salva nell&apos;inventario (L$[AMOUNT])" name="save_to_inventory_btn"/>
- <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="Condividi sul feed del profilo" name="save_to_profile_btn"/>
+ <button label="Condividi su Facebook" name="send_to_facebook_btn"/>
+ <button label="Condividi su Twitter" name="send_to_twitter_btn"/>
+ <button label="Condividi 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/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 8246f91d17..e7dbc7d817 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -1482,7 +1482,8 @@ Prova ad accedere nuovamente tra un minuto.
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].
+ Errore nell&apos;apertura degli annunci di Marketplace.
+Se continui a ricevere questo messaggio, contatta l&apos;assistenza Second Life su http://support.secondlife.com.
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
La cartella degli annunci di Marketplace 癡 vuota.
@@ -4362,6 +4363,12 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
<string name="conference-title-incoming">
Chiamata in conferenza con [AGENT_NAME]
</string>
+ <string name="inventory_item_offered-im">
+ Offerto oggetto di inventario &quot;[ITEM_NAME]&quot;
+ </string>
+ <string name="inventory_folder_offered-im">
+ Offerta cartella di inventario &quot;[ITEM_NAME]&quot;
+ </string>
<string name="flickr_post_success">
Hai pubblicato su Flickr.
</string>
@@ -4444,7 +4451,10 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
Posizione di base impostata.
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
[NAME] ti ha inviato un pagamento di L$[AMOUNT] [REASON].
@@ -4815,8 +4825,8 @@ Segnala abuso
<string name="server_is_down">
Nonostante i nostri tentativi, si 癡 verificato un errore imprevisto.
- Consulta la pagina status.secondlifegrid.net per determinare se si sia verificato un problema noto con il servizio.
- Se il problema continua, ti consigliamo di controllare le tue impostazioni di rete e della firewall.
+Consulta la pagina http://status.secondlifegrid.net per determinare se il problema del servizio 癡 gi stato riscontrato.
+ Se il problema continua, ti consigliamo di controllare le tue impostazioni di rete e del firewall.
</string>
<string name="dateTimeWeekdaysNames">
luned穫:marted穫:mercoled穫:gioved穫:venerd穫:sabato:domenica
@@ -5276,6 +5286,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
<string name="Command_Gestures_Label">
Gesture
</string>
+ <string name="Command_Grid_Status_Label">
+ Stato della griglia
+ </string>
<string name="Command_HowTo_Label">
Istruzioni
</string>
@@ -5369,6 +5382,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
<string name="Command_Gestures_Tooltip">
Gesti per il tuo avatar
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ Mostra stato griglia corrente
+ </string>
<string name="Command_HowTo_Tooltip">
Come eseguire le attivit pi羅 comuni
</string>
@@ -5591,6 +5607,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
<string name="loading_chat_logs">
Caricamento in corso...
</string>
+ <string name="na">
+ n/d
+ </string>
<string name="preset_combo_label">
-Lista vuota-
</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index 8614335690..3fbad3e7a7 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -450,7 +450,7 @@
<spinner label="U胯颯寞嚗" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="撣詻怨迂" name="AllowedText">
- 蝡乓閮勗胯雿鈭 ([COUNT])
+ 閮勗胯雿鈭 ([COUNT]憭 [MAX])
</text>
<name_list name="AccessList" tool_tip="(閮[LISTED] 鈭箝憭 [MAX] 鈭綽"/>
<button label="餈賢" name="add_allowed"/>
@@ -458,7 +458,7 @@
</panel>
<panel name="Banned_layout_panel">
<text label="蝳甇" name="BanCheck">
- 蝡乓蝳甇U雿鈭 ([COUNT])
+ 蝡亦甇U雿鈭 ([COUNT]憭 [MAX])
</text>
<name_list name="BannedList" tool_tip="(閮 [LISTED] 鈭箝憭 [MAX] 鈭綽"/>
<button label="餈賢" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..c0a644e3ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="U踴潦格餉身摰">
+ <string name="av_never_render" value="雿輻具芥"/>
+ <string name="av_always_render" value="撣詻思蝙具"/>
+ <filter_editor label="鈭箝怒踴" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="豢鈭箝怠紋U胯瑯扼:"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="" name="name"/>
+ <name_list.columns label="餉身摰" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_flickr.xml b/indra/newview/skins/default/xui/ja/floater_flickr.xml
index e406d17d37..77df22c9a0 100644
--- a/indra/newview/skins/default/xui/ja/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/ja/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="FLICKR 怒U准潦">
+<floater name="floater_flickr" title="FLICKR 批望">
<panel name="background">
<tab_container name="tabs">
<panel label="" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml
index d48a8241ec..fa337defe7 100644
--- a/indra/newview/skins/default/xui/ja/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="押扎瑯" name="im"/>
<panel label="颯U" name="input"/>
<panel label="閰喟敦" name="advanced1"/>
+ <panel label="U准潦" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_tos.xml b/indra/newview/skins/default/xui/ja/floater_tos.xml
index dc7165b1ed..5e9a0a5ddd 100644
--- a/indra/newview/skins/default/xui/ja/floater_tos.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tos.xml
@@ -13,6 +13,6 @@
甈∼桀拍刻蝝具押扎瑯潦芥瑯潦隤准踴 [SECOND_LIFE] 詻柴准啜扎喋蝬怒胯閬蝝怠敹閬整
</text>
<text name="external_tos_required">
- 雿蝬怒胯my.secondlife.com 怎宏艾准啜扎喋拍刻蝝輯姥敹閬整具整
+ 雿蝬怒https://my.secondlife.com 怎宏拍刻蝝怠敹閬整
</text>
</floater>
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 23357ebbc2..24cb642323 100644
--- a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="箝潦扎" name="Zoom In"/>
<menu_item_call label="舀" name="Pay..."/>
<menu_item_call label="芥詻扼胯柴准潦" name="Object Inspect"/>
- <menu_item_check label="撣貉”蝷" name="RenderNormally"/>
- <menu_item_check label="銵函內芥" name="DoNotRender"/>
- <menu_item_check label="摰刻”蝷" name="AlwaysRenderFully"/>
+ <context_menu label="U踴潦" name="Render Avatar">
+ <menu_item_check label="押怒" name="RenderNormally"/>
+ <menu_item_check label="撣詻思蝙具" name="AlwaysRenderFully"/>
+ <menu_item_check label="雿輻具芥" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="潦胯急准" name="Mute Particle"/>
</context_menu>
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 1902c9b359..44a71f1f37 100644
--- a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="喋 XML" name="Dump XML"/>
<menu_item_call label="箝潦扎" name="Zoom In"/>
<menu_item_call label="舀" name="Pay..."/>
- <menu_item_check label="撣貉”蝷" name="RenderNormally"/>
- <menu_item_check label="銵函內芥" name="DoNotRender"/>
- <menu_item_check label="摰刻”蝷" name="AlwaysRenderFully"/>
+ <context_menu label="U踴潦" name="Render Avatar">
+ <menu_item_check label="押怒" name="RenderNormally"/>
+ <menu_item_check label="撣詻思蝙具" name="AlwaysRenderFully"/>
+ <menu_item_check label="雿輻具芥" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="潦胯急准" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..59c80bdb0e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="押怒" name="default"/>
+ <menu_item_check label="撣詻急" name="always_render"/>
+ <menu_item_check label="颯芥" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..e4f78cad31
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="撣詻思鈭箝颯..." name="add_avatar_always_render"/>
+ <menu_item_call label="雿鈭箝颯芥..." name="add_avatar_never_render"/>
+</toggleable_menu>
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..3eacfb3507 100644
--- a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_gesture_gear">
- <menu_item_call label="瘞怠乓株蕭餃" name="activate"/>
+ <menu_item_call label="豢詻扼嫘潦柴U胯潦格" name="activate"/>
<menu_item_call label="喋" name="copy_gesture"/>
<menu_item_call label="鞎潦隞" name="paste"/>
<menu_item_call label="UUID 喋" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml
index 9a68ed8a6b..d53f9657b0 100644
--- a/indra/newview/skins/default/xui/ja/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="啜擃" name="New Hair"/>
<menu_item_call label="啜" name="New Eyes"/>
</menu>
+ <menu label="甈∼柴押怒具虫蝙" name="upload_def">
+ <menu_item_call label="餃柴U准潦" name="Image uploads"/>
+ <menu_item_call label="萸艾喋柴U准潦" name="Sound uploads"/>
+ <menu_item_call label="U∼潦瑯扼喋柴U准潦" name="Animation uploads"/>
+ <menu_item_call label="U怒柴U准潦" name="Model uploads"/>
+ </menu>
<menu label="蝔桅憭" name="Change Type">
<menu_item_call label="押怒" name="Default"/>
<menu_item_call label="鋡" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="其葉柴U艾乓踴" name="Replace Outfit"/>
<menu_item_call label="其葉柴U艾怨蕭" name="Add To Outfit"/>
<menu_item_call label="其葉柴U艾扎" name="Remove From Outfit"/>
+ <menu_item_call label="U艾柴芥嫘胯芥潦怒喋" name="Copy outfit list to clipboard"/>
<menu_item_call label="芥芥詻怒U" name="Find Original"/>
<menu_item_call label="U扎文" name="Purge Item"/>
<menu_item_call label="U扎敺拙" name="Restore Item"/>
@@ -72,7 +79,6 @@
<menu_item_call label="喋" name="Copy"/>
<menu_item_call label="鞎潦隞" name="Paste"/>
<menu_item_call label="芥喋胯鞎潦隞" name="Paste As Link"/>
- <menu_item_call label="" name="Remove Link"/>
<menu_item_call label="" name="Delete"/>
<menu_item_call label="瑯嫘押怒扎" name="Delete System Folder"/>
<menu_item_call label="喋喋∼研喋嫘憪" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
<menu_item_call label="蝺券" name="Wearable Edit"/>
<menu_item_call label="餈賢" name="Wearable Add"/>
<menu_item_call label="憭" name="Take Off"/>
- <menu_item_call label="潦喋柴U艾胯嫘怒喋" name="Merchant Copy"/>
<menu_item_call label="潦晞研扎嫘柴芥嫘怒喋" name="Marketplace Copy"/>
<menu_item_call label="潦晞研扎嫘柴芥嫘怎宏" name="Marketplace Move"/>
<menu_item_call label="嚗嚗芥瑯扼喋芥嚗嚗" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index 71f36b17be..1f31971078 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="" name="File">
<menu_item_call label="啣閮剖..." name="Preferences..."/>
+ <menu_item_check label="啜芥怒潦銵函內" name="Show Grid Picker"/>
<menu_item_call label="[APP_NAME] 蝯鈭" name="Quit"/>
</menu>
<menu label="怒" name="Help">
@@ -33,7 +34,6 @@
<menu_item_check label="具押" name="Error"/>
<menu_item_check label="芥" name="None"/>
</menu>
- <menu_item_check label="啜芥怒潦銵函內" name="Show Grid Picker"/>
<menu_item_call label="乓喋喋賬潦怒銵函內" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
index b5c9d11e02..fcc67f8d89 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="准航圾" name="unblock"/>
+ <menu_item_check label="扎嫘准" name="BlockVoice"/>
+ <menu_item_check label="摮准" name="MuteText"/>
+ <menu_item_check label="芥詻扼胯柴萸艾喋准" name="BlockObjectSounds"/>
<menu_item_call label="准潦..." name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index e0834eb12d..a8be8e7616 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -44,6 +44,7 @@
<menu_item_check label="扎嫘U潦喋啜芥" name="NoVoiceMorphing"/>
<menu_item_check label="研乓..." name="Preview"/>
<menu_item_call label="喋颲潦..." name="Subscribe"/>
+ <menu_item_call label="研U隡∠孵..." name="PremiumPerk"/>
</menu>
<menu_item_check label="詻扼嫘..." name="Gestures"/>
<menu_item_check label="研喋" name="My Friends"/>
@@ -57,7 +58,8 @@
<menu_item_call label="銵..." name="Destinations"/>
<menu_item_check label="銝啣" name="World Map"/>
<menu_item_check label="" name="Mini-Map"/>
- <menu_item_check label="璊蝝" name="Search"/>
+ <menu_item_call label="扎喋" name="Events"/>
+ <menu_item_check label="璊蝝..." name="Search"/>
<menu_item_call label="潦怒研潦" name="Teleport Home"/>
<menu_item_call label="曉典啜潦怨身摰" name="Set Home to Here"/>
<menu_item_call label="嫘瑯扼" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
<menu_item_call label="喋潦" name="Take Copy"/>
<menu_item_call label="芥詻扼胯桐葉頨怒思摮" name="Save Object Back to Object Contents"/>
<menu_item_call label="芥詻扼胯餈氬" name="Return Object back to Owner"/>
+ <menu_item_call label="銴鋆" name="DuplicateObject"/>
</menu>
<menu label="嫘胯芥" name="Scripts">
+ <menu_item_check label="嫘胯芥株郎/具押..." name="Script debug"/>
<menu_item_call label="嫘胯芥柴芥喋喋扎恬Mono嚗" name="Mono"/>
<menu_item_call label="嫘胯芥柴芥喋喋扎恬LSL嚗" name="LSL"/>
<menu_item_call label="嫘胯芥柴芥颯" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index 51ffd5fda0..a5eed34d30 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -143,8 +143,7 @@
<notification name="MerchantTransactionFailed">
潦晞研扎嫘怒撘甈∼柴具押潦怒憭望整:
-梧&apos;[ERROR_REASON]&apos;
-[ERROR_DESCRIPTION]
+[ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -781,6 +780,9 @@ L$ 銝頞喋艾柴扼柴啜怒潦怠具扼
<notification name="CannotLinkPermanent">
啣嚗芥潦詻扼喉桀頞艾芥詻扼胯芥喋胯扼整
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ 啣嚗芥潦詻扼喉桀頞艾芥詻扼胯芥喋胯扼整
+ </notification>
<notification name="CannotLinkDifferentOwners">
啜芥芥詻扼胯芥喋胯扼整
@@ -1815,11 +1817,10 @@ http://secondlife.com/download 啜潦詻扼喋艾喋准潦
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="DoNotDisturbModeSet">
- 乓芥芥喋怒芥整靽⊿靽∼胯芥怒舫乓整
+ 靽⊥艾芥喋怒芥艾整靽∼靽∼乓整
-- 隞桐瘞胯乓芥桀蝑嚗閮剖&gt;銝研扯身摰嚗具怒芥整
-- 研潦柴芥∼潦胯嫘血艾具芥整
-- 扎嫘喋潦怒舀艾整
+- 隞桐鈭箝胯靽⊥艾敹蝑整 (啣閮剖 &gt; 銝研扯身摰)
+- 喳ㄟ閰晞舀艾整
<usetemplate ignoretext=" 准啜扎喟嗆乓芥U潦怠氬整" name="okignore" yestext="OK"/>
</notification>
<notification name="JoinedTooManyGroupsMember">
@@ -2597,9 +2598,6 @@ Web 潦詻怒芥喋胯具隞鈭箝桀湔怎陛怒U胯颯
<notification name="Cancelled">
瘨整
</notification>
- <notification name="CancelledSit">
- 摨扼柴整
- </notification>
<notification name="CancelledAttach">
瘛颱瘨整
</notification>
@@ -3922,27 +3920,26 @@ M 准潦潦血氬整
<notification name="AvatarEjectFailed">
桀箇颯桃恣璅拚芥餈賣整扼整扼
</notification>
- <notification name="CantMoveObjectParcelFull">
- 箇颯整艾芥詻扼胯 &apos;[OBJECT_NAME]&apos; 芥潦詻扼 [REGION_NAME] [OBJ_POSITION] 怎宏扼整
+ <notification name="CMOParcelFull">
+ 箇颯晞芥柴扼芥詻扼胯 &apos;[O]&apos; 啣嚗芥潦詻扼喉 [R] [P] 怎宏扼整
</notification>
- <notification name="CantMoveObjectParcelPerms">
- 芥詻扼胯 &apos;[OBJECT_NAME]&apos; 胯桀箇颯扯迂胯艾芥芥潦詻扼 [REGION_NAME] [OBJ_POSITION] 怎宏扼整
+ <notification name="CMOParcelPerms">
+ 雿輻具柴芥詻扼胯胯桀箇颯找蝙具閮勗胯艾芥芥詻扼胯 &apos;[O]&apos; 啣嚗芥潦詻扼喉 [R] [P] 怎宏扼整
</notification>
- <notification name="CantMoveObjectParcelResources">
- 桀箇颯扼柴芥詻扼胯柴芥賬潦嫘銝頞喋艾芥詻扼胯 &apos;[OBJECT_NAME]&apos; 芥潦詻扼 [REGION_NAME] [OBJ_POSITION] 怎宏扼整
+ <notification name="CMOParcelResources">
+ 桀箇颯怒柴芥詻扼胯柴芥賬潦嫘銝頞喋艾芥詻扼胯 &apos;[O]&apos; 啣嚗芥潦詻扼喉 [R] [P] 怎宏扼整
</notification>
<notification name="NoParcelPermsNoObject">
桀箇颯詻柴U胯颯寞貝芥喋潦憭望整
</notification>
- <notification name="CantMoveObjectRegionVersion">
- 芥詻扼胯 &apos;[OBJECT_NAME]&apos; 芥潦詻扼 [REGION_NAME] [OBJ_POSITION] 怎宏具胯扼整隞柴芥潦詻扼喋扼胯芥潦詻扼喋桀整柴芥詻扼胯靽∼具扼芥扎潦詻扼喋摰銵艾扼
+ <notification name="CMORegionVersion">
+ 隞桀啣嚗芥潦詻扼喉扼柴芥詻扼胯桀啣嚗芥潦詻扼喉整怠紋敹艾芥扼潦詻扼喋摰銵艾芥詻扼胯 &apos;[O]&apos; 啣嚗芥潦詻扼喉 [R] [P] 怎宏扼整
</notification>
- <notification name="CantMoveObjectNavMesh">
- 芥潦詻扼喳整∼瑯乓憭氬扼芥芥詻扼胯 &apos;[OBJECT_NAME]&apos; 芥潦詻扼 [REGION_NAME] [OBJ_POSITION] 怎宏扼整
+ <notification name="CMONavMesh">
+ 芥潦詻扼喋桀怒艾∼瑯乓憭氬扼芥芥詻扼胯 &apos;[O]&apos; 啣嚗芥潦詻扼喉 [R] [P] 怎宏扼整
</notification>
- <notification name="CantMoveObjectWTF">
- 銝芰晞怒芥詻扼胯 &apos;[OBJECT_NAME]&apos; 芥潦詻扼 [REGION_NAME] [OBJ_POSITION] 怎宏扼整
-([FAILURE_TYPE])
+ <notification name="CMOWTF">
+ 銝芰晞怒芥詻扼胯 &apos;[O]&apos; 啣嚗芥潦詻扼喉 [R] [P] 怎宏扼整 ([F])
</notification>
<notification name="NoPermModifyObject">
柴芥詻扼胯憭氬璅拚整
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..2fb3206c7d 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="准胯雿鈭箝颯芥詻扼胯豢"/>
<button name="unblock_btn" tool_tip="准胯芥嫘雿鈭箝颯芥詻扼胯"/>
</panel>
+ <text name="block_limit">
+ [COUNT] 隞嗚柴具喋芥潦准 芥嫘怒園 [LIMIT] 扼
+ </text>
<block_list name="blocked" tool_tip="曉具准胯艾雿鈭箔閬"/>
</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 16d873a8b1..6a484b8e59 100644
--- a/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml
@@ -30,6 +30,6 @@
<combo_box.item label="Flickr 研潦喋啣箏Moderate" name="ModerateRating"/>
<combo_box.item label="Flickr 研潦喋啣箏Restricted" name="RestrictedRating"/>
</combo_box>
- <button label="U准潦" name="post_photo_btn"/>
+ <button label="望" name="post_photo_btn"/>
<button label="瘨" name="cancel_photo_btn"/>
</panel>
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..5a8ff858df 100644
--- a/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
<text_editor name="message" value="∼颯潦"/>
</panel>
<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
index 61d914135d..fc966dc08a 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
<text name="BetterText">
</text>
+ <check_box initial_value="true" label="典 (憭扳) 瑯扼潦" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="擃摨艾芥押扎喋啜U" name="UseLightShaders"/>
<slider label="U踴潦格憭扯摨:" name="IndirectMaxComplexity" tool_tip="押桃嫘扯閬怨芥U踴潦 JellyDoll 具行嗅鴃整"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="典 (憭扳) 瑯扼潦" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="擃摨艾芥押扎喋啜U" name="UseLightShaders"/>
+ <check_box initial_value="true" label="撣詻怠鈭箝" name="AlwaysRenderFriends"/>
+ <button label="靘憭..." name="RenderExceptionsButton"/>
<button label="閮剖芥颯具虫摮..." name="PrefSaveButton"/>
<button label="芥颯准潦..." name="PrefLoadButton"/>
min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/ja/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..b8524aa60f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_uploads.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="U准潦" name="uploads">
+ <text name="title">
+ U准潦具格啜桀押怒
+ </text>
+ <text name="title_models">
+ 餃
+ </text>
+ <text name="title_sounds">
+ 萸艾喋
+ </text>
+ <text name="title_animation">
+ U∼潦瑯扼
+ </text>
+ <text name="upload_help">
+ 摰押怒憭氬怒胯∠押扼柴押怒喋胯芥胯艾&quot;押怒具虫蝙&quot; 豢整
+ </text>
+</panel>
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 492115bec0..ebaab7c122 100644
--- a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<button label="嫘胯思摮" name="save_to_computer_btn"/>
<button label="∠押思摮嚗L$[Amount]嚗" name="save_to_inventory_btn"/>
- <button label="准潦怒怒U准潦" name="save_to_profile_btn"/>
- <button label="Facebook 怒U准潦" name="send_to_facebook_btn"/>
- <button label="Twitter 怒U准潦" name="send_to_twitter_btn"/>
- <button label="Flickr 怒U准潦" name="send_to_flickr_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/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 586b8ab2d3..f3b3823e28 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -1491,7 +1491,7 @@ support@secondlife.com 怒
[[MARKETPLACE_CREATE_STORE_URL] 潦晞研扎 嫘兡 具押潦餈艾整
</string>
<string name="InventoryMarketplaceError">
- 格賬胯曉具潦輻格賬扼怒胯 [http://goo.gl/forms/FCQ7UXkakz Google form] 怠餈賢艾
+ 潦晞研扎嫘柴芥嫘具怒具押潦箇整撘蝬柴∼颯潦詻靽∼怒胯Second Life 柴萸潦 (http://support.secondlife.com) 怒
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
潦晞研扎嫘柴芥嫘押怒蝛箝扼
@@ -4444,7 +4444,10 @@ www.secondlife.com 啜潦詻扼喋艾喋准潦艾
[AGENT_NAME] 具喋喋∼研喋嫘
</string>
<string name="inventory_item_offered-im">
- 扎喋喋芥U扎整
+ ∠押U扎 &apos;[ITEM_NAME]&apos; 艾整
+ </string>
+ <string name="inventory_folder_offered-im">
+ ∠押押怒 &apos;[ITEM_NAME]&apos; 艾整
</string>
<string name="share_alert">
扎喋喋芥怒U扎押啜整
@@ -4531,7 +4534,10 @@ www.secondlife.com 啜潦詻扼喋艾喋准潦艾
摰嗚桅蝵柴株身摰
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
[NAME] [REASON] 柴 L$[AMOUNT] 舀整
@@ -4902,7 +4908,7 @@ www.secondlife.com 啜潦詻扼喋艾喋准潦艾
<string name="server_is_down">
憭批喋閮喋整鈭芥憿箇整
- 萸潦嫘恍UY乓桀憿怒扎艾胯status.secondlifegrid.net 閬扼
+萸潦嫘恍UY乓桀憿怒扎艾胯http://status.secondlifegrid.net 閬扼
憿撘蝬箇游胯雿踴柴胯潦胯∼扎U艾押潦怒株身摰隤踴嫘艾
</string>
<string name="dateTimeWeekdaysNames">
@@ -5363,6 +5369,9 @@ www.secondlife.com 啜潦詻扼喋艾喋准潦艾
<string name="Command_Gestures_Label">
詻扼嫘
</string>
+ <string name="Command_Grid_Status_Label">
+ 啜芥嫘潦踴
+ </string>
<string name="Command_HowTo_Label">
</string>
@@ -5456,6 +5465,9 @@ www.secondlife.com 啜潦詻扼喋艾喋准潦艾
<string name="Command_Gestures_Tooltip">
U踴潦柴詻扼嫘
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ 曉具柴啜芥嫘潦踴嫘銵函內
+ </string>
<string name="Command_HowTo_Tooltip">
銝祉踴嫘胯桀銵寞
</string>
@@ -5678,6 +5690,9 @@ www.secondlife.com 啜潦詻扼喋艾喋准潦艾
<string name="loading_chat_logs">
准潦銝...
</string>
+ <string name="na">
+ 閰脣芥
+ </string>
<string name="preset_combo_label">
-蝛箝芥嫘-
</string>
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 ca8cf83e62..861523523e 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -451,7 +451,7 @@ M穩dia:
<spinner label="Horas de acesso:" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="Always Allow" name="AllowedText">
- Residentes permitidos ([COUNT])
+ Residentes permitidos ([COUNT], m獺x: [MAX])
</text>
<name_list name="AccessList" tool_tip="(Total [LISTED], m獺x de [MAX])"/>
<button label="Adicionar" name="add_allowed"/>
@@ -459,7 +459,7 @@ M穩dia:
</panel>
<panel name="Banned_layout_panel">
<text label="Ban" name="BanCheck">
- Residentes banidos ([COUNT])
+ Residentes banidos ([COUNT], m獺x: [MAX])
</text>
<name_list name="BannedList" tool_tip="(Total [LISTED], m獺x de [MAX])"/>
<button label="Adicionar" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..b512126f98
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="CONFIGURAES DE RENDERIZAO DO AVATAR">
+ <string name="av_never_render" value="Nunca"/>
+ <string name="av_always_render" value="Sempre"/>
+ <filter_editor label="Filtrar pessoas" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="A癟繭es nas pessoas selecionadas"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="Nome" name="name"/>
+ <name_list.columns label="Configura癟瓊o de renderiza癟瓊o" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_flickr.xml b/indra/newview/skins/default/xui/pt/floater_flickr.xml
index 67d2295e41..d048dbb658 100644
--- a/indra/newview/skins/default/xui/pt/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/pt/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="CARREGAR NO FLICKR">
+<floater name="floater_flickr" title="COMPARTILHAR NO FLICKR">
<panel name="background">
<tab_container name="tabs">
<panel label="FOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_preferences.xml b/indra/newview/skins/default/xui/pt/floater_preferences.xml
index c89a61d9b1..b3cd20b0e9 100644
--- a/indra/newview/skins/default/xui/pt/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="Privacidade" name="im"/>
<panel label="Configura癟繭es" name="input"/>
<panel label="Avan癟ado" name="advanced1"/>
+ <panel label="Envios" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_tos.xml b/indra/newview/skins/default/xui/pt/floater_tos.xml
index a86e12fd59..6666f0f9ca 100644
--- a/indra/newview/skins/default/xui/pt/floater_tos.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tos.xml
@@ -13,6 +13,6 @@
Leia com aten癟瓊o os Termos do Servi癟o e a Pol穩tica de Privacidade. Para continuar a entrar no [SECOND_LIFE], 矇 preciso aceitar esses termos.
</text>
<text name="external_tos_required">
- Antes de continuar, voc礙 precisar獺 visitar my.secondlife.com e fazer login para aceitar os Termos de Servi癟o. Obrigado!
+ Antes de continuar, voc礙 precisar獺 visitar https://my.secondlife.com e fazer login para aceitar os Termos de Servi癟o. Obrigado!
</text>
</floater>
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 d991c89f61..f15bb0444e 100644
--- a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="Mais zoom" name="Zoom In"/>
<menu_item_call label="Pagar" name="Pay..."/>
<menu_item_call label="Perfil do objeto" name="Object Inspect"/>
- <menu_item_check label="Renderizar normalmente" name="RenderNormally"/>
- <menu_item_check label="N瓊o renderizar" name="DoNotRender"/>
- <menu_item_check label="Renderizar completamente" name="AlwaysRenderFully"/>
+ <context_menu label="Renderizar avatar" name="Render Avatar">
+ <menu_item_check label="Padr瓊o" name="RenderNormally"/>
+ <menu_item_check label="Sempre" name="AlwaysRenderFully"/>
+ <menu_item_check label="Nunca" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Bloquear propriet獺rio da part穩cula" name="Mute Particle"/>
</context_menu>
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 cba849cd05..d6021c09c9 100644
--- a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="Descartar XML" name="Dump XML"/>
<menu_item_call label="Mais zoom" name="Zoom In"/>
<menu_item_call label="Pagar" name="Pay..."/>
- <menu_item_check label="Renderizar normalmente" name="RenderNormally"/>
- <menu_item_check label="N瓊o renderizar" name="DoNotRender"/>
- <menu_item_check label="Renderizar completamente" name="AlwaysRenderFully"/>
+ <context_menu label="Renderizar avatar" name="Render Avatar">
+ <menu_item_check label="Padr瓊o" name="RenderNormally"/>
+ <menu_item_check label="Sempre" name="AlwaysRenderFully"/>
+ <menu_item_check label="Nunca" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Bloquear propriet獺rio da part穩cula" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..e38bfe5802
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="Padr瓊o" name="default"/>
+ <menu_item_check label="Sempre renderizar" name="always_render"/>
+ <menu_item_check label="Nunca renderizar" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..c6b405645d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="Sempre renderizar um residente..." name="add_avatar_always_render"/>
+ <menu_item_call label="Nunca renderizar um residente..." name="add_avatar_never_render"/>
+</toggleable_menu>
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..85334d0475 100644
--- a/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_gesture_gear">
- <menu_item_call label="Adicionar/remover de favoritos" name="activate"/>
+ <menu_item_call label="Ativar/desativar gesto selecionado" name="activate"/>
<menu_item_call label="Copiar" name="copy_gesture"/>
<menu_item_call label="Colar" name="paste"/>
<menu_item_call label="Copiar UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml
index 79261ceb1f..af8cfde6af 100644
--- a/indra/newview/skins/default/xui/pt/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="Novo cabelo" name="New Hair"/>
<menu_item_call label="Novos olhos" name="New Eyes"/>
</menu>
+ <menu label="Usar como padr瓊o para" name="upload_def">
+ <menu_item_call label="Envios de imagem" name="Image uploads"/>
+ <menu_item_call label="Envios de som" name="Sound uploads"/>
+ <menu_item_call label="Envios de anima癟瓊o" name="Animation uploads"/>
+ <menu_item_call label="Envios de modelos" name="Model uploads"/>
+ </menu>
<menu label="Alterar fonte" name="Change Type">
<menu_item_call label="Padr瓊o" name="Default"/>
<menu_item_call label="Luvas" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="Substituir look" name="Replace Outfit"/>
<menu_item_call label="Adicionar a look" name="Add To Outfit"/>
<menu_item_call label="Tirar do look atual" name="Remove From Outfit"/>
+ <menu_item_call label="Copiar lista de looks para a 獺rea de transfer礙ncia" name="Copy outfit list to clipboard"/>
<menu_item_call label="Encontrar original" name="Find Original"/>
<menu_item_call label="Remover item" name="Purge Item"/>
<menu_item_call label="Restaurar item" name="Restore Item"/>
@@ -72,7 +79,6 @@
<menu_item_call label="Copiar" name="Copy"/>
<menu_item_call label="Colar" name="Paste"/>
<menu_item_call label="Colar como link" name="Paste As Link"/>
- <menu_item_call label="Excluir" name="Remove Link"/>
<menu_item_call label="Apagar" name="Delete"/>
<menu_item_call label="Excluir pasta do sistema" name="Delete System Folder"/>
<menu_item_call label="Pasta conversa em confer礙ncia" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
<menu_item_call label="Editar" name="Wearable Edit"/>
<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="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--"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml
index 44cfae236b..7b45eb1ad3 100644
--- a/indra/newview/skins/default/xui/pt/menu_login.xml
+++ b/indra/newview/skins/default/xui/pt/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="Eu" name="File">
<menu_item_call label="Prefer礙ncias..." name="Preferences..."/>
+ <menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/>
<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
</menu>
<menu label="Ajuda" name="Help">
@@ -32,7 +33,6 @@
<menu_item_check label="Erro" name="Error"/>
<menu_item_check label="Nenhum" name="None"/>
</menu>
- <menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/>
<menu_item_call label="Exibir painel de notifica癟繭es" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
index 8bbde9b38c..da824589c8 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="Desbloquear" name="unblock"/>
+ <menu_item_check label="Bloquear voz" name="BlockVoice"/>
+ <menu_item_check label="Bloquear texto" name="MuteText"/>
+ <menu_item_check label="Bloquear sons de objeto" name="BlockObjectSounds"/>
<menu_item_call label="Perfil..." name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index 6964941f0a..542734eb22 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -44,6 +44,7 @@
<menu_item_check label="N瓊o distorcer voz" name="NoVoiceMorphing"/>
<menu_item_check label="Visualizar..." name="Preview"/>
<menu_item_call label="Assinar..." name="Subscribe"/>
+ <menu_item_call label="Benef穩cio Premium..." name="PremiumPerk"/>
</menu>
<menu_item_check label="Gestos..." name="Gestures"/>
<menu_item_check label="Amigos" name="My Friends"/>
@@ -57,7 +58,8 @@
<menu_item_call label="Destinos..." name="Destinations"/>
<menu_item_check label="Mapa-m繳ndi" name="World Map"/>
<menu_item_check label="Mini Mapa" name="Mini-Map"/>
- <menu_item_check label="Busca" name="Search"/>
+ <menu_item_call label="Eventos" name="Events"/>
+ <menu_item_check label="Buscar..." name="Search"/>
<menu_item_call label="Teletransportar para in穩cio" name="Teleport Home"/>
<menu_item_call label="Definir como casa" name="Set Home to Here"/>
<menu_item_call label="Foto" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
<menu_item_call label="Pegar uma c籀pia" name="Take Copy"/>
<menu_item_call label="Salvar objeto de volta aos conte繳dos do objeto" name="Save Object Back to Object Contents"/>
<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
+ <menu_item_call label="Duplicar" name="DuplicateObject"/>
</menu>
<menu label="Scripts" name="Scripts">
+ <menu_item_check label="Avisos/erros de script..." name="Script debug"/>
<menu_item_call label="Recompilar scripts (Mono)" name="Mono"/>
<menu_item_call label="Recompilar scripts (LSL)" name="LSL"/>
<menu_item_call label="Resetar scripts" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 0eacff11a7..c731f09cba 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -141,10 +141,9 @@ Ocorreu uma falha na inicializa癟瓊o do Marketplace devido a um erro do sistema
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantTransactionFailed">
- Ocorreu uma falha na transa癟瓊o com o Marketplace com o seguinte erro:
+ Falha na transa癟瓊o com o Marketplace com o seguinte erro:
- Motivo: &apos;[ERROR_REASON]&apos;
- [ERROR_DESCRIPTION]
+ [ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -756,6 +755,9 @@ Por favor, certifique-se de que nenhum deles est獺 travado e que voc礙 矇 dono d
<notification name="CannotLinkPermanent">
Os objetos n瓊o podem ser vinculados atrav矇s de demarca癟繭es de regi瓊o.
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ Os objetos n瓊o podem ser vinculados atrav矇s de demarca癟繭es de regi瓊o.
+ </notification>
<notification name="CannotLinkDifferentOwners">
Impossibilitado de unir porque nem todos os objetos s瓊o do mesmo dono.
@@ -1774,10 +1776,9 @@ Se voc礙 estiver muito ansioso para experimentar os novos recursos e corre癟繭es
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="DoNotDisturbModeSet">
- N瓊o perturbe est獺 ativado. Voc礙 n瓊o ser獺 notificado de comunica癟繭es recebidas.
+ N瓊o perturbe est獺 ativado. Voc礙 n瓊o ser獺 notificado de comunica癟繭es recebidas.
- Outros residentes receber瓊o a sua resposta de N瓊o perturbe (definida em Prefer礙ncias &gt; Geral).
-- As ofertas de teletransporte ser瓊o recusadas.
- Chamadas de voz ser瓊o recusadas.
<usetemplate ignoretext="Altero meu status para o modo N瓊o perturbe" name="okignore" yestext="OK"/>
</notification>
@@ -2547,9 +2548,6 @@ Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de
<notification name="Cancelled">
Cancelado
</notification>
- <notification name="CancelledSit">
- Cancelada a a癟瓊o de sentar
- </notification>
<notification name="CancelledAttach">
Cancelado Anexar
</notification>
@@ -3869,32 +3867,32 @@ Tente novamente em instantes.
<notification name="AvatarEjectFailed">
A expuls瓊o falhou porque voc礙 n瓊o tem permiss瓊o de administrador para esse lote.
</notification>
- <notification name="CantMoveObjectParcelFull">
- N瓊o 矇 poss穩vel mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na regi瓊o [REGION_NAME] porque o lote est獺 cheio.
+ <notification name="CMOParcelFull">
+ N瓊o foi poss穩vel mover o objeto &apos;[O]&apos; para
+[P] na regi瓊o [R] porque o lote est獺 cheio.
</notification>
- <notification name="CantMoveObjectParcelPerms">
- N瓊o 矇 poss穩vel mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na regi瓊o [REGION_NAME] porque seus objetos n瓊o s瓊o permitidos neste lote.
+ <notification name="CMOParcelPerms">
+ N瓊o foi poss穩vel mover o objeto &apos;[O]&apos; para
+[P] na regi瓊o [R] porque seus objetos n瓊o s瓊o permitidos neste lote.
</notification>
- <notification name="CantMoveObjectParcelResources">
- N瓊o 矇 poss穩vel mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na regi瓊o [REGION_NAME] porque n瓊o h獺 recursos suficientes para este objeto neste lote.
+ <notification name="CMOParcelResources">
+ N瓊o foi poss穩vel mover o objeto &apos;[O]&apos; para
+[P] na regi瓊o [R] porque n瓊o h獺 recursos suficientes para este objeto neste lote.
</notification>
<notification name="NoParcelPermsNoObject">
A c籀pia falhou porque voc礙 n瓊o tem acesso a esse lote.
</notification>
- <notification name="CantMoveObjectRegionVersion">
- N瓊o 矇 poss穩vel mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na regi瓊o [REGION_NAME] porque outra regi瓊o est獺 executando uma vers瓊o mais antiga, que n瓊o d獺 suporte o recebimento deste objeto por meio de passagem de regi繭es.
+ <notification name="CMORegionVersion">
+ N瓊o foi poss穩vel mover o objeto &apos;[O]&apos; para
+[P] na regi瓊o [R] porque outra regi瓊o est獺 executando uma vers瓊o mais antiga, que n瓊o d獺 suporte ao recebimento deste objeto por meio de passagem de regi繭es.
</notification>
- <notification name="CantMoveObjectNavMesh">
- N瓊o 矇 poss穩vel mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na regi瓊o [REGION_NAME] porque voc礙 n瓊o est獺 autorizado a modificar o navmesh al矇m dos limites da regi瓊o.
+ <notification name="CMONavMesh">
+ N瓊o foi poss穩vel mover o objeto &apos;[O]&apos; para
+[P] na regi瓊o [R] porque voc礙 n瓊o pode modificar o navmesh pelas demarca癟繭es da regi瓊o.
</notification>
- <notification name="CantMoveObjectWTF">
- N瓊o 矇 poss穩vel mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na regi瓊o [REGION_NAME] por uma raz瓊o desconhecida. ([FAILURE_TYPE])
+ <notification name="CMOWTF">
+ N瓊o foi poss穩vel mover o objeto &apos;[O]&apos; para
+[P] na regi瓊o [R] por motivos desconhecido. ([F])
</notification>
<notification name="NoPermModifyObject">
Voc礙 n瓊o est獺 autorizado a modificar este objeto
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..3404f032ce 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="Escolher um residente ou um objeto a ser bloqueado"/>
<button name="unblock_btn" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
</panel>
+ <text name="block_limit">
+ [COUNT] registros na sua lista de bloqueados. O limite 矇 [LIMIT].
+ </text>
<block_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
</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 cbb3e362fe..66a4f3ee3e 100644
--- a/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Use &quot;&quot; para tags com v獺rias palavras
<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="Compartilhar" name="post_photo_btn"/>
<button label="Cancelar" name="cancel_photo_btn"/>
</panel>
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..a111188b9e 100644
--- a/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
<text_editor name="message" value="mensagem"/>
</panel>
<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
index fa17a4ff11..a0f4ea4ed5 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
@@ -25,12 +25,14 @@ r獺pido
<text name="BetterText">
Melhor
</text>
+ <check_box initial_value="true" label="Tonalidades atmosf矇ricas" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Modelo avan癟ado de luzes" name="UseLightShaders"/>
<slider label="Complexidade m獺xima do avatar:" name="IndirectMaxComplexity" tool_tip="Controla o ponto no qual um avatar visualmente complexo 矇 desenhado como uma JellyDoll"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="Tonalidades atmosf矇ricas" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="Modelo avan癟ado de luzes" name="UseLightShaders"/>
+ <check_box initial_value="true" label="Sempre renderizar amigos" name="AlwaysRenderFriends"/>
+ <button label="Exce癟繭es..." name="RenderExceptionsButton"/>
<button label="Salvar configura癟繭es como predefini癟瓊o..." name="PrefSaveButton"/>
<button label="Carregar predefini癟瓊o..." name="PrefLoadButton"/>
min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/pt/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..8050b56f0a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Envios" name="uploads">
+ <text name="title">
+ Pastas de destino atuais para envios
+ </text>
+ <text name="title_models">
+ Imagens
+ </text>
+ <text name="title_sounds">
+ Sons
+ </text>
+ <text name="title_animation">
+ Anima癟繭es
+ </text>
+ <text name="upload_help">
+ Para alterar a pasta de destino, clique com o bot瓊o direito nela no invent獺rio e selecione
+&quot;Usar como padr瓊o para&quot;
+ </text>
+</panel>
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 d588e59f6d..067e5dbd76 100644
--- a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<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="Compartilhar no feed do perfil" name="save_to_profile_btn"/>
+ <button label="Compartilhar no Facebook" name="send_to_facebook_btn"/>
+ <button label="Compartilhar no Twitter" name="send_to_twitter_btn"/>
+ <button label="Compartilhar 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/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index 207b4e7097..0d50722cc5 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -1437,7 +1437,8 @@ Pessoas com contas gratuitas n瓊o poder瓊o acessar o Second Life no momento para
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.
+ Erro ao abrir as listagens do Marketplace.
+Se voc礙 continuar a receber essa mensagem, entre em contato com o suporte do Second Life para obter ajuda em http://support.secondlife.com
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
Sua pasta Listagens do Marketplace est獺 vazia.
@@ -4317,7 +4318,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
Conversa com [AGENT_NAME]
</string>
<string name="inventory_item_offered-im">
- Oferta de item de invent獺rio
+ Item do invent獺rio &apos;[ITEM_NAME]&apos; oferecido
+ </string>
+ <string name="inventory_folder_offered-im">
+ Pasta do invent獺rio &apos;[ITEM_NAME]&apos; oferecida
</string>
<string name="flickr_post_success">
Voc礙 publicou no Flickr.
@@ -4401,7 +4405,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
Posi癟瓊o inicial definida.
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
[NAME] lhe pagou L$ [AMOUNT] [REASON].
@@ -4772,7 +4779,7 @@ Denunciar abuso
<string name="server_is_down">
Aconteceu algo inesperado, apesar de termos tentado impedir isso.
- Cheque secondlifegrid.net para saber se foi detectado um problema com o servi癟o.
+Visite http://status.secondlifegrid.net para saber se foi detectado um problema com o servi癟o.
Se o problema persistir, cheque a configura癟瓊o da sua rede e firewall.
</string>
<string name="dateTimeWeekdaysNames">
@@ -5233,6 +5240,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Gestures_Label">
Gestos
</string>
+ <string name="Command_Grid_Status_Label">
+ Status da grade
+ </string>
<string name="Command_HowTo_Label">
Como
</string>
@@ -5326,6 +5336,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="Command_Gestures_Tooltip">
Gestos para seu avatar
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ Mostrar status da grade atual
+ </string>
<string name="Command_HowTo_Tooltip">
Como executar tarefas comuns
</string>
@@ -5548,6 +5561,9 @@ Tente colocar o caminho do editor entre aspas.
<string name="loading_chat_logs">
Carregando...
</string>
+ <string name="na">
+ n/d
+ </string>
<string name="preset_combo_label">
-Lista vazia-
</string>
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 28d5ff6ab9..7c8faa8ede 100644
--- a/indra/newview/skins/default/xui/ru/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ru/floater_about_land.xml
@@ -446,7 +446,7 @@
<spinner label="虴訄 迡郋郈訄:" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="迮迣迡訄 訄郱迮迮郇郋" name="AllowedText">
- 郋郈迮郇郇迮 迠邽迮郅邽 ([COUNT])
+ 郋郈迮郇郇迮 迠邽迮郅邽 ([COUNT], 邾訄郕. [MAX])
</text>
<name_list name="AccessList" tool_tip="([LISTED] 赲 郈邽郕迮, [MAX] 邾訄郕邽邾邾)"/>
<button label="郋訇訄赲邽" name="add_allowed"/>
@@ -454,7 +454,7 @@
</panel>
<panel name="Banned_layout_panel">
<text label="訄郇" name="BanCheck">
- 訄訇訄郇迮郇郇迮 迠邽迮郅邽 ([COUNT])
+ 訄訇訄郇迮郇郇迮 迠邽迮郅邽 ([COUNT], 邾訄郕. [MAX])
</text>
<name_list name="BannedList" tool_tip="([LISTED] 赲 郈邽郕迮, [MAX] 邾訄郕邽邾邾)"/>
<button label="郋訇訄赲邽" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..9c0c3196aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="苤苠 苠苤 苠">
+ <string name="av_never_render" value="邽郕郋迣迡訄"/>
+ <string name="av_always_render" value="迮迣迡訄"/>
+ <filter_editor label="苳邽郅 迡郅 郅迡迮邿" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="迮邿赲邽 赲訇訄郇郇邾 迠邽迮郅迮邾"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="邾" name="name"/>
+ <name_list.columns label="訄郋邿郕訄 郋邽郋赲郕邽" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_flickr.xml b/indra/newview/skins/default/xui/ru/floater_flickr.xml
index 4f020399fb..67a3bedc6b 100644
--- a/indra/newview/skins/default/xui/ru/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/ru/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="苺苠衧 FLICKR">
+<floater name="floater_flickr" title="苠衧苤觓 FLICKR">
<panel name="background">
<tab_container name="tabs">
<panel label="苳苠" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences.xml b/indra/newview/skins/default/xui/ru/floater_preferences.xml
index fc244b9d8b..fa78eedd3a 100644
--- a/indra/newview/skins/default/xui/ru/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/ru/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="邽赲訄郇郋" name="im"/>
<panel label="郋郇邽迣訄邽" name="input"/>
<panel label="郋郈郋郅郇邽迮郅郇郋" name="advanced1"/>
+ <panel label="迮迮迡訄郇郇郋迮" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_tos.xml b/indra/newview/skins/default/xui/ru/floater_tos.xml
index adadcc88f3..690affb491 100644
--- a/indra/newview/skins/default/xui/ru/floater_tos.xml
+++ b/indra/newview/skins/default/xui/ru/floater_tos.xml
@@ -13,6 +13,6 @@
郇邽邾訄迮郅郇郋 郈郋邽訄邿迮 郋郅郱郋赲訄迮郅郕郋迮 郋迣郅訄迮郇邽迮 邽 郋郅邽邽郕 郕郋郇邽迡迮郇邽訄郅郇郋邽. 郅 赲郋迡訄 赲 [SECOND_LIFE] 赲 迡郋郅迠郇 郋迣郅訄邽 郅郋赲邽邾邽 郋迣郅訄迮郇邽.
</text>
<text name="external_tos_required">
- 郅 郈郋迡郋郅迠迮郇邽 郈迮迮邿迡邽迮 郇訄 訄邿 my.secondlife.com, 赲郋邿迡邽迮 邽 郈邽邾邽迮 苺郅郋赲邽 郋訇郅迠邽赲訄郇邽. 苤郈訄邽訇郋!
+ 郅 郈郋迡郋郅迠迮郇邽 郈迮迮邿迡邽迮 郇訄 訄邿 https://my.secondlife.com, 赲郋邿迡邽迮 邽 郈邽邾邽迮 苺郅郋赲邽 郋訇郅迠邽赲訄郇邽. 苤郈訄邽訇郋!
</text>
</floater>
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 63b0698c6b..2d62e38da2 100644
--- a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="邽訇郅邽郱邽" name="Zoom In"/>
<menu_item_call label="訄郈郅訄邽" name="Pay..."/>
<menu_item_call label="郋邽郅 郋訇迮郕訄" name="Object Inspect"/>
- <menu_item_check label="訇郇訄 郈郋邽郋赲郕訄" name="RenderNormally"/>
- <menu_item_check label="迮 邽郋赲訄" name="DoNotRender"/>
- <menu_item_check label="郋郅郇訄 郈郋邽郋赲郕訄" name="AlwaysRenderFully"/>
+ <context_menu label="邽郋赲訄 訄赲訄訄" name="Render Avatar">
+ <menu_item_check label="郋 邾郋郅訄郇邽" name="RenderNormally"/>
+ <menu_item_check label="迮迣迡訄" name="AlwaysRenderFully"/>
+ <menu_item_check label="邽郕郋迣迡訄" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="郅郋郕邽郋赲訄 赲郅訄迡迮郅訄 訄郕訄" name="Mute Particle"/>
</context_menu>
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 de35264055..af59b2742c 100644
--- a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="赲郋迡 XML" name="Dump XML"/>
<menu_item_call label="邽訇郅邽郱邽" name="Zoom In"/>
<menu_item_call label="訄郈郅訄邽" name="Pay..."/>
- <menu_item_check label="訇郇訄 郈郋邽郋赲郕訄" name="RenderNormally"/>
- <menu_item_check label="迮 邽郋赲訄" name="DoNotRender"/>
- <menu_item_check label="郋郅郇訄 郈郋邽郋赲郕訄" name="AlwaysRenderFully"/>
+ <context_menu label="郋邽郋赲訄 訄赲訄訄" name="Render Avatar">
+ <menu_item_check label="郋 邾郋郅訄郇邽" name="RenderNormally"/>
+ <menu_item_check label="迮迣迡訄" name="AlwaysRenderFully"/>
+ <menu_item_check label="邽郕郋迣迡訄" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="郅郋郕邽郋赲訄 赲郅訄迡迮郅訄 訄郕訄" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..c1ec8d67b1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="郋 邾郋郅訄郇邽" name="default"/>
+ <menu_item_check label="迮迣迡訄 邽郋赲訄" name="always_render"/>
+ <menu_item_check label="邽郕郋迣迡訄 郇迮 邽郋赲訄" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..3807458cd3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="迮迣迡訄 邽郋赲訄 迠邽迮郅..." name="add_avatar_always_render"/>
+ <menu_item_call label="邽郕郋迣迡訄 郇迮 邽郋赲訄 迠邽迮郅..." name="add_avatar_never_render"/>
+</toggleable_menu>
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..74ec79a9dc 100644
--- a/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_gesture_gear">
- <menu_item_call label="郋訇訄赲邽 赲 邽郱訇訄郇郇郋迮/迡訄郅邽" name="activate"/>
+ <menu_item_call label="郕邽赲邽郋赲訄/迡迮訄郕邽赲邽郋赲訄 赲訇訄郇郇邿 迠迮" name="activate"/>
<menu_item_call label="郋郈邽郋赲訄" name="copy_gesture"/>
<menu_item_call label="訄赲邽" name="paste"/>
<menu_item_call label="郋郈邽郋赲訄 UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml
index b8cbef8246..0097d7e301 100644
--- a/indra/newview/skins/default/xui/ru/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="郋赲迮 赲郋郅郋" name="New Hair"/>
<menu_item_call label="郋赲迮 迣郅訄郱訄" name="New Eyes"/>
</menu>
+ <menu label="郈郋郅郱郋赲訄 郈郋 邾郋郅訄郇邽 迡郅" name="upload_def">
+ <menu_item_call label="迮迮迡訄郇郇迮 邽郱郋訇訄迠迮郇邽" name="Image uploads"/>
+ <menu_item_call label="迮迮迡訄郇郇迮 郱赲郕邽" name="Sound uploads"/>
+ <menu_item_call label="迮迮迡訄郇郇迮 訄郇邽邾訄邽邽" name="Animation uploads"/>
+ <menu_item_call label="迮迮迡訄郇郇迮 邾郋迡迮郅邽" name="Model uploads"/>
+ </menu>
<menu label="苤邾迮郇邽 邽郈" name="Change Type">
<menu_item_call label="郋 邾郋郅訄郇邽" name="Default"/>
<menu_item_call label="迮訄郕邽" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="苤邾迮郇邽 迮郕邽邿 郕郋邾" name="Replace Outfit"/>
<menu_item_call label="郋訇訄赲邽 郕 迮郕迮邾 郕郋邾" name="Add To Outfit"/>
<menu_item_call label="苺訇訄 邽郱 迮郕迮迣郋 郕郋邾訄" name="Remove From Outfit"/>
+ <menu_item_call label="郋郈邽郋赲訄 郈邽郋郕 郕郋邾郋赲 赲 訇迮 郋訇邾迮郇訄" name="Copy outfit list to clipboard"/>
<menu_item_call label="訄邿邽 郋邽迣邽郇訄郅" name="Find Original"/>
<menu_item_call label="苺迡訄郅邽 郇訄赲迮迣迡訄" name="Purge Item"/>
<menu_item_call label="郋訄郇郋赲邽 赲迮" name="Restore Item"/>
@@ -72,7 +79,6 @@
<menu_item_call label="郋郈邽郋赲訄" name="Copy"/>
<menu_item_call label="訄赲邽" name="Paste"/>
<menu_item_call label="訄赲邽 郕訄郕 郅郕" name="Paste As Link"/>
- <menu_item_call label="苺迡訄郅邽" name="Remove Link"/>
<menu_item_call label="苺迡訄郅邽" name="Delete"/>
<menu_item_call label="苺迡訄郅邽 邽迮邾郇 郈訄郈郕" name="Delete System Folder"/>
<menu_item_call label="訄訄 郕郋郇迮迮郇邽" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
<menu_item_call label="郱邾迮郇邽" name="Wearable Edit"/>
<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 Copy"/>
<menu_item_call label="迮迮邾迮邽 赲 郈邽郕邽 郋赲訄郋赲 郋迣郋赲郋迣郋 迮郇訄" name="Marketplace Move"/>
<menu_item_call label="- 郇迮 迡迮邿赲邽邿 -" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml
index 2d1fe28242..754803904a 100644
--- a/indra/newview/skins/default/xui/ru/menu_login.xml
+++ b/indra/newview/skins/default/xui/ru/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="觓" name="File">
<menu_item_call label="訄郋邿郕邽..." name="Preferences..."/>
+ <menu_item_check label="訇郋 迮郕邽" name="Show Grid Picker"/>
<menu_item_call label="郋迡 邽郱 [APP_NAME]" name="Quit"/>
</menu>
<menu label="苤郈訄赲郕訄" name="Help">
@@ -33,7 +34,6 @@
<menu_item_check label="邽訇郕訄" name="Error"/>
<menu_item_check label="迮" name="None"/>
</menu>
- <menu_item_check label="訇郋 迮郕邽" name="Show Grid Picker"/>
<menu_item_call label="郋郇郋郅 赲迮迡郋邾郅迮郇邽邿" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
index 157f2ad5e2..c06776d5f9 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="訄郱訇郅郋郕邽郋赲訄" name="unblock"/>
+ <menu_item_check label="郅郋郕邽郋赲訄 迣郋郅郋" name="BlockVoice"/>
+ <menu_item_check label="郅郋郕邽郋赲訄 迮郕" name="MuteText"/>
+ <menu_item_check label="郅郋郕邽郋赲訄 郱赲郕邽 郋訇迮郕訄" name="BlockObjectSounds"/>
<menu_item_call label="郋邽郅" name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
index e5e484173d..e0d8861225 100644
--- a/indra/newview/skins/default/xui/ru/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -42,6 +42,7 @@
<menu_item_check label="迮郱 邽郱邾迮郇迮郇邽 迣郋郅郋訄" name="NoVoiceMorphing"/>
<menu_item_check label="郋邾郋..." name="Preview"/>
<menu_item_call label="郋迡郈邽訄..." name="Subscribe"/>
+ <menu_item_call label="迮邾邽邾-訇郋郇..." name="PremiumPerk"/>
</menu>
<menu_item_check label="迮..." name="Gestures"/>
<menu_item_check label="郱" name="My Friends"/>
@@ -55,7 +56,8 @@
<menu_item_call label="郇郕..." name="Destinations"/>
<menu_item_check label="訄訄 邾邽訄" name="World Map"/>
<menu_item_check label="邽郇邽郕訄訄" name="Mini-Map"/>
- <menu_item_check label="郋邽郕" name="Search"/>
+ <menu_item_call label="苤郋訇邽" name="Events"/>
+ <menu_item_check label="郋邽郕..." name="Search"/>
<menu_item_call label="苠迮郅迮郈郋訄邽 迡郋邾郋邿" name="Teleport Home"/>
<menu_item_call label="苺訄郇郋赲邽 迡郋邾 郱迡迮" name="Set Home to Here"/>
<menu_item_call label="苤郇邽邾郋郕" name="Take Snapshot"/>
@@ -126,8 +128,10 @@
<menu_item_call label="郱 郕郋郈邽" name="Take Copy"/>
<menu_item_call label="苤郋訄郇邽 赲 郕郋郇迮郇迮 郋訇迮郕郋赲" name="Save Object Back to Object Contents"/>
<menu_item_call label="迮郇 郋訇迮郕" name="Return Object back to Owner"/>
+ <menu_item_call label="訇郅邽郋赲訄" name="DuplicateObject"/>
</menu>
<menu label="苤郕邽郈" name="Scripts">
+ <menu_item_check label="迮迡郈迮迠迡迮郇邽/郋邽訇郕邽 郕邽郈郋赲..." name="Script debug"/>
<menu_item_call label="迮迮郕郋邾郈邽郅邽郋赲訄 郕邽郈 (Mono)" name="Mono"/>
<menu_item_call label="迮迮郕郋邾郈邽郅邽郋赲訄 郕邽郈 (LSL)" name="LSL"/>
<menu_item_call label="苤訇郋 郕邽郈郋赲" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
index 5f3a8571e8..6e649bca6f 100644
--- a/indra/newview/skins/default/xui/ru/notifications.xml
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -144,8 +144,7 @@
<notification name="MerchantTransactionFailed">
迮 迡訄郅郋 赲郈郋郅郇邽 訄郇郱訄郕邽 郋迣郋赲邾 迮郇郋邾, 郋邽訇郕訄:
- 邽邽郇訄: &apos;[ERROR_REASON]&apos;
- [ERROR_DESCRIPTION]
+ [ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -762,6 +761,9 @@
<notification name="CannotLinkPermanent">
訇迮郕 郇迮郅郱 赲郱赲訄 迮迮郱 迣訄郇邽 迮迣邽郋郇訄.
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ 訇迮郕 郇迮郅郱 赲郱赲訄 迮迮郱 迣訄郇邽 迮迣邽郋郇訄.
+ </notification>
<notification name="CannotLinkDifferentOwners">
迮赲郋郱邾郋迠郇郋 郋訇迮迡邽郇邽 郋訇迮郕: 郇迮 赲迮 郋訇迮郕郋赲 郋迡邽郇 赲郅訄迡迮郅迮.
@@ -1786,7 +1788,6 @@ http://secondlife.com/download.
迮迠邽邾 竄迮 訇迮郈郋郕郋邽罈 赲郕郅迮郇. 郇迮 訇迡迮迮 郈郋郅訄 赲迮迡郋邾郅迮郇邽邿 郋 赲郋迡邽 赲郱郋赲訄.
- 迣邽迮 迠邽迮郅邽 訇迡 郈郋郅訄 赲訄 郋赲迮, 訄郇郋赲郅迮郇郇邿 迡郅 迮迠邽邾訄 竄迮 訇迮郈郋郕郋邽罈 (訄郋邿郕邽 &gt; 訇邽迮).
-- 迮迡郅郋迠迮郇邽 迮郅迮郈郋訄邽邽 訇迡 郋郕郅郋郇.
- 郋郅郋郋赲迮 赲郱郋赲 訇迡 郋郕郅郋郇.
<usetemplate ignoretext="苤邾迮郇訄 邾郋迮迣郋 訄訄 郇訄 迮迠邽邾 竄迮 訇迮郈郋郕郋邽罈" name="okignore" yestext="OK"/>
</notification>
@@ -2554,9 +2555,6 @@ http://secondlife.com/download.
<notification name="Cancelled">
邾迮郇迮郇郋
</notification>
- <notification name="CancelledSit">
- 邾迮郇迮郇郇訄 郈郋訄迡郕訄
- </notification>
<notification name="CancelledAttach">
邾迮郇迮郇郇郋迮 郈邽郋迮迡邽郇迮郇邽迮
</notification>
@@ -3882,31 +3880,32 @@ http://secondlife.com/download.
<notification name="AvatarEjectFailed">
迮 迡訄郅郋 赲訇郋邽: 赲訄 郇迮 郈訄赲 訄迡邾邽郇邽訄郋訄 郇訄 郋邾 訄郕迮.
</notification>
- <notification name="CantMoveObjectParcelFull">
- 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[OBJECT_NAME]罈 赲 郈郋郱邽邽 竄[OBJ_POSITION]罈 迮迣邽郋郇訄 [REGION_NAME]: 訄郋郕 迠迮 郱訄郈郋郅郇迮郇.
+ <notification name="CMOParcelFull">
+ 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[O]罈 赲 郈郋郱邽邽
+竄[P]罈 迮迣邽郋郇訄 [R]: 訄郋郕 迠迮 郱訄郈郋郅郇迮郇.
</notification>
- <notification name="CantMoveObjectParcelPerms">
- 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[OBJECT_NAME]罈 赲 郈郋郱邽邽
-竄[OBJ_POSITION]罈 迮迣邽郋郇訄 [REGION_NAME]: 赲訄邽邾 郋訇迮郕訄邾 郇迮 訄郱迮迮郇郋 郈邽赲郋赲訄 郇訄 郋邾 訄郕迮.
+ <notification name="CMOParcelPerms">
+ 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[O]罈 赲 郈郋郱邽邽
+竄[P]罈 迮迣邽郋郇訄 [R]: 赲訄邽邾 郋訇迮郕訄邾 郇迮 訄郱迮迮郇郋 郈邽赲郋赲訄 郇訄 郋邾 訄郕迮.
</notification>
- <notification name="CantMoveObjectParcelResources">
- 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[OBJECT_NAME]罈 赲 郈郋郱邽邽
-竄[OBJ_POSITION]罈 迮迣邽郋郇訄 [REGION_NAME]: 郇訄 郋邾 訄郕迮 郇迮迡郋訄郋郇郋 迮郋赲 迡郅 迡訄郇郇郋迣郋 郋訇迮郕訄.
+ <notification name="CMOParcelResources">
+ 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[O]罈 赲 郈郋郱邽邽
+竄[P]罈 迮迣邽郋郇訄 [R]: 郇訄 郋邾 訄郕迮 郇迮迡郋訄郋郇郋 迮郋赲 迡郅 迡訄郇郇郋迣郋 郋訇迮郕訄.
</notification>
<notification name="NoParcelPermsNoObject">
迮 迡訄郅郋 郕郋郈邽郋赲訄: 赲訄 郇迮 迡郋郈訄 郕 郋邾 訄郕.
</notification>
- <notification name="CantMoveObjectRegionVersion">
- 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[OBJECT_NAME]罈 赲 郈郋郱邽邽
-[OBJ_POSITION] 迮迣邽郋郇訄 [REGION_NAME]: 赲 迡迣郋邾 迮迣邽郋郇迮 訄訇郋訄迮 訄訄 赲迮邽 邽邾郅郋訄, 郕郋郋訄 郇迮 郈郋迡迡迮迠邽赲訄迮 郈邽迮邾 郋迣郋 郋訇迮郕訄 迮迮郱 迣訄郇邽 迮迣邽郋郇郋赲.
+ <notification name="CMORegionVersion">
+ 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[O]罈 赲 郈郋郱邽邽
+ [P] 迮迣邽郋郇訄 [R]: 赲 迡迣郋邾 迮迣邽郋郇迮 訄訇郋訄迮 訄訄 赲迮邽 邽邾郅郋訄, 郕郋郋訄 郇迮 郈郋迡迡迮迠邽赲訄迮 郈邽迮邾 郋迣郋 郋訇迮郕訄 迮迮郱 迣訄郇邽 迮迣邽郋郇郋赲.
</notification>
- <notification name="CantMoveObjectNavMesh">
- 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[OBJECT_NAME]罈 赲 郈郋郱邽邽
-竄[OBJ_POSITION]罈 迮迣邽郋郇訄 [REGION_NAME]: 赲訄邾 郇迮 訄郱迮迮郇郋 邽郱邾迮郇 郇訄赲邽迣訄邽郋郇郇 迮郕 郱訄 郈迮迡迮郅訄邾邽 迮迣邽郋郇訄.
+ <notification name="CMONavMesh">
+ 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[O]罈 赲 郈郋郱邽邽
+竄[P]罈 迮迣邽郋郇訄 [R]: 赲訄邾 郇迮 訄郱迮迮郇郋 邽郱邾迮郇 郇訄赲邽迣訄邽郋郇郇 迮郕 郱訄 郈迮迡迮郅訄邾邽 迮迣邽郋郇訄.
</notification>
- <notification name="CantMoveObjectWTF">
- 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[OBJECT_NAME]罈 赲 郈郋郱邽邽
-[OBJ_POSITION] 迮迣邽郋郇訄 [REGION_NAME] 郈郋 郇迮邽郱赲迮郇郋邿 郈邽邽郇迮. ([FAILURE_TYPE])
+ <notification name="CMOWTF">
+ 迮郅郱 郈迮迮邾迮邽 郋訇迮郕 竄[O]罈 赲 郈郋郱邽邽
+[P] 迮迣邽郋郇訄 [R] 郈郋 郇迮邽郱赲迮郇郋邿 郈邽邽郇迮. ([F])
</notification>
<notification name="NoPermModifyObject">
苺 赲訄 郇迮 郈訄赲 郇訄 邽郱邾迮郇迮郇邽迮 郋迣郋 郋訇迮郕訄
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..13a02fac2f 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="訇迮邽迮 迠邽迮郅 邽郅邽 郋訇迮郕 迡郅 訇郅郋郕邽郋赲郕邽"/>
<button name="unblock_btn" tool_tip="苺迡訄郅邽 郋訇迮郕 邽郅邽 迠邽迮郅 邽郱 郈邽郕訄 郱訄訇郅郋郕邽郋赲訄郇郇"/>
</panel>
+ <text name="block_limit">
+ [COUNT] 郈郇郕郋赲 赲 赲訄迮邾 迮郇郋邾 郈邽郕迮, 訄郱迮迮郇郋 郇迮 訇郋郅迮 [LIMIT].
+ </text>
<block_list name="blocked" tool_tip="苤郈邽郋郕 郱訄訇郅郋郕邽郋赲訄郇郇 迠邽迮郅迮邿"/>
</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 9dd68699ca..f4cff55db2 100644
--- a/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml
@@ -29,6 +29,6 @@
<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="post_photo_btn"/>
<button label="邾迮郇訄" name="cancel_photo_btn"/>
</panel>
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..eb8296904d 100644
--- a/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
<text_editor name="message" value="郋郋訇迮郇邽迮"/>
</panel>
<panel label="control_panel" name="control_panel">
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 200241bd4d..4524fb4d43 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
<text name="BetterText">
訄迮赲迮郇郇迮邿
</text>
+ <check_box initial_value="true" label="邾郋迮郇迮 迮邿迡迮" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="訄邽迮郇郇訄 邾郋迡迮郅 郋赲迮迮郇邽" name="UseLightShaders"/>
<slider label="訄郕邽邾訄郅郇訄 郅郋迠郇郋 訄赲訄訄訄:" name="IndirectMaxComplexity" tool_tip="苺郕訄郱赲訄迮 訄郋郇邽迮, 郇訄邽郇訄 郕郋郋郋迣郋 赲邽郱訄郅郇郋 郅郋迠郇邿 訄赲訄訄 邽迮 郕訄郕 邾訄邾迮郅訄迡郇邿 邾邽郕訄"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="邾郋迮郇迮 迮邿迡迮" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="訄邽迮郇郇訄 邾郋迡迮郅 郋赲迮迮郇邽" name="UseLightShaders"/>
+ <check_box initial_value="true" label="迮迣迡訄 邽郋赲訄 迡郱迮邿" name="AlwaysRenderFriends"/>
+ <button label="郕郅迮郇邽..." name="RenderExceptionsButton"/>
<button label="苤郋訄郇邽 郇訄郋邿郕邽 郕訄郕 郈迮迮..." name="PrefSaveButton"/>
<button label="訄迣郱邽 郈迮迮..." name="PrefLoadButton"/>
min_val=&quot;0,125&quot;
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/ru/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..487c92bd2a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="訄迣郱郕邽" name="uploads">
+ <text name="title">
+ 苠迮郕邽迮 郈訄郈郕邽 郇訄郱郇訄迮郇邽 迡郅 郈迮迮迡訄邽
+ </text>
+ <text name="title_models">
+ 郱郋訇訄迠迮郇邽
+ </text>
+ <text name="title_sounds">
+ 赲郕邽
+ </text>
+ <text name="title_animation">
+ 郇邽邾訄邽
+ </text>
+ <text name="upload_help">
+ 虴郋訇 邾迮郇邽 郈訄郈郕 郇訄郱郇訄迮郇邽, 迮郅郕郇邽迮 迮迮 赲 邽郇赲迮郇訄迮 郈訄赲郋邿 郕郇郋郈郕郋邿 邾邽 邽 赲訇迮邽迮
+ &quot;郈郋郅郱郋赲訄 郈郋 邾郋郅訄郇邽 迡郅&quot;
+ </text>
+</panel>
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 9a5bbf3bac..7ba03ee0c9 100644
--- a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<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_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/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index e44d63b3b9..86ef6298ac 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -1488,7 +1488,8 @@ support@secondlife.com.
[[MARKETPLACE_CREATE_STORE_URL] 訄迣訄郱邽郇] 赲郋郱赲訄訄迮 郋邽訇郕邽.
</string>
<string name="InventoryMarketplaceError">
- 衪郋 訇迮訄-赲迮邽 郇郕邽邽. 郅邽 赲 郋邽迮 訄赲郋赲訄 赲 迮迮 迮邽郋赲訄郇邽邽, 郱訄郈郋郅郇邽迮 [http://goo.gl/forms/FCQ7UXkakz 郋邾 Google].
+ 邽訇郕訄 郈邽 郋郕邽邽 郈邽郕郋赲 郋赲訄郋赲 郋迣郋赲郋迣郋 迮郇訄.
+郅邽 迡訄郇郇郋迮 郋郋訇迮郇邽迮 郈郋赲郋邽, 郋訇訄邽迮 郱訄 郈郋邾郋 赲 郅迠訇 郈郋迡迡迮迠郕邽 Second Life 郇訄 訄郇邽迮 http://support.secondlife.com
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
訄郈郕訄 郈邽郕郋赲 郋赲訄郋赲 郋迣郋赲郋迣郋 迮郇訄 郈訄.
@@ -4438,7 +4439,10 @@ support@secondlife.com.
郋郇迮迮郇邽 迠邽迮郅迮邾 [AGENT_NAME]
</string>
<string name="inventory_item_offered-im">
- 迮迡郅郋迠迮郇郋 郈郋郈郋郅郇邽 邽郇赲迮郇訄
+ 迮迡郅郋迠迮郇 郈迮迡邾迮 邽郇赲迮郇訄 竄[ITEM_NAME]罈
+ </string>
+ <string name="inventory_folder_offered-im">
+ 迮迡郅郋迠迮郇訄 郈訄郈郕訄 邽郇赲迮郇訄 竄[ITEM_NAME]罈
</string>
<string name="share_alert">
迮迮訄郕邽赲訄邿迮 赲迮邽 邽郱 邽郇赲迮郇訄 迡訄
@@ -4525,7 +4529,10 @@ support@secondlife.com.
訄迡訄郇郋 郈郋郅郋迠迮郇邽迮 迡郋邾訄.
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
邽迮郅 [NAME] 郱訄郈郅訄邽郅 赲訄邾 L$[AMOUNT] 郱訄 [REASON].
@@ -4896,7 +4903,7 @@ support@secondlife.com.
<string name="server_is_down">
迮邾郋 郇訄 郇訄邽 邽郅邽, 郋-郋 郇迮郋迠邽迡訄郇郇郋 郈郋郅郋 郇迮 訄郕.
- 郱郇訄郕郋邾迮 郋郈邽訄郇邽迮邾 邽郱赲迮郇 郈郋訇郅迮邾 赲 訄訇郋迮 郋邿 郅迠訇 郇訄 訄邿迮 status.secondlifegrid.net.
+郱郇訄郕郋邾迮 郋郈邽訄郇邽迮邾 邽郱赲迮郇 郈郋訇郅迮邾 赲 訄訇郋迮 郋邿 郅迠訇 郇訄 訄邿迮 http://status.secondlifegrid.net.
郅邽 郈郋訇郅迮邾 郈郋迡郋郅迠訄, 郋 郈郋赲迮迮 郈郋迡郕郅迮郇邽迮 郕 迮邽 邽 郇訄郋邿郕邽 訇訄郇迡邾訄訄.
</string>
<string name="dateTimeWeekdaysNames">
@@ -5369,6 +5376,9 @@ support@secondlife.com.
<string name="Command_Gestures_Label">
</string>
+ <string name="Command_Grid_Status_Label">
+ 苤郋郋郇邽迮 迮郕邽
+ </string>
<string name="Command_HowTo_Label">
郇郕邽邽
</string>
@@ -5462,6 +5472,9 @@ support@secondlife.com.
<string name="Command_Gestures_Tooltip">
迮 迡郅 訄赲訄訄訄
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ 郋郕訄郱訄 迮郕迮迮 郋郋郇邽迮 迮郕邽
+ </string>
<string name="Command_HowTo_Tooltip">
郈郋郅郇迮郇邽迮 邽郈邽郇 郱訄迡訄
</string>
@@ -5684,6 +5697,9 @@ support@secondlife.com.
<string name="loading_chat_logs">
訄迣郱郕訄...
</string>
+ <string name="na">
+ 郇/迡
+ </string>
<string name="preset_combo_label">
-郋邿 郈邽郋郕-
</string>
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 e4d38361ca..842fc3a6d8 100644
--- a/indra/newview/skins/default/xui/tr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/tr/floater_about_land.xml
@@ -446,7 +446,7 @@ Sadece b羹y羹k parseller aramada g繹r羹n羹r.
<spinner label="Eriim saatleri:" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="Her Zaman 襤zin Ver" name="AllowedText">
- 襤zin Verilen Sakinler ([COUNT])
+ 襤zin Verilen Sakinler ([COUNT], maks. [MAX])
</text>
<name_list name="AccessList" tool_tip="([LISTED] listeli, [MAX] maksimum)"/>
<button label="Ekle" name="add_allowed"/>
@@ -454,7 +454,7 @@ Sadece b羹y羹k parseller aramada g繹r羹n羹r.
</panel>
<panel name="Banned_layout_panel">
<text label="Yasakla" name="BanCheck">
- Yasakl覺 Sakinler ([COUNT])
+ Engellenmi Sakinler ([COUNT], maks. [MAX])
</text>
<name_list name="BannedList" tool_tip="([LISTED] listeli, [MAX] maksimum)"/>
<button label="Ekle" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..3f16d73c23
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="AVATAR 襤LEME AYARLARI">
+ <string name="av_never_render" value="Asla"/>
+ <string name="av_always_render" value="Her Zaman"/>
+ <filter_editor label="Kiileri Filtrele" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="Se癟ilen kii 羹zerinde eylemler"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="Ad" name="name"/>
+ <name_list.columns label="襤leme ayar覺" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_flickr.xml b/indra/newview/skins/default/xui/tr/floater_flickr.xml
index 4fa6770673..f559808f44 100644
--- a/indra/newview/skins/default/xui/tr/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/tr/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="FLICKR&apos;A YKLE">
+<floater name="floater_flickr" title="FLICKR&apos;DA PAYLA">
<panel name="background">
<tab_container name="tabs">
<panel label="FOTORAF" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences.xml b/indra/newview/skins/default/xui/tr/floater_preferences.xml
index edb3c19b81..679b018247 100644
--- a/indra/newview/skins/default/xui/tr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/tr/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="Gizlilik" name="im"/>
<panel label="Ayarlar" name="input"/>
<panel label="Gelimi" name="advanced1"/>
+ <panel label="Kar覺ya Y羹klemeler" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_tos.xml b/indra/newview/skins/default/xui/tr/floater_tos.xml
index 87beb5476f..04096ba35f 100644
--- a/indra/newview/skins/default/xui/tr/floater_tos.xml
+++ b/indra/newview/skins/default/xui/tr/floater_tos.xml
@@ -13,6 +13,6 @@
Aa覺daki Hizmet Koullar覺n覺 ve Gizlilik Politikas覺n覺 dikkatle okuyun. [SECOND_LIFE]&apos;ta oturum a癟maya devam etmek i癟in anlamay覺 kabul etmelisiniz.
</text>
<text name="external_tos_required">
- Devam etmeden 繹nce my.secondlife.com adresine gitmeniz ve oturum a癟arak Hizmet artlar覺n覺 kabul etmeniz gerekiyor. Teekk羹rler!
+ Devam edebilmeniz i癟in https://my.secondlife.com adresine gidip oturum a癟arak Hizmet S繹zlemesi&apos;ni kabul etmeniz gerekir. Teekk羹rler!
</text>
</floater>
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 cef661dbf4..a68abf53c8 100644
--- a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="Yak覺nlat覺r" name="Zoom In"/>
<menu_item_call label="de" name="Pay..."/>
<menu_item_call label="Nesne Profili" name="Object Inspect"/>
- <menu_item_check label="Normal Olarak 襤le" name="RenderNormally"/>
- <menu_item_check label="襤leme" name="DoNotRender"/>
- <menu_item_check label="Tam Olarak 襤le" name="AlwaysRenderFully"/>
+ <context_menu label="Avatar覺 襤le" name="Render Avatar">
+ <menu_item_check label="Varsay覺lan" name="RenderNormally"/>
+ <menu_item_check label="Her Zaman" name="AlwaysRenderFully"/>
+ <menu_item_check label="Asla" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Par癟ac覺k Sahibini Engelle" name="Mute Particle"/>
</context_menu>
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 87b0d3b7eb..a616dc1dea 100644
--- a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="XML D繹k羹m羹n羹 Al" name="Dump XML"/>
<menu_item_call label="Yak覺nlat覺r" name="Zoom In"/>
<menu_item_call label="de" name="Pay..."/>
- <menu_item_check label="Normal Olarak 襤le" name="RenderNormally"/>
- <menu_item_check label="襤leme" name="DoNotRender"/>
- <menu_item_check label="Tam Olarak 襤le" name="AlwaysRenderFully"/>
+ <context_menu label="Avatar覺 襤le" name="Render Avatar">
+ <menu_item_check label="Varsay覺lan" name="RenderNormally"/>
+ <menu_item_check label="Her Zaman" name="AlwaysRenderFully"/>
+ <menu_item_check label="Asla" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="Par癟ac覺k Sahibini Engelle" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..3a27fec53a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="Varsay覺lan" name="default"/>
+ <menu_item_check label="Her zaman ile" name="always_render"/>
+ <menu_item_check label="Asla ileme" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..8379f22a68
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="Her Zaman Bir Sakin Olarak 襤le..." name="add_avatar_always_render"/>
+ <menu_item_call label="Asla Bir Sakin Olarak 襤leme..." name="add_avatar_never_render"/>
+</toggleable_menu>
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..a0eab25829 100644
--- a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_gesture_gear">
- <menu_item_call label="Favorilere Ekle/覺kar" name="activate"/>
+ <menu_item_call label="Se癟ilen jesti etkinletir/devre d覺覺 b覺rak" name="activate"/>
<menu_item_call label="Kopyala" name="copy_gesture"/>
<menu_item_call label="Yap覺t覺r" name="paste"/>
<menu_item_call label="UUID&apos;yi Kopyala" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml
index 784e4d18a4..96dd4e1d1f 100644
--- a/indra/newview/skins/default/xui/tr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="Yeni Sa癟" name="New Hair"/>
<menu_item_call label="Yeni G繹zler" name="New Eyes"/>
</menu>
+ <menu label="unun i癟in varsay覺lan olarak kullan" name="upload_def">
+ <menu_item_call label="Kar覺ya y羹klenen g繹r羹nt羹ler" name="Image uploads"/>
+ <menu_item_call label="Kar覺ya y羹klenen sesler" name="Sound uploads"/>
+ <menu_item_call label="Kar覺ya y羹klenen animasyonlar" name="Animation uploads"/>
+ <menu_item_call label="Kar覺ya y羹klenen modeller" name="Model uploads"/>
+ </menu>
<menu label="T羹r羹 Deitir" name="Change Type">
<menu_item_call label="Varsay覺lan" name="Default"/>
<menu_item_call label="Eldivenler" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="Mevcut D覺 G繹r羹n羹m羹 Deitir" name="Replace Outfit"/>
<menu_item_call label="Mevcut D覺 G繹r羹n羹me Ekle" name="Add To Outfit"/>
<menu_item_call label="Mevcut D覺 G繹r羹n羹mden Kald覺r" name="Remove From Outfit"/>
+ <menu_item_call label="D覺 g繹r羹n羹m listesini panoya kopyala" name="Copy outfit list to clipboard"/>
<menu_item_call label="Orijinali Bul" name="Find Original"/>
<menu_item_call label="eyi Temizle" name="Purge Item"/>
<menu_item_call label="eyi Geri Y羹kle" name="Restore Item"/>
@@ -72,7 +79,6 @@
<menu_item_call label="Kopyala" name="Copy"/>
<menu_item_call label="Yap覺t覺r" name="Paste"/>
<menu_item_call label="Balant覺 Olarak Yap覺t覺r" name="Paste As Link"/>
- <menu_item_call label="Sil" name="Remove Link"/>
<menu_item_call label="Sil" name="Delete"/>
<menu_item_call label="Sistem Klas繹r羹n羹 Sil" name="Delete System Folder"/>
<menu_item_call label="Konferans Sohbeti Balat" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
<menu_item_call label="D羹zenle" name="Wearable Edit"/>
<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="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--"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml
index 60f81c3237..145fc74508 100644
--- a/indra/newview/skins/default/xui/tr/menu_login.xml
+++ b/indra/newview/skins/default/xui/tr/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="Ben" name="File">
<menu_item_call label="Tercihler..." name="Preferences..."/>
+ <menu_item_check label="Izgara Se癟iciyi G繹ster" name="Show Grid Picker"/>
<menu_item_call label="[APP_NAME]&apos;den 覺k" name="Quit"/>
</menu>
<menu label="Yard覺m" name="Help">
@@ -33,7 +34,6 @@
<menu_item_check label="Hata" name="Error"/>
<menu_item_check label="Hi癟biri" name="None"/>
</menu>
- <menu_item_check label="Izgara Se癟iciyi G繹ster" name="Show Grid Picker"/>
<menu_item_call label="Bildirimler Konsolunu G繹ster" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
index 2bf1101b48..e9770a72b8 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="Engellemeyi Kald覺r" name="unblock"/>
+ <menu_item_check label="Sesi Engelle" name="BlockVoice"/>
+ <menu_item_check label="Metni Engelle" name="MuteText"/>
+ <menu_item_check label="Nesne Seslerini Engelle" name="BlockObjectSounds"/>
<menu_item_call label="Profil..." name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
index f55bb3fbad..ef001a8687 100644
--- a/indra/newview/skins/default/xui/tr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -42,6 +42,7 @@
<menu_item_check label="Ses ekillendirme yok" name="NoVoiceMorphing"/>
<menu_item_check label="nizleme..." name="Preview"/>
<menu_item_call label="Abone ol..." name="Subscribe"/>
+ <menu_item_call label="zel 羹ye avantaj覺..." name="PremiumPerk"/>
</menu>
<menu_item_check label="Mimikler..." name="Gestures"/>
<menu_item_check label="Arkadalar" name="My Friends"/>
@@ -55,7 +56,8 @@
<menu_item_call label="Hedef Konumlar..." name="Destinations"/>
<menu_item_check label="D羹nya haritas覺" name="World Map"/>
<menu_item_check label="Mini-harita" name="Mini-Map"/>
- <menu_item_check label="Ara" name="Search"/>
+ <menu_item_call label="Etkinlikler" name="Events"/>
+ <menu_item_check label="Ara..." name="Search"/>
<menu_item_call label="Ana konuma 覺覺nlan" name="Teleport Home"/>
<menu_item_call label="Ana konumu buras覺 olarak se癟" name="Set Home to Here"/>
<menu_item_call label="Anl覺k G繹r羹nt羹" name="Take Snapshot"/>
@@ -126,8 +128,10 @@
<menu_item_call label="Kopya Al" name="Take Copy"/>
<menu_item_call label="Nesne 襤癟eriklerine Geri Kaydet" name="Save Object Back to Object Contents"/>
<menu_item_call label="Nesneyi 襤ade Et" name="Return Object back to Owner"/>
+ <menu_item_call label="oalt" name="DuplicateObject"/>
</menu>
<menu label="Komut Dosyalar覺" name="Scripts">
+ <menu_item_check label="Komut dosyas覺 uyar覺lar覺/hatalar覺..." name="Script debug"/>
<menu_item_call label="Komut Dosyalar覺n覺 Tekrar Derle (Mono)" name="Mono"/>
<menu_item_call label="Komut Dosyalar覺n覺 Tekrar Derle (LSL)" name="LSL"/>
<menu_item_call label="Komut Dosyalar覺n覺 S覺f覺rla" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
index 7996a189e3..43991db40c 100644
--- a/indra/newview/skins/default/xui/tr/notifications.xml
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -144,8 +144,7 @@ Bir sistem veya a hatas覺 nedeniyle Pazaryeri balat覺lamad覺. Daha sonra te
<notification name="MerchantTransactionFailed">
Pazaryerinde yap覺lan ilem baar覺s覺z oldu. Hata kodu:
- Neden: &quot;[ERROR_REASON]&quot;
- [ERROR_DESCRIPTION]
+ [ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="Tamam"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -762,6 +761,9 @@ L羹tfen hi癟birinin kilitli olmad覺覺ndan ve hepsine sahip olduunuzdan emin
<notification name="CannotLinkPermanent">
Nesneler b繹lge s覺n覺rlar覺 羹zerinden balant覺land覺r覺lamaz.
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ Nesneler b繹lge s覺n覺rlar覺 羹zerinden balant覺land覺r覺lamaz.
+ </notification>
<notification name="CannotLinkDifferentOwners">
Nesnelerin hepsinin sahibi ayn覺 olmad覺覺 i癟in nesneler birbirine balanam覺yor.
@@ -1783,11 +1785,10 @@ Gruptan ayr覺lmak istiyor musunuz?
<usetemplate name="okbutton" yestext="Tamam"/>
</notification>
<notification name="DoNotDisturbModeSet">
- Rahats覺z Etme a癟覺k. Gelen iletiimlerle ilgili size bilgi verilmeyecek.
+ Rahats覺z Etme ilevi etkin. Gelen mesajlar i癟in bildirim almazs覺n覺z.
-- Dier sakinlere sizin Rahats覺z Etmeyin yan覺t覺 iletilecektir (Tercihler &gt; Genel i癟erisinde ayarlan覺r).
-- I覺nlanma teklifleri reddedilecektir.
-- Sesli aramalar reddedilecektir.
+- Dier sakinler sizin Rahats覺z Etme yan覺t覺n覺z覺 al覺r (Tercihler &gt; Genel alt覺nda ayarlan覺r).
+- Sesli aramalar reddedilir.
<usetemplate ignoretext="Durumumu Rahats覺z Etme moduna deitiriyorum" name="okignore" yestext="Tamam"/>
</notification>
<notification name="JoinedTooManyGroupsMember">
@@ -2553,9 +2554,6 @@ Dier kiilerin bu konuma kolayca erimesini salamak i癟in bu adrese bir we
<notification name="Cancelled">
襤ptal Edildi
</notification>
- <notification name="CancelledSit">
- Oturma 襤ptal Edildi
- </notification>
<notification name="CancelledAttach">
Takma 襤ptal Edildi
</notification>
@@ -3880,26 +3878,26 @@ L羹tfen bir dakika sonra tekrar deneyin.
<notification name="AvatarEjectFailed">
覺karma baar覺lamad覺 癟羹nk羹 bu parsel i癟in y繹netici iznine sahip deilsiniz.
</notification>
- <notification name="CantMoveObjectParcelFull">
- [REGION_NAME] b繹lgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor 癟羹nk羹 parsel dolu.
+ <notification name="CMOParcelFull">
+ &quot;[O]&quot; nesnesi [R] b繹lgesindeki [P] parseline ta覺nam覺yor 癟羹nk羹 parsel dolu.
</notification>
- <notification name="CantMoveObjectParcelPerms">
- [REGION_NAME] b繹lgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor 癟羹nk羹 bu parselde nesnelerinize izin verilmiyor.
+ <notification name="CMOParcelPerms">
+ &quot;[O]&quot; nesnesi [R] b繹lgesindeki [P] parseline ta覺nam覺yor 癟羹nk羹 bu parselde nesnelerinize izin verilmiyor.
</notification>
- <notification name="CantMoveObjectParcelResources">
- [REGION_NAME] b繹lgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor, 癟羹nk羹 bu parselde bu nesne i癟in yeterli kaynak yok.
+ <notification name="CMOParcelResources">
+ &quot;[O]&quot; nesnesi [R] b繹lgesindeki [P] parseline ta覺nam覺yor 癟羹nk羹 parselde bu nesne i癟in yeterli kaynak yok.
</notification>
<notification name="NoParcelPermsNoObject">
Bu parsele eriiminiz olmad覺覺 i癟in kopyalama ilemi yap覺lamad覺.
</notification>
- <notification name="CantMoveObjectRegionVersion">
- [REGION_NAME] b繹lgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor 癟羹nk羹 b繹lgede 癟al覺t覺r覺lan eski versiyon, b繹lge deitirme 羹zerinden bu nesnenin al覺nmas覺n覺 desteklemiyor.
+ <notification name="CMORegionVersion">
+ &quot;[O]&quot; nesnesi [R] b繹lgesindeki [P] parseline ta覺nam覺yor 癟羹nk羹 dier b繹lge, bu nesnenin b繹lgeler aras覺 ge癟ile al覺nmas覺n覺 desteklemeyen daha eski bir s羹r羹m 癟al覺t覺r覺yor.
</notification>
- <notification name="CantMoveObjectNavMesh">
- [REGION_NAME] b繹lgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor 癟羹nk羹 navmesh&apos;i b繹lge s覺n覺rlar覺 繹tesinde deitiremezsiniz.
+ <notification name="CMONavMesh">
+ &quot;[O]&quot; nesnesi [R] b繹lgesindeki [P] parseline ta覺nam覺yor 癟羹nk羹 b繹lge s覺n覺rlar覺 繹tesindeki navigasyon 繹rg羹s羹nde deiiklik yapamazs覺n覺z.
</notification>
- <notification name="CantMoveObjectWTF">
- Bilinmeyen bir nedenden 繹t羹r羹 [REGION_NAME] b繹lgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor. ([FAILURE_TYPE])
+ <notification name="CMOWTF">
+ Bilinmeyen bir nedenle, &quot;[O]&quot; nesnesi [R] b繹lgesindeki [P] parseline ta覺nam覺yor. ([F])
</notification>
<notification name="NoPermModifyObject">
Bu nesneyi deitirme izniniz yok
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..0e98ae03d5 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="Engellenecek bir Sakin veya nesne se癟"/>
<button name="unblock_btn" tool_tip="Engelleme listesinden Sakini veya nesneyi kald覺r"/>
</panel>
+ <text name="block_limit">
+ Engelleme listenizde [COUNT] giri var ve limit [LIMIT].
+ </text>
<block_list name="blocked" tool_tip="u anda engellenmi olan Sakinler listesi"/>
</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 cab1b24621..c34f608e3c 100644
--- a/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Birden 癟ok kelime i癟eren etiketler i癟in &quot;&quot; kullan
<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="Payla" name="post_photo_btn"/>
<button label="襤ptal" name="cancel_photo_btn"/>
</panel>
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..d499300de2 100644
--- a/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
<text_editor name="message" value="ileti"/>
</panel>
<panel label="control_panel" name="control_panel">
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 235a90a245..a5046a7699 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
<text name="BetterText">
Daha iyi
</text>
+ <check_box initial_value="true" label="Atmosferik g繹lgeleyiciler" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Gelimi Ayd覺nlatma Modeli" name="UseLightShaders"/>
<slider label="Avatar覺n Maksimum Karma覺kl覺覺:" name="IndirectMaxComplexity" tool_tip="G繹rsel olarak karma覺k bir avatar覺n ne zaman JellyDoll olarak 癟izileceini belirler"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="Atmosferik g繹lgeleyiciler" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="Gelimi Ayd覺nlatma Modeli" name="UseLightShaders"/>
+ <check_box initial_value="true" label="Arkadalar覺 Her Zaman 襤le" name="AlwaysRenderFriends"/>
+ <button label="襤stisnalar..." name="RenderExceptionsButton"/>
<button label="Ayarlar覺 繹n ayar olarak kaydet..." name="PrefSaveButton"/>
<button label="n ayar覺 y羹kle..." name="PrefLoadButton"/>
min_val=&quot;0,125&quot;
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/tr/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..d60a11159d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Kar覺ya Y羹klemeler" name="uploads">
+ <text name="title">
+ Kar覺ya y羹klemeler i癟in mevcut hedef klas繹rler
+ </text>
+ <text name="title_models">
+ G繹r羹nt羹ler
+ </text>
+ <text name="title_sounds">
+ Sesler
+ </text>
+ <text name="title_animation">
+ Animasyonlar
+ </text>
+ <text name="upload_help">
+ Bir hedef klas繹r羹 deitirmek i癟in, envanterde o klas繹re sa t覺klay覺n ve u 繹eyi se癟in:
+&quot;unun i癟in varsay覺lan olarak kullan:&quot;
+ </text>
+</panel>
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 db29e6908c..1b48bbeec2 100644
--- a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<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&apos;a Y羹kle" name="send_to_facebook_btn"/>
- <button label="Twitter&apos;a Y羹kle" name="send_to_twitter_btn"/>
- <button label="Flickr&apos;a Y羹kle" name="send_to_flickr_btn"/>
+ <button label="Profil Ak覺覺nda Payla" name="save_to_profile_btn"/>
+ <button label="Facebook&apos;ta Payla" name="send_to_facebook_btn"/>
+ <button label="Twitter&apos;da Payla" name="send_to_twitter_btn"/>
+ <button label="Flickr&apos;da Payla" 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/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index 7b4bf1fca6..1b9ce23900 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -1488,7 +1488,8 @@ L羹tfen bir dakika i癟erisinde tekrar oturum a癟may覺 deneyin.
[[MARKETPLACE_CREATE_STORE_URL] Maazas覺] hata d繹nd羹r羹yor.
</string>
<string name="InventoryMarketplaceError">
- Bu 繹zellik u anda Beta aamas覺nda. Kat覺lmak istiyorsan覺z l羹tfen ad覺n覺z覺 bu [http://goo.gl/forms/FCQ7UXkakz Google formuna] ekleyin.
+ Pazaryeri 襤lanlar覺 a癟覺l覺rken bir hata meydana geldi.
+Bu mesaj size gelmeye devam ederse l羹tfen http://support.secondlife.com adresinden Second Life destek ekibine bavurun.
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
Pazaryeri 襤lanlar覺 klas繹r羹n羹z bo.
@@ -4441,7 +4442,10 @@ Bu iletiyi almaya devam ederseniz, l羹tfen [SUPPORT_SITE] b繹l羹m羹ne bavurun.
[AGENT_NAME] ile konferans
</string>
<string name="inventory_item_offered-im">
- Teklif edilen envanter 繹esi:
+ &quot;[ITEM_NAME]&quot; envanter 繹esi sunuldu
+ </string>
+ <string name="inventory_folder_offered-im">
+ &quot;[ITEM_NAME]&quot; envanter klas繹r羹 sunuldu
</string>
<string name="share_alert">
Envanterinizden buraya 繹eler s羹r羹kleyin
@@ -4528,7 +4532,10 @@ Bu iletiyi almaya devam ederseniz, l羹tfen [SUPPORT_SITE] b繹l羹m羹ne bavurun.
Ana konum ayarland覺.
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
[NAME] size [REASON] L$[AMOUNT] 繹dedi.
@@ -4897,7 +4904,7 @@ Bu iletiyi almaya devam ederseniz, l羹tfen [SUPPORT_SITE] b繹l羹m羹ne bavurun.
<string name="server_is_down">
T羹m 癟abalar覺m覺za ramen beklenmeyen bir hata meydana geldi.
- Hizmetle ilikili bilinen bir sorun olup olmad覺覺n覺 g繹rmek i癟in l羹tfen status.secondlifegrid.net adresine bak覺n.
+Hizmetle ilikili bilinen bir sorun olup olmad覺覺n覺 g繹rmek i癟in l羹tfen http://status.secondlifegrid.net adresine bak覺n.
Sorun yaamaya devam ederseniz l羹tfen a覺n覺z覺n ve g羹venlik duvar覺n覺z覺n ayarlar覺na bak覺n.
</string>
<string name="dateTimeWeekdaysNames">
@@ -5370,6 +5377,9 @@ D羹zenleyici yolunu 癟ift t覺rnakla 癟evrelemeyi deneyin.
<string name="Command_Gestures_Label">
Mimikler
</string>
+ <string name="Command_Grid_Status_Label">
+ A durumu
+ </string>
<string name="Command_HowTo_Label">
Nas覺l yap覺l覺r
</string>
@@ -5463,6 +5473,9 @@ D羹zenleyici yolunu 癟ift t覺rnakla 癟evrelemeyi deneyin.
<string name="Command_Gestures_Tooltip">
Avatar覺n覺z i癟in mimikler
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ A覺n mevcut durumunu g繹ster
+ </string>
<string name="Command_HowTo_Tooltip">
Genel g繹revleri nas覺l yapaca覺n覺z
</string>
@@ -5685,6 +5698,9 @@ D羹zenleyici yolunu 癟ift t覺rnakla 癟evrelemeyi deneyin.
<string name="loading_chat_logs">
Y羹kleniyor...
</string>
+ <string name="na">
+ yok
+ </string>
<string name="preset_combo_label">
-Bo liste-
</string>
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 489ea61c72..6c03f5304f 100644
--- a/indra/newview/skins/default/xui/zh/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml
@@ -446,7 +446,7 @@
<spinner label="箏交嚗" name="HoursSpin"/>
<panel name="Allowed_layout_panel">
<text label="瘞賊閮" name="AllowedText">
- 閮梁撅瘞 ([COUNT])
+ 閮梁撅瘞嚗[COUNT]嚗憭[MAX]嚗
</text>
<name_list name="AccessList" tool_tip="嚗撌脣 [LISTED]嚗憭臬 [MAX]嚗"/>
<button label="瘛餃" name="add_allowed"/>
@@ -454,7 +454,7 @@
</panel>
<panel name="Banned_layout_panel">
<text label="蝳甇" name="BanCheck">
- 鋡怠撅瘞 ([COUNT])
+ 撠撅瘞嚗[COUNT]嚗憭[MAX]嚗
</text>
<name_list name="BannedList" tool_tip="嚗撌脣 [LISTED]嚗憭臬 [MAX]嚗"/>
<button label="瘛餃" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000..2de8c5bc89
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="頨怠閮剖">
+ <string name="av_never_render" value="蝯銝"/>
+ <string name="av_always_render" value="瘞賊"/>
+ <filter_editor label="瞈曆犖" name="people_filter_input"/>
+ <menu_button name="plus_btn" tool_tip="撠詨鈭箸∪雿"/>
+ <name_list name="render_settings_list">
+ <name_list.columns label="蝔" name="name"/>
+ <name_list.columns label="閮剖" name="setting"/>
+ </name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_flickr.xml b/indra/newview/skins/default/xui/zh/floater_flickr.xml
index b02d02c7bb..c4576baea5 100644
--- a/indra/newview/skins/default/xui/zh/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/zh/floater_flickr.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="銝喳 FLICKR">
+<floater name="floater_flickr" title="鈭怠蚌LICKR">
<panel name="background">
<tab_container name="tabs">
<panel label="貊" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_preferences.xml b/indra/newview/skins/default/xui/zh/floater_preferences.xml
index b0a27e8c1f..c5b078f3c7 100644
--- a/indra/newview/skins/default/xui/zh/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/zh/floater_preferences.xml
@@ -13,5 +13,6 @@
<panel label="梁" name="im"/>
<panel label="閮剖" name="input"/>
<panel label="脤" name="advanced1"/>
+ <panel label="銝喳批捆" name="uploads"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_tos.xml b/indra/newview/skins/default/xui/zh/floater_tos.xml
index c86cc3057d..92e48e72b8 100644
--- a/indra/newview/skins/default/xui/zh/floater_tos.xml
+++ b/indra/newview/skins/default/xui/zh/floater_tos.xml
@@ -13,6 +13,6 @@
隢隞蝝圈梯隞乩璇甈曉梁輻 蝜潛餃 [SECOND_LIFE] 嚗雿敹璇甈整
</text>
<text name="external_tos_required">
- 雿餃 my.secondlife.com 璇甈橘舐匱蝥 雓雓雿嚗
+ 雿餃 https://my.secondlife.com 璇甈橘舐匱蝥 雓雓雿嚗
</text>
</floater>
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 f104caeeaf..02bf12f37d 100644
--- a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml
@@ -17,8 +17,10 @@
<menu_item_call label="曉之" name="Zoom In"/>
<menu_item_call label="臭" name="Pay..."/>
<menu_item_call label="拐辣瑼獢" name="Object Inspect"/>
- <menu_item_check label="甇撣詨" name="RenderNormally"/>
- <menu_item_check label="銝閬" name="DoNotRender"/>
- <menu_item_check label="摰典" name="AlwaysRenderFully"/>
+ <context_menu label="曉頨" name="Render Avatar">
+ <menu_item_check label="閮" name="RenderNormally"/>
+ <menu_item_check label="瘞賊" name="AlwaysRenderFully"/>
+ <menu_item_check label="蝯銝" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="撠蝎摮鈭" name="Mute Particle"/>
</context_menu>
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 2e9ef8bcf1..bc2a8c311b 100644
--- a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml
@@ -16,8 +16,10 @@
<menu_item_call label="曉 XML" name="Dump XML"/>
<menu_item_call label="曉之" name="Zoom In"/>
<menu_item_call label="臭" name="Pay..."/>
- <menu_item_check label="甇撣詨" name="RenderNormally"/>
- <menu_item_check label="銝閬" name="DoNotRender"/>
- <menu_item_check label="摰典" name="AlwaysRenderFully"/>
+ <context_menu label="曉頨" name="Render Avatar">
+ <menu_item_check label="閮" name="RenderNormally"/>
+ <menu_item_check label="瘞賊" name="AlwaysRenderFully"/>
+ <menu_item_check label="蝯銝" name="DoNotRender"/>
+ </context_menu>
<menu_item_call label="撠蝎摮鈭" name="Mute Particle"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000..18c33e1c39
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+ <menu_item_check label="閮" name="default"/>
+ <menu_item_check label="蝮賣臬" name="always_render"/>
+ <menu_item_check label="蝯銝" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000..98c3f27abb
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+ <menu_item_call label="瘞賊曉瘞" name="add_avatar_always_render"/>
+ <menu_item_call label="瘞訾曉瘞" name="add_avatar_never_render"/>
+</toggleable_menu>
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..21263842b8 100644
--- a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_gesture_gear">
- <menu_item_call label="望銝 瘛餃/蝘駁" name="activate"/>
+ <menu_item_call label="/甇X詨尿" name="activate"/>
<menu_item_call label="摨" name="copy_gesture"/>
<menu_item_call label="鞎潔" name="paste"/>
<menu_item_call label="閬鋆 UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml
index b346e82b77..f17761fdfc 100644
--- a/indra/newview/skins/default/xui/zh/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml
@@ -42,6 +42,12 @@
<menu_item_call label="圈剝垣" name="New Hair"/>
<menu_item_call label="啁潛" name="New Eyes"/>
</menu>
+ <menu label="雿銝券閮剖潘" name="upload_def">
+ <menu_item_call label="銝" name="Image uploads"/>
+ <menu_item_call label="脤喃" name="Sound uploads"/>
+ <menu_item_call label="雿銝" name="Animation uploads"/>
+ <menu_item_call label="璅∪銝" name="Model uploads"/>
+ </menu>
<menu label="霈湧" name="Change Type">
<menu_item_call label="閮" name="Default"/>
<menu_item_call label="憟" name="Gloves"/>
@@ -60,6 +66,7 @@
<menu_item_call label="隞桀鋆" name="Replace Outfit"/>
<menu_item_call label="瘛餃啁桀鋆" name="Add To Outfit"/>
<menu_item_call label="梁桀鋆桃宏" name="Remove From Outfit"/>
+ <menu_item_call label="銴鋆質格桀啣芾票蝪" name="Copy outfit list to clipboard"/>
<menu_item_call label="撠曉隞" name="Find Original"/>
<menu_item_call label="皜蝛箇拙" name="Purge Item"/>
<menu_item_call label="拙" name="Restore Item"/>
@@ -72,7 +79,6 @@
<menu_item_call label="摨" name="Copy"/>
<menu_item_call label="鞎潔" name="Paste"/>
<menu_item_call label="隞仿蝯澆鞎潔" name="Paste As Link"/>
- <menu_item_call label="芷" name="Remove Link"/>
<menu_item_call label="芷" name="Delete"/>
<menu_item_call label="芷斤頂蝯梯憭" name="Delete System Folder"/>
<menu_item_call label="潸絲憭寥閰" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
<menu_item_call label="蝺刻摩" name="Wearable Edit"/>
<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="銴鋆賢 Marketplace " name="Marketplace Copy"/>
<menu_item_call label="蝘餃 Marketplace " name="Marketplace Move"/>
<menu_item_call label="-- ⊿賊 --" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml
index 8dd89db7ba..e3f6ca2690 100644
--- a/indra/newview/skins/default/xui/zh/menu_login.xml
+++ b/indra/newview/skins/default/xui/zh/menu_login.xml
@@ -2,6 +2,7 @@
<menu_bar name="Login Menu">
<menu label="芸楛" name="File">
<menu_item_call label="憟質身摰" name="Preferences..."/>
+ <menu_item_check label="憿舐內潛詨" name="Show Grid Picker"/>
<menu_item_call label=" [APP_NAME]" name="Quit"/>
</menu>
<menu label="撟怠" name="Help">
@@ -33,7 +34,6 @@
<menu_item_check label="航炊" name="Error"/>
<menu_item_check label="" name="None"/>
</menu>
- <menu_item_check label="憿舐內蝬脫潭詨" name="Show Grid Picker"/>
<menu_item_call label="憿舐內交批嗅" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
index 9a2a3c403d..8af35457af 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_blocked_gear">
<menu_item_call label="閫文" name="unblock"/>
+ <menu_item_check label="蝳甇Z" name="BlockVoice"/>
+ <menu_item_check label="蝳甇X摮" name="MuteText"/>
+ <menu_item_check label="蝳甇Y拐辣脤" name="BlockObjectSounds"/>
<menu_item_call label="瑼獢..." name="profile"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml
index 3868646050..a58e1bb0fa 100644
--- a/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -42,6 +42,7 @@
<menu_item_check label="瘝霈脫" name="NoVoiceMorphing"/>
<menu_item_check label="閬賤色" name="Preview"/>
<menu_item_call label="閮晦色" name="Subscribe"/>
+ <menu_item_call label="隞鞎餅∠其澈" name="PremiumPerk"/>
</menu>
<menu_item_check label="憪踹T" name="Gestures"/>
<menu_item_check label="" name="My Friends"/>
@@ -55,7 +56,8 @@
<menu_item_call label="桃售" name="Destinations"/>
<menu_item_check label="銝啣" name="World Map"/>
<menu_item_check label="餈瑚啣" name="Mini-Map"/>
- <menu_item_check label="撠" name="Search"/>
+ <menu_item_call label="瘣餃" name="Events"/>
+ <menu_item_check label="撠" name="Search"/>
<menu_item_call label="祇喲摰" name="Teleport Home"/>
<menu_item_call label="鋆∟身箸摰" name="Set Home to Here"/>
<menu_item_call label="敹怎" name="Take Snapshot"/>
@@ -126,8 +128,10 @@
<menu_item_call label="敺舀" name="Take Copy"/>
<menu_item_call label="摮啁拐辣批捆" name="Save Object Back to Object Contents"/>
<menu_item_call label="拐辣" name="Return Object back to Owner"/>
+ <menu_item_call label="銴鋆" name="DuplicateObject"/>
</menu>
<menu label="單" name="Scripts">
+ <menu_item_check label="單祈郎/航炊" name="Script debug"/>
<menu_item_call label="啁楊霅航單穿Mono嚗" name="Mono"/>
<menu_item_call label="啁楊霅航單穿LSL嚗" name="LSL"/>
<menu_item_call label="閮剛單" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 61cf4e9492..dfd4931ef8 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -142,10 +142,9 @@
<usetemplate name="okbutton" yestext="蝣箏"/>
</notification>
<notification name="MerchantTransactionFailed">
- Marketplace 脰鈭斗潛憒銝航炊嚗
+ Marketplace脰鈭斗潛憒銝航炊嚗
- 嚗&apos;[ERROR_REASON]&apos;
- [ERROR_DESCRIPTION]
+ [ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate name="okbutton" yestext="蝣箏"/>
</notification>
<notification name="MerchantUnprocessableEntity">
@@ -762,6 +761,9 @@
<notification name="CannotLinkPermanent">
拐辣⊥頝刻啣脰舐
</notification>
+ <notification name="CannotLinkAcrossRegions">
+ 拐辣⊥頝刻啣脰舐
+ </notification>
<notification name="CannotLinkDifferentOwners">
⊥舐嚗鈭拐辣鈭箔
@@ -1776,7 +1778,6 @@ SHA1 蝝嚗[MD5_DIGEST]
隢踵整璅∪桀舫 雿撠銝嗅唬遙雿潛策雿閮舫乓
- 嗡撅瘞撠嗅唬隢踵整嚗批捆閮剜潦憟質身摰 &gt; 銝祈身摰嚗
-- 祇喲隢賢鋡怠
- 隤喃駁賢蝯亥賬
<usetemplate ignoretext="霈湔箝隢踵整璅∪" name="okignore" yestext="蝣箏"/>
</notification>
@@ -2544,9 +2545,6 @@ SHA1 蝝嚗[MD5_DIGEST]
<notification name="Cancelled">
撌脣瘨
</notification>
- <notification name="CancelledSit">
- 瘨銝
- </notification>
<notification name="CancelledAttach">
瘨鞎潔
</notification>
@@ -3871,32 +3869,26 @@ SHA1 蝝嚗[MD5_DIGEST]
<notification name="AvatarEjectFailed">
頦W箏仃嚗箔刻府唳挾瘝蝞∠⊥
</notification>
- <notification name="CantMoveObjectParcelFull">
- ⊥蝘餃 &apos;[OBJECT_NAME]&apos; 拐辣
-啣 [REGION_NAME] [OBJ_POSITION]嚗箄府格唳挾撌脫遛頛
+ <notification name="CMOParcelFull">
+ ⊥沍R]撠&apos;[O]&apos;拐辣蝘餃豺P]嚗箸迨唳挾摰寥撌脫遛
</notification>
- <notification name="CantMoveObjectParcelPerms">
- ⊥蝘餃 &apos;[OBJECT_NAME]&apos; 拐辣
-啣 [REGION_NAME] [OBJ_POSITION]嚗箸迨唳挾銝閮曹拐辣
+ <notification name="CMOParcelPerms">
+ ⊥沍R]撠&apos;[O]&apos;拐辣蝘餃豺P]嚗箸迨唳挾鋆∩閮望雿拐辣
</notification>
- <notification name="CantMoveObjectParcelResources">
- ⊥蝘餃 &apos;[OBJECT_NAME]&apos; 拐辣
- [REGION_NAME] 啣 [OBJ_POSITION]嚗箸迨唳挾鞈皞銝頞喳捆蝝甇斤拐辣
+ <notification name="CMOParcelResources">
+ ⊥沍R]撠&apos;[O]&apos;拐辣蝘餃豺P]嚗箸迨唳挾鋆⊿銝拐辣鞈皞銝頞喋
</notification>
<notification name="NoParcelPermsNoObject">
銴鋆賢仃嚗脖⊥箏亥府唳挾
</notification>
- <notification name="CantMoveObjectRegionVersion">
- ⊥蝘餃 &apos;[OBJECT_NAME]&apos; 拐辣
- [REGION_NAME] 啣 [OBJ_POSITION]嚗箄府啣瑁頠擃祇嚗銝舀渲楊啣亙拐辣
+ <notification name="CMORegionVersion">
+ ⊥沍R]撠&apos;[O]&apos;拐辣蝘餃豺P]嚗箄府啣瑁頠擃祇嚗銝舀渲楊啣亙拐辣
</notification>
- <notification name="CantMoveObjectNavMesh">
- ⊥蝘餃 &apos;[OBJECT_NAME]&apos; 拐辣
-啣 [REGION_NAME] [OBJ_POSITION]嚗箔銝敺靽格寡楊頞啣撠芰雯U
+ <notification name="CMONavMesh">
+ ⊥沍R]撠&apos;[O]&apos;拐辣蝘餃豺P]嚗箔銝敺靽格嫣其蝭撠芰雯U
</notification>
- <notification name="CantMoveObjectWTF">
- ⊥蝘餃 &apos;[OBJECT_NAME]&apos; 拐辣
-啣 [REGION_NAME] [OBJ_POSITION]嚗銝 嚗[FAILURE_TYPE]嚗
+ <notification name="CMOWTF">
+ ⊥沍R]撠&apos;[O]&apos;拐辣蝘餃豺P]嚗憿銝 ([F])
</notification>
<notification name="NoPermModifyObject">
雿⊥霈渲府拐辣
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..ed475a91f4 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
@@ -7,5 +7,8 @@
<menu_button name="plus_btn" tool_tip="訾雿撅瘞拐辣嚗隞亙"/>
<button name="unblock_btn" tool_tip="撠撅瘞拐辣勗皜桐葉蝘駁"/>
</panel>
+ <text name="block_limit">
+ 撠桃桀[COUNT]嚗銝暨LIMIT]
+ </text>
<block_list name="blocked" tool_tip="桀撠撅瘞皜"/>
</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 ece239a29f..928fd4c640 100644
--- a/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml
@@ -30,6 +30,6 @@
<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="post_photo_btn"/>
<button label="瘨" name="cancel_photo_btn"/>
</panel>
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..2ec2a05c8c 100644
--- a/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="單閮" name="panel_notify_textbox">
- <string name="message_max_lines_count" value="7"/>
- <panel label="info_panel" name="info_panel">
+ <string name="message_max_lines_count" value="14"/>
+ <panel label="info_panel" name="info_panel"/>
+ <panel label="info_panel" name="textbox_panel">
<text_editor name="message" value="閮"/>
</panel>
<panel label="control_panel" name="control_panel">
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 4eef624910..21e958b13a 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
<text name="BetterText">
</text>
+ <check_box initial_value="true" label="憭扳除" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="脤扳璅∪" name="UseLightShaders"/>
<slider label="頨急憭扯摨佗" name="IndirectMaxComplexity" tool_tip="批嗅其璈銝霈銴頨怠箝JellyDoll"/>
<text name="IndirectMaxComplexityText">
0
</text>
- <check_box initial_value="true" label="憭扳除" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="脤扳璅∪" name="UseLightShaders"/>
+ <check_box initial_value="true" label="瘞賊暹" name="AlwaysRenderFriends"/>
+ <button label="靘憭" name="RenderExceptionsButton"/>
<button label="撠閮剖摮粹閮剖 " name="PrefSaveButton"/>
<button label="頛仿閮..." name="PrefLoadButton"/>
min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/zh/panel_preferences_uploads.xml
new file mode 100644
index 0000000000..b34b4109d8
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="銝喳批捆" name="uploads">
+ <text name="title">
+ 桀銝喟桃鞈憭
+ </text>
+ <text name="title_models">
+
+ </text>
+ <text name="title_sounds">
+ 脤
+ </text>
+ <text name="title_animation">
+ 雿
+ </text>
+ <text name="upload_help">
+ 閬霈渡桃鞈憭橘隢冽嗥冽曌喲菜銝銝啁鞈憭曆蒂豢
+ 其閮剖潦
+ </text>
+</panel>
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 a5a1cbfb51..d7c65bb25e 100644
--- a/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
<panel name="panel_snapshot_options">
<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_profile_btn"/>
+ <button label="鈭怠啗" name="send_to_facebook_btn"/>
+ <button label="鈭怠唳函" name="send_to_twitter_btn"/>
+ <button label="鈭怠蚌lickr" name="send_to_flickr_btn"/>
<button label="券駁萄喲" name="save_to_email_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index ec08c9f91e..c640c12143 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -1483,7 +1483,8 @@ http://secondlife.com/viewer-access-faq
[[MARKETPLACE_CREATE_STORE_URL] 鞈潛拙摨]甇喳航炊
</string>
<string name="InventoryMarketplaceError">
- 賢 Beta 皜祈岫畾萸 憒雿喳嚗隢圈[http://goo.gl/forms/FCQ7UXkakz Google 銵典孫憛怠神憪
+ Marketplace餃批捆潛航炊
+憒雿蝜潛嗅圈閮荔隢 http://support.secondlife.com 舐窗 Second Life 舀港犖∼
</string>
<string name="InventoryMarketplaceListingsNoItemsTitle">
雿 Marketplace 餉憭暹舐征
@@ -4436,7 +4437,10 @@ http://secondlife.com/viewer-access-faq
[AGENT_NAME] 憭寥閰
</string>
<string name="inventory_item_offered-im">
- 嗥拙撌脩潮
+ 嗥拙&apos;[ITEM_NAME]&apos;撌脣鈭箸靘
+ </string>
+ <string name="inventory_folder_offered-im">
+ 嗥鞈憭&apos;[ITEM_NAME]&apos;撌脣鈭箸靘
</string>
<string name="share_alert">
撠嗥拙喳圈鋆
@@ -4523,7 +4527,10 @@ http://secondlife.com/viewer-access-faq
摰嗡蝵桀歇摰
</string>
<string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
</string>
<string name="paid_you_ldollars">
[NAME] 臭雿 L$[AMOUNT]嚗[REASON]嚗
@@ -4894,8 +4901,8 @@ http://secondlife.com/viewer-access-faq
<string name="server_is_down">
蝞⊥芸踹嚗舐潛憭航炊
- 隢撖閮 status.secondlifegrid.net 臬衣潛鈭撌脩亦瘜
- 憒擃蝜潛潛嚗隢瑼X乩蝬脰楝脩怎閮剖
+隢撖閮 http://status.secondlifegrid.net 臬衣潛鈭撌脩亦瘜
+ 憒憿蝜潛潛嚗隢瑼X乩蝬脰楝脩怎閮剖
</string>
<string name="dateTimeWeekdaysNames">
:銝:鈭:銝::鈭:
@@ -5367,6 +5374,9 @@ http://secondlife.com/viewer-access-faq
<string name="Command_Gestures_Label">
憪踹
</string>
+ <string name="Command_Grid_Status_Label">
+ 蝬脫潛
+ </string>
<string name="Command_HowTo_Label">
蝪⊥摮
</string>
@@ -5460,6 +5470,9 @@ http://secondlife.com/viewer-access-faq
<string name="Command_Gestures_Tooltip">
雿頨怠舐函憪踹
</string>
+ <string name="Command_Grid_Status_Tooltip">
+ 憿舐內嗅蝬脫潛
+ </string>
<string name="Command_HowTo_Tooltip">
憒雿摰撣貊函雿
</string>
@@ -5682,6 +5695,9 @@ http://secondlife.com/viewer-access-faq
<string name="loading_chat_logs">
頛乩葉
</string>
+ <string name="na">
+ 銝拍
+ </string>
<string name="preset_combo_label">
-蝛箇賣-
</string>