summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.hgtags9
-rw-r--r--BuildParams6
-rw-r--r--doc/contributions.txt19
-rw-r--r--indra/cmake/FindGLH.cmake30
-rw-r--r--indra/cmake/GLH.cmake11
-rw-r--r--indra/cmake/LLRender.cmake2
-rw-r--r--indra/cmake/LLSharedLibs.cmake24
-rw-r--r--indra/cmake/Linking.cmake29
-rw-r--r--indra/integration_tests/llui_libtest/CMakeLists.txt1
-rw-r--r--indra/linux_crash_logger/CMakeLists.txt1
-rw-r--r--indra/llaudio/llaudioengine_fmod.cpp2
-rw-r--r--indra/llaudio/llvorbisencode.cpp9
-rw-r--r--indra/llcharacter/llbvhloader.cpp3
-rw-r--r--indra/llcharacter/llkeyframemotionparam.cpp3
-rw-r--r--indra/llcharacter/llstatemachine.cpp3
-rw-r--r--indra/llcommon/CMakeLists.txt3
-rw-r--r--indra/llcommon/llapp.cpp4
-rw-r--r--indra/llcommon/llapr.cpp445
-rw-r--r--indra/llcommon/llapr.h107
-rw-r--r--indra/llcommon/llaprpool.cpp202
-rw-r--r--indra/llcommon/llaprpool.h256
-rw-r--r--indra/llcommon/llassettype.cpp3
-rw-r--r--indra/llcommon/llassettype.h8
-rw-r--r--indra/llcommon/llcommon.cpp13
-rw-r--r--indra/llcommon/llcommon.h2
-rw-r--r--indra/llcommon/llerror.cpp3
-rw-r--r--indra/llcommon/llerror.h1
-rw-r--r--indra/llcommon/llfixedbuffer.cpp3
-rw-r--r--indra/llcommon/llmemory.cpp43
-rw-r--r--indra/llcommon/llmemory.h1
-rw-r--r--indra/llcommon/llqueuedthread.cpp7
-rw-r--r--indra/llcommon/llqueuedthread.h2
-rw-r--r--indra/llcommon/llscopedvolatileaprpool.h52
-rw-r--r--indra/llcommon/llsdserialize_xml.cpp3
-rw-r--r--indra/llcommon/llthread.cpp241
-rw-r--r--indra/llcommon/llthread.h134
-rw-r--r--indra/llcommon/llthreadsafequeue.cpp15
-rw-r--r--indra/llcommon/llthreadsafequeue.h16
-rw-r--r--indra/llcommon/llversionviewer.h2
-rw-r--r--indra/llcommon/llworkerthread.cpp12
-rw-r--r--indra/llcommon/llworkerthread.h5
-rw-r--r--indra/llcommon/stdenums.h5
-rw-r--r--indra/llcrashlogger/llcrashlogger.cpp3
-rw-r--r--indra/llimage/llimage.cpp8
-rw-r--r--indra/llimage/llimagedimensionsinfo.cpp2
-rw-r--r--indra/llimage/llimagedxt.cpp1
-rw-r--r--indra/llimage/llimagej2c.cpp4
-rw-r--r--indra/llimage/llimageworker.cpp8
-rw-r--r--indra/llimage/llimageworker.h2
-rw-r--r--indra/llinventory/llinventorytype.cpp5
-rw-r--r--indra/llinventory/llinventorytype.h3
-rw-r--r--indra/llmath/llvolumemgr.cpp4
-rw-r--r--indra/llmessage/llares.cpp17
-rw-r--r--indra/llmessage/llcurl.cpp8
-rw-r--r--[-rwxr-xr-x]indra/llmessage/llcurl.h0
-rw-r--r--indra/llmessage/lliohttpserver.cpp10
-rw-r--r--indra/llmessage/lliohttpserver.h2
-rw-r--r--indra/llmessage/lliosocket.cpp99
-rw-r--r--indra/llmessage/lliosocket.h37
-rw-r--r--indra/llmessage/llmail.cpp17
-rw-r--r--indra/llmessage/llmail.h4
-rw-r--r--indra/llmessage/llproxy.cpp4
-rw-r--r--indra/llmessage/llpumpio.cpp74
-rw-r--r--indra/llmessage/llpumpio.h31
-rw-r--r--indra/llmessage/llurlrequest.cpp25
-rw-r--r--indra/llmessage/message.cpp17
-rw-r--r--indra/llmessage/tests/networkio.h9
-rw-r--r--indra/llplugin/llplugininstance.cpp6
-rw-r--r--indra/llplugin/llplugininstance.h2
-rw-r--r--indra/llplugin/llpluginmessagepipe.cpp2
-rw-r--r--indra/llplugin/llpluginprocesschild.cpp2
-rw-r--r--indra/llplugin/llpluginprocessparent.cpp57
-rw-r--r--indra/llplugin/llpluginprocessparent.h2
-rw-r--r--indra/llplugin/llpluginsharedmemory.cpp9
-rw-r--r--indra/llplugin/llpluginsharedmemory.h3
-rw-r--r--indra/llplugin/slplugin/slplugin.cpp4
-rw-r--r--indra/llui/CMakeLists.txt7
-rw-r--r--indra/llui/llbutton.cpp159
-rw-r--r--indra/llui/llbutton.h47
-rw-r--r--indra/llui/llclipboard.cpp6
-rw-r--r--indra/llui/llclipboard.h9
-rw-r--r--indra/llui/llcommandmanager.cpp171
-rw-r--r--indra/llui/llcommandmanager.h217
-rw-r--r--indra/llui/lldockcontrol.cpp5
-rw-r--r--indra/llui/llfloater.cpp198
-rw-r--r--indra/llui/llfloater.h73
-rw-r--r--indra/llui/llfloaterreg.cpp188
-rw-r--r--indra/llui/llfloaterreg.h9
-rw-r--r--indra/llui/llhelp.h1
-rw-r--r--indra/llui/lllayoutstack.cpp244
-rw-r--r--indra/llui/lllayoutstack.h28
-rw-r--r--indra/llui/lllineeditor.h2
-rw-r--r--indra/llui/llloadingindicator.cpp7
-rw-r--r--indra/llui/llloadingindicator.h4
-rw-r--r--indra/llui/llmenugl.cpp4
-rw-r--r--indra/llui/llnotifications.cpp72
-rw-r--r--indra/llui/llnotifications.h4
-rw-r--r--indra/llui/llnotificationtemplate.h4
-rw-r--r--indra/llui/llnotificationvisibilityrule.h2
-rw-r--r--indra/llui/llpanel.h3
-rw-r--r--indra/llui/llresizehandle.h2
-rw-r--r--indra/llui/llscrolllistcolumn.h4
-rw-r--r--indra/llui/llsdparam.cpp270
-rw-r--r--indra/llui/llsdparam.h70
-rw-r--r--indra/llui/lltextbase.h2
-rw-r--r--indra/llui/lltoolbar.cpp1053
-rw-r--r--indra/llui/lltoolbar.h259
-rw-r--r--indra/llui/lltooltip.cpp2
-rw-r--r--indra/llui/llui.cpp43
-rw-r--r--indra/llui/llui.h119
-rw-r--r--indra/llui/lluicolortable.h2
-rw-r--r--indra/llui/lluictrl.cpp10
-rw-r--r--indra/llui/lluictrl.h7
-rw-r--r--indra/llui/lluictrlfactory.h10
-rw-r--r--indra/llui/llview.cpp14
-rw-r--r--indra/llui/llview.h25
-rw-r--r--indra/llui/tests/llurlentry_stub.cpp4
-rw-r--r--indra/llui/tests/llurlentry_test.cpp1
-rw-r--r--indra/llui/tests/llurlmatch_test.cpp6
-rw-r--r--indra/llvfs/lllfsthread.cpp10
-rw-r--r--indra/llvfs/llvfs.cpp5
-rw-r--r--indra/llxuixml/llinitparam.cpp56
-rw-r--r--indra/llxuixml/llinitparam.h638
-rw-r--r--indra/llxuixml/llxuiparser.cpp218
-rw-r--r--indra/llxuixml/llxuiparser.h42
-rw-r--r--indra/media_plugins/gstreamer010/llmediaimplgstreamer.h1
-rw-r--r--indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp15
-rw-r--r--indra/media_plugins/webkit/linux_volume_catcher.cpp14
-rw-r--r--indra/newview/CMakeLists.txt30
-rw-r--r--indra/newview/app_settings/commands.xml240
-rw-r--r--indra/newview/app_settings/keywords.ini82
-rw-r--r--indra/newview/app_settings/settings.xml192
-rw-r--r--indra/newview/app_settings/settings_minimal.xml475
-rw-r--r--indra/newview/app_settings/toolbars.xml24
-rw-r--r--[-rwxr-xr-x]indra/newview/featuretable.txt4
-rw-r--r--indra/newview/featuretable_linux.txt4
-rw-r--r--indra/newview/featuretable_mac.txt4
-rw-r--r--indra/newview/featuretable_solaris.txt4
-rw-r--r--indra/newview/featuretable_xp.txt4
-rw-r--r--indra/newview/installers/windows/lang_zh.nsibin5554 -> 5824 bytes
-rwxr-xr-xindra/newview/llagent.cpp91
-rw-r--r--indra/newview/llagent.h25
-rw-r--r--indra/newview/llagentcamera.cpp5
-rw-r--r--indra/newview/llagentwearables.cpp11
-rw-r--r--indra/newview/llagentwearables.h2
-rw-r--r--indra/newview/llappearancemgr.cpp99
-rw-r--r--indra/newview/llappearancemgr.h3
-rw-r--r--indra/newview/llappviewer.cpp143
-rw-r--r--indra/newview/llappviewer.h2
-rw-r--r--indra/newview/llappviewerlinux.cpp1
-rw-r--r--indra/newview/llappviewerlinux_api_dbus.cpp14
-rw-r--r--indra/newview/llappviewermacosx.cpp1
-rwxr-xr-xindra/newview/llavataractions.cpp34
-rw-r--r--indra/newview/llavataractions.h3
-rw-r--r--indra/newview/llbottomtray.cpp1991
-rw-r--r--indra/newview/llbottomtray.h564
-rw-r--r--indra/newview/llcallfloater.cpp21
-rw-r--r--indra/newview/llcallfloater.h7
-rw-r--r--indra/newview/llchannelmanager.cpp51
-rw-r--r--indra/newview/llchannelmanager.h26
-rw-r--r--indra/newview/llchatbar.cpp3
-rw-r--r--indra/newview/llchathistory.cpp5
-rw-r--r--indra/newview/llchatitemscontainerctrl.cpp5
-rw-r--r--indra/newview/llchiclet.cpp12
-rw-r--r--indra/newview/llchicletbar.cpp340
-rw-r--r--indra/newview/llchicletbar.h99
-rw-r--r--indra/newview/llcofwearables.cpp13
-rw-r--r--indra/newview/lldirpicker.cpp4
-rw-r--r--indra/newview/lldndbutton.cpp9
-rw-r--r--indra/newview/lldndbutton.h5
-rw-r--r--indra/newview/llfavoritesbar.cpp237
-rw-r--r--indra/newview/llfavoritesbar.h18
-rw-r--r--indra/newview/llfilepicker.cpp20
-rw-r--r--indra/newview/llfloateranimpreview.cpp3
-rw-r--r--indra/newview/llfloateravatar.cpp54
-rw-r--r--indra/newview/llfloateravatar.h (renamed from indra/newview/llsidetraylistener.h)40
-rw-r--r--indra/newview/llfloatercamera.cpp14
-rw-r--r--indra/newview/llfloatercamera.h5
-rw-r--r--indra/newview/llfloaterdestinations.cpp54
-rw-r--r--indra/newview/llfloaterdestinations.h43
-rw-r--r--indra/newview/llfloaterhelpbrowser.cpp17
-rw-r--r--indra/newview/llfloaterhelpbrowser.h2
-rw-r--r--indra/newview/llfloatermap.cpp50
-rw-r--r--indra/newview/llfloatermap.h6
-rw-r--r--indra/newview/llfloatermodelpreview.cpp4
-rwxr-xr-xindra/newview/llfloaterpreference.cpp11
-rw-r--r--indra/newview/llfloatersidepanelcontainer.cpp111
-rw-r--r--indra/newview/llfloatersidepanelcontainer.h81
-rw-r--r--indra/newview/llfloatersidetraytab.cpp52
-rw-r--r--indra/newview/llfloatersnapshot.cpp4
-rw-r--r--indra/newview/llfloatersounddevices.cpp4
-rw-r--r--indra/newview/llfloatertoybox.cpp146
-rw-r--r--indra/newview/llfloatertoybox.h (renamed from indra/newview/llfloatersidetraytab.h)49
-rw-r--r--indra/newview/llfloaterwebcontent.cpp56
-rw-r--r--indra/newview/llfloaterwebcontent.h18
-rw-r--r--indra/newview/llfolderview.cpp4
-rw-r--r--indra/newview/llgroupactions.cpp16
-rw-r--r--indra/newview/llgrouplist.cpp2
-rw-r--r--indra/newview/llimfloater.cpp57
-rw-r--r--indra/newview/llimfloater.h6
-rw-r--r--indra/newview/llimpanel.cpp1
-rw-r--r--indra/newview/llimview.cpp22
-rw-r--r--indra/newview/llimview.h2
-rw-r--r--indra/newview/llinspectobject.cpp4
-rw-r--r--indra/newview/llinventorybridge.cpp8
-rw-r--r--indra/newview/llinventoryfunctions.cpp18
-rw-r--r--indra/newview/llinventoryobserver.cpp19
-rw-r--r--indra/newview/llinventorypanel.cpp58
-rw-r--r--indra/newview/lllandmarkactions.cpp2
-rw-r--r--indra/newview/lllocationinputctrl.cpp14
-rw-r--r--indra/newview/lllogininstance.cpp10
-rw-r--r--indra/newview/llmainlooprepeater.cpp2
-rw-r--r--indra/newview/llmediactrl.cpp11
-rw-r--r--indra/newview/llmeshrepository.cpp14
-rw-r--r--indra/newview/llmoveview.cpp83
-rw-r--r--indra/newview/llmoveview.h6
-rw-r--r--indra/newview/llnamelistctrl.h2
-rw-r--r--indra/newview/llnavigationbar.cpp187
-rw-r--r--indra/newview/llnavigationbar.h7
-rw-r--r--indra/newview/llnearbychat.cpp84
-rw-r--r--indra/newview/llnearbychat.h15
-rw-r--r--indra/newview/llnearbychatbar.cpp433
-rw-r--r--indra/newview/llnearbychatbar.h74
-rw-r--r--indra/newview/llnearbychathandler.cpp84
-rw-r--r--indra/newview/llnotificationalerthandler.cpp4
-rw-r--r--indra/newview/llnotificationhandlerutil.cpp2
-rw-r--r--indra/newview/llnotificationtiphandler.cpp3
-rw-r--r--indra/newview/lloutfitslist.cpp4
-rw-r--r--indra/newview/llpanelblockedlist.cpp4
-rw-r--r--indra/newview/llpanelgroup.cpp6
-rw-r--r--indra/newview/llpanelgrouplandmoney.cpp5
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp1
-rw-r--r--indra/newview/llpanellandmarks.cpp14
-rw-r--r--indra/newview/llpanellogin.cpp30
-rw-r--r--indra/newview/llpanellogin.h2
-rw-r--r--indra/newview/llpanelmaininventory.cpp13
-rw-r--r--indra/newview/llpanelmarketplaceinbox.cpp24
-rw-r--r--indra/newview/llpanelmarketplaceinbox.h4
-rw-r--r--indra/newview/llpanelmarketplaceoutbox.cpp18
-rw-r--r--indra/newview/llpanelme.cpp62
-rw-r--r--indra/newview/llpanelme.h2
-rw-r--r--indra/newview/llpanelobjectinventory.cpp1
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp9
-rw-r--r--indra/newview/llpanelpeople.cpp26
-rwxr-xr-xindra/newview/llpanelpicks.cpp14
-rw-r--r--indra/newview/llpanelplaces.cpp28
-rw-r--r--indra/newview/llpanelplaces.h7
-rwxr-xr-xindra/newview/llpanelprofile.cpp37
-rwxr-xr-xindra/newview/llpanelprofile.h5
-rw-r--r--indra/newview/llpanelteleporthistory.cpp8
-rw-r--r--indra/newview/llpanelteleporthistory.h2
-rw-r--r--indra/newview/llpaneltopinfobar.cpp9
-rw-r--r--indra/newview/llpaneltopinfobar.h2
-rw-r--r--indra/newview/llpanelwearing.cpp4
-rw-r--r--indra/newview/llscreenchannel.cpp224
-rw-r--r--indra/newview/llscreenchannel.h41
-rw-r--r--indra/newview/llscriptfloater.cpp31
-rw-r--r--indra/newview/llscriptfloater.h2
-rw-r--r--indra/newview/llsidepanelappearance.cpp5
-rw-r--r--indra/newview/llsidepanelinventory.cpp25
-rw-r--r--indra/newview/llsidepanelinventory.h2
-rw-r--r--indra/newview/llsidetray.cpp1488
-rw-r--r--indra/newview/llsidetray.h260
-rw-r--r--indra/newview/llsidetraylistener.cpp179
-rw-r--r--indra/newview/llspeakbutton.cpp165
-rw-r--r--indra/newview/llspeakbutton.h88
-rw-r--r--indra/newview/llstartup.cpp111
-rw-r--r--indra/newview/llstartup.h2
-rw-r--r--indra/newview/llstatusbar.cpp38
-rw-r--r--indra/newview/llstatusbar.h2
-rw-r--r--indra/newview/llsyswellwindow.cpp16
-rw-r--r--indra/newview/llsyswellwindow.h5
-rw-r--r--indra/newview/lltexturecache.cpp62
-rw-r--r--indra/newview/lltexturecache.h3
-rw-r--r--indra/newview/lltexturefetch.cpp5
-rw-r--r--indra/newview/lltoolbar.cpp365
-rw-r--r--indra/newview/lltoolbar.h82
-rw-r--r--indra/newview/lltoolbarview.cpp492
-rw-r--r--indra/newview/lltoolbarview.h111
-rw-r--r--indra/newview/lltooldraganddrop.cpp31
-rw-r--r--indra/newview/lltooldraganddrop.h3
-rw-r--r--indra/newview/lltoolgun.cpp4
-rw-r--r--indra/newview/llurldispatcher.cpp4
-rw-r--r--indra/newview/llviewerassettype.cpp4
-rw-r--r--indra/newview/llviewercontrol.cpp9
-rw-r--r--indra/newview/llviewerdisplay.cpp14
-rw-r--r--indra/newview/llviewerfloaterreg.cpp26
-rw-r--r--indra/newview/llviewerhelp.cpp38
-rw-r--r--indra/newview/llviewerhelp.h6
-rw-r--r--indra/newview/llviewerinventory.cpp7
-rw-r--r--indra/newview/llviewermedia.cpp3
-rw-r--r--indra/newview/llviewermenu.cpp290
-rw-r--r--indra/newview/llviewermenu.h2
-rw-r--r--indra/newview/llviewermenufile.cpp5
-rw-r--r--indra/newview/llviewermessage.cpp23
-rw-r--r--[-rwxr-xr-x]indra/newview/llviewerobject.cpp0
-rw-r--r--indra/newview/llviewerstats.cpp2
-rw-r--r--indra/newview/llviewertexteditor.cpp4
-rw-r--r--indra/newview/llviewertexturelist.cpp44
-rw-r--r--indra/newview/llviewertexturelist.h7
-rw-r--r--indra/newview/llviewerwindow.cpp172
-rw-r--r--indra/newview/llviewerwindow.h17
-rw-r--r--indra/newview/llvoavatar.cpp3
-rw-r--r--indra/newview/llvocache.cpp16
-rw-r--r--indra/newview/llvocache.h1
-rw-r--r--indra/newview/llvoicevivox.cpp17
-rw-r--r--[-rwxr-xr-x]indra/newview/llvovolume.cpp0
-rw-r--r--indra/newview/llwatchdog.cpp4
-rw-r--r--indra/newview/llwearable.cpp8
-rw-r--r--indra/newview/llweb.cpp5
-rw-r--r--indra/newview/llweb.h10
-rw-r--r--indra/newview/llworldview.cpp61
-rw-r--r--indra/newview/skins/default/colors.xml4
-rw-r--r--indra/newview/skins/default/textures/navbar/separator.pngbin0 -> 2826 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml37
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/appearance.pngbin0 -> 1205 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/avatars.pngbin0 -> 1432 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/build.pngbin0 -> 1246 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_bottom.pngbin0 -> 195 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_left.pngbin0 -> 948 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_right.pngbin0 -> 949 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/chat.pngbin0 -> 1277 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/destinations.pngbin0 -> 1297 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/gestures.pngbin0 -> 1675 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/howto.pngbin0 -> 1306 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/inventory.pngbin0 -> 1114 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/land.pngbin0 -> 1123 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/map.pngbin0 -> 1206 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/marketplace.pngbin0 -> 1311 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/mini_cart.png (renamed from indra/newview/skins/minimal/textures/bottomtray/close_over.png)bin3173 -> 2987 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/mini_map.pngbin0 -> 1766 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/move.pngbin0 -> 1328 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.pngbin0 -> 1479 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/people.pngbin0 -> 1313 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/picks.pngbin0 -> 1396 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/places.pngbin0 -> 1391 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/preferences.pngbin0 -> 1587 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/profile.pngbin0 -> 1180 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/search.pngbin0 -> 1406 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/snapshot.pngbin0 -> 1142 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/speak.pngbin0 -> 1253 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/view.pngbin0 -> 1487 bytes
-rw-r--r--indra/newview/skins/default/xui/en/floater_about.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_about_land.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_activeim.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_avatar.xml24
-rw-r--r--indra/newview/skins/default/xui/en/floater_avatar_picker.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_build_options.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_camera.xml10
-rw-r--r--indra/newview/skins/default/xui/en/floater_chat_bar.xml75
-rw-r--r--indra/newview/skins/default/xui/en/floater_critical.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_destinations.xml26
-rw-r--r--indra/newview/skins/default/xui/en/floater_gesture.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_help_browser.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_how_to.xml17
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_inventory.xml28
-rw-r--r--indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_land_holdings.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_map.xml31
-rw-r--r--indra/newview/skins/default/xui/en/floater_media_browser.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_media_settings.xml1
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/en/floater_model_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_model_wizard.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_moveview.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_my_appearance.xml24
-rw-r--r--indra/newview/skins/default/xui/en/floater_my_inventory.xml21
-rw-r--r--indra/newview/skins/default/xui/en/floater_outfit_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_people.xml44
-rw-r--r--indra/newview/skins/default/xui/en/floater_picks.xml20
-rw-r--r--indra/newview/skins/default/xui/en/floater_places.xml23
-rw-r--r--indra/newview/skins/default/xui/en/floater_postcard.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_animation.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_gesture.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_notecard.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_sound.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_texture.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_script.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_script_preview.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_script_queue.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_search.xml18
-rw-r--r--indra/newview/skins/default/xui/en/floater_snapshot.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_sound_devices.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_sys_well.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_telehub.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_button.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_toolbar.xml62
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_toybox.xml102
-rw-r--r--indra/newview/skins/default/xui/en/floater_voice_controls.xml11
-rw-r--r--indra/newview/skins/default/xui/en/floater_web_content.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_web_profile.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_world_map.xml2
-rw-r--r--indra/newview/skins/default/xui/en/main_view.xml202
-rw-r--r--indra/newview/skins/default/xui/en/menu_bottomtray.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_hide_navbar.xml13
-rw-r--r--indra/newview/skins/default/xui/en/menu_login.xml10
-rw-r--r--indra/newview/skins/default/xui/en/menu_mode_change.xml24
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_toolbars.xml29
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml325
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml54
-rw-r--r--indra/newview/skins/default/xui/en/outfit_accordion_tab.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml530
-rw-r--r--indra/newview/skins/default/xui/en/panel_chiclet_bar.xml176
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_land_money.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_login.xml27
-rw-r--r--indra/newview/skins/default/xui/en/panel_me.xml45
-rw-r--r--indra/newview/skins/default/xui/en/panel_navigation_bar.xml155
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_chat.xml (renamed from indra/newview/skins/default/xui/en/floater_nearby_chat.xml)21
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_info.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_picks.xml17
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_move.xml18
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_covenant.xml8
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_debug.xml24
-rw-r--r--indra/newview/skins/default/xui/en/panel_side_tray.xml174
-rw-r--r--indra/newview/skins/default/xui/en/panel_status_bar.xml60
-rw-r--r--indra/newview/skins/default/xui/en/panel_toast.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_toolbar_view.xml164
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_inventory.xml16
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml75
-rw-r--r--indra/newview/skins/default/xui/en/widgets/button.xml7
-rw-r--r--indra/newview/skins/default/xui/en/widgets/floater.xml4
-rw-r--r--indra/newview/skins/default/xui/en/widgets/toolbar.xml53
-rw-r--r--indra/newview/skins/default/xui/es/panel_pick_info.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about_land.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_camera.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_map.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_model_preview.xml376
-rw-r--r--indra/newview/skins/default/xui/fr/floater_model_wizard.xml122
-rw-r--r--indra/newview/skins/default/xui/fr/floater_moveview.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_sound_devices.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_stats.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tools.xml11
-rw-r--r--indra/newview/skins/default/xui/fr/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/floater_voice_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/menu_viewer.xml25
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/fr/panel_me.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/panel_navigation_bar.xml35
-rw-r--r--indra/newview/skins/default/xui/fr/panel_nearby_chat.xml (renamed from indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml)4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_general.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_move.xml31
-rw-r--r--indra/newview/skins/default/xui/fr/panel_status_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml173
-rw-r--r--indra/newview/skins/default/xui/ru/panel_login.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/panel_login.xml14
-rw-r--r--indra/newview/skins/minimal/colors.xml6
-rw-r--r--indra/newview/skins/minimal/textures/arrow_keys.pngbin6558 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.pngbin993 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.pngbin1217 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/button_separator.pngbin153 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/close_off.pngbin3184 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/close_press.pngbin3259 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/click_to_move.pngbin8188 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/textures.xml11
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/da/inspect_avatar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/da/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inventory.xml84
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/notifications.xml1831
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_login.xml48
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_people.xml94
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_status_bar.xml33
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/de/inspect_avatar.xml25
-rw-r--r--indra/newview/skins/minimal/xui/de/inspect_object.xml48
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inventory.xml86
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml16
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_login.xml25
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/notifications.xml19
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_login.xml40
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_people.xml73
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_camera.xml284
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_help_browser.xml51
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_media_browser.xml242
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml52
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml10
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_web_content.xml196
-rw-r--r--indra/newview/skins/minimal/xui/en/inspect_avatar.xml206
-rw-r--r--indra/newview/skins/minimal/xui/en/inspect_object.xml144
-rw-r--r--indra/newview/skins/minimal/xui/en/main_view.xml269
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_attachment_other.xml84
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_attachment_self.xml26
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_avatar_other.xml83
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_avatar_self.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_bottomtray.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_cof_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_edit.xml90
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_favorites.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_group_plus.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_im_well_button.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml125
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml50
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml49
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inventory.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inventory_add.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_land.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_landmark.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_login.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_mini_map.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_navbar.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_object.xml40
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_object_icon.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_participant_list.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_groups.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_nearby.xml71
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_picks.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_picks_plus.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_place.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_place_add_button.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_save_outfit.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_slurl.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_text_editor.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_topinfobar.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_agent.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_group.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_http.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_inventory.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_map.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_objectim.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_parcel.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_slapp.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_slurl.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_teleport.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_viewer.xml71
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/notification_visibility.xml27
-rw-r--r--indra/newview/skins/minimal/xui/en/notifications.xml44
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml81
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_bottomtray.xml557
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml79
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml194
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_login.xml205
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml76
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_people.xml571
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml11
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_status_bar.xml83
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml34
-rw-r--r--indra/newview/skins/minimal/xui/en/widgets/location_input.xml139
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/es/inspect_avatar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/es/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inventory.xml86
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml16
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/notifications.xml19
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_login.xml40
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_people.xml74
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/fr/inspect_avatar.xml25
-rw-r--r--indra/newview/skins/minimal/xui/fr/inspect_object.xml48
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inventory.xml86
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml16
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_login.xml25
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/notifications.xml19
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_login.xml40
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_people.xml74
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_media_browser.xml31
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/it/inspect_avatar.xml26
-rw-r--r--indra/newview/skins/minimal/xui/it/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_avatar_self.xml32
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inventory.xml87
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inventory_add.xml34
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml28
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/notifications.xml2951
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_login.xml48
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_people.xml94
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/ja/inspect_avatar.xml27
-rw-r--r--indra/newview/skins/minimal/xui/ja/inspect_object.xml48
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml32
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inventory.xml87
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml34
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_login.xml25
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml28
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/notifications.xml2995
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_login.xml48
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_people.xml94
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pl/inspect_avatar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pl/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inventory.xml84
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/notifications.xml2907
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml39
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_login.xml45
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_people.xml94
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_status_bar.xml33
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pt/inspect_avatar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pt/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inventory.xml86
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/notifications.xml19
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_login.xml40
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_people.xml74
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_status_bar.xml24
-rw-r--r--indra/newview/tests/llworldmap_test.cpp1
-rw-r--r--indra/test/lltemplatemessagebuilder_tut.cpp2
-rw-r--r--indra/test/message_tut.cpp2
-rw-r--r--indra/test/test.cpp17
-rw-r--r--indra/test_apps/llplugintest/llmediaplugintest.cpp4
-rw-r--r--indra/viewer_components/updater/llupdateinstaller.cpp4
-rw-r--r--indra/win_crash_logger/StdAfx.h1
1315 files changed, 10257 insertions, 37830 deletions
diff --git a/.hgtags b/.hgtags
index ce40e797f8..f39eadae1b 100644
--- a/.hgtags
+++ b/.hgtags
@@ -198,3 +198,12 @@ b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start
c7282e59f374ee904bd793c3c444455e3399b0c5 3.1.0-start
2657fa785bbfac115852c41bd0adaff74c2ad5da DRTVWR-93_3.1.0-beta1
2657fa785bbfac115852c41bd0adaff74c2ad5da 3.1.0-beta1
+dbaaef19266478a20654c46395300640163e98e3 DRTVWR-96_3.1.0-beta2
+dbaaef19266478a20654c46395300640163e98e3 3.1.0-beta2
+dbaaef19266478a20654c46395300640163e98e3 DRTVWR-96_3.1.0-beta2
+bc01ee26fd0f1866e266429e85f76340523e91f1 DRTVWR-96_3.1.0-beta2
+dbaaef19266478a20654c46395300640163e98e3 3.1.0-beta2
+bc01ee26fd0f1866e266429e85f76340523e91f1 3.1.0-beta2
+ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 DRTVWR-92_3.1.0-release
+ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 3.1.0-release
+a8230590e28e4f30f5105549e0e43211d9d55711 3.2.0-start
diff --git a/BuildParams b/BuildParams
index caf3cc932a..1c76b6f935 100644
--- a/BuildParams
+++ b/BuildParams
@@ -52,7 +52,7 @@ Snowstorm_viewer-project-review.login_channel = "Project Viewer - Snowstorm Team
Snowstorm_viewer-project-review.codeticket_add_context = true
# ========================================
-# Viewer Beta
+# Viewer Beta (Owner: Dessie Linden)
# ========================================
viewer-beta.viewer_channel = "Second Life Beta Viewer"
viewer-beta.login_channel = "Second Life Beta Viewer"
@@ -66,7 +66,7 @@ viewer-pre-beta.build_viewer_update_version_manager = true
# ========================================
-# Viewer Release
+# Viewer Release (Owner: Dessie Linden)
# ========================================
viewer-release.viewer_channel = "Second Life Release"
viewer-release.login_channel = "Second Life Release"
@@ -77,7 +77,7 @@ viewer-pre-release.viewer_channel = "Second Life Release"
viewer-pre-release.login_channel = "Second Life Release"
viewer-pre-release.build_debug_release_separately = true
viewer-pre-release.build_viewer_update_version_manager = true
-#viewer-pre-release.release-viewer.jira = DRTVWR-46
+#viewer-pre-release.release-viewer.jira = DRTVWR-92
# ========================================
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 4281f8045f..988410701b 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -65,15 +65,12 @@ Aimee Trescothick
Alejandro Rosenthal
VWR-1184
Aleric Inglewood
- SNOW-84
+ OPEN-38
SNOW-240
- SNOW-477
SNOW-522
SNOW-626
- SNOW-744
SNOW-756
SNOW-764
- SNOW-766
SNOW-800
VWR-10001
VWR-10579
@@ -99,8 +96,11 @@ Aleric Inglewood
VWR-24366
VWR-24519
VWR-24520
+ SNOW-84
+ SNOW-477
+ SNOW-744
+ SNOW-766
STORM-163
- STORM-864
STORM-955
STORM-960
Ales Beaumont
@@ -575,8 +575,14 @@ Jonathan Yap
STORM-1567
STORM-1572
STORM-1574
+ STORM-1579
+ STORM-1638
+ STORM-976
+ STORM-1639
+ STORM-910
+ STORM-1642
Kadah Coba
- STORM-1060
+ STORM-1060
Jondan Lundquist
Josef Munster
Josette Windlow
@@ -1134,6 +1140,7 @@ Vector Hastings
VWR-8726
Veritas Raymaker
Vex Streeter
+ STORM-1642
Viaticus Speculaas
Vick Forcella
Villain Baroque
diff --git a/indra/cmake/FindGLH.cmake b/indra/cmake/FindGLH.cmake
new file mode 100644
index 0000000000..3d16adaf03
--- /dev/null
+++ b/indra/cmake/FindGLH.cmake
@@ -0,0 +1,30 @@
+# -*- cmake -*-
+
+# - Find GLH
+# Find the Graphic Library Helper includes.
+# This module defines
+# GLH_INCLUDE_DIR, where to find glh/glh_linear.h.
+# GLH_FOUND, If false, do not try to use GLH.
+
+find_path(GLH_INCLUDE_DIR glh/glh_linear.h
+ NO_SYSTEM_ENVIRONMENT_PATH
+ )
+
+if (GLH_INCLUDE_DIR)
+ set(GLH_FOUND "YES")
+else (GLH_INCLUDE_DIR)
+ set(GLH_FOUND "NO")
+endif (GLH_INCLUDE_DIR)
+
+if (GLH_FOUND)
+ if (NOT GLH_FIND_QUIETLY)
+ message(STATUS "Found GLH: ${GLH_INCLUDE_DIR}")
+ set(GLH_FIND_QUIETLY TRUE) # Only alert us the first time
+ endif (NOT GLH_FIND_QUIETLY)
+else (GLH_FOUND)
+ if (GLH_FIND_REQUIRED)
+ message(FATAL_ERROR "Could not find GLH")
+ endif (GLH_FIND_REQUIRED)
+endif (GLH_FOUND)
+
+mark_as_advanced(GLH_INCLUDE_DIR)
diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake
new file mode 100644
index 0000000000..911dbe4017
--- /dev/null
+++ b/indra/cmake/GLH.cmake
@@ -0,0 +1,11 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+set(GLH_FIND_REQUIRED TRUE)
+set(GLH_FIND_QUIETLY TRUE)
+
+if (STANDALONE)
+ include(FindGLH)
+else (STANDALONE)
+ use_prebuilt_binary(glh_linear)
+endif (STANDALONE)
diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake
index c47e8878e9..8427928151 100644
--- a/indra/cmake/LLRender.cmake
+++ b/indra/cmake/LLRender.cmake
@@ -1,9 +1,11 @@
# -*- cmake -*-
include(FreeType)
+include(GLH)
set(LLRENDER_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llrender
+ ${GLH_INCLUDE_DIR}
)
if (SERVER AND LINUX)
diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake
index e29076c738..14dd67f32f 100644
--- a/indra/cmake/LLSharedLibs.cmake
+++ b/indra/cmake/LLSharedLibs.cmake
@@ -38,18 +38,17 @@ endmacro(ll_deploy_sharedlibs_command)
# ll_stage_sharedlib
# Performs config and adds a copy command for a sharedlib target.
macro(ll_stage_sharedlib DSO_TARGET)
- if(SHARED_LIB_STAGING_DIR)
- # target gets written to the DLL staging directory.
- # Also this directory is shared with RunBuildTest.cmake, y'know, for the tests.
- set_target_properties(${DSO_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${SHARED_LIB_STAGING_DIR})
- if(NOT WINDOWS)
- get_target_property(DSO_PATH ${DSO_TARGET} LOCATION)
- get_filename_component(DSO_FILE ${DSO_PATH} NAME)
- if(DARWIN)
- set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources)
- else(DARWIN)
- set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR})
- endif(DARWIN)
+ # target gets written to the DLL staging directory.
+ # Also this directory is shared with RunBuildTest.cmake, y'know, for the tests.
+ set_target_properties(${DSO_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${SHARED_LIB_STAGING_DIR})
+ if(NOT WINDOWS)
+ get_target_property(DSO_PATH ${DSO_TARGET} LOCATION)
+ get_filename_component(DSO_FILE ${DSO_PATH} NAME)
+ if(DARWIN)
+ set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources)
+ else(DARWIN)
+ set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR})
+ endif(DARWIN)
# *TODO - maybe make this a symbolic link? -brad
add_custom_command(
@@ -63,7 +62,6 @@ macro(ll_stage_sharedlib DSO_TARGET)
COMMENT "Copying llcommon to the staging folder."
)
endif(NOT WINDOWS)
- endif(SHARED_LIB_STAGING_DIR)
if (DARWIN)
set_target_properties(${DSO_TARGET} PROPERTIES
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index 07db6ab257..c5f9e2c579 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -2,22 +2,19 @@
include(Variables)
-
-if (NOT STANDALONE)
- set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib)
- set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release)
- set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug)
- if (WINDOWS)
- set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
- set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
- elseif (LINUX)
- set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/lib)
- set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/bin)
- elseif (DARWIN)
- set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
- set(EXE_STAGING_DIR "${CMAKE_BINARY_DIR}/sharedlibs/\$(CONFIGURATION)")
- endif (WINDOWS)
-endif (NOT STANDALONE)
+set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib)
+set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release)
+set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug)
+if (WINDOWS)
+ set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
+ set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
+elseif (LINUX)
+ set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/lib)
+ set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/bin)
+elseif (DARWIN)
+ set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
+ set(EXE_STAGING_DIR "${CMAKE_BINARY_DIR}/sharedlibs/\$(CONFIGURATION)")
+endif (WINDOWS)
# Autobuild packages must provide 'release' versions of libraries, but may provide versions for
# specific build types. AUTOBUILD_LIBS_INSTALL_DIRS lists first the build type directory and then
diff --git a/indra/integration_tests/llui_libtest/CMakeLists.txt b/indra/integration_tests/llui_libtest/CMakeLists.txt
index df47167154..1180460f4b 100644
--- a/indra/integration_tests/llui_libtest/CMakeLists.txt
+++ b/indra/integration_tests/llui_libtest/CMakeLists.txt
@@ -71,6 +71,7 @@ endif (DARWIN)
# Sort by high-level to low-level
target_link_libraries(llui_libtest
llui
+ llinventory
llmessage
${LLRENDER_LIBRARIES}
${LLIMAGE_LIBRARIES}
diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt
index ab62a0d0af..98ebdc7487 100644
--- a/indra/linux_crash_logger/CMakeLists.txt
+++ b/indra/linux_crash_logger/CMakeLists.txt
@@ -3,6 +3,7 @@
project(linux_crash_logger)
include(00-Common)
+include(GLH)
include(LLCommon)
include(LLCrashLogger)
include(LLMath)
diff --git a/indra/llaudio/llaudioengine_fmod.cpp b/indra/llaudio/llaudioengine_fmod.cpp
index 88dfdb9c24..a40de9fa68 100644
--- a/indra/llaudio/llaudioengine_fmod.cpp
+++ b/indra/llaudio/llaudioengine_fmod.cpp
@@ -673,7 +673,7 @@ bool LLAudioBufferFMOD::loadWAV(const std::string& filename)
return false;
}
- if (!LLAPRFile::isExist(filename, LL_APR_RPB))
+ if (!LLAPRFile::isExist(filename, NULL, LL_APR_RPB))
{
// File not found, abort.
return false;
diff --git a/indra/llaudio/llvorbisencode.cpp b/indra/llaudio/llvorbisencode.cpp
index 44eeea0ca4..0e0c80a456 100644
--- a/indra/llaudio/llvorbisencode.cpp
+++ b/indra/llaudio/llvorbisencode.cpp
@@ -82,7 +82,8 @@ S32 check_for_invalid_wav_formats(const std::string& in_fname, std::string& erro
error_msg.clear();
//********************************
- LLAPRFile infile(in_fname, LL_APR_RB);
+ LLAPRFile infile ;
+ infile.open(in_fname,LL_APR_RB);
//********************************
if (!infile.getFileHandle())
{
@@ -232,7 +233,8 @@ S32 encode_vorbis_file(const std::string& in_fname, const std::string& out_fname
S32 data_left = 0;
- LLAPRFile infile(in_fname,LL_APR_RB);
+ LLAPRFile infile ;
+ infile.open(in_fname,LL_APR_RB);
if (!infile.getFileHandle())
{
llwarns << "Couldn't open temporary ogg file for writing: " << in_fname
@@ -240,7 +242,8 @@ S32 encode_vorbis_file(const std::string& in_fname, const std::string& out_fname
return(LLVORBISENC_SOURCE_OPEN_ERR);
}
- LLAPRFile outfile(out_fname, LL_APR_WPB);
+ LLAPRFile outfile ;
+ outfile.open(out_fname,LL_APR_WPB);
if (!outfile.getFileHandle())
{
llwarns << "Couldn't open upload sound file for reading: " << in_fname
diff --git a/indra/llcharacter/llbvhloader.cpp b/indra/llcharacter/llbvhloader.cpp
index c3c7f03247..f3cf950afa 100644
--- a/indra/llcharacter/llbvhloader.cpp
+++ b/indra/llcharacter/llbvhloader.cpp
@@ -219,7 +219,8 @@ ELoadStatus LLBVHLoader::loadTranslationTable(const char *fileName)
//--------------------------------------------------------------------
std::string path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,fileName);
- LLAPRFile infile(path, LL_APR_R);
+ LLAPRFile infile ;
+ infile.open(path, LL_APR_R);
apr_file_t *fp = infile.getFileHandle();
if (!fp)
return E_ST_NO_XLT_FILE;
diff --git a/indra/llcharacter/llkeyframemotionparam.cpp b/indra/llcharacter/llkeyframemotionparam.cpp
index c3d5dec875..82fe8971f5 100644
--- a/indra/llcharacter/llkeyframemotionparam.cpp
+++ b/indra/llcharacter/llkeyframemotionparam.cpp
@@ -351,7 +351,8 @@ BOOL LLKeyframeMotionParam::loadMotions()
// open the file
//-------------------------------------------------------------------------
S32 fileSize = 0;
- LLAPRFile infile(path, LL_APR_R, &fileSize);
+ LLAPRFile infile ;
+ infile.open(path, LL_APR_R, NULL, &fileSize);
apr_file_t* fp = infile.getFileHandle() ;
if (!fp || fileSize == 0)
{
diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp
index dcc4ff5f0e..e0454131a5 100644
--- a/indra/llcharacter/llstatemachine.cpp
+++ b/indra/llcharacter/llstatemachine.cpp
@@ -204,7 +204,8 @@ LLFSMState* LLStateDiagram::getState(U32 state_id)
BOOL LLStateDiagram::saveDotFile(const std::string& filename)
{
- LLAPRFile outfile(filename, LL_APR_W);
+ LLAPRFile outfile ;
+ outfile.open(filename, LL_APR_W);
apr_file_t* dot_file = outfile.getFileHandle() ;
if (!dot_file)
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 6f39aba976..0a3eaec5c5 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -31,7 +31,6 @@ set(llcommon_SOURCE_FILES
llallocator_heap_profile.cpp
llapp.cpp
llapr.cpp
- llaprpool.cpp
llassettype.cpp
llavatarname.cpp
llbase32.cpp
@@ -81,7 +80,6 @@ set(llcommon_SOURCE_FILES
llrand.cpp
llrefcount.cpp
llrun.cpp
- llscopedvolatileaprpool.h
llsd.cpp
llsdserialize.cpp
llsdserialize_xml.cpp
@@ -124,7 +122,6 @@ set(llcommon_HEADER_FILES
llavatarname.h
llapp.h
llapr.h
- llaprpool.h
llassettype.h
llassoclist.h
llavatarconstants.h
diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp
index a8b7106078..ed192a9975 100644
--- a/indra/llcommon/llapp.cpp
+++ b/indra/llcommon/llapp.cpp
@@ -137,6 +137,10 @@ void LLApp::commonCtor()
mOptions.append(sd);
}
+ // Make sure we clean up APR when we exit
+ // Don't need to do this if we're cleaning up APR in the destructor
+ //atexit(ll_cleanup_apr);
+
// Set the application to this instance.
sApplication = this;
diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp
index 1e4a51102e..d1c44c9403 100644
--- a/indra/llcommon/llapr.cpp
+++ b/indra/llcommon/llapr.cpp
@@ -29,8 +29,212 @@
#include "linden_common.h"
#include "llapr.h"
#include "apr_dso.h"
-#include "llscopedvolatileaprpool.h"
+apr_pool_t *gAPRPoolp = NULL; // Global APR memory pool
+LLVolatileAPRPool *LLAPRFile::sAPRFilePoolp = NULL ; //global volatile APR memory pool.
+apr_thread_mutex_t *gLogMutexp = NULL;
+apr_thread_mutex_t *gCallStacksLogMutexp = NULL;
+
+const S32 FULL_VOLATILE_APR_POOL = 1024 ; //number of references to LLVolatileAPRPool
+
+void ll_init_apr()
+{
+ if (!gAPRPoolp)
+ {
+ // Initialize APR and create the global pool
+ apr_initialize();
+ apr_pool_create(&gAPRPoolp, NULL);
+
+ // Initialize the logging mutex
+ apr_thread_mutex_create(&gLogMutexp, APR_THREAD_MUTEX_UNNESTED, gAPRPoolp);
+ apr_thread_mutex_create(&gCallStacksLogMutexp, APR_THREAD_MUTEX_UNNESTED, gAPRPoolp);
+ }
+
+ if(!LLAPRFile::sAPRFilePoolp)
+ {
+ LLAPRFile::sAPRFilePoolp = new LLVolatileAPRPool(FALSE) ;
+ }
+}
+
+
+void ll_cleanup_apr()
+{
+ LL_INFOS("APR") << "Cleaning up APR" << LL_ENDL;
+
+ if (gLogMutexp)
+ {
+ // Clean up the logging mutex
+
+ // All other threads NEED to be done before we clean up APR, so this is okay.
+ apr_thread_mutex_destroy(gLogMutexp);
+ gLogMutexp = NULL;
+ }
+ if (gCallStacksLogMutexp)
+ {
+ // Clean up the logging mutex
+
+ // All other threads NEED to be done before we clean up APR, so this is okay.
+ apr_thread_mutex_destroy(gCallStacksLogMutexp);
+ gCallStacksLogMutexp = NULL;
+ }
+ if (gAPRPoolp)
+ {
+ apr_pool_destroy(gAPRPoolp);
+ gAPRPoolp = NULL;
+ }
+ if (LLAPRFile::sAPRFilePoolp)
+ {
+ delete LLAPRFile::sAPRFilePoolp ;
+ LLAPRFile::sAPRFilePoolp = NULL ;
+ }
+ apr_terminate();
+}
+
+//
+//
+//LLAPRPool
+//
+LLAPRPool::LLAPRPool(apr_pool_t *parent, apr_size_t size, BOOL releasePoolFlag)
+ : mParent(parent),
+ mReleasePoolFlag(releasePoolFlag),
+ mMaxSize(size),
+ mPool(NULL)
+{
+ createAPRPool() ;
+}
+
+LLAPRPool::~LLAPRPool()
+{
+ releaseAPRPool() ;
+}
+
+void LLAPRPool::createAPRPool()
+{
+ if(mPool)
+ {
+ return ;
+ }
+
+ mStatus = apr_pool_create(&mPool, mParent);
+ ll_apr_warn_status(mStatus) ;
+
+ if(mMaxSize > 0) //size is the number of blocks (which is usually 4K), NOT bytes.
+ {
+ apr_allocator_t *allocator = apr_pool_allocator_get(mPool);
+ if (allocator)
+ {
+ apr_allocator_max_free_set(allocator, mMaxSize) ;
+ }
+ }
+}
+
+void LLAPRPool::releaseAPRPool()
+{
+ if(!mPool)
+ {
+ return ;
+ }
+
+ if(!mParent || mReleasePoolFlag)
+ {
+ apr_pool_destroy(mPool) ;
+ mPool = NULL ;
+ }
+}
+
+//virtual
+apr_pool_t* LLAPRPool::getAPRPool()
+{
+ return mPool ;
+}
+
+LLVolatileAPRPool::LLVolatileAPRPool(BOOL is_local, apr_pool_t *parent, apr_size_t size, BOOL releasePoolFlag)
+ : LLAPRPool(parent, size, releasePoolFlag),
+ mNumActiveRef(0),
+ mNumTotalRef(0),
+ mMutexPool(NULL),
+ mMutexp(NULL)
+{
+ //create mutex
+ if(!is_local) //not a local apr_pool, that is: shared by multiple threads.
+ {
+ apr_pool_create(&mMutexPool, NULL); // Create a pool for mutex
+ apr_thread_mutex_create(&mMutexp, APR_THREAD_MUTEX_UNNESTED, mMutexPool);
+ }
+}
+
+LLVolatileAPRPool::~LLVolatileAPRPool()
+{
+ //delete mutex
+ if(mMutexp)
+ {
+ apr_thread_mutex_destroy(mMutexp);
+ apr_pool_destroy(mMutexPool);
+ }
+}
+
+//
+//define this virtual function to avoid any mistakenly calling LLAPRPool::getAPRPool().
+//
+//virtual
+apr_pool_t* LLVolatileAPRPool::getAPRPool()
+{
+ return LLVolatileAPRPool::getVolatileAPRPool() ;
+}
+
+apr_pool_t* LLVolatileAPRPool::getVolatileAPRPool()
+{
+ LLScopedLock lock(mMutexp) ;
+
+ mNumTotalRef++ ;
+ mNumActiveRef++ ;
+
+ if(!mPool)
+ {
+ createAPRPool() ;
+ }
+
+ return mPool ;
+}
+
+void LLVolatileAPRPool::clearVolatileAPRPool()
+{
+ LLScopedLock lock(mMutexp) ;
+
+ if(mNumActiveRef > 0)
+ {
+ mNumActiveRef--;
+ if(mNumActiveRef < 1)
+ {
+ if(isFull())
+ {
+ mNumTotalRef = 0 ;
+
+ //destroy the apr_pool.
+ releaseAPRPool() ;
+ }
+ else
+ {
+ //This does not actually free the memory,
+ //it just allows the pool to re-use this memory for the next allocation.
+ apr_pool_clear(mPool) ;
+ }
+ }
+ }
+ else
+ {
+ llassert_always(mNumActiveRef > 0) ;
+ }
+
+ //paranoia check if the pool is jammed.
+ //will remove the check before going to release.
+ llassert_always(mNumTotalRef < (FULL_VOLATILE_APR_POOL << 2)) ;
+}
+
+BOOL LLVolatileAPRPool::isFull()
+{
+ return mNumTotalRef > FULL_VOLATILE_APR_POOL ;
+}
//---------------------------------------------------------------------
//
// LLScopedLock
@@ -109,17 +313,15 @@ void ll_apr_assert_status(apr_status_t status, apr_dso_handle_t *handle)
//
LLAPRFile::LLAPRFile()
: mFile(NULL),
- mVolatileFilePoolp(NULL),
- mRegularFilePoolp(NULL)
+ mCurrentFilePoolp(NULL)
{
}
-LLAPRFile::LLAPRFile(std::string const& filename, apr_int32_t flags, S32* sizep, access_t access_type)
+LLAPRFile::LLAPRFile(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool)
: mFile(NULL),
- mVolatileFilePoolp(NULL),
- mRegularFilePoolp(NULL)
+ mCurrentFilePoolp(NULL)
{
- open(filename, flags, access_type, sizep);
+ open(filename, flags, pool);
}
LLAPRFile::~LLAPRFile()
@@ -136,58 +338,36 @@ apr_status_t LLAPRFile::close()
mFile = NULL ;
}
- if (mVolatileFilePoolp)
+ if(mCurrentFilePoolp)
{
- mVolatileFilePoolp->clearVolatileAPRPool() ;
- mVolatileFilePoolp = NULL ;
- }
-
- if (mRegularFilePoolp)
- {
- delete mRegularFilePoolp;
- mRegularFilePoolp = NULL;
+ mCurrentFilePoolp->clearVolatileAPRPool() ;
+ mCurrentFilePoolp = NULL ;
}
return ret ;
}
-apr_status_t LLAPRFile::open(std::string const& filename, apr_int32_t flags, access_t access_type, S32* sizep)
+apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool, S32* sizep)
{
- llassert_always(!mFile);
- llassert_always(!mVolatileFilePoolp && !mRegularFilePoolp);
+ apr_status_t s ;
- apr_status_t status;
- {
- apr_pool_t* apr_file_open_pool; // The use of apr_pool_t is OK here.
- // This is a temporary variable for a pool that is passed directly to apr_file_open below.
- if (access_type == short_lived)
- {
- // Use a "volatile" thread-local pool.
- mVolatileFilePoolp = &LLThreadLocalData::tldata().mVolatileAPRPool;
- // Access the pool and increment its reference count.
- // The reference count of LLVolatileAPRPool objects will be decremented
- // again in LLAPRFile::close by calling mVolatileFilePoolp->clearVolatileAPRPool().
- apr_file_open_pool = mVolatileFilePoolp->getVolatileAPRPool();
- }
- else
- {
- mRegularFilePoolp = new LLAPRPool(LLThreadLocalData::tldata().mRootPool);
- apr_file_open_pool = (*mRegularFilePoolp)();
- }
- status = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, apr_file_open_pool);
- }
- if (status != APR_SUCCESS || !mFile)
+ //check if already open some file
+ llassert_always(!mFile) ;
+ llassert_always(!mCurrentFilePoolp) ;
+
+ apr_pool_t* apr_pool = pool ? pool->getVolatileAPRPool() : NULL ;
+ s = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, getAPRFilePool(apr_pool));
+
+ if (s != APR_SUCCESS || !mFile)
{
mFile = NULL ;
- close() ;
+
if (sizep)
{
*sizep = 0;
}
- return status;
}
-
- if (sizep)
+ else if (sizep)
{
S32 file_size = 0;
apr_off_t offset = 0;
@@ -201,7 +381,49 @@ apr_status_t LLAPRFile::open(std::string const& filename, apr_int32_t flags, acc
*sizep = file_size;
}
- return status;
+ if(!mCurrentFilePoolp)
+ {
+ mCurrentFilePoolp = pool ;
+
+ if(!mFile)
+ {
+ close() ;
+ }
+ }
+
+ return s ;
+}
+
+//use gAPRPoolp.
+apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, BOOL use_global_pool)
+{
+ apr_status_t s;
+
+ //check if already open some file
+ llassert_always(!mFile) ;
+ llassert_always(!mCurrentFilePoolp) ;
+ llassert_always(use_global_pool) ; //be aware of using gAPRPoolp.
+
+ s = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, gAPRPoolp);
+ if (s != APR_SUCCESS || !mFile)
+ {
+ mFile = NULL ;
+ close() ;
+ return s;
+ }
+
+ return s;
+}
+
+apr_pool_t* LLAPRFile::getAPRFilePool(apr_pool_t* pool)
+{
+ if(!pool)
+ {
+ mCurrentFilePoolp = sAPRFilePoolp ;
+ return mCurrentFilePoolp->getVolatileAPRPool() ;
+ }
+
+ return pool ;
}
// File I/O
@@ -260,6 +482,45 @@ S32 LLAPRFile::seek(apr_seek_where_t where, S32 offset)
//
//static
+apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool)
+{
+ apr_status_t ret = APR_SUCCESS ;
+ if(file_handle)
+ {
+ ret = apr_file_close(file_handle);
+ file_handle = NULL ;
+ }
+
+ if(pool)
+ {
+ pool->clearVolatileAPRPool() ;
+ }
+
+ return ret ;
+}
+
+//static
+apr_file_t* LLAPRFile::open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags)
+{
+ apr_status_t s;
+ apr_file_t* file_handle ;
+
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+
+ s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
+ if (s != APR_SUCCESS || !file_handle)
+ {
+ ll_apr_warn_status(s);
+ LL_WARNS("APR") << " Attempting to open filename: " << filename << LL_ENDL;
+ file_handle = NULL ;
+ close(file_handle, pool) ;
+ return NULL;
+ }
+
+ return file_handle ;
+}
+
+//static
S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset)
{
if(!file_handle)
@@ -292,15 +553,13 @@ S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset)
}
//static
-S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes)
+S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool)
{
- apr_file_t* file_handle;
- LLScopedVolatileAPRPool pool;
- apr_status_t s = apr_file_open(&file_handle, filename.c_str(), APR_READ|APR_BINARY, APR_OS_DEFAULT, pool);
- if (s != APR_SUCCESS || !file_handle)
+ //*****************************************
+ apr_file_t* file_handle = open(filename, pool, APR_READ|APR_BINARY);
+ //*****************************************
+ if (!file_handle)
{
- ll_apr_warn_status(s);
- LL_WARNS("APR") << " while attempting to open file \"" << filename << '"' << LL_ENDL;
return 0;
}
@@ -330,13 +589,14 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb
}
}
- apr_file_close(file_handle);
-
+ //*****************************************
+ close(file_handle, pool) ;
+ //*****************************************
return (S32)bytes_read;
}
//static
-S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes)
+S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool)
{
apr_int32_t flags = APR_CREATE|APR_WRITE|APR_BINARY;
if (offset < 0)
@@ -345,13 +605,11 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
offset = 0;
}
- apr_file_t* file_handle;
- LLScopedVolatileAPRPool pool;
- apr_status_t s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, pool);
- if (s != APR_SUCCESS || !file_handle)
+ //*****************************************
+ apr_file_t* file_handle = open(filename, pool, flags);
+ //*****************************************
+ if (!file_handle)
{
- ll_apr_warn_status(s);
- LL_WARNS("APR") << " while attempting to open file \"" << filename << '"' << LL_ENDL;
return 0;
}
@@ -381,18 +639,21 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
}
}
- apr_file_close(file_handle);
+ //*****************************************
+ LLAPRFile::close(file_handle, pool);
+ //*****************************************
return (S32)bytes_written;
}
//static
-bool LLAPRFile::remove(const std::string& filename)
+bool LLAPRFile::remove(const std::string& filename, LLVolatileAPRPool* pool)
{
apr_status_t s;
- LLScopedVolatileAPRPool pool;
- s = apr_file_remove(filename.c_str(), pool);
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_remove(filename.c_str(), pool->getVolatileAPRPool());
+ pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS)
{
@@ -404,12 +665,13 @@ bool LLAPRFile::remove(const std::string& filename)
}
//static
-bool LLAPRFile::rename(const std::string& filename, const std::string& newname)
+bool LLAPRFile::rename(const std::string& filename, const std::string& newname, LLVolatileAPRPool* pool)
{
apr_status_t s;
- LLScopedVolatileAPRPool pool;
- s = apr_file_rename(filename.c_str(), newname.c_str(), pool);
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_rename(filename.c_str(), newname.c_str(), pool->getVolatileAPRPool());
+ pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS)
{
@@ -421,44 +683,49 @@ bool LLAPRFile::rename(const std::string& filename, const std::string& newname)
}
//static
-bool LLAPRFile::isExist(const std::string& filename, apr_int32_t flags)
+bool LLAPRFile::isExist(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags)
{
- apr_file_t* file_handle;
+ apr_file_t* apr_file;
apr_status_t s;
- LLScopedVolatileAPRPool pool;
- s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, pool);
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_open(&apr_file, filename.c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
- if (s != APR_SUCCESS || !file_handle)
+ if (s != APR_SUCCESS || !apr_file)
{
+ pool->clearVolatileAPRPool() ;
return false;
}
else
{
- apr_file_close(file_handle);
+ apr_file_close(apr_file) ;
+ pool->clearVolatileAPRPool() ;
return true;
}
}
//static
-S32 LLAPRFile::size(const std::string& filename)
+S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool)
{
- apr_file_t* file_handle;
+ apr_file_t* apr_file;
apr_finfo_t info;
apr_status_t s;
- LLScopedVolatileAPRPool pool;
- s = apr_file_open(&file_handle, filename.c_str(), APR_READ, APR_OS_DEFAULT, pool);
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_open(&apr_file, filename.c_str(), APR_READ, APR_OS_DEFAULT, pool->getVolatileAPRPool());
- if (s != APR_SUCCESS || !file_handle)
+ if (s != APR_SUCCESS || !apr_file)
{
+ pool->clearVolatileAPRPool() ;
+
return 0;
}
else
{
- apr_status_t s = apr_file_info_get(&info, APR_FINFO_SIZE, file_handle);
+ apr_status_t s = apr_file_info_get(&info, APR_FINFO_SIZE, apr_file);
- apr_file_close(file_handle) ;
+ apr_file_close(apr_file) ;
+ pool->clearVolatileAPRPool() ;
if (s == APR_SUCCESS)
{
@@ -472,29 +739,31 @@ S32 LLAPRFile::size(const std::string& filename)
}
//static
-bool LLAPRFile::makeDir(const std::string& dirname)
+bool LLAPRFile::makeDir(const std::string& dirname, LLVolatileAPRPool* pool)
{
apr_status_t s;
- LLScopedVolatileAPRPool pool;
- s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool);
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool->getVolatileAPRPool());
+ pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS)
{
ll_apr_warn_status(s);
- LL_WARNS("APR") << " while attempting to make directory: " << dirname << LL_ENDL;
+ LL_WARNS("APR") << " Attempting to make directory: " << dirname << LL_ENDL;
return false;
}
return true;
}
//static
-bool LLAPRFile::removeDir(const std::string& dirname)
+bool LLAPRFile::removeDir(const std::string& dirname, LLVolatileAPRPool* pool)
{
apr_status_t s;
- LLScopedVolatileAPRPool pool;
- s = apr_file_remove(dirname.c_str(), pool);
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_remove(dirname.c_str(), pool->getVolatileAPRPool());
+ pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS)
{
diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h
index 3f846f1314..af33ce666f 100644
--- a/indra/llcommon/llapr.h
+++ b/indra/llcommon/llapr.h
@@ -50,9 +50,71 @@
#include "apr_atomic.h"
#include "llstring.h"
+extern LL_COMMON_API apr_thread_mutex_t* gLogMutexp;
+extern apr_thread_mutex_t* gCallStacksLogMutexp;
+
struct apr_dso_handle_t;
-class LLAPRPool;
-class LLVolatileAPRPool;
+
+/**
+ * @brief initialize the common apr constructs -- apr itself, the
+ * global pool, and a mutex.
+ */
+void LL_COMMON_API ll_init_apr();
+
+/**
+ * @brief Cleanup those common apr constructs.
+ */
+void LL_COMMON_API ll_cleanup_apr();
+
+//
+//LL apr_pool
+//manage apr_pool_t, destroy allocated apr_pool in the destruction function.
+//
+class LL_COMMON_API LLAPRPool
+{
+public:
+ LLAPRPool(apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE) ;
+ virtual ~LLAPRPool() ;
+
+ virtual apr_pool_t* getAPRPool() ;
+ apr_status_t getStatus() {return mStatus ; }
+
+protected:
+ void releaseAPRPool() ;
+ void createAPRPool() ;
+
+protected:
+ apr_pool_t* mPool ; //pointing to an apr_pool
+ apr_pool_t* mParent ; //parent pool
+ apr_size_t mMaxSize ; //max size of mPool, mPool should return memory to system if allocated memory beyond this limit. However it seems not to work.
+ apr_status_t mStatus ; //status when creating the pool
+ BOOL mReleasePoolFlag ; //if set, mPool is destroyed when LLAPRPool is deleted. default value is true.
+};
+
+//
+//volatile LL apr_pool
+//which clears memory automatically.
+//so it can not hold static data or data after memory is cleared
+//
+class LL_COMMON_API LLVolatileAPRPool : public LLAPRPool
+{
+public:
+ LLVolatileAPRPool(BOOL is_local = TRUE, apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE);
+ virtual ~LLVolatileAPRPool();
+
+ /*virtual*/ apr_pool_t* getAPRPool() ; //define this virtual function to avoid any mistakenly calling LLAPRPool::getAPRPool().
+ apr_pool_t* getVolatileAPRPool() ;
+ void clearVolatileAPRPool() ;
+
+ BOOL isFull() ;
+
+private:
+ S32 mNumActiveRef ; //number of active pointers pointing to the apr_pool.
+ S32 mNumTotalRef ; //number of total pointers pointing to the apr_pool since last creating.
+
+ apr_thread_mutex_t *mMutexp;
+ apr_pool_t *mMutexPool;
+} ;
/**
* @class LLScopedLock
@@ -143,20 +205,15 @@ class LL_COMMON_API LLAPRFile : boost::noncopyable
// make this non copyable since a copy closes the file
private:
apr_file_t* mFile ;
- LLVolatileAPRPool* mVolatileFilePoolp; // (Thread local) APR pool currently in use.
- LLAPRPool* mRegularFilePoolp; // ...or a regular pool.
+ LLVolatileAPRPool *mCurrentFilePoolp ; //currently in use apr_pool, could be one of them: sAPRFilePoolp, or a temp pool.
public:
- enum access_t {
- long_lived, // Use a global pool for long-lived file accesses.
- short_lived // Use a volatile pool for short-lived file accesses.
- };
-
LLAPRFile() ;
- LLAPRFile(std::string const& filename, apr_int32_t flags, S32* sizep = NULL, access_t access_type = short_lived);
+ LLAPRFile(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool = NULL);
~LLAPRFile() ;
-
- apr_status_t open(const std::string& filename, apr_int32_t flags, access_t access_type, S32* sizep = NULL);
+
+ apr_status_t open(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool = NULL, S32* sizep = NULL);
+ apr_status_t open(const std::string& filename, apr_int32_t flags, BOOL use_global_pool); //use gAPRPoolp.
apr_status_t close() ;
// Returns actual offset, -1 if seek fails
@@ -169,24 +226,32 @@ public:
apr_file_t* getFileHandle() {return mFile;}
+private:
+ apr_pool_t* getAPRFilePool(apr_pool_t* pool) ;
+
//
//*******************************************************************************************************************************
//static components
//
+public:
+ static LLVolatileAPRPool *sAPRFilePoolp ; //a global apr_pool for APRFile, which is used only when local pool does not exist.
+
private:
+ static apr_file_t* open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags);
+ static apr_status_t close(apr_file_t* file, LLVolatileAPRPool* pool) ;
static S32 seek(apr_file_t* file, apr_seek_where_t where, S32 offset);
public:
// returns false if failure:
- static bool remove(const std::string& filename);
- static bool rename(const std::string& filename, const std::string& newname);
- static bool isExist(const std::string& filename, apr_int32_t flags = APR_READ);
- static S32 size(const std::string& filename);
- static bool makeDir(const std::string& dirname);
- static bool removeDir(const std::string& dirname);
+ static bool remove(const std::string& filename, LLVolatileAPRPool* pool = NULL);
+ static bool rename(const std::string& filename, const std::string& newname, LLVolatileAPRPool* pool = NULL);
+ static bool isExist(const std::string& filename, LLVolatileAPRPool* pool = NULL, apr_int32_t flags = APR_READ);
+ static S32 size(const std::string& filename, LLVolatileAPRPool* pool = NULL);
+ static bool makeDir(const std::string& dirname, LLVolatileAPRPool* pool = NULL);
+ static bool removeDir(const std::string& dirname, LLVolatileAPRPool* pool = NULL);
// Returns bytes read/written, 0 if read/write fails:
- static S32 readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes);
- static S32 writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes); // offset<0 means append
+ static S32 readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool = NULL);
+ static S32 writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool = NULL); // offset<0 means append
//*******************************************************************************************************************************
};
@@ -202,4 +267,6 @@ bool LL_COMMON_API ll_apr_warn_status(apr_status_t status, apr_dso_handle_t* han
void LL_COMMON_API ll_apr_assert_status(apr_status_t status);
void LL_COMMON_API ll_apr_assert_status(apr_status_t status, apr_dso_handle_t* handle);
+extern "C" LL_COMMON_API apr_pool_t* gAPRPoolp; // Global APR memory pool
+
#endif // LL_LLAPR_H
diff --git a/indra/llcommon/llaprpool.cpp b/indra/llcommon/llaprpool.cpp
deleted file mode 100644
index 6f21b61b65..0000000000
--- a/indra/llcommon/llaprpool.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/**
- * @file llaprpool.cpp
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- *
- * CHANGELOG
- * and additional copyright holders.
- *
- * 04/04/2010
- * - Initial version, written by Aleric Inglewood @ SL
- *
- * 10/11/2010
- * - Added APR_HAS_THREADS #if's to allow creation and destruction
- * of subpools by threads other than the parent pool owner.
- */
-
-#include "linden_common.h"
-
-#include "llerror.h"
-#include "llaprpool.h"
-#include "llthread.h"
-
-// Create a subpool from parent.
-void LLAPRPool::create(LLAPRPool& parent)
-{
- llassert(!mPool); // Must be non-initialized.
- mParent = &parent;
- if (!mParent) // Using the default parameter?
- {
- // By default use the root pool of the current thread.
- mParent = &LLThreadLocalData::tldata().mRootPool;
- }
- llassert(mParent->mPool); // Parent must be initialized.
-#if APR_HAS_THREADS
- // As per the documentation of APR (ie http://apr.apache.org/docs/apr/1.4/apr__pools_8h.html):
- //
- // Note that most operations on pools are not thread-safe: a single pool should only be
- // accessed by a single thread at any given time. The one exception to this rule is creating
- // a subpool of a given pool: one or more threads can safely create subpools at the same
- // time that another thread accesses the parent pool.
- //
- // In other words, it's safe for any thread to create a (sub)pool, independent of who
- // owns the parent pool.
- mOwner = apr_os_thread_current();
-#else
- mOwner = mParent->mOwner;
- llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
-#endif
- apr_status_t const apr_pool_create_status = apr_pool_create(&mPool, mParent->mPool);
- llassert_always(apr_pool_create_status == APR_SUCCESS);
- llassert(mPool); // Initialized.
- apr_pool_cleanup_register(mPool, this, &s_plain_cleanup, &apr_pool_cleanup_null);
-}
-
-// Destroy the (sub)pool, if any.
-void LLAPRPool::destroy(void)
-{
- // Only do anything if we are not already (being) destroyed.
- if (mPool)
- {
-#if !APR_HAS_THREADS
- // If we are a root pool, then every thread may destruct us: in that case
- // we have to assume that no other thread will use this pool concurrently,
- // of course. Otherwise, if we are a subpool, only the thread that owns
- // the parent may destruct us, since that is the pool that is still alive,
- // possibly being used by others and being altered here.
- llassert(!mParent || apr_os_thread_equal(mParent->mOwner, apr_os_thread_current()));
-#endif
- apr_pool_t* pool = mPool; // The use of apr_pool_t is OK here.
- // Temporary store before destroying the pool.
- mPool = NULL; // Mark that we are BEING destructed.
- apr_pool_cleanup_kill(pool, this, &s_plain_cleanup);
- apr_pool_destroy(pool);
- }
-}
-
-bool LLAPRPool::parent_is_being_destructed(void)
-{
- return mParent && (!mParent->mPool || mParent->parent_is_being_destructed());
-}
-
-LLAPRInitialization::LLAPRInitialization(void)
-{
- static bool apr_initialized = false;
-
- if (!apr_initialized)
- {
- apr_initialize();
- }
-
- apr_initialized = true;
-}
-
-bool LLAPRRootPool::sCountInitialized = false;
-apr_uint32_t volatile LLAPRRootPool::sCount;
-
-apr_thread_mutex_t* gLogMutexp;
-apr_thread_mutex_t* gCallStacksLogMutexp;
-
-LLAPRRootPool::LLAPRRootPool(void) : LLAPRInitialization(), LLAPRPool(0)
-{
- // sCountInitialized don't need locking because when we get here there is still only a single thread.
- if (!sCountInitialized)
- {
- // Initialize the logging mutex
- apr_thread_mutex_create(&gLogMutexp, APR_THREAD_MUTEX_UNNESTED, mPool);
- apr_thread_mutex_create(&gCallStacksLogMutexp, APR_THREAD_MUTEX_UNNESTED, mPool);
-
- apr_status_t status = apr_atomic_init(mPool);
- llassert_always(status == APR_SUCCESS);
- apr_atomic_set32(&sCount, 1); // Set to 1 to account for the global root pool.
- sCountInitialized = true;
-
- // Initialize thread-local APR pool support.
- // Because this recursively calls LLAPRRootPool::LLAPRRootPool(void)
- // it must be done last, so that sCount is already initialized.
- LLThreadLocalData::init();
- }
- apr_atomic_inc32(&sCount);
-}
-
-LLAPRRootPool::~LLAPRRootPool()
-{
- if (!apr_atomic_dec32(&sCount))
- {
- // The last pool was destructed. Cleanup remainder of APR.
- LL_INFOS("APR") << "Cleaning up APR" << LL_ENDL;
-
- if (gLogMutexp)
- {
- // Clean up the logging mutex
-
- // All other threads NEED to be done before we clean up APR, so this is okay.
- apr_thread_mutex_destroy(gLogMutexp);
- gLogMutexp = NULL;
- }
- if (gCallStacksLogMutexp)
- {
- // Clean up the logging mutex
-
- // All other threads NEED to be done before we clean up APR, so this is okay.
- apr_thread_mutex_destroy(gCallStacksLogMutexp);
- gCallStacksLogMutexp = NULL;
- }
-
- // Must destroy ALL, and therefore this last LLAPRRootPool, before terminating APR.
- static_cast<LLAPRRootPool*>(this)->destroy();
-
- apr_terminate();
- }
-}
-
-//static
-// Return a global root pool that is independent of LLThreadLocalData.
-// Normally you should NOT use this. Only use for early initialization
-// (before main) and deinitialization (after main).
-LLAPRRootPool& LLAPRRootPool::get(void)
-{
- static LLAPRRootPool global_APRpool(0);
- return global_APRpool;
-}
-
-void LLVolatileAPRPool::clearVolatileAPRPool()
-{
- llassert_always(mNumActiveRef > 0);
- if (--mNumActiveRef == 0)
- {
- if (isOld())
- {
- destroy();
- mNumTotalRef = 0 ;
- }
- else
- {
- // This does not actually free the memory,
- // it just allows the pool to re-use this memory for the next allocation.
- clear();
- }
- }
-
- // Paranoia check if the pool is jammed.
- llassert(mNumTotalRef < (FULL_VOLATILE_APR_POOL << 2)) ;
-}
diff --git a/indra/llcommon/llaprpool.h b/indra/llcommon/llaprpool.h
deleted file mode 100644
index bf4102c584..0000000000
--- a/indra/llcommon/llaprpool.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/**
- * @file llaprpool.h
- * @brief Implementation of LLAPRPool
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- *
- * CHANGELOG
- * and additional copyright holders.
- *
- * 04/04/2010
- * - Initial version, written by Aleric Inglewood @ SL
- *
- * 10/11/2010
- * - Added APR_HAS_THREADS #if's to allow creation and destruction
- * of subpools by threads other than the parent pool owner.
- *
- * 05/02/2011
- * - Fixed compilation on windows: Suppress compile warning 4996
- * and include <winsock2.h> before including <ws2tcpip.h>,
- * by Merov Linden @ SL.
- */
-
-#ifndef LL_LLAPRPOOL_H
-#define LL_LLAPRPOOL_H
-
-#ifdef LL_WINDOWS
-#pragma warning(push)
-#pragma warning(disable:4996)
-#include <winsock2.h>
-#include <ws2tcpip.h> // Needed before including apr_portable.h
-#pragma warning(pop)
-#endif
-
-#include "apr_portable.h"
-#include "apr_pools.h"
-#include "llerror.h"
-
-extern void ll_init_apr();
-
-/**
- * @brief A wrapper around the APR memory pool API.
- *
- * Usage of this class should be restricted to passing it to libapr-1 function calls that need it.
- *
- */
-class LL_COMMON_API LLAPRPool
-{
-protected:
- //! Pointer to the underlaying pool. NULL if not initialized.
- apr_pool_t* mPool; // The use of apr_pool_t is OK here.
- // This is the wrapped pointer that it is all about!
- //! Pointer to the parent pool, if any. Only valid when mPool is non-zero.
- LLAPRPool* mParent;
- //! The thread that owns this memory pool. Only valid when mPool is non-zero.
- apr_os_thread_t mOwner;
-
-public:
- /// Construct an uninitialized (destructed) pool.
- LLAPRPool(void) : mPool(NULL) { }
-
- /// Construct a subpool from an existing pool.
- /// This is not a copy-constructor, this class doesn't have one!
- LLAPRPool(LLAPRPool& parent) : mPool(NULL) { create(parent); }
-
- /// Destruct the memory pool (free all of its subpools and allocated memory).
- ~LLAPRPool() { destroy(); }
-
-protected:
- /// Create a pool that is allocated from the Operating System. Only used by LLAPRRootPool.
- LLAPRPool(int) : mPool(NULL), mParent(NULL), mOwner(apr_os_thread_current())
- {
- apr_status_t const apr_pool_create_status = apr_pool_create(&mPool, NULL);
- llassert_always(apr_pool_create_status == APR_SUCCESS);
- llassert(mPool);
- apr_pool_cleanup_register(mPool, this, &s_plain_cleanup, &apr_pool_cleanup_null);
- }
-
-public:
- /// Create a subpool from parent. May only be called for an uninitialized/destroyed pool.
- /// The default parameter causes the root pool of the current thread to be used.
- void create(LLAPRPool& parent = *static_cast<LLAPRPool*>(NULL));
-
- /// Destroy the (sub)pool, if any.
- void destroy(void);
-
- // Use some safebool idiom (http://www.artima.com/cppsource/safebool.html) rather than operator bool.
- typedef LLAPRPool* const LLAPRPool::* const bool_type;
- /// Return true if the pool is initialized.
- operator bool_type() const { return mPool ? &LLAPRPool::mParent : 0; }
-
- /// Painful, but we have to either provide access to this, or wrap
- /// every APR function call that needs an apr pool as argument.
- /// NEVER destroy a pool that is returned by this function!
- apr_pool_t* operator()(void) const // The use of apr_pool_t is OK here.
- // This is the accessor for passing the pool to libapr-1 functions.
- {
- llassert(mPool);
- llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
- return mPool;
- }
-
- /// Free all memory without destructing the pool.
- void clear(void)
- {
- llassert(mPool);
- llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
- apr_pool_clear(mPool);
- }
-
-// These methods would make this class 'complete' (as wrapper around the libapr
-// pool functions), but we don't use memory pools in the viewer (only when
-// we are forced to pass one to a libapr call), so don't define them in order
-// not to encourage people to use them.
-#if 0
- void* palloc(size_t size)
- {
- llassert(mPool);
- llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
- return apr_palloc(mPool, size);
- }
- void* pcalloc(size_t size)
- {
- llassert(mPool);
- llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
- return apr_pcalloc(mPool, size);
- }
-#endif
-
-private:
- bool parent_is_being_destructed(void);
- static apr_status_t s_plain_cleanup(void* userdata) { return static_cast<LLAPRPool*>(userdata)->plain_cleanup(); }
-
- apr_status_t plain_cleanup(void)
- {
- if (mPool && // We are not being destructed,
- parent_is_being_destructed()) // but our parent is.
- // This means the pool is being destructed recursively by libapr
- // because one of its parents is being destructed.
- {
- mPool = NULL; // Stop destroy() from destructing the pool again.
- }
- return APR_SUCCESS;
- }
-};
-
-class LLAPRInitialization
-{
-public:
- LLAPRInitialization(void);
-};
-
-/**
- * @brief Root memory pool (allocates memory from the operating system).
- *
- * This class should only be used by LLThreadLocalData
- * (and LLMutexRootPool when APR_HAS_THREADS isn't defined).
- */
-class LL_COMMON_API LLAPRRootPool : public LLAPRInitialization, public LLAPRPool
-{
-private:
- /// Construct a root memory pool. Should only be used by LLThreadLocalData and LLMutexRootPool.
- friend class LLThreadLocalData;
-#if !APR_HAS_THREADS
- friend class LLMutexRootPool;
-#endif
- /// Construct a root memory pool.
- /// Should only be used by LLThreadLocalData.
- LLAPRRootPool(void);
- ~LLAPRRootPool();
-
-private:
- // Keep track of how many root pools exist and when the last one is destructed.
- static bool sCountInitialized;
- static apr_uint32_t volatile sCount;
-
-public:
- // Return a global root pool that is independent of LLThreadLocalData.
- // Normally you should not use this. Only use for early initialization
- // (before main) and deinitialization (after main).
- static LLAPRRootPool& get(void);
-
-#if APR_POOL_DEBUG
- void grab_ownership(void)
- {
- // You need a patched libapr to use this.
- // See http://web.archiveorange.com/archive/v/5XO9y2zoxUOMt6Gmi1OI
- apr_pool_owner_set(mPool);
- }
-#endif
-
-private:
- // Used for constructing the Special Global Root Pool (returned by LLAPRRootPool::get).
- // It is the same as the default constructor but omits to increment sCount. As a result,
- // we must be sure that at least one other LLAPRRootPool is created before termination
- // of the application (which is the case: we create one LLAPRRootPool per thread).
- LLAPRRootPool(int) : LLAPRInitialization(), LLAPRPool(0) { }
-};
-
-/** Volatile memory pool
- *
- * 'Volatile' APR memory pool which normally only clears memory,
- * and does not destroy the pool (the same pool is reused) for
- * greater efficiency. However, as a safe guard the apr pool
- * is destructed every FULL_VOLATILE_APR_POOL uses to allow
- * the system memory to be allocated more efficiently and not
- * get scattered through RAM.
- */
-class LL_COMMON_API LLVolatileAPRPool : protected LLAPRPool
-{
-public:
- LLVolatileAPRPool(void) : mNumActiveRef(0), mNumTotalRef(0) { }
-
- void clearVolatileAPRPool(void);
-
- bool isOld(void) const { return mNumTotalRef > FULL_VOLATILE_APR_POOL; }
- bool isUnused() const { return mNumActiveRef == 0; }
-
-private:
- friend class LLScopedVolatileAPRPool;
- friend class LLAPRFile;
- apr_pool_t* getVolatileAPRPool(void) // The use of apr_pool_t is OK here.
- {
- if (!mPool) create();
- ++mNumActiveRef;
- ++mNumTotalRef;
- return LLAPRPool::operator()();
- }
-
-private:
- S32 mNumActiveRef; // Number of active uses of the pool.
- S32 mNumTotalRef; // Number of total uses of the pool since last creation.
-
- // Maximum number of references to LLVolatileAPRPool until the pool is recreated.
- static S32 const FULL_VOLATILE_APR_POOL = 1024;
-};
-
-#endif // LL_LLAPRPOOL_H
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index 145dddd543..5e566d6c7c 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -93,7 +93,8 @@ LLAssetDictionary::LLAssetDictionary()
addEntry(LLAssetType::AT_LINK, new AssetEntry("LINK", "link", "sym link", false, false, true));
addEntry(LLAssetType::AT_LINK_FOLDER, new AssetEntry("FOLDER_LINK", "link_f", "sym folder link", false, false, true));
- addEntry(LLAssetType::AT_MESH, new AssetEntry("MESH", "mesh", "mesh", false, false, false));
+ addEntry(LLAssetType::AT_MESH, new AssetEntry("MESH", "mesh", "mesh", false, false, false));
+ addEntry(LLAssetType::AT_WIDGET, new AssetEntry("WIDGET", "widget", "widget", false, false, false));
addEntry(LLAssetType::AT_NONE, new AssetEntry("NONE", "-1", NULL, FALSE, FALSE, FALSE));
};
diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
index 74ccd00324..d538accbf7 100644
--- a/indra/llcommon/llassettype.h
+++ b/indra/llcommon/llassettype.h
@@ -108,9 +108,13 @@ public:
AT_LINK_FOLDER = 25,
// Inventory folder link
+
+ AT_WIDGET = 40,
+ // UI Widget: this is *not* an inventory asset type, only a viewer side asset (e.g. button, other ui items...)
+
AT_MESH = 49,
- // Mesh data in our proprietary SLM format
-
+ // Mesh data in our proprietary SLM format
+
AT_COUNT = 50,
// +*********************************************************+
diff --git a/indra/llcommon/llcommon.cpp b/indra/llcommon/llcommon.cpp
index b8a7394852..8be9e4f4de 100644
--- a/indra/llcommon/llcommon.cpp
+++ b/indra/llcommon/llcommon.cpp
@@ -31,9 +31,17 @@
#include "llthread.h"
//static
+BOOL LLCommon::sAprInitialized = FALSE;
+
+//static
void LLCommon::initClass()
{
LLMemory::initClass();
+ if (!sAprInitialized)
+ {
+ ll_init_apr();
+ sAprInitialized = TRUE;
+ }
LLTimer::initClass();
LLThreadSafeRefCount::initThreadSafeRefCount();
// LLWorkerThread::initClass();
@@ -47,5 +55,10 @@ void LLCommon::cleanupClass()
// LLWorkerThread::cleanupClass();
LLThreadSafeRefCount::cleanupThreadSafeRefCount();
LLTimer::cleanupClass();
+ if (sAprInitialized)
+ {
+ ll_cleanup_apr();
+ sAprInitialized = FALSE;
+ }
LLMemory::cleanupClass();
}
diff --git a/indra/llcommon/llcommon.h b/indra/llcommon/llcommon.h
index 171590f3d8..ca9cad5d05 100644
--- a/indra/llcommon/llcommon.h
+++ b/indra/llcommon/llcommon.h
@@ -35,6 +35,8 @@ class LL_COMMON_API LLCommon
public:
static void initClass();
static void cleanupClass();
+private:
+ static BOOL sAprInitialized;
};
#endif
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index bda9d7c177..c35799bbb9 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -866,9 +866,6 @@ You get:
*/
-extern apr_thread_mutex_t* gLogMutexp;
-extern apr_thread_mutex_t* gCallStacksLogMutexp;
-
namespace {
bool checkLevelMap(const LevelMap& map, const std::string& key,
LLError::ELevel& level)
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
index 369f2a7a97..b3e604f8e8 100644
--- a/indra/llcommon/llerror.h
+++ b/indra/llcommon/llerror.h
@@ -296,4 +296,5 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
Such computation is done iff the message will be logged.
*/
+
#endif // LL_LLERROR_H
diff --git a/indra/llcommon/llfixedbuffer.cpp b/indra/llcommon/llfixedbuffer.cpp
index 4b5cdbe288..d394f179fb 100644
--- a/indra/llcommon/llfixedbuffer.cpp
+++ b/indra/llcommon/llfixedbuffer.cpp
@@ -30,7 +30,8 @@
LLFixedBuffer::LLFixedBuffer(const U32 max_lines)
: LLLineBuffer(),
- mMaxLines(max_lines)
+ mMaxLines(max_lines),
+ mMutex(NULL)
{
mTimer.reset();
}
diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp
index 3b27a1639a..4db1b8bd10 100644
--- a/indra/llcommon/llmemory.cpp
+++ b/indra/llcommon/llmemory.cpp
@@ -1325,7 +1325,7 @@ LLPrivateMemoryPool::LLPrivateMemoryPool(S32 type, U32 max_pool_size) :
{
if(type == STATIC_THREADED || type == VOLATILE_THREADED)
{
- mMutexp = new LLMutex ;
+ mMutexp = new LLMutex(NULL) ;
}
for(S32 i = 0 ; i < SUPER_ALLOCATION ; i++)
@@ -1821,6 +1821,7 @@ void LLPrivateMemoryPool::LLChunkHashElement::remove(LLPrivateMemoryPool::LLMemo
//class LLPrivateMemoryPoolManager
//--------------------------------------------------------------------
LLPrivateMemoryPoolManager* LLPrivateMemoryPoolManager::sInstance = NULL ;
+std::vector<LLPrivateMemoryPool*> LLPrivateMemoryPoolManager::sDanglingPoolList ;
LLPrivateMemoryPoolManager::LLPrivateMemoryPoolManager(BOOL enabled, U32 max_pool_size)
{
@@ -1848,7 +1849,7 @@ LLPrivateMemoryPoolManager::~LLPrivateMemoryPoolManager()
S32 k = 0 ;
for(mem_allocation_info_t::iterator iter = sMemAllocationTracker.begin() ; iter != sMemAllocationTracker.end() ; ++iter)
{
- llinfos << k++ << ", " << iter->second << llendl ;
+ llinfos << k++ << ", " << (U32)iter->first << " : " << iter->second << llendl ;
}
sMemAllocationTracker.clear() ;
}
@@ -1868,7 +1869,17 @@ LLPrivateMemoryPoolManager::~LLPrivateMemoryPoolManager()
{
if(mPoolList[i])
{
- delete mPoolList[i] ;
+ if(mPoolList[i]->isEmpty())
+ {
+ delete mPoolList[i] ;
+ }
+ else
+ {
+ //can not delete this pool because it has alloacted memory to be freed.
+ //move it to the dangling list.
+ sDanglingPoolList.push_back(mPoolList[i]) ;
+ }
+
mPoolList[i] = NULL ;
}
}
@@ -2004,6 +2015,32 @@ void LLPrivateMemoryPoolManager::freeMem(LLPrivateMemoryPool* poolp, void* addr
}
else
{
+ if(!sInstance) //the private memory manager is destroyed, try the dangling list
+ {
+ for(S32 i = 0 ; i < sDanglingPoolList.size(); i++)
+ {
+ if(sDanglingPoolList[i]->findChunk((char*)addr))
+ {
+ sDanglingPoolList[i]->freeMem(addr) ;
+ if(sDanglingPoolList[i]->isEmpty())
+ {
+ delete sDanglingPoolList[i] ;
+
+ if(i < sDanglingPoolList.size() - 1)
+ {
+ sDanglingPoolList[i] = sDanglingPoolList[sDanglingPoolList.size() - 1] ;
+ }
+ sDanglingPoolList.pop_back() ;
+ }
+
+ addr = NULL ;
+ break ;
+ }
+ }
+ }
+
+ llassert_always(!addr) ; //addr should be release before hitting here!
+
free(addr) ;
}
}
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
index 6967edd7e7..74cf42c894 100644
--- a/indra/llcommon/llmemory.h
+++ b/indra/llcommon/llmemory.h
@@ -400,6 +400,7 @@ private:
BOOL mPrivatePoolEnabled;
U32 mMaxPrivatePoolSize;
+ static std::vector<LLPrivateMemoryPool*> sDanglingPoolList ;
public:
//debug and statistics info.
void updateStatistics() ;
diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp
index efd9c4b68f..5dee7a3541 100644
--- a/indra/llcommon/llqueuedthread.cpp
+++ b/indra/llcommon/llqueuedthread.cpp
@@ -32,7 +32,7 @@
//============================================================================
// MAIN THREAD
-LLQueuedThread::LLQueuedThread(const std::string& name, bool threaded) :
+LLQueuedThread::LLQueuedThread(const std::string& name, bool threaded, bool should_pause) :
LLThread(name),
mThreaded(threaded),
mIdleThread(TRUE),
@@ -41,6 +41,11 @@ LLQueuedThread::LLQueuedThread(const std::string& name, bool threaded) :
{
if (mThreaded)
{
+ if(should_pause)
+ {
+ pause() ; //call this before start the thread.
+ }
+
start();
}
}
diff --git a/indra/llcommon/llqueuedthread.h b/indra/llcommon/llqueuedthread.h
index a53b22f6fc..499d13a792 100644
--- a/indra/llcommon/llqueuedthread.h
+++ b/indra/llcommon/llqueuedthread.h
@@ -149,7 +149,7 @@ public:
static handle_t nullHandle() { return handle_t(0); }
public:
- LLQueuedThread(const std::string& name, bool threaded = true);
+ LLQueuedThread(const std::string& name, bool threaded = true, bool should_pause = false);
virtual ~LLQueuedThread();
virtual void shutdown();
diff --git a/indra/llcommon/llscopedvolatileaprpool.h b/indra/llcommon/llscopedvolatileaprpool.h
deleted file mode 100644
index dbaf4edcad..0000000000
--- a/indra/llcommon/llscopedvolatileaprpool.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file llscopedvolatileaprpool.h
- * @brief Implementation of LLScopedVolatileAPRPool
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLSCOPEDVOLATILEAPRPOOL_H
-#define LL_LLSCOPEDVOLATILEAPRPOOL_H
-
-#include "llthread.h"
-
-/** Scoped volatile memory pool.
- *
- * As the LLVolatileAPRPool should never keep allocations very
- * long, its most common use is for allocations with a lifetime
- * equal to it's scope.
- *
- * This is a convenience class that makes just a little easier to type.
- */
-class LL_COMMON_API LLScopedVolatileAPRPool
-{
-private:
- LLVolatileAPRPool& mPool;
- apr_pool_t* mScopedAPRpool; // The use of apr_pool_t is OK here.
-public:
- LLScopedVolatileAPRPool() : mPool(LLThreadLocalData::tldata().mVolatileAPRPool), mScopedAPRpool(mPool.getVolatileAPRPool()) { }
- ~LLScopedVolatileAPRPool() { mPool.clearVolatileAPRPool(); }
- //! @attention Only use this to pass the underlaying pointer to a libapr-1 function that requires it.
- operator apr_pool_t*() const { return mScopedAPRpool; } // The use of apr_pool_t is OK here.
-};
-
-#endif
diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp
index bf216d41bf..be9db53906 100644
--- a/indra/llcommon/llsdserialize_xml.cpp
+++ b/indra/llcommon/llsdserialize_xml.cpp
@@ -354,7 +354,6 @@ static unsigned get_till_eol(std::istream& input, char *buf, unsigned bufsize)
return count;
}
-LLFastTimer::DeclareTimer FTM_SD_PARSE_READ_STREAM("LLSD Read Stream");
S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
{
XML_Status status;
@@ -374,7 +373,7 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
{
break;
}
- { LLFastTimer _(FTM_SD_PARSE_READ_STREAM);
+ {
count = get_till_eol(input, (char *)buffer, BUFFER_SIZE);
if (!count)
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index bdde1b5c48..4063cc730b 100644
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -36,12 +36,6 @@
#include <sched.h>
#endif
-#if !LL_DARWIN
-U32 ll_thread_local local_thread_ID = 0;
-#endif
-
-U32 LLThread::sIDIter = 0;
-
//----------------------------------------------------------------------------
// Usage:
// void run_func(LLThread* thread)
@@ -62,6 +56,12 @@ U32 LLThread::sIDIter = 0;
//
//----------------------------------------------------------------------------
+#if !LL_DARWIN
+U32 ll_thread_local sThreadID = 0;
+#endif
+
+U32 LLThread::sIDIter = 0;
+
LL_COMMON_API void assert_main_thread()
{
static U32 s_thread_id = LLThread::currentID();
@@ -79,12 +79,9 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap
LLThread *threadp = (LLThread *)datap;
#if !LL_DARWIN
- local_thread_ID = threadp->mID;
+ sThreadID = threadp->mID;
#endif
- // Create a thread local data.
- LLThreadLocalData::create(threadp);
-
// Run the user supplied function
threadp->run();
@@ -97,22 +94,40 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap
}
-LLThread::LLThread(std::string const& name) :
- mPaused(false),
+LLThread::LLThread(const std::string& name, apr_pool_t *poolp) :
+ mPaused(FALSE),
mName(name),
mAPRThreadp(NULL),
- mStatus(STOPPED),
- mThreadLocalData(NULL)
+ mStatus(STOPPED)
{
- mID = ++sIDIter; //flaw: assume this is called only in the main thread!
+ mID = ++sIDIter;
- mRunCondition = new LLCondition;
+ // Thread creation probably CAN be paranoid about APR being initialized, if necessary
+ if (poolp)
+ {
+ mIsLocalPool = FALSE;
+ mAPRPoolp = poolp;
+ }
+ else
+ {
+ mIsLocalPool = TRUE;
+ apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread
+ }
+ mRunCondition = new LLCondition(mAPRPoolp);
+
+ mLocalAPRFilePoolp = NULL ;
}
LLThread::~LLThread()
{
shutdown();
+
+ if(mLocalAPRFilePoolp)
+ {
+ delete mLocalAPRFilePoolp ;
+ mLocalAPRFilePoolp = NULL ;
+ }
}
void LLThread::shutdown()
@@ -149,7 +164,7 @@ void LLThread::shutdown()
if (!isStopped())
{
// This thread just wouldn't stop, even though we gave it time
- //llwarns << "LLThread::shutdown() exiting thread before clean exit!" << llendl;
+ //llwarns << "LLThread::~LLThread() exiting thread before clean exit!" << llendl;
// Put a stake in its heart.
apr_thread_exit(mAPRThreadp, -1);
return;
@@ -159,8 +174,15 @@ void LLThread::shutdown()
delete mRunCondition;
mRunCondition = 0;
+
+ if (mIsLocalPool && mAPRPoolp)
+ {
+ apr_pool_destroy(mAPRPoolp);
+ mAPRPoolp = 0;
+ }
}
+
void LLThread::start()
{
llassert(isStopped());
@@ -169,7 +191,7 @@ void LLThread::start()
mStatus = RUNNING;
apr_status_t status =
- apr_thread_create(&mAPRThreadp, NULL, staticRun, (void *)this, tldata().mRootPool());
+ apr_thread_create(&mAPRThreadp, NULL, staticRun, (void *)this, mAPRPoolp);
if(status == APR_SUCCESS)
{
@@ -194,7 +216,7 @@ void LLThread::pause()
if (!mPaused)
{
// this will cause the thread to stop execution as soon as checkPause() is called
- mPaused = true; // Does not need to be atomic since this is only set/unset from the main thread
+ mPaused = 1; // Does not need to be atomic since this is only set/unset from the main thread
}
}
@@ -202,7 +224,7 @@ void LLThread::unpause()
{
if (mPaused)
{
- mPaused = false;
+ mPaused = 0;
}
wake(); // wake up the thread if necessary
@@ -279,76 +301,116 @@ void LLThread::wakeLocked()
}
}
-#ifdef SHOW_ASSERT
-// This allows the use of llassert(is_main_thread()) to assure the current thread is the main thread.
-static apr_os_thread_t main_thread_id;
-LL_COMMON_API bool is_main_thread(void) { return apr_os_thread_equal(main_thread_id, apr_os_thread_current()); }
-#endif
-
-// The thread private handle to access the LLThreadLocalData instance.
-apr_threadkey_t* LLThreadLocalData::sThreadLocalDataKey;
+//============================================================================
-//static
-void LLThreadLocalData::init(void)
+LLMutex::LLMutex(apr_pool_t *poolp) :
+ mAPRMutexp(NULL), mCount(0), mLockingThread(NO_THREAD)
{
- // Only do this once.
- if (sThreadLocalDataKey)
+ //if (poolp)
+ //{
+ // mIsLocalPool = FALSE;
+ // mAPRPoolp = poolp;
+ //}
+ //else
{
- return;
+ mIsLocalPool = TRUE;
+ apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread
}
+ apr_thread_mutex_create(&mAPRMutexp, APR_THREAD_MUTEX_UNNESTED, mAPRPoolp);
+}
- apr_status_t status = apr_threadkey_private_create(&sThreadLocalDataKey, &LLThreadLocalData::destroy, LLAPRRootPool::get()());
- ll_apr_assert_status(status); // Or out of memory, or system-imposed limit on the
- // total number of keys per process {PTHREAD_KEYS_MAX}
- // has been exceeded.
-
- // Create the thread-local data for the main thread (this function is called by the main thread).
- LLThreadLocalData::create(NULL);
-#ifdef SHOW_ASSERT
- // This function is called by the main thread.
- main_thread_id = apr_os_thread_current();
+LLMutex::~LLMutex()
+{
+#if MUTEX_DEBUG
+ //bad assertion, the subclass LLSignal might be "locked", and that's OK
+ //llassert_always(!isLocked()); // better not be locked!
#endif
+ apr_thread_mutex_destroy(mAPRMutexp);
+ mAPRMutexp = NULL;
+ if (mIsLocalPool)
+ {
+ apr_pool_destroy(mAPRPoolp);
+ }
}
-// This is called once for every thread when the thread is destructed.
-//static
-void LLThreadLocalData::destroy(void* thread_local_data)
+
+void LLMutex::lock()
{
- delete static_cast<LLThreadLocalData*>(thread_local_data);
+#if LL_DARWIN
+ if (mLockingThread == LLThread::currentID())
+#else
+ if (mLockingThread == sThreadID)
+#endif
+ { //redundant lock
+ mCount++;
+ return;
+ }
+
+ apr_thread_mutex_lock(mAPRMutexp);
+
+#if MUTEX_DEBUG
+ // Have to have the lock before we can access the debug info
+ U32 id = LLThread::currentID();
+ if (mIsLocked[id] != FALSE)
+ llerrs << "Already locked in Thread: " << id << llendl;
+ mIsLocked[id] = TRUE;
+#endif
+
+#if LL_DARWIN
+ mLockingThread = LLThread::currentID();
+#else
+ mLockingThread = sThreadID;
+#endif
}
-//static
-void LLThreadLocalData::create(LLThread* threadp)
+void LLMutex::unlock()
{
- LLThreadLocalData* new_tld = new LLThreadLocalData;
- if (threadp)
- {
- threadp->mThreadLocalData = new_tld;
+ if (mCount > 0)
+ { //not the root unlock
+ mCount--;
+ return;
}
- apr_status_t status = apr_threadkey_private_set(new_tld, sThreadLocalDataKey);
- llassert_always(status == APR_SUCCESS);
+
+#if MUTEX_DEBUG
+ // Access the debug info while we have the lock
+ U32 id = LLThread::currentID();
+ if (mIsLocked[id] != TRUE)
+ llerrs << "Not locked in Thread: " << id << llendl;
+ mIsLocked[id] = FALSE;
+#endif
+
+ mLockingThread = NO_THREAD;
+ apr_thread_mutex_unlock(mAPRMutexp);
}
-//static
-LLThreadLocalData& LLThreadLocalData::tldata(void)
+bool LLMutex::isLocked()
{
- if (!sThreadLocalDataKey)
+ apr_status_t status = apr_thread_mutex_trylock(mAPRMutexp);
+ if (APR_STATUS_IS_EBUSY(status))
{
- LLThreadLocalData::init();
+ return true;
}
+ else
+ {
+ apr_thread_mutex_unlock(mAPRMutexp);
+ return false;
+ }
+}
- void* data;
- apr_status_t status = apr_threadkey_private_get(&data, sThreadLocalDataKey);
- llassert_always(status == APR_SUCCESS);
- return *static_cast<LLThreadLocalData*>(data);
+U32 LLMutex::lockingThread() const
+{
+ return mLockingThread;
}
//============================================================================
-LLCondition::LLCondition(LLAPRPool& parent) : LLMutex(parent)
+LLCondition::LLCondition(apr_pool_t *poolp) :
+ LLMutex(poolp)
{
- apr_thread_cond_create(&mAPRCondp, mPool());
+ // base class (LLMutex) has already ensured that mAPRPoolp is set up.
+
+ apr_thread_cond_create(&mAPRCondp, mAPRPoolp);
}
@@ -361,6 +423,15 @@ LLCondition::~LLCondition()
void LLCondition::wait()
{
+ if (!isLocked())
+ { //mAPRMutexp MUST be locked before calling apr_thread_cond_wait
+ apr_thread_mutex_lock(mAPRMutexp);
+#if MUTEX_DEBUG
+ // avoid asserts on destruction in non-release builds
+ U32 id = LLThread::currentID();
+ mIsLocked[id] = TRUE;
+#endif
+ }
apr_thread_cond_wait(mAPRCondp, mAPRMutexp);
}
@@ -375,44 +446,6 @@ void LLCondition::broadcast()
}
//============================================================================
-LLMutexBase::LLMutexBase() :
- mLockingThread(NO_THREAD),
- mCount(0)
-{
-}
-
-void LLMutexBase::lock()
-{
-#if LL_DARWIN
- if (mLockingThread == LLThread::currentID())
-#else
- if (mLockingThread == local_thread_ID)
-#endif
- { //redundant lock
- mCount++;
- return;
- }
-
- apr_thread_mutex_lock(mAPRMutexp);
-
-#if LL_DARWIN
- mLockingThread = LLThread::currentID();
-#else
- mLockingThread = local_thread_ID;
-#endif
-}
-
-void LLMutexBase::unlock()
-{
- if (mCount > 0)
- { //not the root unlock
- mCount--;
- return;
- }
- mLockingThread = NO_THREAD;
-
- apr_thread_mutex_unlock(mAPRMutexp);
-}
//----------------------------------------------------------------------------
@@ -424,7 +457,7 @@ void LLThreadSafeRefCount::initThreadSafeRefCount()
{
if (!sMutex)
{
- sMutex = new LLMutex;
+ sMutex = new LLMutex(0);
}
}
diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h
index b631b96252..40291a2569 100644
--- a/indra/llcommon/llthread.h
+++ b/indra/llcommon/llthread.h
@@ -29,13 +29,7 @@
#include "llapp.h"
#include "llapr.h"
-#include "llmemory.h"
#include "apr_thread_cond.h"
-#include "llaprpool.h"
-
-#ifdef SHOW_ASSERT
-extern LL_COMMON_API bool is_main_thread(void);
-#endif
class LLThread;
class LLMutex;
@@ -47,22 +41,6 @@ class LLCondition;
#define ll_thread_local __thread
#endif
-class LL_COMMON_API LLThreadLocalData
-{
-private:
- static apr_threadkey_t* sThreadLocalDataKey;
-
-public:
- // Thread-local memory pools.
- LLAPRRootPool mRootPool;
- LLVolatileAPRPool mVolatileAPRPool;
-
- static void init(void);
- static void destroy(void* thread_local_data);
- static void create(LLThread* pthread);
- static LLThreadLocalData& tldata(void);
-};
-
class LL_COMMON_API LLThread
{
private:
@@ -76,7 +54,7 @@ public:
QUITTING= 2 // Someone wants this thread to quit
} EThreadStatus;
- LLThread(std::string const& name);
+ LLThread(const std::string& name, apr_pool_t *poolp = NULL);
virtual ~LLThread(); // Warning! You almost NEVER want to destroy a thread unless it's in the STOPPED state.
virtual void shutdown(); // stops the thread
@@ -91,7 +69,7 @@ public:
// Called from MAIN THREAD.
void pause();
void unpause();
- bool isPaused() { return isStopped() || mPaused; }
+ bool isPaused() { return isStopped() || mPaused == TRUE; }
// Cause the thread to wake up and check its condition
void wake();
@@ -105,11 +83,13 @@ public:
// this kicks off the apr thread
void start(void);
- // Return thread-local data for the current thread.
- static LLThreadLocalData& tldata(void) { return LLThreadLocalData::tldata(); }
+ apr_pool_t *getAPRPool() { return mAPRPoolp; }
+ LLVolatileAPRPool* getLocalAPRFilePool() { return mLocalAPRFilePoolp ; }
+
+ U32 getID() const { return mID; }
private:
- bool mPaused;
+ BOOL mPaused;
// static function passed to APR thread creation routine
static void *APR_THREAD_FUNC staticRun(apr_thread_t *apr_threadp, void *datap);
@@ -119,11 +99,15 @@ protected:
LLCondition* mRunCondition;
apr_thread_t *mAPRThreadp;
+ apr_pool_t *mAPRPoolp;
+ BOOL mIsLocalPool;
EThreadStatus mStatus;
U32 mID;
-
- friend void LLThreadLocalData::create(LLThread* threadp);
- LLThreadLocalData* mThreadLocalData;
+
+ //a local apr_pool for APRFile operations in this thread. If it exists, LLAPRFile::sAPRFilePoolp should not be used.
+ //Note: this pool is used by APRFile ONLY, do NOT use it for any other purposes.
+ // otherwise it will cause severe memory leaking!!! --bao
+ LLVolatileAPRPool *mLocalAPRFilePoolp ;
void setQuitting();
@@ -153,15 +137,7 @@ protected:
#define MUTEX_DEBUG (LL_DEBUG || LL_RELEASE_WITH_DEBUG_INFO)
-#ifdef MUTEX_DEBUG
-// We really shouldn't be using recursive locks. Make sure of that in debug mode.
-#define MUTEX_FLAG APR_THREAD_MUTEX_UNNESTED
-#else
-// Use the fastest platform-optimal lock behavior (can be recursive or non-recursive).
-#define MUTEX_FLAG APR_THREAD_MUTEX_DEFAULT
-#endif
-
-class LL_COMMON_API LLMutexBase
+class LL_COMMON_API LLMutex
{
public:
typedef enum
@@ -169,74 +145,32 @@ public:
NO_THREAD = 0xFFFFFFFF
} e_locking_thread;
- LLMutexBase() ;
-
- void lock() ;
- void unlock() ;
- // Returns true if lock was obtained successfully.
- bool trylock() { return !APR_STATUS_IS_EBUSY(apr_thread_mutex_trylock(mAPRMutexp)); }
-
- // non-blocking, but does do a lock/unlock so not free
- bool isLocked() { bool is_not_locked = trylock(); if (is_not_locked) unlock(); return !is_not_locked; }
-
+ LLMutex(apr_pool_t *apr_poolp); // NULL pool constructs a new pool for the mutex
+ virtual ~LLMutex();
+
+ void lock(); // blocks
+ void unlock();
+ bool isLocked(); // non-blocking, but does do a lock/unlock so not free
+ U32 lockingThread() const; //get ID of locking thread
+
protected:
- // mAPRMutexp is initialized and uninitialized in the derived class.
- apr_thread_mutex_t* mAPRMutexp;
+ apr_thread_mutex_t *mAPRMutexp;
mutable U32 mCount;
mutable U32 mLockingThread;
-};
-
-class LL_COMMON_API LLMutex : public LLMutexBase
-{
-public:
- LLMutex(LLAPRPool& parent = LLThread::tldata().mRootPool) : mPool(parent)
- {
- apr_thread_mutex_create(&mAPRMutexp, MUTEX_FLAG, mPool());
- }
- ~LLMutex()
- {
- //this assertion erroneously triggers whenever an LLCondition is destroyed
- //llassert(!isLocked()); // better not be locked!
- apr_thread_mutex_destroy(mAPRMutexp);
- mAPRMutexp = NULL;
- }
-
-protected:
- LLAPRPool mPool;
-};
-
-#if APR_HAS_THREADS
-// No need to use a root pool in this case.
-typedef LLMutex LLMutexRootPool;
-#else // APR_HAS_THREADS
-class LL_COMMON_API LLMutexRootPool : public LLMutexBase
-{
-public:
- LLMutexRootPool(void)
- {
- apr_thread_mutex_create(&mAPRMutexp, MUTEX_FLAG, mRootPool());
- }
- ~LLMutexRootPool()
- {
-#if APR_POOL_DEBUG
- // It is allowed to destruct root pools from a different thread.
- mRootPool.grab_ownership();
+
+ apr_pool_t *mAPRPoolp;
+ BOOL mIsLocalPool;
+
+#if MUTEX_DEBUG
+ std::map<U32, BOOL> mIsLocked;
#endif
- llassert(!isLocked());
- apr_thread_mutex_destroy(mAPRMutexp);
- mAPRMutexp = NULL;
- }
-
-protected:
- LLAPRRootPool mRootPool;
};
-#endif // APR_HAS_THREADS
// Actually a condition/mutex pair (since each condition needs to be associated with a mutex).
class LL_COMMON_API LLCondition : public LLMutex
{
public:
- LLCondition(LLAPRPool& parent = LLThread::tldata().mRootPool);
+ LLCondition(apr_pool_t *apr_poolp); // Defaults to global pool, could use the thread pool as well.
~LLCondition();
void wait(); // blocks
@@ -247,10 +181,10 @@ protected:
apr_thread_cond_t *mAPRCondp;
};
-class LL_COMMON_API LLMutexLock
+class LLMutexLock
{
public:
- LLMutexLock(LLMutexBase* mutex)
+ LLMutexLock(LLMutex* mutex)
{
mMutex = mutex;
mMutex->lock();
@@ -260,7 +194,7 @@ public:
mMutex->unlock();
}
private:
- LLMutexBase* mMutex;
+ LLMutex* mMutex;
};
//============================================================================
diff --git a/indra/llcommon/llthreadsafequeue.cpp b/indra/llcommon/llthreadsafequeue.cpp
index 05d24944f3..8a73e632a9 100644
--- a/indra/llcommon/llthreadsafequeue.cpp
+++ b/indra/llcommon/llthreadsafequeue.cpp
@@ -34,11 +34,19 @@
//-----------------------------------------------------------------------------
-LLThreadSafeQueueImplementation::LLThreadSafeQueueImplementation(unsigned int capacity):
+LLThreadSafeQueueImplementation::LLThreadSafeQueueImplementation(apr_pool_t * pool, unsigned int capacity):
+ mOwnsPool(pool == 0),
+ mPool(pool),
mQueue(0)
{
- mPool.create();
- apr_status_t status = apr_queue_create(&mQueue, capacity, mPool());
+ if(mOwnsPool) {
+ apr_status_t status = apr_pool_create(&mPool, 0);
+ if(status != APR_SUCCESS) throw LLThreadSafeQueueError("failed to allocate pool");
+ } else {
+ ; // No op.
+ }
+
+ apr_status_t status = apr_queue_create(&mQueue, capacity, mPool);
if(status != APR_SUCCESS) throw LLThreadSafeQueueError("failed to allocate queue");
}
@@ -51,6 +59,7 @@ LLThreadSafeQueueImplementation::~LLThreadSafeQueueImplementation()
" elements;" << "memory will be leaked" << LL_ENDL;
apr_queue_term(mQueue);
}
+ if(mOwnsPool && (mPool != 0)) apr_pool_destroy(mPool);
}
diff --git a/indra/llcommon/llthreadsafequeue.h b/indra/llcommon/llthreadsafequeue.h
index 43d0b396f2..58cac38769 100644
--- a/indra/llcommon/llthreadsafequeue.h
+++ b/indra/llcommon/llthreadsafequeue.h
@@ -30,9 +30,9 @@
#include <string>
#include <stdexcept>
-#include "llaprpool.h"
+struct apr_pool_t; // From apr_pools.h
class LLThreadSafeQueueImplementation; // See below.
@@ -75,7 +75,7 @@ struct apr_queue_t; // From apr_queue.h
class LL_COMMON_API LLThreadSafeQueueImplementation
{
public:
- LLThreadSafeQueueImplementation(unsigned int capacity);
+ LLThreadSafeQueueImplementation(apr_pool_t * pool, unsigned int capacity);
~LLThreadSafeQueueImplementation();
void pushFront(void * element);
bool tryPushFront(void * element);
@@ -84,7 +84,8 @@ public:
size_t size();
private:
- LLAPRPool mPool; // The pool used for mQueue.
+ bool mOwnsPool;
+ apr_pool_t * mPool;
apr_queue_t * mQueue;
};
@@ -98,8 +99,9 @@ class LLThreadSafeQueue
public:
typedef ElementT value_type;
- // Constructor.
- LLThreadSafeQueue(unsigned int capacity = 1024);
+ // If the pool is set to NULL one will be allocated and managed by this
+ // queue.
+ LLThreadSafeQueue(apr_pool_t * pool = 0, unsigned int capacity = 1024);
// Add an element to the front of queue (will block if the queue has
// reached capacity).
@@ -137,8 +139,8 @@ private:
template<typename ElementT>
-LLThreadSafeQueue<ElementT>::LLThreadSafeQueue(unsigned int capacity) :
- mImplementation(capacity)
+LLThreadSafeQueue<ElementT>::LLThreadSafeQueue(apr_pool_t * pool, unsigned int capacity):
+ mImplementation(pool, capacity)
{
; // No op.
}
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index e4ad7f4f54..aa37a03ef8 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -28,7 +28,7 @@
#define LL_LLVERSIONVIEWER_H
const S32 LL_VERSION_MAJOR = 3;
-const S32 LL_VERSION_MINOR = 1;
+const S32 LL_VERSION_MINOR = 2;
const S32 LL_VERSION_PATCH = 1;
const S32 LL_VERSION_BUILD = 0;
diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp
index 6b308bb917..4988bdf570 100644
--- a/indra/llcommon/llworkerthread.cpp
+++ b/indra/llcommon/llworkerthread.cpp
@@ -34,10 +34,15 @@
//============================================================================
// Run on MAIN thread
-LLWorkerThread::LLWorkerThread(const std::string& name, bool threaded) :
- LLQueuedThread(name, threaded)
+LLWorkerThread::LLWorkerThread(const std::string& name, bool threaded, bool should_pause) :
+ LLQueuedThread(name, threaded, should_pause)
{
- mDeleteMutex = new LLMutex;
+ mDeleteMutex = new LLMutex(NULL);
+
+ if(!mLocalAPRFilePoolp)
+ {
+ mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
+ }
}
LLWorkerThread::~LLWorkerThread()
@@ -199,6 +204,7 @@ LLWorkerClass::LLWorkerClass(LLWorkerThread* workerthread, const std::string& na
mWorkerClassName(name),
mRequestHandle(LLWorkerThread::nullHandle()),
mRequestPriority(LLWorkerThread::PRIORITY_NORMAL),
+ mMutex(NULL),
mWorkFlags(0)
{
if (!mWorkerThread)
diff --git a/indra/llcommon/llworkerthread.h b/indra/llcommon/llworkerthread.h
index bef5ef53fe..78a4781d15 100644
--- a/indra/llcommon/llworkerthread.h
+++ b/indra/llcommon/llworkerthread.h
@@ -83,7 +83,7 @@ private:
LLMutex* mDeleteMutex;
public:
- LLWorkerThread(const std::string& name, bool threaded = true);
+ LLWorkerThread(const std::string& name, bool threaded = true, bool should_pause = false);
~LLWorkerThread();
/*virtual*/ S32 update(U32 max_time_ms);
@@ -94,6 +94,7 @@ public:
private:
void deleteWorker(LLWorkerClass* workerclass); // schedule for deletion
+
};
//============================================================================
@@ -193,7 +194,7 @@ protected:
U32 mRequestPriority; // last priority set
private:
- LLMutexRootPool mMutex; // Use LLMutexRootPool since this object is created and destructed by multiple threads.
+ LLMutex mMutex;
LLAtomicU32 mWorkFlags;
};
diff --git a/indra/llcommon/stdenums.h b/indra/llcommon/stdenums.h
index 556eff8370..40b3364b36 100644
--- a/indra/llcommon/stdenums.h
+++ b/indra/llcommon/stdenums.h
@@ -49,8 +49,9 @@ enum EDragAndDropType
DAD_ANIMATION = 12,
DAD_GESTURE = 13,
DAD_LINK = 14,
- DAD_MESH = 15,
- DAD_COUNT = 16, // number of types in this enum
+ DAD_MESH = 15,
+ DAD_WIDGET = 16,
+ DAD_COUNT = 17, // number of types in this enum
};
// Reasons for drags to be denied.
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
index 514ef6011f..331a1692ee 100644
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -414,7 +414,8 @@ bool LLCrashLogger::init()
return false;
}
- gServicePump = new LLPumpIO;
+ gServicePump = new LLPumpIO(gAPRPoolp);
+ gServicePump->prime(gAPRPoolp);
LLHTTPClient::setPump(*gServicePump);
//If we've opened the crash logger, assume we can delete the marker file if it exists
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 23adbf68c8..c239e3df88 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -53,7 +53,7 @@ LLPrivateMemoryPool* LLImageBase::sPrivatePoolp = NULL ;
//static
void LLImage::initClass()
{
- sMutex = new LLMutex;
+ sMutex = new LLMutex(NULL);
LLImageBase::createPrivatePool() ;
}
@@ -1566,7 +1566,8 @@ BOOL LLImageFormatted::load(const std::string &filename)
resetLastError();
S32 file_size = 0;
- LLAPRFile infile(filename, LL_APR_RB, &file_size);
+ LLAPRFile infile ;
+ infile.open(filename, LL_APR_RB, NULL, &file_size);
apr_file_t* apr_file = infile.getFileHandle();
if (!apr_file)
{
@@ -1601,7 +1602,8 @@ BOOL LLImageFormatted::save(const std::string &filename)
{
resetLastError();
- LLAPRFile outfile(filename, LL_APR_WB);
+ LLAPRFile outfile ;
+ outfile.open(filename, LL_APR_WB);
if (!outfile.getFileHandle())
{
setLastError("Unable to open file for writing", filename);
diff --git a/indra/llimage/llimagedimensionsinfo.cpp b/indra/llimage/llimagedimensionsinfo.cpp
index 926c749145..c6bfa50b40 100644
--- a/indra/llimage/llimagedimensionsinfo.cpp
+++ b/indra/llimage/llimagedimensionsinfo.cpp
@@ -40,7 +40,7 @@ bool LLImageDimensionsInfo::load(const std::string& src_filename,U32 codec)
mSrcFilename = src_filename;
S32 file_size = 0;
- apr_status_t s = mInfile.open(src_filename, LL_APR_RB, LLAPRFile::long_lived, &file_size);
+ apr_status_t s = mInfile.open(src_filename, LL_APR_RB, NULL, &file_size);
if (s != APR_SUCCESS)
{
diff --git a/indra/llimage/llimagedxt.cpp b/indra/llimage/llimagedxt.cpp
index 2867f5e6f0..34c6793522 100644
--- a/indra/llimage/llimagedxt.cpp
+++ b/indra/llimage/llimagedxt.cpp
@@ -26,6 +26,7 @@
#include "linden_common.h"
#include "llimagedxt.h"
+#include "llmemory.h"
//static
void LLImageDXT::checkMinWidthHeight(EFileFormat format, S32& width, S32& height)
diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp
index 8c5dc63e9d..cc8cb66d73 100644
--- a/indra/llimage/llimagej2c.cpp
+++ b/indra/llimage/llimagej2c.cpp
@@ -29,6 +29,7 @@
#include "llmemtype.h"
#include "lltimer.h"
#include "llmath.h"
+#include "llmemory.h"
typedef LLImageJ2CImpl* (*CreateLLImageJ2CFunction)();
typedef void (*DestroyLLImageJ2CFunction)(LLImageJ2CImpl*);
@@ -370,7 +371,8 @@ BOOL LLImageJ2C::loadAndValidate(const std::string &filename)
resetLastError();
S32 file_size = 0;
- LLAPRFile infile(filename, LL_APR_RB, &file_size);
+ LLAPRFile infile ;
+ infile.open(filename, LL_APR_RB, NULL, &file_size);
apr_file_t* apr_file = infile.getFileHandle() ;
if (!apr_file)
{
diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp
index 2c6d6f31ea..28dc3bd313 100644
--- a/indra/llimage/llimageworker.cpp
+++ b/indra/llimage/llimageworker.cpp
@@ -35,18 +35,20 @@
LLImageDecodeThread::LLImageDecodeThread(bool threaded)
: LLQueuedThread("imagedecode", threaded)
{
+ mCreationMutex = new LLMutex(getAPRPool());
}
//virtual
LLImageDecodeThread::~LLImageDecodeThread()
{
+ delete mCreationMutex ;
}
// MAIN THREAD
// virtual
S32 LLImageDecodeThread::update(U32 max_time_ms)
{
- LLMutexLock lock(&mCreationMutex);
+ LLMutexLock lock(mCreationMutex);
for (creation_list_t::iterator iter = mCreationList.begin();
iter != mCreationList.end(); ++iter)
{
@@ -69,7 +71,7 @@ S32 LLImageDecodeThread::update(U32 max_time_ms)
LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(LLImageFormatted* image,
U32 priority, S32 discard, BOOL needs_aux, Responder* responder)
{
- LLMutexLock lock(&mCreationMutex);
+ LLMutexLock lock(mCreationMutex);
handle_t handle = generateHandle();
mCreationList.push_back(creation_info(handle, image, priority, discard, needs_aux, responder));
return handle;
@@ -79,7 +81,7 @@ LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(LLImageFormatted*
// Returns the size of the mutex guarded list as an indication of sanity
S32 LLImageDecodeThread::tut_size()
{
- LLMutexLock lock(&mCreationMutex);
+ LLMutexLock lock(mCreationMutex);
S32 res = mCreationList.size();
return res;
}
diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h
index 6a24b7522a..c684222fa5 100644
--- a/indra/llimage/llimageworker.h
+++ b/indra/llimage/llimageworker.h
@@ -98,7 +98,7 @@ private:
};
typedef std::list<creation_info> creation_list_t;
creation_list_t mCreationList;
- LLMutex mCreationMutex;
+ LLMutex* mCreationMutex;
};
#endif
diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp
index d2bba21648..8282d79b67 100644
--- a/indra/llinventory/llinventorytype.cpp
+++ b/indra/llinventory/llinventorytype.cpp
@@ -84,6 +84,7 @@ LLInventoryDictionary::LLInventoryDictionary()
addEntry(LLInventoryType::IT_ANIMATION, new InventoryEntry("animation", "animation", 1, LLAssetType::AT_ANIMATION));
addEntry(LLInventoryType::IT_GESTURE, new InventoryEntry("gesture", "gesture", 1, LLAssetType::AT_GESTURE));
addEntry(LLInventoryType::IT_MESH, new InventoryEntry("mesh", "mesh", 1, LLAssetType::AT_MESH));
+ addEntry(LLInventoryType::IT_WIDGET, new InventoryEntry("widget", "widget", 1, LLAssetType::AT_WIDGET));
}
@@ -134,7 +135,7 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] =
LLInventoryType::IT_NONE, // 37 AT_NONE
LLInventoryType::IT_NONE, // 38 AT_NONE
LLInventoryType::IT_NONE, // 39 AT_NONE
- LLInventoryType::IT_NONE, // 40 AT_NONE
+ LLInventoryType::IT_WIDGET, // 40 AT_WIDGET
LLInventoryType::IT_NONE, // 41 AT_NONE
LLInventoryType::IT_NONE, // 42 AT_NONE
LLInventoryType::IT_NONE, // 43 AT_NONE
@@ -143,7 +144,7 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] =
LLInventoryType::IT_NONE, // 46 AT_NONE
LLInventoryType::IT_NONE, // 47 AT_NONE
LLInventoryType::IT_NONE, // 48 AT_NONE
- LLInventoryType::IT_MESH // 49 AT_MESH
+ LLInventoryType::IT_MESH, // 49 AT_MESH
};
// static
diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h
index 1a24e351ad..4d1e0db040 100644
--- a/indra/llinventory/llinventorytype.h
+++ b/indra/llinventory/llinventorytype.h
@@ -62,7 +62,8 @@ public:
IT_ANIMATION = 19,
IT_GESTURE = 20,
IT_MESH = 22,
- IT_COUNT = 23,
+ IT_WIDGET = 23,
+ IT_COUNT = 24,
IT_NONE = -1
};
diff --git a/indra/llmath/llvolumemgr.cpp b/indra/llmath/llvolumemgr.cpp
index 42180197fe..c60b750088 100644
--- a/indra/llmath/llvolumemgr.cpp
+++ b/indra/llmath/llvolumemgr.cpp
@@ -49,7 +49,7 @@ LLVolumeMgr::LLVolumeMgr()
{
// the LLMutex magic interferes with easy unit testing,
// so you now must manually call useMutex() to use it
- //mDataMutex = new LLMutex;
+ //mDataMutex = new LLMutex(gAPRPoolp);
}
LLVolumeMgr::~LLVolumeMgr()
@@ -216,7 +216,7 @@ void LLVolumeMgr::useMutex()
{
if (!mDataMutex)
{
- mDataMutex = new LLMutex;
+ mDataMutex = new LLMutex(gAPRPoolp);
}
}
diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
index fab9858b69..5a67035ed1 100644
--- a/indra/llmessage/llares.cpp
+++ b/indra/llmessage/llares.cpp
@@ -28,7 +28,6 @@
#include "linden_common.h"
#include "llares.h"
-#include "llscopedvolatileaprpool.h"
#include <ares_dns.h>
#include <ares_version.h>
@@ -465,6 +464,11 @@ void LLAres::search(const std::string &query, LLResType type,
bool LLAres::process(U64 timeout)
{
+ if (!gAPRPoolp)
+ {
+ ll_init_apr();
+ }
+
ares_socket_t socks[ARES_GETSOCK_MAXNUM];
apr_pollfd_t aprFds[ARES_GETSOCK_MAXNUM];
apr_int32_t nsds = 0;
@@ -478,7 +482,10 @@ bool LLAres::process(U64 timeout)
return nsds > 0;
}
- LLScopedVolatileAPRPool scoped_pool;
+ apr_status_t status;
+ LLAPRPool pool;
+ status = pool.getStatus() ;
+ ll_apr_assert_status(status);
for (int i = 0; i < ARES_GETSOCK_MAXNUM; i++)
{
@@ -495,7 +502,7 @@ bool LLAres::process(U64 timeout)
apr_socket_t *aprSock = NULL;
- apr_status_t status = apr_os_sock_put(&aprSock, (apr_os_sock_t *) &socks[i], scoped_pool);
+ status = apr_os_sock_put(&aprSock, (apr_os_sock_t *) &socks[i], pool.getAPRPool());
if (status != APR_SUCCESS)
{
ll_apr_warn_status(status);
@@ -504,7 +511,7 @@ bool LLAres::process(U64 timeout)
aprFds[nactive].desc.s = aprSock;
aprFds[nactive].desc_type = APR_POLL_SOCKET;
- aprFds[nactive].p = scoped_pool;
+ aprFds[nactive].p = pool.getAPRPool();
aprFds[nactive].rtnevents = 0;
aprFds[nactive].client_data = &socks[i];
@@ -513,7 +520,7 @@ bool LLAres::process(U64 timeout)
if (nactive > 0)
{
- apr_status_t status = apr_poll(aprFds, nactive, &nsds, timeout);
+ status = apr_poll(aprFds, nactive, &nsds, timeout);
if (status != APR_SUCCESS && status != APR_TIMEUP)
{
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
index 6d9213f51b..330028c926 100644
--- a/indra/llmessage/llcurl.cpp
+++ b/indra/llmessage/llcurl.cpp
@@ -531,7 +531,7 @@ LLCurl::Multi::Multi()
mThreaded = LLCurl::sMultiThreaded && LLThread::currentID() == sMainThreadID;
if (mThreaded)
{
- mSignal = new LLCondition();
+ mSignal = new LLCondition(NULL);
}
else
{
@@ -1189,14 +1189,14 @@ void LLCurl::initClass(bool multi_threaded)
check_curl_code(code);
- Easy::sHandleMutex = new LLMutex();
- Easy::sMultiMutex = new LLMutex();
+ Easy::sHandleMutex = new LLMutex(NULL);
+ Easy::sMultiMutex = new LLMutex(NULL);
#if SAFE_SSL
S32 mutex_count = CRYPTO_num_locks();
for (S32 i=0; i<mutex_count; i++)
{
- sSSLMutex.push_back(new LLMutex);
+ sSSLMutex.push_back(new LLMutex(NULL));
}
CRYPTO_set_id_callback(&LLCurl::ssl_thread_id);
CRYPTO_set_locking_callback(&LLCurl::ssl_locking_callback);
diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h
index 87de202717..87de202717 100755..100644
--- a/indra/llmessage/llcurl.h
+++ b/indra/llmessage/llcurl.h
diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
index 920a57ab55..73e8a69085 100644
--- a/indra/llmessage/lliohttpserver.cpp
+++ b/indra/llmessage/lliohttpserver.cpp
@@ -963,9 +963,13 @@ private:
// static
-LLHTTPNode& LLIOHTTPServer::create(LLPumpIO& pump, U16 port)
+LLHTTPNode& LLIOHTTPServer::create(
+ apr_pool_t* pool, LLPumpIO& pump, U16 port)
{
- LLSocket::ptr_t socket = LLSocket::create(LLSocket::STREAM_TCP, port);
+ LLSocket::ptr_t socket = LLSocket::create(
+ pool,
+ LLSocket::STREAM_TCP,
+ port);
if(!socket)
{
llerrs << "Unable to initialize socket" << llendl;
@@ -974,7 +978,7 @@ LLHTTPNode& LLIOHTTPServer::create(LLPumpIO& pump, U16 port)
LLHTTPResponseFactory* factory = new LLHTTPResponseFactory;
boost::shared_ptr<LLChainIOFactory> factory_ptr(factory);
- LLIOServerSocket* server = new LLIOServerSocket(socket, factory_ptr);
+ LLIOServerSocket* server = new LLIOServerSocket(pool, socket, factory_ptr);
LLPumpIO::chain_t chain;
chain.push_back(LLIOPipe::ptr_t(server));
diff --git a/indra/llmessage/lliohttpserver.h b/indra/llmessage/lliohttpserver.h
index 2294e4b8ae..5c1b0531ff 100644
--- a/indra/llmessage/lliohttpserver.h
+++ b/indra/llmessage/lliohttpserver.h
@@ -50,7 +50,7 @@ class LLIOHTTPServer
public:
typedef void (*timing_callback_t)(const char* hashed_name, F32 time, void* data);
- static LLHTTPNode& create(LLPumpIO& pump, U16 port);
+ static LLHTTPNode& create(apr_pool_t* pool, LLPumpIO& pump, U16 port);
/**< Creates an HTTP wire server on the pump for the given TCP port.
*
* Returns the root node of the new server. Add LLHTTPNode instances
diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp
index a885ba8ee1..54ceab3422 100644
--- a/indra/llmessage/lliosocket.cpp
+++ b/indra/llmessage/lliosocket.cpp
@@ -35,7 +35,6 @@
#include "llhost.h"
#include "llmemtype.h"
#include "llpumpio.h"
-#include "llthread.h"
//
// constants
@@ -99,31 +98,51 @@ void ll_debug_socket(const char* msg, apr_socket_t* apr_sock)
///
// static
-LLSocket::ptr_t LLSocket::create(EType type, U16 port)
+LLSocket::ptr_t LLSocket::create(apr_pool_t* pool, EType type, U16 port)
{
LLMemType m1(LLMemType::MTYPE_IO_TCP);
+ LLSocket::ptr_t rv;
+ apr_socket_t* socket = NULL;
+ apr_pool_t* new_pool = NULL;
apr_status_t status = APR_EGENERAL;
- LLSocket::ptr_t rv(new LLSocket);
+
+ // create a pool for the socket
+ status = apr_pool_create(&new_pool, pool);
+ if(ll_apr_warn_status(status))
+ {
+ if(new_pool) apr_pool_destroy(new_pool);
+ return rv;
+ }
if(STREAM_TCP == type)
{
- status = apr_socket_create(&rv->mSocket, APR_INET, SOCK_STREAM, APR_PROTO_TCP, rv->mPool());
+ status = apr_socket_create(
+ &socket,
+ APR_INET,
+ SOCK_STREAM,
+ APR_PROTO_TCP,
+ new_pool);
}
else if(DATAGRAM_UDP == type)
{
- status = apr_socket_create(&rv->mSocket, APR_INET, SOCK_DGRAM, APR_PROTO_UDP, rv->mPool());
+ status = apr_socket_create(
+ &socket,
+ APR_INET,
+ SOCK_DGRAM,
+ APR_PROTO_UDP,
+ new_pool);
}
else
{
- rv.reset();
+ if(new_pool) apr_pool_destroy(new_pool);
return rv;
}
if(ll_apr_warn_status(status))
{
- rv->mSocket = NULL;
- rv.reset();
+ if(new_pool) apr_pool_destroy(new_pool);
return rv;
}
+ rv = ptr_t(new LLSocket(socket, new_pool));
if(port > 0)
{
apr_sockaddr_t* sa = NULL;
@@ -133,7 +152,7 @@ LLSocket::ptr_t LLSocket::create(EType type, U16 port)
APR_UNSPEC,
port,
0,
- rv->mPool());
+ new_pool);
if(ll_apr_warn_status(status))
{
rv.reset();
@@ -141,8 +160,8 @@ LLSocket::ptr_t LLSocket::create(EType type, U16 port)
}
// This allows us to reuse the address on quick down/up. This
// is unlikely to create problems.
- ll_apr_warn_status(apr_socket_opt_set(rv->mSocket, APR_SO_REUSEADDR, 1));
- status = apr_socket_bind(rv->mSocket, sa);
+ ll_apr_warn_status(apr_socket_opt_set(socket, APR_SO_REUSEADDR, 1));
+ status = apr_socket_bind(socket, sa);
if(ll_apr_warn_status(status))
{
rv.reset();
@@ -156,7 +175,7 @@ LLSocket::ptr_t LLSocket::create(EType type, U16 port)
// to keep a queue of incoming connections for ACCEPT.
lldebugs << "Setting listen state for socket." << llendl;
status = apr_socket_listen(
- rv->mSocket,
+ socket,
LL_DEFAULT_LISTEN_BACKLOG);
if(ll_apr_warn_status(status))
{
@@ -177,28 +196,21 @@ LLSocket::ptr_t LLSocket::create(EType type, U16 port)
}
// static
-LLSocket::ptr_t LLSocket::create(apr_status_t& status, LLSocket::ptr_t& listen_socket)
+LLSocket::ptr_t LLSocket::create(apr_socket_t* socket, apr_pool_t* pool)
{
LLMemType m1(LLMemType::MTYPE_IO_TCP);
- if (!listen_socket->getSocket())
- {
- status = APR_ENOSOCKET;
- return LLSocket::ptr_t();
- }
- LLSocket::ptr_t rv(new LLSocket);
- lldebugs << "accepting socket" << llendl;
- status = apr_socket_accept(&rv->mSocket, listen_socket->getSocket(), rv->mPool());
- if (status != APR_SUCCESS)
+ LLSocket::ptr_t rv;
+ if(!socket)
{
- rv->mSocket = NULL;
- rv.reset();
return rv;
}
+ rv = ptr_t(new LLSocket(socket, pool));
rv->mPort = PORT_EPHEMERAL;
rv->setNonBlocking();
return rv;
}
+
bool LLSocket::blockingConnect(const LLHost& host)
{
if(!mSocket) return false;
@@ -211,7 +223,7 @@ bool LLSocket::blockingConnect(const LLHost& host)
APR_UNSPEC,
host.getPort(),
0,
- mPool())))
+ mPool)))
{
return false;
}
@@ -222,11 +234,13 @@ bool LLSocket::blockingConnect(const LLHost& host)
return true;
}
-LLSocket::LLSocket() :
- mSocket(NULL),
- mPool(LLThread::tldata().mRootPool),
+LLSocket::LLSocket(apr_socket_t* socket, apr_pool_t* pool) :
+ mSocket(socket),
+ mPool(pool),
mPort(PORT_INVALID)
{
+ ll_debug_socket("Constructing wholely formed socket", mSocket);
+ LLMemType m1(LLMemType::MTYPE_IO_TCP);
}
LLSocket::~LLSocket()
@@ -239,6 +253,10 @@ LLSocket::~LLSocket()
apr_socket_close(mSocket);
mSocket = NULL;
}
+ if(mPool)
+ {
+ apr_pool_destroy(mPool);
+ }
}
// See http://dev.ariel-networks.com/apr/apr-tutorial/html/apr-tutorial-13.html#ss13.4
@@ -520,8 +538,10 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl(
///
LLIOServerSocket::LLIOServerSocket(
+ apr_pool_t* pool,
LLIOServerSocket::socket_t listener,
factory_t factory) :
+ mPool(pool),
mListenSocket(listener),
mReactor(factory),
mInitialized(false),
@@ -583,15 +603,21 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
lldebugs << "accepting socket" << llendl;
PUMP_DEBUG;
- apr_status_t status;
- LLSocket::ptr_t llsocket(LLSocket::create(status, mListenSocket));
+ apr_pool_t* new_pool = NULL;
+ apr_status_t status = apr_pool_create(&new_pool, mPool);
+ apr_socket_t* socket = NULL;
+ status = apr_socket_accept(
+ &socket,
+ mListenSocket->getSocket(),
+ new_pool);
+ LLSocket::ptr_t llsocket(LLSocket::create(socket, new_pool));
//EStatus rv = STATUS_ERROR;
- if(llsocket && status == APR_SUCCESS)
+ if(llsocket)
{
PUMP_DEBUG;
apr_sockaddr_t* remote_addr;
- apr_socket_addr_get(&remote_addr, APR_REMOTE, llsocket->getSocket());
+ apr_socket_addr_get(&remote_addr, APR_REMOTE, socket);
char* remote_host_string;
apr_sockaddr_ip_get(&remote_host_string, remote_addr);
@@ -606,6 +632,7 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
{
chain.push_back(LLIOPipe::ptr_t(new LLIOSocketWriter(llsocket)));
pump->addChain(chain, mResponseTimeout);
+ status = STATUS_OK;
}
else
{
@@ -614,8 +641,7 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
}
else
{
- char buf[256];
- llwarns << "Unable to accept linden socket: " << apr_strerror(status, buf, sizeof(buf)) << llendl;
+ llwarns << "Unable to create linden socket." << llendl;
}
PUMP_DEBUG;
@@ -628,10 +654,11 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
#if 0
LLIODataSocket::LLIODataSocket(
U16 suggested_port,
- U16 start_discovery_port) :
+ U16 start_discovery_port,
+ apr_pool_t* pool) :
mSocket(NULL)
{
- if(PORT_INVALID == suggested_port) return;
+ if(!pool || (PORT_INVALID == suggested_port)) return;
if(ll_apr_warn_status(apr_socket_create(&mSocket, APR_INET, SOCK_DGRAM, APR_PROTO_UDP, pool))) return;
apr_sockaddr_t* sa = NULL;
if(ll_apr_warn_status(apr_sockaddr_info_get(&sa, APR_ANYADDR, APR_UNSPEC, suggested_port, 0, pool))) return;
diff --git a/indra/llmessage/lliosocket.h b/indra/llmessage/lliosocket.h
index f0a6f25657..be0f7dfcc6 100644
--- a/indra/llmessage/lliosocket.h
+++ b/indra/llmessage/lliosocket.h
@@ -38,6 +38,7 @@
*/
#include "lliopipe.h"
+#include "apr_pools.h"
#include "apr_network_io.h"
#include "llchainio.h"
@@ -87,22 +88,34 @@ public:
* socket. If you intend the socket to be known to external
* clients without prior port notification, do not use
* PORT_EPHEMERAL.
+ * @param pool The apr pool to use. A child pool will be created
+ * and associated with the socket.
* @param type The type of socket to create
* @param port The port for the socket
* @return A valid socket shared pointer if the call worked.
*/
static ptr_t create(
+ apr_pool_t* pool,
EType type,
U16 port = PORT_EPHEMERAL);
/**
- * @brief Create a LLSocket by accepting a connection from a listen socket.
+ * @brief Create a LLSocket when you already have an apr socket.
*
- * @param status Output. Status of the accept if a valid listen socket was passed.
- * @param listen_socket The listen socket to use.
+ * This method assumes an ephemeral port. This is typically used
+ * by calls which spawn a socket such as a call to
+ * <code>accept()</code> as in the server socket. This call should
+ * not fail if you have a valid apr socket.
+ * Because of the nature of how accept() works, you are expected
+ * to create a new pool for the socket, use that pool for the
+ * accept, and pass it in here where it will be bound with the
+ * socket and destroyed at the same time.
+ * @param socket The apr socket to use
+ * @param pool The pool used to create the socket. *NOTE: The pool
+ * passed in will be DESTROYED.
* @return A valid socket shared pointer if the call worked.
*/
- static ptr_t create(apr_status_t& status, ptr_t& listen_socket);
+ static ptr_t create(apr_socket_t* socket, apr_pool_t* pool);
/**
* @brief Perform a blocking connect to a host. Do not use in production.
@@ -133,12 +146,6 @@ public:
apr_socket_t* getSocket() const { return mSocket; }
/**
- * @brief Protected constructor since should only make sockets
- * with one of the two <code>create()</code> calls.
- */
- LLSocket(void);
-
- /**
* @brief Set default socket options, with SO_NONBLOCK = 0 and a timeout in us.
* @param timeout Number of microseconds to wait on this socket. Any
* negative number means block-forever. TIMEOUT OF 0 IS NON-PORTABLE.
@@ -167,8 +174,8 @@ protected:
// The apr socket.
apr_socket_t* mSocket;
- // Our memory pool.
- LLAPRPool mPool;
+ // our memory pool
+ apr_pool_t* mPool;
// The port if we know it.
U16 mPort;
@@ -293,7 +300,7 @@ class LLIOServerSocket : public LLIOPipe
public:
typedef LLSocket::ptr_t socket_t;
typedef boost::shared_ptr<LLChainIOFactory> factory_t;
- LLIOServerSocket(socket_t listener, factory_t reactor);
+ LLIOServerSocket(apr_pool_t* pool, socket_t listener, factory_t reactor);
virtual ~LLIOServerSocket();
/**
@@ -325,6 +332,7 @@ protected:
//@}
protected:
+ apr_pool_t* mPool;
socket_t mListenSocket;
factory_t mReactor;
bool mInitialized;
@@ -358,7 +366,8 @@ public:
*/
LLIODataSocket(
U16 suggested_port,
- U16 start_discovery_port);
+ U16 start_discovery_port,
+ apr_pool_t* pool);
virtual ~LLIODataSocket();
protected:
diff --git a/indra/llmessage/llmail.cpp b/indra/llmessage/llmail.cpp
index 8a898ab1b0..08b31e9c7a 100644
--- a/indra/llmessage/llmail.cpp
+++ b/indra/llmessage/llmail.cpp
@@ -50,7 +50,6 @@
#include "llstring.h"
#include "lluuid.h"
#include "net.h"
-#include "llaprpool.h"
//
// constants
@@ -58,7 +57,7 @@
const size_t LL_MAX_KNOWN_GOOD_MAIL_SIZE = 4096;
static bool gMailEnabled = true;
-static LLAPRPool gMailPool;
+static apr_pool_t* gMailPool;
static apr_sockaddr_t* gSockAddr;
static apr_socket_t* gMailSocket;
@@ -83,7 +82,7 @@ bool connect_smtp()
gSockAddr->sa.sin.sin_family,
SOCK_STREAM,
APR_PROTO_TCP,
- gMailPool());
+ gMailPool);
if(ll_apr_warn_status(status)) return false;
status = apr_socket_connect(gMailSocket, gSockAddr);
if(ll_apr_warn_status(status))
@@ -140,19 +139,19 @@ BOOL LLMail::send(
}
// static
-void LLMail::init(const std::string& hostname)
+void LLMail::init(const std::string& hostname, apr_pool_t* pool)
{
gMailSocket = NULL;
- if (hostname.empty())
+ if(hostname.empty() || !pool)
{
+ gMailPool = NULL;
gSockAddr = NULL;
- gMailPool.destroy();
}
else
{
- gMailPool.create();
+ gMailPool = pool;
- // Collect all the information into a sockaddr structure. the
+ // collect all the information into a socaddr sturcture. the
// documentation is a bit unclear, but I either have to
// specify APR_UNSPEC or not specify any flags. I am not sure
// which option is better.
@@ -162,7 +161,7 @@ void LLMail::init(const std::string& hostname)
APR_UNSPEC,
25,
APR_IPV4_ADDR_OK,
- gMailPool());
+ gMailPool);
ll_apr_warn_status(status);
}
}
diff --git a/indra/llmessage/llmail.h b/indra/llmessage/llmail.h
index 0a5c532088..3791714363 100644
--- a/indra/llmessage/llmail.h
+++ b/indra/llmessage/llmail.h
@@ -27,13 +27,15 @@
#ifndef LL_LLMAIL_H
#define LL_LLMAIL_H
+typedef struct apr_pool_t apr_pool_t;
+
#include "llsd.h"
class LLMail
{
public:
// if hostname is NULL, then the host is resolved as 'mail'
- static void init(const std::string& hostname);
+ static void init(const std::string& hostname, apr_pool_t* pool);
// Allow all email transmission to be disabled/enabled.
static void enable(bool mail_enabled);
diff --git a/indra/llmessage/llproxy.cpp b/indra/llmessage/llproxy.cpp
index 4a7d326c0e..9988fcd9c0 100644
--- a/indra/llmessage/llproxy.cpp
+++ b/indra/llmessage/llproxy.cpp
@@ -49,7 +49,7 @@ static void tcp_close_channel(LLSocket::ptr_t* handle_ptr); // Close an open TCP
LLProxy::LLProxy():
mHTTPProxyEnabled(false),
- mProxyMutex(),
+ mProxyMutex(NULL),
mUDPProxy(),
mTCPProxy(),
mHTTPProxy(),
@@ -524,7 +524,7 @@ static apr_status_t tcp_blocking_handshake(LLSocket::ptr_t handle, char * dataou
*/
static LLSocket::ptr_t tcp_open_channel(LLHost host)
{
- LLSocket::ptr_t socket = LLSocket::create(LLSocket::STREAM_TCP);
+ LLSocket::ptr_t socket = LLSocket::create(NULL, LLSocket::STREAM_TCP);
bool connected = socket->blockingConnect(host);
if (!connected)
{
diff --git a/indra/llmessage/llpumpio.cpp b/indra/llmessage/llpumpio.cpp
index 89cfd66e1b..a8d2a0a224 100644
--- a/indra/llmessage/llpumpio.cpp
+++ b/indra/llmessage/llpumpio.cpp
@@ -37,7 +37,6 @@
#include "llmemtype.h"
#include "llstl.h"
#include "llstat.h"
-#include "llthread.h"
// These should not be enabled in production, but they can be
// intensely useful during development for finding certain kinds of
@@ -163,12 +162,14 @@ struct ll_delete_apr_pollset_fd_client_data
/**
* LLPumpIO
*/
-LLPumpIO::LLPumpIO(void) :
+LLPumpIO::LLPumpIO(apr_pool_t* pool) :
mState(LLPumpIO::NORMAL),
mRebuildPollset(false),
mPollset(NULL),
mPollsetClientID(0),
mNextLock(0),
+ mPool(NULL),
+ mCurrentPool(NULL),
mCurrentPoolReallocCount(0),
mChainsMutex(NULL),
mCallbackMutex(NULL),
@@ -177,24 +178,21 @@ LLPumpIO::LLPumpIO(void) :
mCurrentChain = mRunningChains.end();
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
- initialize();
+ initialize(pool);
}
LLPumpIO::~LLPumpIO()
{
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
-#if LL_THREADS_APR
- if (mChainsMutex) apr_thread_mutex_destroy(mChainsMutex);
- if (mCallbackMutex) apr_thread_mutex_destroy(mCallbackMutex);
-#endif
- mChainsMutex = NULL;
- mCallbackMutex = NULL;
- if(mPollset)
- {
-// lldebugs << "cleaning up pollset" << llendl;
- apr_pollset_destroy(mPollset);
- mPollset = NULL;
- }
+ cleanup();
+}
+
+bool LLPumpIO::prime(apr_pool_t* pool)
+{
+ LLMemType m1(LLMemType::MTYPE_IO_PUMP);
+ cleanup();
+ initialize(pool);
+ return ((pool == NULL) ? false : true);
}
bool LLPumpIO::addChain(const chain_t& chain, F32 timeout)
@@ -354,7 +352,8 @@ bool LLPumpIO::setConditional(LLIOPipe* pipe, const apr_pollfd_t* poll)
{
// each fd needs a pool to work with, so if one was
// not specified, use this pool.
- value.second.p = (*mCurrentChain).mDescriptorsPool->operator()();
+ // *FIX: Should it always be this pool?
+ value.second.p = mPool;
}
value.second.client_data = new S32(++mPollsetClientID);
(*mCurrentChain).mDescriptors.push_back(value);
@@ -826,15 +825,39 @@ void LLPumpIO::control(LLPumpIO::EControl op)
}
}
-void LLPumpIO::initialize(void)
+void LLPumpIO::initialize(apr_pool_t* pool)
{
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
- mPool.create();
+ if(!pool) return;
#if LL_THREADS_APR
// SJB: Windows defaults to NESTED and OSX defaults to UNNESTED, so use UNNESTED explicitly.
- apr_thread_mutex_create(&mChainsMutex, APR_THREAD_MUTEX_UNNESTED, mPool());
- apr_thread_mutex_create(&mCallbackMutex, APR_THREAD_MUTEX_UNNESTED, mPool());
+ apr_thread_mutex_create(&mChainsMutex, APR_THREAD_MUTEX_UNNESTED, pool);
+ apr_thread_mutex_create(&mCallbackMutex, APR_THREAD_MUTEX_UNNESTED, pool);
+#endif
+ mPool = pool;
+}
+
+void LLPumpIO::cleanup()
+{
+ LLMemType m1(LLMemType::MTYPE_IO_PUMP);
+#if LL_THREADS_APR
+ if(mChainsMutex) apr_thread_mutex_destroy(mChainsMutex);
+ if(mCallbackMutex) apr_thread_mutex_destroy(mCallbackMutex);
#endif
+ mChainsMutex = NULL;
+ mCallbackMutex = NULL;
+ if(mPollset)
+ {
+// lldebugs << "cleaning up pollset" << llendl;
+ apr_pollset_destroy(mPollset);
+ mPollset = NULL;
+ }
+ if(mCurrentPool)
+ {
+ apr_pool_destroy(mCurrentPool);
+ mCurrentPool = NULL;
+ }
+ mPool = NULL;
}
void LLPumpIO::rebuildPollset()
@@ -862,19 +885,21 @@ void LLPumpIO::rebuildPollset()
if(mCurrentPool
&& (0 == (++mCurrentPoolReallocCount % POLLSET_POOL_RECYCLE_COUNT)))
{
- mCurrentPool.destroy();
+ apr_pool_destroy(mCurrentPool);
+ mCurrentPool = NULL;
mCurrentPoolReallocCount = 0;
}
if(!mCurrentPool)
{
- mCurrentPool.create(mPool);
+ apr_status_t status = apr_pool_create(&mCurrentPool, mPool);
+ (void)ll_apr_warn_status(status);
}
// add all of the file descriptors
run_it = mRunningChains.begin();
LLChainInfo::conditionals_t::iterator fd_it;
LLChainInfo::conditionals_t::iterator fd_end;
- apr_pollset_create(&mPollset, size, mCurrentPool(), 0);
+ apr_pollset_create(&mPollset, size, mCurrentPool, 0);
for(; run_it != run_end; ++run_it)
{
fd_it = (*run_it).mDescriptors.begin();
@@ -1132,8 +1157,7 @@ bool LLPumpIO::handleChainError(
LLPumpIO::LLChainInfo::LLChainInfo() :
mInit(false),
mLock(0),
- mEOS(false),
- mDescriptorsPool(new LLAPRPool(LLThread::tldata().mRootPool))
+ mEOS(false)
{
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
mTimer.setTimerExpirySec(DEFAULT_CHAIN_EXPIRY_SECS);
diff --git a/indra/llmessage/llpumpio.h b/indra/llmessage/llpumpio.h
index 75c35ae7ab..9303c9d7fc 100644
--- a/indra/llmessage/llpumpio.h
+++ b/indra/llmessage/llpumpio.h
@@ -30,12 +30,11 @@
#define LL_LLPUMPIO_H
#include <set>
-#include <boost/shared_ptr.hpp>
#if LL_LINUX // needed for PATH_MAX in APR.
#include <sys/param.h>
#endif
-#include "llaprpool.h"
+#include "apr_pools.h"
#include "llbuffer.h"
#include "llframetimer.h"
#include "lliopipe.h"
@@ -59,8 +58,9 @@ extern const F32 NEVER_CHAIN_EXPIRY_SECS;
* <code>pump()</code> on a thread used for IO and call
* <code>respond()</code> on a thread that is expected to do higher
* level processing. You can call almost any other method from any
- * thread - see notes for each method for details.
- *
+ * thread - see notes for each method for details. In order for the
+ * threading abstraction to work, you need to call <code>prime()</code>
+ * with a valid apr pool.
* A pump instance manages much of the state for the pipe, including
* the list of pipes in the chain, the channel for each element in the
* chain, the buffer, and if any pipe has marked the stream or process
@@ -79,7 +79,7 @@ public:
/**
* @brief Constructor.
*/
- LLPumpIO(void);
+ LLPumpIO(apr_pool_t* pool);
/**
* @brief Destructor.
@@ -87,6 +87,17 @@ public:
~LLPumpIO();
/**
+ * @brief Prepare this pump for usage.
+ *
+ * If you fail to call this method prior to use, the pump will
+ * try to work, but will not come with any thread locking
+ * mechanisms.
+ * @param pool The apr pool to use.
+ * @return Returns true if the pump is primed.
+ */
+ bool prime(apr_pool_t* pool);
+
+ /**
* @brief Typedef for having a chain of pipes.
*/
typedef std::vector<LLIOPipe::ptr_t> chain_t;
@@ -357,7 +368,6 @@ protected:
typedef std::pair<LLIOPipe::ptr_t, apr_pollfd_t> pipe_conditional_t;
typedef std::vector<pipe_conditional_t> conditionals_t;
conditionals_t mDescriptors;
- boost::shared_ptr<LLAPRPool> mDescriptorsPool;
};
// All the running chains & info
@@ -376,9 +386,9 @@ protected:
callbacks_t mPendingCallbacks;
callbacks_t mCallbacks;
- // Memory pool for pollsets & mutexes.
- LLAPRPool mPool;
- LLAPRPool mCurrentPool;
+ // memory allocator for pollsets & mutexes.
+ apr_pool_t* mPool;
+ apr_pool_t* mCurrentPool;
S32 mCurrentPoolReallocCount;
#if LL_THREADS_APR
@@ -390,7 +400,8 @@ protected:
#endif
protected:
- void initialize();
+ void initialize(apr_pool_t* pool);
+ void cleanup();
/**
* @brief Given the internal state of the chains, rebuild the pollset
diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp
index 91a5a8ce2c..fa03bb7512 100644
--- a/indra/llmessage/llurlrequest.cpp
+++ b/indra/llmessage/llurlrequest.cpp
@@ -41,7 +41,6 @@
#include "llstring.h"
#include "apr_env.h"
#include "llapr.h"
-#include "llscopedvolatileaprpool.h"
static const U32 HTTP_STATUS_PIPE_ERROR = 499;
/**
@@ -212,31 +211,27 @@ void LLURLRequest::setCallback(LLURLRequestComplete* callback)
// is called with use_proxy = FALSE
void LLURLRequest::useProxy(bool use_proxy)
{
- static std::string env_proxy;
+ static char *env_proxy;
- if (use_proxy && env_proxy.empty())
+ if (use_proxy && (env_proxy == NULL))
{
- char* env_proxy_str;
- LLScopedVolatileAPRPool scoped_pool;
- apr_status_t status = apr_env_get(&env_proxy_str, "ALL_PROXY", scoped_pool);
+ apr_status_t status;
+ LLAPRPool pool;
+ status = apr_env_get(&env_proxy, "ALL_PROXY", pool.getAPRPool());
if (status != APR_SUCCESS)
{
- status = apr_env_get(&env_proxy_str, "http_proxy", scoped_pool);
+ status = apr_env_get(&env_proxy, "http_proxy", pool.getAPRPool());
}
if (status != APR_SUCCESS)
{
- use_proxy = false;
+ use_proxy = FALSE;
}
- else
- {
- // env_proxy_str is stored in the scoped_pool, so we have to make a copy.
- env_proxy = env_proxy_str;
- }
}
- LL_DEBUGS("Proxy") << "use_proxy = " << (use_proxy?'Y':'N') << ", env_proxy = " << (!env_proxy.empty() ? env_proxy : "(null)") << LL_ENDL;
- if (use_proxy && !env_proxy.empty())
+ lldebugs << "use_proxy = " << (use_proxy?'Y':'N') << ", env_proxy = " << (env_proxy ? env_proxy : "(null)") << llendl;
+
+ if (env_proxy && use_proxy)
{
mDetail->mCurlRequest->setoptString(CURLOPT_PROXY, env_proxy);
}
diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp
index 7d21e35f96..d0b0e178b8 100644
--- a/indra/llmessage/message.cpp
+++ b/indra/llmessage/message.cpp
@@ -97,10 +97,8 @@ std::string get_shared_secret();
class LLMessagePollInfo
{
public:
- LLMessagePollInfo(void) : mPool(LLThread::tldata().mRootPool) { }
apr_socket_t *mAPRSocketp;
apr_pollfd_t mPollFD;
- LLAPRPool mPool;
};
namespace
@@ -289,13 +287,20 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port,
}
// LL_DEBUGS("Messaging") << << "*** port: " << mPort << llendl;
- mPollInfop = new LLMessagePollInfo;
-
+ //
+ // Create the data structure that we can poll on
+ //
+ if (!gAPRPoolp)
+ {
+ LL_ERRS("Messaging") << "No APR pool before message system initialization!" << llendl;
+ ll_init_apr();
+ }
apr_socket_t *aprSocketp = NULL;
- apr_os_sock_put(&aprSocketp, (apr_os_sock_t*)&mSocket, mPollInfop->mPool());
+ apr_os_sock_put(&aprSocketp, (apr_os_sock_t*)&mSocket, gAPRPoolp);
+ mPollInfop = new LLMessagePollInfo;
mPollInfop->mAPRSocketp = aprSocketp;
- mPollInfop->mPollFD.p = mPollInfop->mPool();
+ mPollInfop->mPollFD.p = gAPRPoolp;
mPollInfop->mPollFD.desc_type = APR_POLL_SOCKET;
mPollInfop->mPollFD.reqevents = APR_POLLIN;
mPollInfop->mPollFD.rtnevents = 0;
diff --git a/indra/llmessage/tests/networkio.h b/indra/llmessage/tests/networkio.h
index 23e1c791f4..2aff90ca1e 100644
--- a/indra/llmessage/tests/networkio.h
+++ b/indra/llmessage/tests/networkio.h
@@ -30,6 +30,7 @@
#define LL_NETWORKIO_H
#include "llmemory.h" // LLSingleton
+#include "llapr.h"
#include "llares.h"
#include "llpumpio.h"
#include "llhttpclient.h"
@@ -47,8 +48,14 @@ public:
mServicePump(NULL),
mDone(false)
{
+ ll_init_apr();
+ if (! gAPRPoolp)
+ {
+ throw std::runtime_error("Can't initialize APR");
+ }
+
// Create IO Pump to use for HTTP Requests.
- mServicePump = new LLPumpIO;
+ mServicePump = new LLPumpIO(gAPRPoolp);
LLHTTPClient::setPump(*mServicePump);
if (ll_init_ares() == NULL || !gAres->isInitialized())
{
diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp
index e8efb233ff..7cde82a20e 100644
--- a/indra/llplugin/llplugininstance.cpp
+++ b/indra/llplugin/llplugininstance.cpp
@@ -29,7 +29,8 @@
#include "linden_common.h"
#include "llplugininstance.h"
-#include "llthread.h" // Needed for LLThread::tldata().mRootPool
+
+#include "llapr.h"
#if LL_WINDOWS
#include "direct.h" // needed for _chdir()
@@ -51,7 +52,6 @@ const char *LLPluginInstance::PLUGIN_INIT_FUNCTION_NAME = "LLPluginInitEntryPoin
* @param[in] owner Plugin instance. TODO:DOC is this a good description of what "owner" is?
*/
LLPluginInstance::LLPluginInstance(LLPluginInstanceMessageListener *owner) :
- mDSOHandlePool(LLThread::tldata().mRootPool),
mDSOHandle(NULL),
mPluginUserData(NULL),
mPluginSendMessageFunction(NULL)
@@ -97,7 +97,7 @@ int LLPluginInstance::load(const std::string& plugin_dir, std::string &plugin_fi
int result = apr_dso_load(&mDSOHandle,
plugin_file.c_str(),
- mDSOHandlePool());
+ gAPRPoolp);
if(result != APR_SUCCESS)
{
char buf[1024];
diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h
index ee28f68e83..3643a15d8c 100644
--- a/indra/llplugin/llplugininstance.h
+++ b/indra/llplugin/llplugininstance.h
@@ -30,7 +30,6 @@
#include "llstring.h"
#include "llapr.h"
-#include "llaprpool.h"
#include "apr_dso.h"
@@ -89,7 +88,6 @@ private:
static void staticReceiveMessage(const char *message_string, void **user_data);
void receiveMessage(const char *message_string);
- LLAPRPool mDSOHandlePool;
apr_dso_handle_t *mDSOHandle;
void *mPluginUserData;
diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp
index dd47300b9c..8d13e38ad5 100644
--- a/indra/llplugin/llpluginmessagepipe.cpp
+++ b/indra/llplugin/llpluginmessagepipe.cpp
@@ -92,6 +92,8 @@ void LLPluginMessagePipeOwner::killMessagePipe(void)
}
LLPluginMessagePipe::LLPluginMessagePipe(LLPluginMessagePipeOwner *owner, LLSocket::ptr_t socket):
+ mInputMutex(gAPRPoolp),
+ mOutputMutex(gAPRPoolp),
mOwner(owner),
mSocket(socket)
{
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index fd63fdde81..f8a282184e 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -40,7 +40,7 @@ LLPluginProcessChild::LLPluginProcessChild()
{
mState = STATE_UNINITIALIZED;
mInstance = NULL;
- mSocket = LLSocket::create(LLSocket::STREAM_TCP);
+ mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
mSleepTime = PLUGIN_IDLE_SECONDS; // default: send idle messages at 100Hz
mCPUElapsed = 0.0f;
mBlockingRequest = false;
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index 7aec72731e..110fac0f23 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -33,7 +33,6 @@
#include "llpluginmessageclasses.h"
#include "llapr.h"
-#include "llscopedvolatileaprpool.h"
//virtual
LLPluginProcessParentOwner::~LLPluginProcessParentOwner()
@@ -43,7 +42,6 @@ LLPluginProcessParentOwner::~LLPluginProcessParentOwner()
bool LLPluginProcessParent::sUseReadThread = false;
apr_pollset_t *LLPluginProcessParent::sPollSet = NULL;
-LLAPRPool LLPluginProcessParent::sPollSetPool;
bool LLPluginProcessParent::sPollsetNeedsRebuild = false;
LLMutex *LLPluginProcessParent::sInstancesMutex;
std::list<LLPluginProcessParent*> LLPluginProcessParent::sInstances;
@@ -54,7 +52,7 @@ class LLPluginProcessParentPollThread: public LLThread
{
public:
LLPluginProcessParentPollThread() :
- LLThread("LLPluginProcessParentPollThread")
+ LLThread("LLPluginProcessParentPollThread", gAPRPoolp)
{
}
protected:
@@ -79,11 +77,12 @@ protected:
};
-LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner* owner)
+LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner):
+ mIncomingQueueMutex(gAPRPoolp)
{
if(!sInstancesMutex)
{
- sInstancesMutex = new LLMutex;
+ sInstancesMutex = new LLMutex(gAPRPoolp);
}
mOwner = owner;
@@ -96,7 +95,6 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner* owner)
mBlocked = false;
mPolledInput = false;
mPollFD.client_data = NULL;
- mPollFDPool.create();
mPluginLaunchTimeout = 60.0f;
mPluginLockupTimeout = 15.0f;
@@ -173,28 +171,44 @@ void LLPluginProcessParent::init(const std::string &launcher_filename, const std
bool LLPluginProcessParent::accept()
{
bool result = false;
+
apr_status_t status = APR_EGENERAL;
+ apr_socket_t *new_socket = NULL;
+
+ status = apr_socket_accept(
+ &new_socket,
+ mListenSocket->getSocket(),
+ gAPRPoolp);
- mSocket = LLSocket::create(status, mListenSocket);
if(status == APR_SUCCESS)
{
// llinfos << "SUCCESS" << llendl;
// Success. Create a message pipe on the new socket
+
+ // we MUST create a new pool for the LLSocket, since it will take ownership of it and delete it in its destructor!
+ apr_pool_t* new_pool = NULL;
+ status = apr_pool_create(&new_pool, gAPRPoolp);
+
+ mSocket = LLSocket::create(new_socket, new_pool);
new LLPluginMessagePipe(this, mSocket);
result = true;
}
+ else if(APR_STATUS_IS_EAGAIN(status))
+ {
+// llinfos << "EAGAIN" << llendl;
+
+ // No incoming connections. This is not an error.
+ status = APR_SUCCESS;
+ }
else
{
- mSocket.reset();
- // EAGAIN means "No incoming connections". This is not an error.
- if (!APR_STATUS_IS_EAGAIN(status))
- {
- // Some other error.
- ll_apr_warn_status(status);
- errorState();
- }
+// llinfos << "Error:" << llendl;
+ ll_apr_warn_status(status);
+
+ // Some other error.
+ errorState();
}
return result;
@@ -260,10 +274,10 @@ void LLPluginProcessParent::idle(void)
case STATE_INITIALIZED:
{
+
apr_status_t status = APR_SUCCESS;
- LLScopedVolatileAPRPool addr_pool;
apr_sockaddr_t* addr = NULL;
- mListenSocket = LLSocket::create(LLSocket::STREAM_TCP);
+ mListenSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
mBoundPort = 0;
// This code is based on parts of LLSocket::create() in lliosocket.cpp.
@@ -274,7 +288,7 @@ void LLPluginProcessParent::idle(void)
APR_INET,
0, // port 0 = ephemeral ("find me a port")
0,
- addr_pool);
+ gAPRPoolp);
if(ll_apr_warn_status(status))
{
@@ -587,7 +601,7 @@ void LLPluginProcessParent::setMessagePipe(LLPluginMessagePipe *message_pipe)
if(message_pipe != NULL)
{
// Set up the apr_pollfd_t
- mPollFD.p = mPollFDPool();
+ mPollFD.p = gAPRPoolp;
mPollFD.desc_type = APR_POLL_SOCKET;
mPollFD.reqevents = APR_POLLIN|APR_POLLERR|APR_POLLHUP;
mPollFD.rtnevents = 0;
@@ -634,7 +648,6 @@ void LLPluginProcessParent::updatePollset()
// delete the existing pollset.
apr_pollset_destroy(sPollSet);
sPollSet = NULL;
- sPollSetPool.destroy();
}
std::list<LLPluginProcessParent*>::iterator iter;
@@ -657,14 +670,12 @@ void LLPluginProcessParent::updatePollset()
{
#ifdef APR_POLLSET_NOCOPY
// The pollset doesn't exist yet. Create it now.
- sPollSetPool.create();
- apr_status_t status = apr_pollset_create(&sPollSet, count, sPollSetPool(), APR_POLLSET_NOCOPY);
+ apr_status_t status = apr_pollset_create(&sPollSet, count, gAPRPoolp, APR_POLLSET_NOCOPY);
if(status != APR_SUCCESS)
{
#endif // APR_POLLSET_NOCOPY
LL_WARNS("PluginPoll") << "Couldn't create pollset. Falling back to non-pollset mode." << LL_ENDL;
sPollSet = NULL;
- sPollSetPool.destroy();
#ifdef APR_POLLSET_NOCOPY
}
else
diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h
index 74b7e9f50c..26c6b0c402 100644
--- a/indra/llplugin/llpluginprocessparent.h
+++ b/indra/llplugin/llpluginprocessparent.h
@@ -178,9 +178,7 @@ private:
static bool sUseReadThread;
apr_pollfd_t mPollFD;
- LLAPRPool mPollFDPool;
static apr_pollset_t *sPollSet;
- static LLAPRPool sPollSetPool;
static bool sPollsetNeedsRebuild;
static LLMutex *sInstancesMutex;
static std::list<LLPluginProcessParent*> sInstances;
diff --git a/indra/llplugin/llpluginsharedmemory.cpp b/indra/llplugin/llpluginsharedmemory.cpp
index e2ff645a9c..63ff5085c6 100644
--- a/indra/llplugin/llpluginsharedmemory.cpp
+++ b/indra/llplugin/llpluginsharedmemory.cpp
@@ -187,8 +187,7 @@ bool LLPluginSharedMemory::create(size_t size)
mName += createName();
mSize = size;
- mPool.create();
- apr_status_t status = apr_shm_create( &(mImpl->mAprSharedMemory), mSize, mName.c_str(), mPool());
+ apr_status_t status = apr_shm_create( &(mImpl->mAprSharedMemory), mSize, mName.c_str(), gAPRPoolp );
if(ll_apr_warn_status(status))
{
@@ -211,7 +210,7 @@ bool LLPluginSharedMemory::destroy(void)
}
mImpl->mAprSharedMemory = NULL;
}
- mPool.destroy();
+
return true;
}
@@ -220,8 +219,7 @@ bool LLPluginSharedMemory::attach(const std::string &name, size_t size)
mName = name;
mSize = size;
- mPool.create();
- apr_status_t status = apr_shm_attach( &(mImpl->mAprSharedMemory), mName.c_str(), mPool() );
+ apr_status_t status = apr_shm_attach( &(mImpl->mAprSharedMemory), mName.c_str(), gAPRPoolp );
if(ll_apr_warn_status(status))
{
@@ -243,7 +241,6 @@ bool LLPluginSharedMemory::detach(void)
}
mImpl->mAprSharedMemory = NULL;
}
- mPool.destroy();
return true;
}
diff --git a/indra/llplugin/llpluginsharedmemory.h b/indra/llplugin/llpluginsharedmemory.h
index 84b7a58c32..c6cd49cabb 100644
--- a/indra/llplugin/llpluginsharedmemory.h
+++ b/indra/llplugin/llpluginsharedmemory.h
@@ -28,8 +28,6 @@
#ifndef LL_LLPLUGINSHAREDMEMORY_H
#define LL_LLPLUGINSHAREDMEMORY_H
-#include "llaprpool.h"
-
class LLPluginSharedMemoryPlatformImpl;
/**
@@ -110,7 +108,6 @@ private:
bool close(void);
bool unlink(void);
- LLAPRPool mPool;
std::string mName;
size_t mSize;
void *mMappedAddress;
diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp
index ff86e4e135..516a58db88 100644
--- a/indra/llplugin/slplugin/slplugin.cpp
+++ b/indra/llplugin/slplugin/slplugin.cpp
@@ -176,6 +176,8 @@ int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdL
int main(int argc, char **argv)
#endif
{
+ ll_init_apr();
+
// Set up llerror logging
{
LLError::initForApplication(".");
@@ -391,6 +393,8 @@ int main(int argc, char **argv)
delete plugin;
+ ll_cleanup_apr();
+
return 0;
}
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 0ab883cb70..772f173f17 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -5,6 +5,7 @@ project(llui)
include(00-Common)
include(LLCommon)
include(LLImage)
+include(LLInventory)
include(LLMath)
include(LLMessage)
include(LLRender)
@@ -16,6 +17,7 @@ include(LLXUIXML)
include_directories(
${LLCOMMON_INCLUDE_DIRS}
${LLIMAGE_INCLUDE_DIRS}
+ ${LLINVENTORY_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
${LLMESSAGE_INCLUDE_DIRS}
${LLRENDER_INCLUDE_DIRS}
@@ -35,6 +37,7 @@ set(llui_SOURCE_FILES
llcheckboxctrl.cpp
llclipboard.cpp
llcombobox.cpp
+ llcommandmanager.cpp
llconsole.cpp
llcontainerview.cpp
llctrlselectioninterface.cpp
@@ -99,6 +102,7 @@ set(llui_SOURCE_FILES
lltimectrl.cpp
lltransutil.cpp
lltoggleablemenu.cpp
+ lltoolbar.cpp
lltooltip.cpp
llui.cpp
lluicolortable.cpp
@@ -132,6 +136,7 @@ set(llui_HEADER_FILES
llcheckboxctrl.h
llclipboard.h
llcombobox.h
+ llcommandmanager.h
llconsole.h
llcontainerview.h
llctrlselectioninterface.h
@@ -201,6 +206,7 @@ set(llui_HEADER_FILES
lltextvalidate.h
lltimectrl.h
lltoggleablemenu.h
+ lltoolbar.h
lltooltip.h
lltransutil.h
lluicolortable.h
@@ -247,6 +253,7 @@ target_link_libraries(llui
${LLRENDER_LIBRARIES}
${LLWINDOW_LIBRARIES}
${LLIMAGE_LIBRARIES}
+ ${LLINVENTORY_LIBRARIES}
${LLVFS_LIBRARIES} # ugh, just for LLDir
${LLXUIXML_LIBRARIES}
${LLXML_LIBRARIES}
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 2459429f6e..74b8885e1f 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -83,10 +83,11 @@ LLButton::Params::Params()
label_color_selected("label_color_selected"), // requires is_toggle true
label_color_disabled("label_color_disabled"),
label_color_disabled_selected("label_color_disabled_selected"),
- highlight_color("highlight_color"),
image_color("image_color"),
image_color_disabled("image_color_disabled"),
- image_overlay_color("image_overlay_color", LLColor4::white),
+ image_overlay_color("image_overlay_color", LLColor4::white % 0.75f),
+ image_overlay_disabled_color("image_overlay_disabled_color", LLColor4::white % 0.3f),
+ image_overlay_selected_color("image_overlay_selected_color", LLColor4::white),
flash_color("flash_color"),
pad_right("pad_right", LLUI::sSettingGroups["config"]->getS32("ButtonHPad")),
pad_left("pad_left", LLUI::sSettingGroups["config"]->getS32("ButtonHPad")),
@@ -99,10 +100,13 @@ LLButton::Params::Params()
scale_image("scale_image", true),
hover_glow_amount("hover_glow_amount"),
commit_on_return("commit_on_return", true),
+ display_pressed_state("display_pressed_state", true),
use_draw_context_alpha("use_draw_context_alpha", true),
badge("badge"),
handle_right_mouse("handle_right_mouse"),
- held_down_delay("held_down_delay")
+ held_down_delay("held_down_delay"),
+ button_flash_count("button_flash_count"),
+ button_flash_rate("button_flash_rate")
{
addSynonym(is_toggle, "toggle");
changeDefault(initial_value, LLSD(false));
@@ -136,12 +140,13 @@ LLButton::LLButton(const LLButton::Params& p)
mSelectedLabelColor(p.label_color_selected()),
mDisabledLabelColor(p.label_color_disabled()),
mDisabledSelectedLabelColor(p.label_color_disabled_selected()),
- mHighlightColor(p.highlight_color()),
mImageColor(p.image_color()),
mFlashBgColor(p.flash_color()),
mDisabledImageColor(p.image_color_disabled()),
mImageOverlay(p.image_overlay()),
mImageOverlayColor(p.image_overlay_color()),
+ mImageOverlayDisabledColor(p.image_overlay_disabled_color()),
+ mImageOverlaySelectedColor(p.image_overlay_selected_color()),
mImageOverlayAlignment(LLFontGL::hAlignFromName(p.image_overlay_alignment)),
mImageOverlayTopPad(p.image_top_pad),
mImageOverlayBottomPad(p.image_bottom_pad),
@@ -159,12 +164,15 @@ LLButton::LLButton(const LLButton::Params& p)
mCommitOnReturn(p.commit_on_return),
mFadeWhenDisabled(FALSE),
mForcePressedState(false),
+ mDisplayPressedState(p.display_pressed_state),
mLastDrawCharsCount(0),
mMouseDownSignal(NULL),
mMouseUpSignal(NULL),
mHeldDownSignal(NULL),
mUseDrawContextAlpha(p.use_draw_context_alpha),
- mHandleRightMouse(p.handle_right_mouse)
+ mHandleRightMouse(p.handle_right_mouse),
+ mButtonFlashCount(p.button_flash_count),
+ mButtonFlashRate(p.button_flash_rate)
{
static LLUICachedControl<S32> llbutton_orig_h_pad ("UIButtonOrigHPad", 0);
static Params default_params(LLUICtrlFactory::getDefaultParams<LLButton>());
@@ -292,6 +300,24 @@ void LLButton::onCommit()
LLUICtrl::onCommit();
}
+boost::signals2::connection LLButton::setClickedCallback(const CommitCallbackParam& cb)
+{
+ return setClickedCallback(initCommitCallback(cb));
+}
+boost::signals2::connection LLButton::setMouseDownCallback(const CommitCallbackParam& cb)
+{
+ return setMouseDownCallback(initCommitCallback(cb));
+}
+boost::signals2::connection LLButton::setMouseUpCallback(const CommitCallbackParam& cb)
+{
+ return setMouseUpCallback(initCommitCallback(cb));
+}
+boost::signals2::connection LLButton::setHeldDownCallback(const CommitCallbackParam& cb)
+{
+ return setHeldDownCallback(initCommitCallback(cb));
+}
+
+
boost::signals2::connection LLButton::setClickedCallback( const commit_signal_t::slot_type& cb )
{
if (!mCommitSignal) mCommitSignal = new commit_signal_t();
@@ -314,7 +340,7 @@ boost::signals2::connection LLButton::setHeldDownCallback( const commit_signal_t
}
-// *TODO: Deprecate (for backwards compatability only)
+// *TODO: Deprecate (for backwards compatibility only)
boost::signals2::connection LLButton::setClickedCallback( button_callback_t cb, void* data )
{
return setClickedCallback(boost::bind(cb, data));
@@ -511,15 +537,6 @@ BOOL LLButton::handleRightMouseUp(S32 x, S32 y, MASK mask)
return TRUE;
}
-
-void LLButton::onMouseEnter(S32 x, S32 y, MASK mask)
-{
- LLUICtrl::onMouseEnter(x, y, mask);
-
- if (isInEnabledChain())
- mNeedsHighlight = TRUE;
-}
-
void LLButton::onMouseLeave(S32 x, S32 y, MASK mask)
{
LLUICtrl::onMouseLeave(x, y, mask);
@@ -534,6 +551,10 @@ void LLButton::setHighlight(bool b)
BOOL LLButton::handleHover(S32 x, S32 y, MASK mask)
{
+ if (isInEnabledChain()
+ && (!gFocusMgr.getMouseCapture() || gFocusMgr.getMouseCapture() == this))
+ mNeedsHighlight = TRUE;
+
if (!childrenHandleHover(x, y, mask))
{
if (mMouseDownTimer.getStarted())
@@ -554,21 +575,29 @@ BOOL LLButton::handleHover(S32 x, S32 y, MASK mask)
return TRUE;
}
+void LLButton::getOverlayImageSize(S32& overlay_width, S32& overlay_height)
+{
+ overlay_width = mImageOverlay->getWidth();
+ overlay_height = mImageOverlay->getHeight();
+
+ F32 scale_factor = llmin((F32)getRect().getWidth() / (F32)overlay_width, (F32)getRect().getHeight() / (F32)overlay_height, 1.f);
+ overlay_width = llround((F32)overlay_width * scale_factor);
+ overlay_height = llround((F32)overlay_height * scale_factor);
+}
+
// virtual
void LLButton::draw()
{
F32 alpha = mUseDrawContextAlpha ? getDrawContext().mAlpha : getCurrentTransparency();
bool flash = FALSE;
- static LLUICachedControl<F32> button_flash_rate("ButtonFlashRate", 0);
- static LLUICachedControl<S32> button_flash_count("ButtonFlashCount", 0);
if( mFlashing )
{
F32 elapsed = mFlashingTimer.getElapsedTimeF32();
- S32 flash_count = S32(elapsed * button_flash_rate * 2.f);
+ S32 flash_count = S32(elapsed * mButtonFlashRate * 2.f);
// flash on or off?
- flash = (flash_count % 2 == 0) || flash_count > S32((F32)button_flash_count * 2.f);
+ flash = (flash_count % 2 == 0) || flash_count > S32((F32)mButtonFlashCount * 2.f);
}
bool pressed_by_keyboard = FALSE;
@@ -597,7 +626,7 @@ void LLButton::draw()
LLColor4 glow_color = LLColor4::white;
LLRender::eBlendType glow_type = LLRender::BT_ADD_WITH_ALPHA;
LLUIImage* imagep = NULL;
- if (pressed)
+ if (pressed && mDisplayPressedState)
{
imagep = selected ? mImagePressedSelected : mImagePressed;
}
@@ -707,16 +736,7 @@ void LLButton::draw()
}
// Unselected label assignments
- LLWString label;
-
- if( getToggleState() )
- {
- label = mSelectedLabel;
- }
- else
- {
- label = mUnselectedLabel;
- }
+ LLWString label = getCurrentLabel();
// overlay with keyboard focus border
if (hasFocus())
@@ -781,18 +801,16 @@ void LLButton::draw()
if (mImageOverlay.notNull())
{
// get max width and height (discard level 0)
- S32 overlay_width = mImageOverlay->getWidth();
- S32 overlay_height = mImageOverlay->getHeight();
+ S32 overlay_width;
+ S32 overlay_height;
- F32 scale_factor = llmin((F32)getRect().getWidth() / (F32)overlay_width, (F32)getRect().getHeight() / (F32)overlay_height, 1.f);
- overlay_width = llround((F32)overlay_width * scale_factor);
- overlay_height = llround((F32)overlay_height * scale_factor);
+ getOverlayImageSize(overlay_width, overlay_height);
S32 center_x = getLocalRect().getCenterX();
S32 center_y = getLocalRect().getCenterY();
//FUGLY HACK FOR "DEPRESSED" BUTTONS
- if (pressed)
+ if (pressed && mDisplayPressedState)
{
center_y--;
center_x++;
@@ -803,7 +821,11 @@ void LLButton::draw()
LLColor4 overlay_color = mImageOverlayColor.get();
if (!enabled)
{
- overlay_color.mV[VALPHA] = 0.5f;
+ overlay_color = mImageOverlayDisabledColor.get();
+ }
+ else if (getToggleState())
+ {
+ overlay_color = mImageOverlaySelectedColor.get();
}
overlay_color.mV[VALPHA] *= alpha;
@@ -811,6 +833,7 @@ void LLButton::draw()
{
case LLFontGL::LEFT:
text_left += overlay_width + mImgOverlayLabelSpace;
+ text_width -= overlay_width + mImgOverlayLabelSpace;
mImageOverlay->draw(
mLeftHPad,
center_y - (overlay_height / 2),
@@ -828,6 +851,7 @@ void LLButton::draw()
break;
case LLFontGL::RIGHT:
text_right -= overlay_width + mImgOverlayLabelSpace;
+ text_width -= overlay_width + mImgOverlayLabelSpace;
mImageOverlay->draw(
getRect().getWidth() - mRightHPad - overlay_width,
center_y - (overlay_height / 2),
@@ -863,7 +887,7 @@ void LLButton::draw()
S32 y_offset = 2 + (getRect().getHeight() - 20)/2;
- if (pressed)
+ if (pressed && mDisplayPressedState)
{
y_offset--;
x++;
@@ -919,7 +943,7 @@ void LLButton::setToggleState(BOOL b)
void LLButton::setFlashing( BOOL b )
{
- if (b != mFlashing)
+ if ((bool)b != mFlashing)
{
mFlashing = b;
mFlashingTimer.reset();
@@ -959,6 +983,23 @@ void LLButton::setLabelSelected( const LLStringExplicit& label )
mSelectedLabel = label;
}
+bool LLButton::labelIsTruncated() const
+{
+ return getCurrentLabel().getString().size() > mLastDrawCharsCount;
+}
+
+const LLUIString& LLButton::getCurrentLabel() const
+{
+ if( getToggleState() )
+ {
+ return mSelectedLabel;
+ }
+ else
+ {
+ return mUnselectedLabel;
+ }
+}
+
void LLButton::setImageUnselected(LLPointer<LLUIImage> image)
{
mImageUnselected = image;
@@ -970,16 +1011,7 @@ void LLButton::setImageUnselected(LLPointer<LLUIImage> image)
void LLButton::autoResize()
{
- LLUIString label;
- if(getToggleState())
- {
- label = mSelectedLabel;
- }
- else
- {
- label = mUnselectedLabel;
- }
- resize(label);
+ resize(getCurrentLabel());
}
void LLButton::resize(LLUIString label)
@@ -989,11 +1021,32 @@ void LLButton::resize(LLUIString label)
// get current btn length
S32 btn_width =getRect().getWidth();
// check if it need resize
- if (mAutoResize == TRUE)
+ if (mAutoResize)
{
- if (btn_width - (mRightHPad + mLeftHPad) < label_width)
+ S32 min_width = label_width + mLeftHPad + mRightHPad;
+ if (mImageOverlay)
+ {
+ S32 overlay_width = mImageOverlay->getWidth();
+ F32 scale_factor = (getRect().getHeight() - (mImageOverlayBottomPad + mImageOverlayTopPad)) / (F32)mImageOverlay->getHeight();
+ overlay_width = llround((F32)overlay_width * scale_factor);
+
+ switch(mImageOverlayAlignment)
+ {
+ case LLFontGL::LEFT:
+ case LLFontGL::RIGHT:
+ min_width += overlay_width + mImgOverlayLabelSpace;
+ break;
+ case LLFontGL::HCENTER:
+ min_width = llmax(min_width, overlay_width + mLeftHPad + mRightHPad);
+ break;
+ default:
+ // draw nothing
+ break;
+ }
+ }
+ if (btn_width < min_width)
{
- setRect(LLRect( getRect().mLeft, getRect().mTop, getRect().mLeft + label_width + mLeftHPad + mRightHPad , getRect().mBottom));
+ reshape(min_width, getRect().getHeight());
}
}
}
@@ -1140,7 +1193,7 @@ void LLButton::setFloaterToggle(LLUICtrl* ctrl, const LLSD& sdname)
// Set the button control value (toggle state) to the floater visibility control (Sets the value as well)
button->setControlVariable(LLFloater::getControlGroup()->getControl(vis_control_name));
// Set the clicked callback to toggle the floater
- button->setClickedCallback(boost::bind(&LLFloaterReg::toggleFloaterInstance, sdname));
+ button->setClickedCallback(boost::bind(&LLFloaterReg::toggleInstance, sdname, LLSD()));
}
// static
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 5968916006..deaa0823c6 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -91,10 +91,11 @@ public:
label_color_selected,
label_color_disabled,
label_color_disabled_selected,
- highlight_color,
image_color,
image_color_disabled,
image_overlay_color,
+ image_overlay_selected_color,
+ image_overlay_disabled_color,
flash_color;
// layout
@@ -120,7 +121,8 @@ public:
// misc
Optional<bool> is_toggle,
scale_image,
- commit_on_return;
+ commit_on_return,
+ display_pressed_state;
Optional<F32> hover_glow_amount;
Optional<TimeIntervalParam> held_down_delay;
@@ -131,6 +133,9 @@ public:
Optional<bool> handle_right_mouse;
+ Optional<S32> button_flash_count;
+ Optional<F32> button_flash_rate;
+
Params();
};
@@ -157,7 +162,6 @@ public:
virtual void draw();
/*virtual*/ BOOL postBuild();
- virtual void onMouseEnter(S32 x, S32 y, MASK mask);
virtual void onMouseLeave(S32 x, S32 y, MASK mask);
virtual void onMouseCaptureLost();
@@ -168,6 +172,11 @@ public:
void setUseEllipses( BOOL use_ellipses ) { mUseEllipses = use_ellipses; }
+ boost::signals2::connection setClickedCallback(const CommitCallbackParam& cb);
+ boost::signals2::connection setMouseDownCallback(const CommitCallbackParam& cb);
+ boost::signals2::connection setMouseUpCallback(const CommitCallbackParam& cb);
+ boost::signals2::connection setHeldDownCallback(const CommitCallbackParam& cb);
+
boost::signals2::connection setClickedCallback( const commit_signal_t::slot_type& cb ); // mouse down and up within button
boost::signals2::connection setMouseDownCallback( const commit_signal_t::slot_type& cb );
boost::signals2::connection setMouseUpCallback( const commit_signal_t::slot_type& cb ); // mouse up, EVEN IF NOT IN BUTTON
@@ -235,6 +244,8 @@ public:
S32 getLastDrawCharsCount() const { return mLastDrawCharsCount; }
+ bool labelIsTruncated() const;
+ const LLUIString& getCurrentLabel() const;
void setScaleImage(BOOL scale) { mScaleImage = scale; }
BOOL getScaleImage() const { return mScaleImage; }
@@ -270,14 +281,16 @@ public:
protected:
LLPointer<LLUIImage> getImageUnselected() const { return mImageUnselected; }
LLPointer<LLUIImage> getImageSelected() const { return mImageSelected; }
+ void getOverlayImageSize(S32& overlay_width, S32& overlay_height);
LLFrameTimer mMouseDownTimer;
+ bool mNeedsHighlight;
+ S32 mButtonFlashCount;
+ F32 mButtonFlashRate;
-private:
void drawBorder(LLUIImage* imagep, const LLColor4& color, S32 size);
void resetMouseDownTimer();
-private:
commit_signal_t* mMouseDownSignal;
commit_signal_t* mMouseUpSignal;
commit_signal_t* mHeldDownSignal;
@@ -293,6 +306,8 @@ private:
LLPointer<LLUIImage> mImageOverlay;
LLFontGL::HAlign mImageOverlayAlignment;
LLUIColor mImageOverlayColor;
+ LLUIColor mImageOverlaySelectedColor;
+ LLUIColor mImageOverlayDisabledColor;
LLPointer<LLUIImage> mImageUnselected;
LLUIString mUnselectedLabel;
@@ -321,21 +336,19 @@ private:
flash icon name is set in attributes(by default it isn't). First way is used otherwise. */
LLPointer<LLUIImage> mImageFlash;
- LLUIColor mHighlightColor;
LLUIColor mFlashBgColor;
LLUIColor mImageColor;
LLUIColor mDisabledImageColor;
- BOOL mIsToggle;
- BOOL mScaleImage;
-
- BOOL mDropShadowedText;
- BOOL mAutoResize;
- BOOL mUseEllipses;
- BOOL mBorderEnabled;
+ bool mIsToggle;
+ bool mScaleImage;
- BOOL mFlashing;
+ bool mDropShadowedText;
+ bool mAutoResize;
+ bool mUseEllipses;
+ bool mBorderEnabled;
+ bool mFlashing;
LLFontGL::HAlign mHAlign;
S32 mLeftHPad;
@@ -355,10 +368,10 @@ private:
F32 mHoverGlowStrength;
F32 mCurGlowStrength;
- BOOL mNeedsHighlight;
- BOOL mCommitOnReturn;
- BOOL mFadeWhenDisabled;
+ bool mCommitOnReturn;
+ bool mFadeWhenDisabled;
bool mForcePressedState;
+ bool mDisplayPressedState;
LLFrameTimer mFlashingTimer;
diff --git a/indra/llui/llclipboard.cpp b/indra/llui/llclipboard.cpp
index 984c4ec5fb..6910b962a1 100644
--- a/indra/llui/llclipboard.cpp
+++ b/indra/llui/llclipboard.cpp
@@ -40,6 +40,7 @@ LLClipboard gClipboard;
LLClipboard::LLClipboard()
{
+ mSourceItem = NULL;
}
@@ -134,3 +135,8 @@ BOOL LLClipboard::canPastePrimaryString() const
{
return LLView::getWindow()->isPrimaryTextAvailable();
}
+
+void LLClipboard::setSourceObject(const LLUUID& source_id, LLAssetType::EType type)
+{
+ mSourceItem = new LLInventoryObject (source_id, LLUUID::null, type, "");
+}
diff --git a/indra/llui/llclipboard.h b/indra/llui/llclipboard.h
index 24cb46c3f4..9371b94284 100644
--- a/indra/llui/llclipboard.h
+++ b/indra/llui/llclipboard.h
@@ -30,6 +30,8 @@
#include "llstring.h"
#include "lluuid.h"
+#include "stdenums.h"
+#include "llinventory.h"
class LLClipboard
@@ -52,9 +54,14 @@ public:
BOOL canPastePrimaryString() const;
const LLWString& getPastePrimaryWString(LLUUID* source_id = NULL);
+ // Support clipboard for object known only by their uuid and asset type
+ void setSourceObject(const LLUUID& source_id, LLAssetType::EType type);
+ const LLInventoryObject* getSourceObject() { return mSourceItem; }
+
private:
- LLUUID mSourceID;
+ LLUUID mSourceID;
LLWString mString;
+ LLInventoryObject* mSourceItem;
};
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
new file mode 100644
index 0000000000..128ba609cb
--- /dev/null
+++ b/indra/llui/llcommandmanager.cpp
@@ -0,0 +1,171 @@
+/**
+ * @file llcommandmanager.cpp
+ * @brief LLCommandManager class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+// A control that displays the name of the chosen item, which when
+// clicked shows a scrolling box of options.
+
+#include "linden_common.h"
+
+#include "llcommandmanager.h"
+#include "lldir.h"
+#include "llerror.h"
+#include "llxuiparser.h"
+
+#include <boost/foreach.hpp>
+
+
+//
+// LLCommandId class
+//
+
+const LLCommandId LLCommandId::null = LLCommandId();
+
+//
+// LLCommand class
+//
+
+LLCommand::Params::Params()
+ : available_in_toybox("available_in_toybox", false)
+ , icon("icon")
+ , label_ref("label_ref")
+ , name("name")
+ , tooltip_ref("tooltip_ref")
+ , execute_function("execute_function")
+ , execute_parameters("execute_parameters")
+ , execute_stop_function("execute_stop_function")
+ , execute_stop_parameters("execute_stop_parameters")
+ , is_enabled_function("is_enabled_function")
+ , is_enabled_parameters("is_enabled_parameters")
+ , is_running_function("is_running_function")
+ , is_running_parameters("is_running_parameters")
+ , is_starting_function("is_starting_function")
+ , is_starting_parameters("is_starting_parameters")
+{
+}
+
+LLCommand::LLCommand(const LLCommand::Params& p)
+ : mAvailableInToybox(p.available_in_toybox)
+ , mIcon(p.icon)
+ , mIdentifier(p.name)
+ , mLabelRef(p.label_ref)
+ , mTooltipRef(p.tooltip_ref)
+ , mExecuteFunction(p.execute_function)
+ , mExecuteParameters(p.execute_parameters)
+ , mExecuteStopFunction(p.execute_stop_function)
+ , mExecuteStopParameters(p.execute_stop_parameters)
+ , mIsEnabledFunction(p.is_enabled_function)
+ , mIsEnabledParameters(p.is_enabled_parameters)
+ , mIsRunningFunction(p.is_running_function)
+ , mIsRunningParameters(p.is_running_parameters)
+ , mIsStartingFunction(p.is_starting_function)
+ , mIsStartingParameters(p.is_starting_parameters)
+{
+}
+
+
+//
+// LLCommandManager class
+//
+
+LLCommandManager::LLCommandManager()
+{
+}
+
+LLCommandManager::~LLCommandManager()
+{
+ for (CommandVector::iterator cmdIt = mCommands.begin(); cmdIt != mCommands.end(); ++cmdIt)
+ {
+ LLCommand * command = *cmdIt;
+
+ delete command;
+ }
+}
+
+U32 LLCommandManager::commandCount() const
+{
+ return mCommands.size();
+}
+
+LLCommand * LLCommandManager::getCommand(U32 commandIndex)
+{
+ return mCommands[commandIndex];
+}
+
+LLCommand * LLCommandManager::getCommand(const LLCommandId& commandId)
+{
+ LLCommand * command_match = NULL;
+
+ CommandIndexMap::const_iterator found = mCommandIndices.find(commandId.uuid());
+
+ if (found != mCommandIndices.end())
+ {
+ command_match = mCommands[found->second];
+ }
+
+ return command_match;
+}
+
+void LLCommandManager::addCommand(LLCommand * command)
+{
+ LLCommandId command_id = command->id();
+ mCommandIndices[command_id.uuid()] = mCommands.size();
+ mCommands.push_back(command);
+
+ lldebugs << "Successfully added command: " << command->id().name() << llendl;
+}
+
+//static
+bool LLCommandManager::load()
+{
+ LLCommandManager& mgr = LLCommandManager::instance();
+
+ std::string commands_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "commands.xml");
+
+ LLCommandManager::Params commandsParams;
+
+ LLSimpleXUIParser parser;
+
+ if (!parser.readXUI(commands_file, commandsParams))
+ {
+ llerrs << "Unable to load xml file: " << commands_file << llendl;
+ return false;
+ }
+
+ if (!commandsParams.validateBlock())
+ {
+ llerrs << "Invalid commands file: " << commands_file << llendl;
+ return false;
+ }
+
+ BOOST_FOREACH(LLCommand::Params& commandParams, commandsParams.commands)
+ {
+ LLCommand * command = new LLCommand(commandParams);
+
+ mgr.addCommand(command);
+ }
+
+ return true;
+}
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
new file mode 100644
index 0000000000..9b93ab735a
--- /dev/null
+++ b/indra/llui/llcommandmanager.h
@@ -0,0 +1,217 @@
+/**
+ * @file llcommandmanager.h
+ * @brief LLCommandManager class to hold commands
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLCOMMANDMANAGER_H
+#define LL_LLCOMMANDMANAGER_H
+
+#include "llinitparam.h"
+#include "llsingleton.h"
+
+
+class LLCommand;
+class LLCommandManager;
+
+
+class LLCommandId
+{
+public:
+ friend class LLCommand;
+ friend class LLCommandManager;
+
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Mandatory<std::string> name;
+
+ Params()
+ : name("name")
+ {}
+ };
+
+ LLCommandId()
+ : mName("null command")
+ {
+ mUUID = LLUUID::generateNewID(mName);
+ }
+
+ LLCommandId(const std::string& name)
+ : mName(name)
+ {
+ mUUID = LLUUID::generateNewID(name);
+ }
+
+ LLCommandId(const Params& p)
+ : mName(p.name)
+ {
+ mUUID = LLUUID::generateNewID(p.name);
+ }
+
+ LLCommandId(const LLUUID& uuid)
+ : mName(""),
+ mUUID(uuid)
+ {
+ }
+
+ const std::string& name() const { return mName; }
+ const LLUUID& uuid() const { return mUUID; }
+
+ bool operator!=(const LLCommandId& command) const
+ {
+ return (mUUID != command.mUUID);
+ }
+
+ bool operator==(const LLCommandId& command) const
+ {
+ return (mUUID == command.mUUID);
+ }
+
+ bool operator<(const LLCommandId& command) const
+ {
+ return (mName < command.mName);
+ }
+
+ static const LLCommandId null;
+
+private:
+ std::string mName;
+ LLUUID mUUID;
+};
+
+typedef std::list<LLCommandId> command_id_list_t;
+
+
+class LLCommand
+{
+public:
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Mandatory<bool> available_in_toybox;
+ Mandatory<std::string> icon;
+ Mandatory<std::string> label_ref;
+ Mandatory<std::string> name;
+ Mandatory<std::string> tooltip_ref;
+
+ Mandatory<std::string> execute_function;
+ Optional<LLSD> execute_parameters;
+
+ Optional<std::string> execute_stop_function;
+ Optional<LLSD> execute_stop_parameters;
+
+ Optional<std::string> is_enabled_function;
+ Optional<LLSD> is_enabled_parameters;
+
+ Optional<std::string> is_running_function;
+ Optional<LLSD> is_running_parameters;
+
+ Optional<std::string> is_starting_function;
+ Optional<LLSD> is_starting_parameters;
+
+ Params();
+ };
+
+ LLCommand(const LLCommand::Params& p);
+
+ const bool availableInToybox() const { return mAvailableInToybox; }
+ const std::string& icon() const { return mIcon; }
+ const LLCommandId& id() const { return mIdentifier; }
+ const std::string& labelRef() const { return mLabelRef; }
+ const std::string& tooltipRef() const { return mTooltipRef; }
+
+ const std::string& executeFunctionName() const { return mExecuteFunction; }
+ const LLSD& executeParameters() const { return mExecuteParameters; }
+
+ const std::string& executeStopFunctionName() const { return mExecuteStopFunction; }
+ const LLSD& executeStopParameters() const { return mExecuteStopParameters; }
+
+ const std::string& isEnabledFunctionName() const { return mIsEnabledFunction; }
+ const LLSD& isEnabledParameters() const { return mIsEnabledParameters; }
+
+ const std::string& isRunningFunctionName() const { return mIsRunningFunction; }
+ const LLSD& isRunningParameters() const { return mIsRunningParameters; }
+
+ const std::string& isStartingFunctionName() const { return mIsStartingFunction; }
+ const LLSD& isStartingParameters() const { return mIsStartingParameters; }
+
+private:
+ LLCommandId mIdentifier;
+
+ bool mAvailableInToybox;
+ std::string mIcon;
+ std::string mLabelRef;
+ std::string mTooltipRef;
+
+ std::string mExecuteFunction;
+ LLSD mExecuteParameters;
+
+ std::string mExecuteStopFunction;
+ LLSD mExecuteStopParameters;
+
+ std::string mIsEnabledFunction;
+ LLSD mIsEnabledParameters;
+
+ std::string mIsRunningFunction;
+ LLSD mIsRunningParameters;
+
+ std::string mIsStartingFunction;
+ LLSD mIsStartingParameters;
+};
+
+
+class LLCommandManager
+: public LLSingleton<LLCommandManager>
+{
+public:
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Multiple< LLCommand::Params, AtLeast<1> > commands;
+
+ Params()
+ : commands("command")
+ {
+ }
+ };
+
+ LLCommandManager();
+ ~LLCommandManager();
+
+ U32 commandCount() const;
+ LLCommand * getCommand(U32 commandIndex);
+ LLCommand * getCommand(const LLCommandId& commandId);
+
+ static bool load();
+
+protected:
+ void addCommand(LLCommand * command);
+
+private:
+ typedef std::map<LLUUID, U32> CommandIndexMap;
+ typedef std::vector<LLCommand *> CommandVector;
+
+ CommandVector mCommands;
+ CommandIndexMap mCommandIndices;
+};
+
+
+#endif // LL_LLCOMMANDMANAGER_H
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index b1c27126d9..6397bbd0de 100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
@@ -92,11 +92,12 @@ void LLDockControl::setDock(LLView* dockWidget)
void LLDockControl::getAllowedRect(LLRect& rect)
{
- rect = mDockableFloater->getRootView()->getRect();
+ rect = mDockableFloater->getRootView()->getChild<LLView>("non_toolbar_panel")->getRect();
}
void LLDockControl::repositionDockable()
{
+ if (!mDockWidget) return;
LLRect dockRect = mDockWidget->calcScreenRect();
LLRect rootRect;
mGetAllowedRectCallback(rootRect);
@@ -160,7 +161,7 @@ bool LLDockControl::isDockVisible()
case TOP:
{
// check is dock inside parent rect
- // assume that parent for all dockable flaoters
+ // assume that parent for all dockable floaters
// is the root view
LLRect dockParentRect =
mDockWidget->getRootView()->calcScreenRect();
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index bc494e97f5..d1d840729d 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -62,6 +62,17 @@
// use this to control "jumping" behavior when Ctrl-Tabbing
const S32 TABBED_FLOATER_OFFSET = 0;
+namespace LLInitParam
+{
+ void TypeValues<LLFloaterEnums::EOpenPositioning>::declareValues()
+ {
+ declare("none", LLFloaterEnums::OPEN_POSITIONING_NONE);
+ declare("cascading", LLFloaterEnums::OPEN_POSITIONING_CASCADING);
+ declare("centered", LLFloaterEnums::OPEN_POSITIONING_CENTERED);
+ declare("specified", LLFloaterEnums::OPEN_POSITIONING_SPECIFIED);
+ }
+}
+
std::string LLFloater::sButtonNames[BUTTON_COUNT] =
{
"llfloater_close_btn", //BUTTON_CLOSE
@@ -154,7 +165,6 @@ LLFloater::Params::Params()
: title("title"),
short_title("short_title"),
single_instance("single_instance", false),
- auto_tile("auto_tile", false),
can_resize("can_resize", false),
can_minimize("can_minimize", true),
can_close("can_close", true),
@@ -164,7 +174,9 @@ LLFloater::Params::Params()
save_rect("save_rect", false),
save_visibility("save_visibility", false),
can_dock("can_dock", false),
- open_centered("open_centered", false),
+ open_positioning("open_positioning", LLFloaterEnums::OPEN_POSITIONING_NONE),
+ specified_left("specified_left"),
+ specified_bottom("specified_bottom"),
header_height("header_height", 0),
legacy_header_height("legacy_header_height", 0),
close_image("close_image"),
@@ -227,12 +239,14 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
mShortTitle(p.short_title),
mSingleInstance(p.single_instance),
mKey(key),
- mAutoTile(p.auto_tile),
mCanTearOff(p.can_tear_off),
mCanMinimize(p.can_minimize),
mCanClose(p.can_close),
mDragOnLeft(p.can_drag_on_left),
mResizable(p.can_resize),
+ mOpenPositioning(p.open_positioning),
+ mSpecifiedLeft(p.specified_left),
+ mSpecifiedBottom(p.specified_bottom),
mMinWidth(p.min_width),
mMinHeight(p.min_height),
mHeaderHeight(p.header_height),
@@ -459,15 +473,24 @@ void LLFloater::layoutResizeCtrls()
mResizeHandle[3]->setRect(rect);
}
-void LLFloater::enableResizeCtrls(bool enable)
+void LLFloater::enableResizeCtrls(bool enable, bool width, bool height)
{
+ mResizeBar[LLResizeBar::LEFT]->setVisible(enable && width);
+ mResizeBar[LLResizeBar::LEFT]->setEnabled(enable && width);
+
+ mResizeBar[LLResizeBar::TOP]->setVisible(enable && height);
+ mResizeBar[LLResizeBar::TOP]->setEnabled(enable && height);
+
+ mResizeBar[LLResizeBar::RIGHT]->setVisible(enable && width);
+ mResizeBar[LLResizeBar::RIGHT]->setEnabled(enable && width);
+
+ mResizeBar[LLResizeBar::BOTTOM]->setVisible(enable && height);
+ mResizeBar[LLResizeBar::BOTTOM]->setEnabled(enable && height);
+
for (S32 i = 0; i < 4; ++i)
{
- mResizeBar[i]->setVisible(enable);
- mResizeBar[i]->setEnabled(enable);
-
- mResizeHandle[i]->setVisible(enable);
- mResizeHandle[i]->setEnabled(enable);
+ mResizeHandle[i]->setVisible(enable && width && height);
+ mResizeHandle[i]->setEnabled(enable && width && height);
}
}
@@ -660,6 +683,7 @@ void LLFloater::openFloater(const LLSD& key)
}
else
{
+ applyControlsAndPosition(LLFloaterReg::getLastFloaterCascading());
setMinimized(FALSE);
setVisibleAndFrontmost(mAutoFocus);
}
@@ -822,43 +846,100 @@ LLMultiFloater* LLFloater::getHost()
return (LLMultiFloater*)mHostHandle.get();
}
-void LLFloater::applySavedVariables()
+void LLFloater::applyControlsAndPosition(LLFloater* other)
{
- applyRectControl();
- applyDockState();
+ if (!applyDockState())
+ {
+ if (!applyRectControl())
+ {
+ applyPositioning(other);
+ }
+ }
}
-void LLFloater::applyRectControl()
+bool LLFloater::applyRectControl()
{
- // first, center on screen if requested
- if (mOpenCentered)
- {
- center();
- }
+ bool saved_rect = false;
- // override center if we have saved rect control
+ // If we have a saved rect, use it
if (mRectControl.size() > 1)
{
const LLRect& rect = getControlGroup()->getRect(mRectControl);
- if (rect.getWidth() > 0 && rect.getHeight() > 0)
+ saved_rect = rect.notEmpty();
+ if (saved_rect)
{
- translate( rect.mLeft - getRect().mLeft, rect.mBottom - getRect().mBottom);
+ setOrigin(rect.mLeft, rect.mBottom);
+
if (mResizable)
{
reshape(llmax(mMinWidth, rect.getWidth()), llmax(mMinHeight, rect.getHeight()));
}
}
}
+
+ return saved_rect;
}
-void LLFloater::applyDockState()
+bool LLFloater::applyDockState()
{
+ bool docked = false;
+
if (mDocStateControl.size() > 1)
{
- bool dockState = getControlGroup()->getBOOL(mDocStateControl);
- setDocked(dockState);
+ docked = getControlGroup()->getBOOL(mDocStateControl);
+ setDocked(docked);
}
+ return docked;
+}
+
+void LLFloater::applyPositioning(LLFloater* other)
+{
+ // Otherwise position according to the positioning code
+ switch (mOpenPositioning)
+ {
+ case LLFloaterEnums::OPEN_POSITIONING_CENTERED:
+ center();
+ break;
+
+ case LLFloaterEnums::OPEN_POSITIONING_SPECIFIED:
+ {
+ // Translate relative to snap rect
+ setOrigin(mSpecifiedLeft, mSpecifiedBottom);
+ const LLRect& snap_rect = gFloaterView->getSnapRect();
+ translate(snap_rect.mLeft, snap_rect.mBottom);
+ translateIntoRect(snap_rect, FALSE);
+ }
+ break;
+
+ case LLFloaterEnums::OPEN_POSITIONING_CASCADING:
+ if (other != NULL)
+ {
+ stackWith(*other);
+ }
+ else
+ {
+ static const U32 CASCADING_FLOATER_HOFFSET = 0;
+ static const U32 CASCADING_FLOATER_VOFFSET = 0;
+
+ const LLRect& snap_rect = gFloaterView->getSnapRect();
+
+ const S32 horizontal_offset = CASCADING_FLOATER_HOFFSET;
+ const S32 vertical_offset = snap_rect.getHeight() - CASCADING_FLOATER_VOFFSET;
+
+ S32 rect_height = getRect().getHeight();
+ setOrigin(horizontal_offset, vertical_offset - rect_height);
+
+ translate(snap_rect.mLeft, snap_rect.mBottom);
+ translateIntoRect(snap_rect, FALSE);
+ }
+ break;
+
+ case LLFloaterEnums::OPEN_POSITIONING_NONE:
+ default:
+ // Do nothing
+ break;
+ }
}
void LLFloater::applyTitle()
@@ -1029,7 +1110,7 @@ void LLFloater::setMinimized(BOOL minimize)
if (minimize == mMinimized) return;
- if(mMinimizeSignal)
+ if (mMinimizeSignal)
{
(*mMinimizeSignal)(this, LLSD(minimize));
}
@@ -2451,6 +2532,52 @@ void LLFloaterView::closeAllChildren(bool app_quitting)
}
}
+void LLFloaterView::hiddenFloaterClosed(LLFloater* floater)
+{
+ for (hidden_floaters_t::iterator it = mHiddenFloaters.begin(), end_it = mHiddenFloaters.end();
+ it != end_it;
+ ++it)
+ {
+ if (it->first.get() == floater)
+ {
+ it->second.disconnect();
+ mHiddenFloaters.erase(it);
+ break;
+ }
+ }
+}
+
+void LLFloaterView::hideAllFloaters()
+{
+ child_list_t child_list = *(getChildList());
+
+ for (child_list_iter_t it = child_list.begin(); it != child_list.end(); ++it)
+ {
+ LLFloater* floaterp = dynamic_cast<LLFloater*>(*it);
+ if (floaterp && floaterp->getVisible())
+ {
+ floaterp->setVisible(false);
+ boost::signals2::connection connection = floaterp->mCloseSignal.connect(boost::bind(&LLFloaterView::hiddenFloaterClosed, this, floaterp));
+ mHiddenFloaters.push_back(std::make_pair(floaterp->getHandle(), connection));
+ }
+ }
+}
+
+void LLFloaterView::showHiddenFloaters()
+{
+ for (hidden_floaters_t::iterator it = mHiddenFloaters.begin(), end_it = mHiddenFloaters.end();
+ it != end_it;
+ ++it)
+ {
+ LLFloater* floaterp = it->first.get();
+ if (floaterp)
+ {
+ floaterp->setVisible(true);
+ }
+ it->second.disconnect();
+ }
+ mHiddenFloaters.clear();
+}
BOOL LLFloaterView::allChildrenClosed()
{
@@ -2549,7 +2676,7 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
}
// move window fully onscreen
- if (floater->translateIntoRect( getLocalRect(), allow_partial_outside ))
+ if (floater->translateIntoRect( getSnapRect(), allow_partial_outside ))
{
floater->clearSnapTarget();
}
@@ -2775,7 +2902,6 @@ void LLFloater::setInstanceName(const std::string& name)
{
mDocStateControl = LLFloaterReg::declareDockStateControl(ctrl_name);
}
-
}
}
@@ -2837,8 +2963,10 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
mHeaderHeight = p.header_height;
mLegacyHeaderHeight = p.legacy_header_height;
mSingleInstance = p.single_instance;
- mAutoTile = p.auto_tile;
- mOpenCentered = p.open_centered;
+
+ mOpenPositioning = p.open_positioning;
+ mSpecifiedLeft = p.specified_left;
+ mSpecifiedBottom = p.specified_bottom;
if (p.save_rect && mRectControl.empty())
{
@@ -2848,7 +2976,6 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
{
mVisibilityControl = "t"; // flag to build mVisibilityControl name once mInstanceName is set
}
-
if(p.save_dock_state)
{
mDocStateControl = "t"; // flag to build mDocStateControl name once mInstanceName is set
@@ -2857,7 +2984,7 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
// open callback
if (p.open_callback.isProvided())
{
- mOpenSignal.connect(initCommitCallback(p.open_callback));
+ setOpenCallback(initCommitCallback(p.open_callback));
}
// close callback
if (p.close_callback.isProvided())
@@ -2872,6 +2999,11 @@ boost::signals2::connection LLFloater::setMinimizeCallback( const commit_signal_
return mMinimizeSignal->connect(cb);
}
+boost::signals2::connection LLFloater::setOpenCallback( const commit_signal_t::slot_type& cb )
+{
+ return mOpenSignal.connect(cb);
+}
+
boost::signals2::connection LLFloater::setCloseCallback( const commit_signal_t::slot_type& cb )
{
return mCloseSignal.connect(cb);
@@ -2916,7 +3048,9 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::str
return FALSE;
}
- parser.readXUI(referenced_xml, params, LLUICtrlFactory::getInstance()->getCurFileName());
+ Params referenced_params;
+ parser.readXUI(referenced_xml, referenced_params, LLUICtrlFactory::getInstance()->getCurFileName());
+ params.fillFrom(referenced_params);
// add children using dimensions from referenced xml for consistent layout
setShape(params.rect);
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 58c2d34253..8beb11507e 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -35,6 +35,7 @@
#include "lluuid.h"
//#include "llnotificationsutil.h"
#include <set>
+#include <boost/signals2.hpp>
class LLDragHandle;
class LLResizeHandle;
@@ -59,11 +60,35 @@ const BOOL CLOSE_NO = FALSE;
const BOOL ADJUST_VERTICAL_YES = TRUE;
const BOOL ADJUST_VERTICAL_NO = FALSE;
+namespace LLFloaterEnums
+{
+ enum EOpenPositioning
+ {
+ OPEN_POSITIONING_NONE,
+ OPEN_POSITIONING_CASCADING,
+ OPEN_POSITIONING_CENTERED,
+ OPEN_POSITIONING_SPECIFIED,
+
+ OPEN_POSITIONING_COUNT
+ };
+}
+
+namespace LLInitParam
+{
+ template<>
+ struct TypeValues<LLFloaterEnums::EOpenPositioning> : public TypeValuesHelper<LLFloaterEnums::EOpenPositioning>
+ {
+ static void declareValues();
+ };
+}
+
+
class LLFloater : public LLPanel
{
-friend class LLFloaterView;
-friend class LLFloaterReg;
-friend class LLMultiFloater;
+ friend class LLFloaterView;
+ friend class LLFloaterReg;
+ friend class LLMultiFloater;
+
public:
struct KeyCompare
{
@@ -95,7 +120,6 @@ public:
short_title;
Optional<bool> single_instance,
- auto_tile,
can_resize,
can_minimize,
can_close,
@@ -104,8 +128,13 @@ public:
save_rect,
save_visibility,
save_dock_state,
- can_dock,
- open_centered;
+ can_dock;
+
+ Optional<LLFloaterEnums::EOpenPositioning> open_positioning;
+ Optional<S32> specified_left;
+ Optional<S32> specified_bottom;
+
+
Optional<S32> header_height,
legacy_header_height; // HACK see initFromXML()
@@ -144,6 +173,7 @@ public:
bool buildFromFile(const std::string &filename, LLXMLNodePtr output_node = NULL);
boost::signals2::connection setMinimizeCallback( const commit_signal_t::slot_type& cb );
+ boost::signals2::connection setOpenCallback( const commit_signal_t::slot_type& cb );
boost::signals2::connection setCloseCallback( const commit_signal_t::slot_type& cb );
void initFromParams(const LLFloater::Params& p);
@@ -265,8 +295,6 @@ public:
virtual void setTornOff(bool torn_off) { mTornOff = torn_off; }
- void stackWith(LLFloater& other);
-
// Return a closeable floater, if any, given the current focus.
static LLFloater* getClosableFloaterFromFocus();
@@ -290,11 +318,17 @@ public:
void updateTransparency(ETypeTransparency transparency_type);
+ void enableResizeCtrls(bool enable, bool width = true, bool height = true);
+
+ bool isPositioning(LLFloaterEnums::EOpenPositioning p) const { return (p == mOpenPositioning); }
protected:
- virtual void applySavedVariables();
+ void applyControlsAndPosition(LLFloater* other);
+
+ void stackWith(LLFloater& other);
- void applyRectControl();
- void applyDockState();
+ virtual bool applyRectControl();
+ bool applyDockState();
+ void applyPositioning(LLFloater* other);
void storeRectControl();
void storeVisibilityControl();
void storeDockStateControl();
@@ -339,7 +373,6 @@ private:
BOOL offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index);
void addResizeCtrls();
void layoutResizeCtrls();
- void enableResizeCtrls(bool enable);
void addDragHandle();
void layoutDragHandle(); // repair layout
@@ -377,14 +410,16 @@ private:
BOOL mSingleInstance; // TRUE if there is only ever one instance of the floater
std::string mInstanceName; // Store the instance name so we can remove ourselves from the list
- BOOL mAutoTile; // TRUE if placement of new instances tiles
BOOL mCanTearOff;
BOOL mCanMinimize;
BOOL mCanClose;
BOOL mDragOnLeft;
BOOL mResizable;
- bool mOpenCentered;
+
+ LLFloaterEnums::EOpenPositioning mOpenPositioning;
+ S32 mSpecifiedLeft;
+ S32 mSpecifiedBottom;
S32 mMinWidth;
S32 mMinHeight;
@@ -427,8 +462,6 @@ private:
typedef std::map<LLHandle<LLFloater>, LLFloater*>::iterator handle_map_iter_t;
static handle_map_t sFloaterMap;
- std::vector<LLHandle<LLView> > mMinimizedHiddenChildren;
-
BOOL mHasBeenDraggedWhileMinimized;
S32 mPreviousMinimizedBottom;
S32 mPreviousMinimizedLeft;
@@ -482,6 +515,10 @@ public:
BOOL allChildrenClosed();
void shiftFloaters(S32 x_offset, S32 y_offset);
+ void hideAllFloaters();
+ void showHiddenFloaters();
+
+
LLFloater* getFrontmost() const;
LLFloater* getBackmost() const;
LLFloater* getParentFloater(LLView* viewp) const;
@@ -496,11 +533,15 @@ public:
void setFloaterSnapView(LLHandle<LLView> snap_view) {mSnapView = snap_view; }
private:
+ void hiddenFloaterClosed(LLFloater* floater);
+
LLHandle<LLView> mSnapView;
BOOL mFocusCycleMode;
S32 mSnapOffsetBottom;
S32 mSnapOffsetRight;
S32 mMinimizePositionVOffset;
+ typedef std::vector<std::pair<LLHandle<LLFloater>, boost::signals2::connection> > hidden_floaters_t;
+ hidden_floaters_t mHiddenFloaters;
};
//
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index fc7dcfcc4e..0edfc8da2d 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -59,19 +59,57 @@ void LLFloaterReg::add(const std::string& name, const std::string& filename, con
//static
LLFloater* LLFloaterReg::getLastFloaterInGroup(const std::string& name)
{
- LLRect rect;
const std::string& groupname = sGroupMap[name];
if (!groupname.empty())
{
instance_list_t& list = sInstanceMap[groupname];
if (!list.empty())
{
- return list.back();
+ for (instance_list_t::reverse_iterator iter = list.rbegin(); iter != list.rend(); ++iter)
+ {
+ LLFloater* inst = *iter;
+
+ if (inst->getVisible() && !inst->isMinimized())
+ {
+ return inst;
+ }
+ }
}
}
return NULL;
}
+LLFloater* LLFloaterReg::getLastFloaterCascading()
+{
+ LLRect candidate_rect;
+ candidate_rect.mTop = 100000;
+ LLFloater* candidate_floater = NULL;
+
+ std::map<std::string,std::string>::const_iterator it = sGroupMap.begin(), it_end = sGroupMap.end();
+ for( ; it != it_end; ++it)
+ {
+ const std::string& group_name = it->second;
+
+ instance_list_t& instances = sInstanceMap[group_name];
+
+ for (instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); ++iter)
+ {
+ LLFloater* inst = *iter;
+
+ if (inst->getVisible() && inst->isPositioning(LLFloaterEnums::OPEN_POSITIONING_CASCADING))
+ {
+ if (candidate_rect.mTop > inst->getRect().mTop)
+ {
+ candidate_floater = inst;
+ candidate_rect = inst->getRect();
+ }
+ }
+ }
+ }
+
+ return candidate_floater;
+}
+
//static
LLFloater* LLFloaterReg::findInstance(const std::string& name, const LLSD& key)
{
@@ -107,37 +145,32 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key)
if (!groupname.empty())
{
instance_list_t& list = sInstanceMap[groupname];
- int index = list.size();
res = build_func(key);
-
+ if (!res)
+ {
+ llwarns << "Failed to build floater type: '" << name << "'." << llendl;
+ return NULL;
+ }
bool success = res->buildFromFile(xui_file, NULL);
if (!success)
{
llwarns << "Failed to build floater type: '" << name << "'." << llendl;
return NULL;
}
-
+
// Note: key should eventually be a non optional LLFloater arg; for now, set mKey to be safe
if (res->mKey.isUndefined())
{
- res->mKey = key;
+ res->mKey = key;
}
res->setInstanceName(name);
- res->applySavedVariables(); // Can't apply rect and dock state until setting instance name
- if (res->mAutoTile && !res->getHost() && index > 0)
- {
- LLFloater* last_floater = getLastFloaterInGroup(groupname);
- if (last_floater)
- {
- res->stackWith(*last_floater);
- gFloaterView->adjustToFitScreen(res, true);
- }
- }
- else
- {
- gFloaterView->adjustToFitScreen(res, false);
- }
+
+ LLFloater *last_floater = (list.empty() ? NULL : list.back());
+ res->applyControlsAndPosition(last_floater);
+
+ gFloaterView->adjustToFitScreen(res, false);
+
list.push_back(res);
}
}
@@ -403,70 +436,71 @@ void LLFloaterReg::registerControlVariables()
}
}
-// Callbacks
-
-// static
-// Call once (i.e use for init callbacks)
-void LLFloaterReg::initUICtrlToFloaterVisibilityControl(LLUICtrl* ctrl, const LLSD& sdname)
+//static
+void LLFloaterReg::toggleInstanceOrBringToFront(const LLSD& sdname, const LLSD& key)
{
- // Get the visibility control name for the floater
- std::string vis_control_name = LLFloaterReg::declareVisibilityControl(sdname.asString());
- // Set the control value to the floater visibility control (Sets the value as well)
- ctrl->setControlVariable(LLFloater::getControlGroup()->getControl(vis_control_name));
-}
+ //
+ // Floaters controlled by the toolbar behave a bit differently from others.
+ // Namely they have 3-4 states as defined in the design wiki page here:
+ // https://wiki.lindenlab.com/wiki/FUI_Button_states
+ //
+ // The basic idea is this:
+ // * If the target floater is minimized, this button press will un-minimize it.
+ // * Else if the target floater is closed open it.
+ // * Else if the target floater does not have focus, give it focus.
+ // * Also, if it is not on top, bring it forward when focus is given.
+ // * Else the target floater is open, close it.
+ //
-// callback args may use "floatername.key" format
-static void parse_name_key(std::string& name, LLSD& key)
-{
- std::string instname = name;
- std::size_t dotpos = instname.find(".");
- if (dotpos != std::string::npos)
+ std::string name = sdname.asString();
+ LLFloater* instance = getInstance(name, key);
+
+ if (!instance)
+ {
+ lldebugs << "Unable to get instance of floater '" << name << "'" << llendl;
+ }
+ else if (instance->isMinimized())
+ {
+ instance->setMinimized(FALSE);
+ instance->setFocus(TRUE);
+ }
+ else if (!instance->isShown())
+ {
+ instance->openFloater(key);
+ instance->setFocus(TRUE);
+ }
+ else if (!instance->hasFocus() && !instance->getIsChrome())
+ {
+ instance->setFocus(TRUE);
+ }
+ else
{
- name = instname.substr(0, dotpos);
- key = LLSD(instname.substr(dotpos+1, std::string::npos));
+ instance->closeFloater();
}
}
-//static
-void LLFloaterReg::showFloaterInstance(const LLSD& sdname)
-{
- LLSD key;
- std::string name = sdname.asString();
- parse_name_key(name, key);
- showInstance(name, key, TRUE);
-}
-//static
-void LLFloaterReg::hideFloaterInstance(const LLSD& sdname)
-{
- LLSD key;
- std::string name = sdname.asString();
- parse_name_key(name, key);
- hideInstance(name, key);
-}
-//static
-void LLFloaterReg::toggleFloaterInstance(const LLSD& sdname)
+// static
+U32 LLFloaterReg::getVisibleFloaterInstanceCount()
{
- LLSD key;
- std::string name = sdname.asString();
- parse_name_key(name, key);
- toggleInstance(name, key);
-}
+ U32 count = 0;
-//static
-bool LLFloaterReg::floaterInstanceVisible(const LLSD& sdname)
-{
- LLSD key;
- std::string name = sdname.asString();
- parse_name_key(name, key);
- return instanceVisible(name, key);
-}
+ std::map<std::string,std::string>::const_iterator it = sGroupMap.begin(), it_end = sGroupMap.end();
+ for( ; it != it_end; ++it)
+ {
+ const std::string& group_name = it->second;
-//static
-bool LLFloaterReg::floaterInstanceMinimized(const LLSD& sdname)
-{
- LLSD key;
- std::string name = sdname.asString();
- parse_name_key(name, key);
- LLFloater* instance = findInstance(name, key);
- return LLFloater::isShown(instance);
+ instance_list_t& instances = sInstanceMap[group_name];
+
+ for (instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); ++iter)
+ {
+ LLFloater* inst = *iter;
+
+ if (inst->getVisible() && !inst->isMinimized())
+ {
+ count++;
+ }
+ }
+ }
+
+ return count;
}
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index a2027a77a0..534cf8b40a 100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
@@ -87,6 +87,7 @@ public:
// Helpers
static LLFloater* getLastFloaterInGroup(const std::string& name);
+ static LLFloater* getLastFloaterCascading();
// Find / get (create) / remove / destroy
static LLFloater* findInstance(const std::string& name, const LLSD& key = LLSD());
@@ -123,12 +124,7 @@ public:
static void registerControlVariables();
// Callback wrappers
- static void initUICtrlToFloaterVisibilityControl(LLUICtrl* ctrl, const LLSD& sdname);
- static void showFloaterInstance(const LLSD& sdname);
- static void hideFloaterInstance(const LLSD& sdname);
- static void toggleFloaterInstance(const LLSD& sdname);
- static bool floaterInstanceVisible(const LLSD& sdname);
- static bool floaterInstanceMinimized(const LLSD& sdname);
+ static void toggleInstanceOrBringToFront(const LLSD& sdname, const LLSD& key = LLSD());
// Typed find / get / show
template <class T>
@@ -151,6 +147,7 @@ public:
static void blockShowFloaters(bool value) { sBlockShowFloaters = value;}
+ static U32 getVisibleFloaterInstanceCount();
};
#endif
diff --git a/indra/llui/llhelp.h b/indra/llui/llhelp.h
index 83317bd03c..1726347a78 100644
--- a/indra/llui/llhelp.h
+++ b/indra/llui/llhelp.h
@@ -32,6 +32,7 @@ class LLHelp
{
public:
virtual void showTopic(const std::string &topic) = 0;
+ virtual std::string getURL(const std::string &topic) = 0;
// return default (fallback) topic name suitable for showTopic()
virtual std::string defaultTopic() = 0;
// return topic to use before the user logs in
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index a250404292..4991c4afa6 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -58,7 +58,9 @@ LLLayoutPanel::LLLayoutPanel(const Params& p)
mCollapsed(FALSE),
mCollapseAmt(0.f),
mVisibleAmt(1.f), // default to fully visible
- mResizeBar(NULL)
+ mResizeBar(NULL),
+ mFractionalSize(0.f),
+ mOrientation(LLLayoutStack::HORIZONTAL)
{
// Set the expanded min dim if it is provided, otherwise it gets the p.min_dim value
if (p.expanded_min_dim.isProvided())
@@ -88,9 +90,22 @@ LLLayoutPanel::~LLLayoutPanel()
mResizeBar = NULL;
}
-F32 LLLayoutPanel::getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation)
+void LLLayoutPanel::reshape(S32 width, S32 height, BOOL called_from_parent)
{
- if (orientation == LLLayoutStack::HORIZONTAL)
+ if (mOrientation == LLLayoutStack::HORIZONTAL)
+ {
+ mFractionalSize += width - llround(mFractionalSize);
+ }
+ else
+ {
+ mFractionalSize += height - llround(mFractionalSize);
+ }
+ LLPanel::reshape(width, height, called_from_parent);
+}
+
+F32 LLLayoutPanel::getCollapseFactor()
+{
+ if (mOrientation == LLLayoutStack::HORIZONTAL)
{
F32 collapse_amt =
clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, (F32)getRelevantMinDim() / (F32)llmax(1, getRect().getWidth()));
@@ -149,11 +164,11 @@ void LLLayoutStack::draw()
// scale clipping rectangle by visible amount
if (mOrientation == HORIZONTAL)
{
- clip_rect.mRight = clip_rect.mLeft + llround((F32)clip_rect.getWidth() * (*panel_it)->getCollapseFactor(mOrientation));
+ clip_rect.mRight = clip_rect.mLeft + llround((F32)clip_rect.getWidth() * (*panel_it)->getCollapseFactor());
}
else
{
- clip_rect.mBottom = clip_rect.mTop - llround((F32)clip_rect.getHeight() * (*panel_it)->getCollapseFactor(mOrientation));
+ clip_rect.mBottom = clip_rect.mTop - llround((F32)clip_rect.getHeight() * (*panel_it)->getCollapseFactor());
}
LLPanel* panelp = (*panel_it);
@@ -193,36 +208,15 @@ bool LLLayoutStack::addChild(LLView* child, S32 tab_group)
LLLayoutPanel* panelp = dynamic_cast<LLLayoutPanel*>(child);
if (panelp)
{
+ panelp->mFractionalSize = (mOrientation == HORIZONTAL)
+ ? panelp->getRect().getWidth()
+ : panelp->getRect().getHeight();
+ panelp->setOrientation(mOrientation);
mPanels.push_back(panelp);
}
return LLView::addChild(child, tab_group);
}
-
-S32 LLLayoutStack::getDefaultHeight(S32 cur_height)
-{
- // if we are spanning our children (crude upward propagation of size)
- // then don't enforce our size on our children
- if (mOrientation == HORIZONTAL)
- {
- cur_height = llmax(mMinHeight, getRect().getHeight());
- }
-
- return cur_height;
-}
-
-S32 LLLayoutStack::getDefaultWidth(S32 cur_width)
-{
- // if we are spanning our children (crude upward propagation of size)
- // then don't enforce our size on our children
- if (mOrientation == VERTICAL)
- {
- cur_width = llmax(mMinWidth, getRect().getWidth());
- }
-
- return cur_width;
-}
-
void LLLayoutStack::movePanel(LLPanel* panel_to_move, LLPanel* target_panel, bool move_to_front)
{
LLLayoutPanel* embedded_panel_to_move = findEmbeddedPanel(panel_to_move);
@@ -317,9 +311,11 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
createResizeBars();
// calculate current extents
- S32 total_width = 0;
- S32 total_height = 0;
+ F32 total_size = 0.f;
+ //
+ // animate visibility
+ //
e_panel_list_t::iterator panel_it;
for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
{
@@ -361,179 +357,110 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
}
}
- if (panelp->mCollapsed)
- {
- panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, 1.f, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
- }
- else
- {
- panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, 0.f, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
- }
+ F32 collapse_state = panelp->mCollapsed ? 1.f : 0.f;
+ panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, collapse_state, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
- if (mOrientation == HORIZONTAL)
- {
- // enforce minimize size constraint by default
- if (panelp->getRect().getWidth() < panelp->getRelevantMinDim())
- {
- panelp->reshape(panelp->getRelevantMinDim(), panelp->getRect().getHeight());
- }
- total_width += llround(panelp->getRect().getWidth() * panelp->getCollapseFactor(mOrientation));
- // want n-1 panel gaps for n panels
- if (panel_it != mPanels.begin())
- {
- total_width += mPanelSpacing;
- }
- }
- else //VERTICAL
+ total_size += panelp->mFractionalSize * panelp->getCollapseFactor();
+ // want n-1 panel gaps for n panels
+ if (panel_it != mPanels.begin())
{
- // enforce minimize size constraint by default
- if (panelp->getRect().getHeight() < panelp->getRelevantMinDim())
- {
- panelp->reshape(panelp->getRect().getWidth(), panelp->getRelevantMinDim());
- }
- total_height += llround(panelp->getRect().getHeight() * panelp->getCollapseFactor(mOrientation));
- if (panel_it != mPanels.begin())
- {
- total_height += mPanelSpacing;
- }
+ total_size += mPanelSpacing;
}
}
S32 num_resizable_panels = 0;
- S32 shrink_headroom_available = 0;
- S32 shrink_headroom_total = 0;
+ F32 shrink_headroom_available = 0.f;
+ F32 shrink_headroom_total = 0.f;
for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
{
+ LLLayoutPanel* panelp = (*panel_it);
+
// panels that are not fully visible do not count towards shrink headroom
- if ((*panel_it)->getCollapseFactor(mOrientation) < 1.f)
+ if (panelp->getCollapseFactor() < 1.f)
{
continue;
}
- S32 relevant_dimension = (mOrientation == HORIZONTAL) ? (*panel_it)->getRect().getWidth() : (*panel_it)->getRect().getHeight();
- S32 relevant_min = (*panel_it)->getRelevantMinDim();
+ F32 cur_size = panelp->mFractionalSize;
+ F32 min_size = (F32)panelp->getRelevantMinDim();
// if currently resizing a panel or the panel is flagged as not automatically resizing
// only track total available headroom, but don't use it for automatic resize logic
- if ((*panel_it)->mResizeBar->hasMouseCapture()
- || (!(*panel_it)->mAutoResize
+ if (panelp->mResizeBar->hasMouseCapture()
+ || (!panelp->mAutoResize
&& !force_resize))
{
- shrink_headroom_total += relevant_dimension - relevant_min;
+ shrink_headroom_total += cur_size - min_size;
}
else
{
num_resizable_panels++;
- shrink_headroom_available += relevant_dimension - relevant_min;
- shrink_headroom_total += relevant_dimension - relevant_min;
+ shrink_headroom_available += cur_size - min_size;
+ shrink_headroom_total += cur_size - min_size;
}
}
// calculate how many pixels need to be distributed among layout panels
// positive means panels need to grow, negative means shrink
- S32 pixels_to_distribute;
- if (mOrientation == HORIZONTAL)
- {
- pixels_to_distribute = getRect().getWidth() - total_width;
- }
- else //VERTICAL
- {
- pixels_to_distribute = getRect().getHeight() - total_height;
- }
+ F32 pixels_to_distribute = (mOrientation == HORIZONTAL)
+ ? getRect().getWidth() - total_size
+ : getRect().getHeight() - total_size;
// now we distribute the pixels...
- S32 cur_x = 0;
- S32 cur_y = getRect().getHeight();
+ F32 cur_x = 0.f;
+ F32 cur_y = (F32)getRect().getHeight();
for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
{
LLLayoutPanel* panelp = (*panel_it);
- S32 cur_width = panelp->getRect().getWidth();
- S32 cur_height = panelp->getRect().getHeight();
- S32 new_width = cur_width;
- S32 new_height = cur_height;
- S32 relevant_min = panelp->getRelevantMinDim();
-
- if (mOrientation == HORIZONTAL)
- {
- new_width = llmax(relevant_min, new_width);
- }
- else
- {
- new_height = llmax(relevant_min, new_height);
- }
- S32 delta_size = 0;
+ F32 min_size = panelp->getRelevantMinDim();
+ F32 delta_size = 0.f;
// if panel can automatically resize (not animating, and resize flag set)...
- if (panelp->getCollapseFactor(mOrientation) == 1.f
+ if (panelp->getCollapseFactor() == 1.f
&& (force_resize || panelp->mAutoResize)
&& !panelp->mResizeBar->hasMouseCapture())
{
- if (mOrientation == HORIZONTAL)
+ if (pixels_to_distribute < 0.f)
{
- // if we're shrinking
- if (pixels_to_distribute < 0)
- {
- // shrink proportionally to amount over minimum
- // so we can do this in one pass
- delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_width - relevant_min) / (F32)shrink_headroom_available)) : 0;
- shrink_headroom_available -= (cur_width - relevant_min);
- }
- else
- {
- // grow all elements equally
- delta_size = llround((F32)pixels_to_distribute / (F32)num_resizable_panels);
- num_resizable_panels--;
- }
- pixels_to_distribute -= delta_size;
- new_width = llmax(relevant_min, cur_width + delta_size);
+ // shrink proportionally to amount over minimum
+ // so we can do this in one pass
+ delta_size = (shrink_headroom_available > 0.f)
+ ? pixels_to_distribute * ((F32)(panelp->mFractionalSize - min_size) / shrink_headroom_available)
+ : 0.f;
+ shrink_headroom_available -= (panelp->mFractionalSize - min_size);
}
else
{
- new_width = getDefaultWidth(new_width);
- }
-
- if (mOrientation == VERTICAL)
- {
- if (pixels_to_distribute < 0)
- {
- // shrink proportionally to amount over minimum
- // so we can do this in one pass
- delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_height - relevant_min) / (F32)shrink_headroom_available)) : 0;
- shrink_headroom_available -= (cur_height - relevant_min);
- }
- else
- {
- delta_size = llround((F32)pixels_to_distribute / (F32)num_resizable_panels);
- num_resizable_panels--;
- }
- pixels_to_distribute -= delta_size;
- new_height = llmax(relevant_min, cur_height + delta_size);
- }
- else
- {
- new_height = getDefaultHeight(new_height);
- }
- }
- else
- {
- if (mOrientation == HORIZONTAL)
- {
- new_height = getDefaultHeight(new_height);
- }
- else // VERTICAL
- {
- new_width = getDefaultWidth(new_width);
+ // grow all elements equally
+ delta_size = pixels_to_distribute / (F32)num_resizable_panels;
+ num_resizable_panels--;
}
+
+ panelp->mFractionalSize = llmax(min_size, panelp->mFractionalSize + delta_size);
+ pixels_to_distribute -= delta_size;
}
// adjust running headroom count based on new sizes
shrink_headroom_total += delta_size;
LLRect panel_rect;
- panel_rect.setLeftTopAndSize(cur_x, cur_y, new_width, new_height);
+ if (mOrientation == HORIZONTAL)
+ {
+ panel_rect.setLeftTopAndSize(llround(cur_x),
+ llround(cur_y),
+ llround(panelp->mFractionalSize),
+ getRect().getHeight());
+ }
+ else
+ {
+ panel_rect.setLeftTopAndSize(llround(cur_x),
+ llround(cur_y),
+ getRect().getWidth(),
+ llround(panelp->mFractionalSize));
+ }
panelp->setShape(panel_rect);
LLRect resize_bar_rect = panel_rect;
@@ -549,13 +476,14 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
}
(*panel_it)->mResizeBar->setRect(resize_bar_rect);
+ F32 size = ((*panel_it)->mFractionalSize * (*panel_it)->getCollapseFactor()) + (F32)mPanelSpacing;
if (mOrientation == HORIZONTAL)
{
- cur_x += llround(new_width * (*panel_it)->getCollapseFactor(mOrientation)) + mPanelSpacing;
+ cur_x += size;
}
else //VERTICAL
{
- cur_y -= llround(new_height * (*panel_it)->getCollapseFactor(mOrientation)) + mPanelSpacing;
+ cur_y -= size;
}
}
@@ -570,13 +498,13 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
{
(*panel_it)->mResizeBar->setResizeLimits(
relevant_min,
- relevant_min + shrink_headroom_total);
+ relevant_min + llround(shrink_headroom_total));
}
else //VERTICAL
{
(*panel_it)->mResizeBar->setResizeLimits(
relevant_min,
- relevant_min + shrink_headroom_total);
+ relevant_min + llround(shrink_headroom_total));
}
// toggle resize bars based on panel visibility, resizability, etc
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index d8ef0aeaca..5d79505fc3 100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
@@ -126,8 +126,6 @@ protected:
private:
void createResizeBars();
void calcMinExtents();
- S32 getDefaultHeight(S32 cur_height);
- S32 getDefaultWidth(S32 cur_width);
const ELayoutOrientation mOrientation;
@@ -181,6 +179,8 @@ public:
void initFromParams(const Params& p);
+ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+
S32 getMinDim() const { return mMinDim; }
void setMinDim(S32 value) { mMinDim = value; if (!mExpandedMinDimSpecified) mExpandedMinDim = value; }
@@ -202,22 +202,26 @@ public:
return min_dim;
}
+ void setOrientation(LLLayoutStack::ELayoutOrientation orientation) { mOrientation = orientation; }
+
protected:
LLLayoutPanel(const Params& p);
- F32 getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation);
+ F32 getCollapseFactor();
- bool mExpandedMinDimSpecified;
- S32 mExpandedMinDim;
+ bool mExpandedMinDimSpecified;
+ S32 mExpandedMinDim;
- S32 mMinDim;
- S32 mMaxDim;
- BOOL mAutoResize;
- BOOL mUserResize;
- BOOL mCollapsed;
+ S32 mMinDim;
+ S32 mMaxDim;
+ bool mAutoResize;
+ bool mUserResize;
+ bool mCollapsed;
+ F32 mVisibleAmt;
+ F32 mCollapseAmt;
+ F32 mFractionalSize;
+ LLLayoutStack::ELayoutOrientation mOrientation;
class LLResizeBar* mResizeBar;
- F32 mVisibleAmt;
- F32 mCollapseAmt;
};
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index 583bde360a..2518dbe3c7 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -60,7 +60,7 @@ public:
typedef boost::function<void (LLLineEditor* caller)> keystroke_callback_t;
- struct MaxLength : public LLInitParam::Choice<MaxLength>
+ struct MaxLength : public LLInitParam::ChoiceBlock<MaxLength>
{
Alternative<S32> bytes, chars;
diff --git a/indra/llui/llloadingindicator.cpp b/indra/llui/llloadingindicator.cpp
index c4eec1835c..6ac38f5ad4 100644
--- a/indra/llui/llloadingindicator.cpp
+++ b/indra/llui/llloadingindicator.cpp
@@ -34,6 +34,7 @@
// Project includes
#include "lluictrlfactory.h"
#include "lluiimage.h"
+#include "boost/foreach.hpp"
// registered in llui.cpp to avoid being left out by MS linker
//static LLDefaultChildRegistry::Register<LLLoadingIndicator> r("loading_indicator");
@@ -51,11 +52,9 @@ LLLoadingIndicator::LLLoadingIndicator(const Params& p)
void LLLoadingIndicator::initFromParams(const Params& p)
{
- for (LLInitParam::ParamIterator<LLUIImage*>::const_iterator it = p.images().image.begin(), end_it = p.images().image.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(LLUIImage* image, p.images.image)
{
- mImages.push_back(it->getValue());
+ mImages.push_back(image);
}
// Start timer for switching images.
diff --git a/indra/llui/llloadingindicator.h b/indra/llui/llloadingindicator.h
index 7c44478848..c1f979c111 100644
--- a/indra/llui/llloadingindicator.h
+++ b/indra/llui/llloadingindicator.h
@@ -51,7 +51,7 @@ class LLLoadingIndicator
LOG_CLASS(LLLoadingIndicator);
public:
- struct Images : public LLInitParam::Block<Images>
+ struct Images : public LLInitParam::BatchBlock<Images>
{
Multiple<LLUIImage*> image;
@@ -63,7 +63,7 @@ public:
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
{
Optional<F32> images_per_sec;
- Batch<Images> images;
+ Optional<Images> images;
Params()
: images_per_sec("images_per_sec", 1.0f),
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 6cac841cde..3ef8d8ff35 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -947,7 +947,7 @@ LLMenuItemBranchGL::LLMenuItemBranchGL(const LLMenuItemBranchGL::Params& p)
LLMenuItemBranchGL::~LLMenuItemBranchGL()
{
- LLView::deleteViewByHandle(mBranchHandle);
+ delete mBranchHandle.get();
}
// virtual
@@ -1731,7 +1731,7 @@ void LLMenuGL::setCanTearOff(BOOL tear_off)
{
LLMenuItemTearOffGL::Params p;
mTearOffItem = LLUICtrlFactory::create<LLMenuItemTearOffGL>(p);
- addChildInBack(mTearOffItem);
+ addChild(mTearOffItem);
}
else if (!tear_off && mTearOffItem != NULL)
{
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index ffe5908a9d..8f7025a9a6 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -46,6 +46,7 @@
#include <algorithm>
#include <boost/regex.hpp>
+#include <boost/foreach.hpp>
const std::string NOTIFICATION_PERSIST_VERSION = "0.93";
@@ -416,23 +417,17 @@ LLNotificationTemplate::LLNotificationTemplate(const LLNotificationTemplate::Par
mSoundEffect = LLUUID(LLUI::sSettingGroups["config"]->getString(p.sound));
}
- for(LLInitParam::ParamIterator<LLNotificationTemplate::UniquenessContext>::const_iterator it = p.unique.contexts.begin(),
- end_it = p.unique.contexts.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(const LLNotificationTemplate::UniquenessContext& context, p.unique.contexts)
{
- mUniqueContext.push_back(it->value);
+ mUniqueContext.push_back(context.value);
}
lldebugs << "notification \"" << mName << "\": tag count is " << p.tags.size() << llendl;
- for(LLInitParam::ParamIterator<LLNotificationTemplate::Tag>::const_iterator it = p.tags.begin(),
- end_it = p.tags.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(const LLNotificationTemplate::Tag& tag, p.tags)
{
- lldebugs << " tag \"" << std::string(it->value) << "\"" << llendl;
- mTags.push_back(it->value);
+ lldebugs << " tag \"" << std::string(tag.value) << "\"" << llendl;
+ mTags.push_back(tag.value);
}
mForm = LLNotificationFormPtr(new LLNotificationForm(p.name, p.form_ref.form));
@@ -1397,14 +1392,12 @@ void replaceFormText(LLNotificationForm::Params& form, const std::string& patter
{
form.ignore.text = replace;
}
- for (LLInitParam::ParamIterator<LLNotificationForm::FormElement>::iterator it = form.form_elements.elements.begin(),
- end_it = form.form_elements.elements.end();
- it != end_it;
- ++it)
+
+ BOOST_FOREACH(LLNotificationForm::FormElement& element, form.form_elements.elements)
{
- if (it->button.isChosen() && it->button.text() == pattern)
+ if (element.button.isChosen() && element.button.text() == pattern)
{
- it->button.text = replace;
+ element.button.text = replace;
}
}
}
@@ -1453,48 +1446,42 @@ bool LLNotifications::loadTemplates()
mTemplates.clear();
- for(LLInitParam::ParamIterator<LLNotificationTemplate::GlobalString>::const_iterator it = params.strings.begin(), end_it = params.strings.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(LLNotificationTemplate::GlobalString& string, params.strings)
{
- mGlobalStrings[it->name] = it->value;
+ mGlobalStrings[string.name] = string.value;
}
std::map<std::string, LLNotificationForm::Params> form_templates;
- for(LLInitParam::ParamIterator<LLNotificationTemplate::Template>::const_iterator it = params.templates.begin(), end_it = params.templates.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(LLNotificationTemplate::Template& notification_template, params.templates)
{
- form_templates[it->name] = it->form;
+ form_templates[notification_template.name] = notification_template.form;
}
- for(LLInitParam::ParamIterator<LLNotificationTemplate::Params>::iterator it = params.notifications.begin(), end_it = params.notifications.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(LLNotificationTemplate::Params& notification, params.notifications)
{
- if (it->form_ref.form_template.isChosen())
+ if (notification.form_ref.form_template.isChosen())
{
// replace form contents from template
- it->form_ref.form = form_templates[it->form_ref.form_template.name];
- if(it->form_ref.form_template.yes_text.isProvided())
+ notification.form_ref.form = form_templates[notification.form_ref.form_template.name];
+ if(notification.form_ref.form_template.yes_text.isProvided())
{
- replaceFormText(it->form_ref.form, "$yestext", it->form_ref.form_template.yes_text);
+ replaceFormText(notification.form_ref.form, "$yestext", notification.form_ref.form_template.yes_text);
}
- if(it->form_ref.form_template.no_text.isProvided())
+ if(notification.form_ref.form_template.no_text.isProvided())
{
- replaceFormText(it->form_ref.form, "$notext", it->form_ref.form_template.no_text);
+ replaceFormText(notification.form_ref.form, "$notext", notification.form_ref.form_template.no_text);
}
- if(it->form_ref.form_template.cancel_text.isProvided())
+ if(notification.form_ref.form_template.cancel_text.isProvided())
{
- replaceFormText(it->form_ref.form, "$canceltext", it->form_ref.form_template.cancel_text);
+ replaceFormText(notification.form_ref.form, "$canceltext", notification.form_ref.form_template.cancel_text);
}
- if(it->form_ref.form_template.ignore_text.isProvided())
+ if(notification.form_ref.form_template.ignore_text.isProvided())
{
- replaceFormText(it->form_ref.form, "$ignoretext", it->form_ref.form_template.ignore_text);
+ replaceFormText(notification.form_ref.form, "$ignoretext", notification.form_ref.form_template.ignore_text);
}
}
- mTemplates[it->name] = LLNotificationTemplatePtr(new LLNotificationTemplate(*it));
+ mTemplates[notification.name] = LLNotificationTemplatePtr(new LLNotificationTemplate(notification));
}
return true;
@@ -1517,12 +1504,9 @@ bool LLNotifications::loadVisibilityRules()
mVisibilityRules.clear();
- for(LLInitParam::ParamIterator<LLNotificationVisibilityRule::Rule>::iterator it = params.rules.begin(),
- end_it = params.rules.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(LLNotificationVisibilityRule::Rule& rule, params.rules)
{
- mVisibilityRules.push_back(LLNotificationVisibilityRulePtr(new LLNotificationVisibilityRule(*it)));
+ mVisibilityRules.push_back(LLNotificationVisibilityRulePtr(new LLNotificationVisibilityRule(rule)));
}
return true;
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 0c4d4fc897..462d69be2e 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -201,7 +201,7 @@ public:
FormInput();
};
- struct FormElement : public LLInitParam::Choice<FormElement>
+ struct FormElement : public LLInitParam::ChoiceBlock<FormElement>
{
Alternative<FormButton> button;
Alternative<FormInput> input;
@@ -312,7 +312,7 @@ public:
Optional<LLNotificationContext*> context;
Optional<void*> responder;
- struct Functor : public LLInitParam::Choice<Functor>
+ struct Functor : public LLInitParam::ChoiceBlock<Functor>
{
Alternative<std::string> name;
Alternative<LLNotificationFunctorRegistry::ResponseFunctor> function;
diff --git a/indra/llui/llnotificationtemplate.h b/indra/llui/llnotificationtemplate.h
index ab777d37a5..fb50c9c123 100644
--- a/indra/llui/llnotificationtemplate.h
+++ b/indra/llui/llnotificationtemplate.h
@@ -91,7 +91,7 @@ struct LLNotificationTemplate
// <notification> <unique/> </notification>
// as well as
// <notification> <unique> <context></context> </unique>...
- Flag dummy_val;
+ Optional<LLInitParam::Flag> dummy_val;
public:
Multiple<UniquenessContext> contexts;
@@ -147,7 +147,7 @@ struct LLNotificationTemplate
{}
};
- struct FormRef : public LLInitParam::Choice<FormRef>
+ struct FormRef : public LLInitParam::ChoiceBlock<FormRef>
{
Alternative<LLNotificationForm::Params> form;
Alternative<TemplateRef> form_template;
diff --git a/indra/llui/llnotificationvisibilityrule.h b/indra/llui/llnotificationvisibilityrule.h
index 78bdec2a8f..78788a275c 100644
--- a/indra/llui/llnotificationvisibilityrule.h
+++ b/indra/llui/llnotificationvisibilityrule.h
@@ -59,7 +59,7 @@ struct LLNotificationVisibilityRule
{}
};
- struct Rule : public LLInitParam::Choice<Rule>
+ struct Rule : public LLInitParam::ChoiceBlock<Rule>
{
Alternative<Filter> show;
Alternative<Filter> hide;
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index 790025cb2d..ab1c87caff 100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
@@ -96,9 +96,6 @@ public:
Params();
};
- // valid children for LLPanel are stored in this registry
- typedef LLDefaultChildRegistry child_registry_t;
-
protected:
friend class LLUICtrlFactory;
// RN: for some reason you can't just use LLUICtrlFactory::getDefaultParams as a default argument in VC8
diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h
index 531eb1db61..7541b9e6c0 100644
--- a/indra/llui/llresizehandle.h
+++ b/indra/llui/llresizehandle.h
@@ -55,7 +55,7 @@ public:
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
void setResizeLimits( S32 min_width, S32 min_height ) { mMinWidth = min_width; mMinHeight = min_height; }
-
+
private:
BOOL pointInHandle( S32 x, S32 y );
diff --git a/indra/llui/llscrolllistcolumn.h b/indra/llui/llscrolllistcolumn.h
index 12baea8e0c..b4d4a6d05e 100644
--- a/indra/llui/llscrolllistcolumn.h
+++ b/indra/llui/llscrolllistcolumn.h
@@ -95,7 +95,7 @@ public:
Optional<ESortDirection, SortNames> sort_direction;
Optional<bool> sort_ascending;
- struct Width : public LLInitParam::Choice<Width>
+ struct Width : public LLInitParam::ChoiceBlock<Width>
{
Alternative<bool> dynamic_width;
Alternative<S32> pixel_width;
@@ -112,7 +112,7 @@ public:
Optional<Width> width;
// either an image or label is used in column header
- struct Header : public LLInitParam::Choice<Header>
+ struct Header : public LLInitParam::ChoiceBlock<Header>
{
Alternative<std::string> label;
Alternative<LLUIImage*> image;
diff --git a/indra/llui/llsdparam.cpp b/indra/llui/llsdparam.cpp
index 04919e6991..6fa90933a4 100644
--- a/indra/llui/llsdparam.cpp
+++ b/indra/llui/llsdparam.cpp
@@ -34,6 +34,7 @@
static LLInitParam::Parser::parser_read_func_map_t sReadFuncs;
static LLInitParam::Parser::parser_write_func_map_t sWriteFuncs;
static LLInitParam::Parser::parser_inspect_func_map_t sInspectFuncs;
+static const LLSD NO_VALUE_MARKER;
//
// LLParamSDParser
@@ -45,7 +46,7 @@ LLParamSDParser::LLParamSDParser()
if (sReadFuncs.empty())
{
- registerParserFuncs<LLInitParam::NoParamValue>(readNoValue, &LLParamSDParser::writeNoValue);
+ registerParserFuncs<LLInitParam::Flag>(readFlag, &LLParamSDParser::writeFlag);
registerParserFuncs<S32>(readS32, &LLParamSDParser::writeTypedValue<S32>);
registerParserFuncs<U32>(readU32, &LLParamSDParser::writeU32Param);
registerParserFuncs<F32>(readF32, &LLParamSDParser::writeTypedValue<F32>);
@@ -60,29 +61,34 @@ LLParamSDParser::LLParamSDParser()
}
// special case handling of U32 due to ambiguous LLSD::assign overload
-bool LLParamSDParser::writeU32Param(LLParamSDParser::parser_t& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack)
+bool LLParamSDParser::writeU32Param(LLParamSDParser::parser_t& parser, const void* val_ptr, parser_t::name_stack_t& name_stack)
{
LLParamSDParser& sdparser = static_cast<LLParamSDParser&>(parser);
if (!sdparser.mWriteRootSD) return false;
- LLSD* sd_to_write = sdparser.getSDWriteNode(name_stack);
- if (!sd_to_write) return false;
+ parser_t::name_stack_range_t range(name_stack.begin(), name_stack.end());
+ LLSD& sd_to_write = LLParamSDParserUtilities::getSDWriteNode(*sdparser.mWriteRootSD, range);
+ sd_to_write.assign((S32)*((const U32*)val_ptr));
- sd_to_write->assign((S32)*((const U32*)val_ptr));
return true;
}
-bool LLParamSDParser::writeNoValue(LLParamSDParser::parser_t& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack)
+bool LLParamSDParser::writeFlag(LLParamSDParser::parser_t& parser, const void* val_ptr, parser_t::name_stack_t& name_stack)
{
LLParamSDParser& sdparser = static_cast<LLParamSDParser&>(parser);
if (!sdparser.mWriteRootSD) return false;
- LLSD* sd_to_write = sdparser.getSDWriteNode(name_stack);
- if (!sd_to_write) return false;
+ parser_t::name_stack_range_t range(name_stack.begin(), name_stack.end());
+ LLParamSDParserUtilities::getSDWriteNode(*sdparser.mWriteRootSD, range);
return true;
}
+void LLParamSDParser::submit(LLInitParam::BaseBlock& block, const LLSD& sd, LLInitParam::Parser::name_stack_t& name_stack)
+{
+ mCurReadSD = &sd;
+ block.submitValue(name_stack, *this);
+}
void LLParamSDParser::readSD(const LLSD& sd, LLInitParam::BaseBlock& block, bool silent)
{
@@ -90,51 +96,17 @@ void LLParamSDParser::readSD(const LLSD& sd, LLInitParam::BaseBlock& block, bool
mNameStack.clear();
setParseSilently(silent);
- readSDValues(sd, block);
+ LLParamSDParserUtilities::readSDValues(boost::bind(&LLParamSDParser::submit, this, boost::ref(block), _1, _2), sd, mNameStack);
+ //readSDValues(sd, block);
}
void LLParamSDParser::writeSD(LLSD& sd, const LLInitParam::BaseBlock& block)
{
mNameStack.clear();
mWriteRootSD = &sd;
- block.serializeBlock(*this);
-}
-const LLSD NO_VALUE_MARKER;
-
-void LLParamSDParser::readSDValues(const LLSD& sd, LLInitParam::BaseBlock& block)
-{
- if (sd.isMap())
- {
- for (LLSD::map_const_iterator it = sd.beginMap();
- it != sd.endMap();
- ++it)
- {
- mNameStack.push_back(make_pair(it->first, newParseGeneration()));
- readSDValues(it->second, block);
- mNameStack.pop_back();
- }
- }
- else if (sd.isArray())
- {
- for (LLSD::array_const_iterator it = sd.beginArray();
- it != sd.endArray();
- ++it)
- {
- mNameStack.back().second = newParseGeneration();
- readSDValues(*it, block);
- }
- }
- else if (sd.isUndefined())
- {
- mCurReadSD = &NO_VALUE_MARKER;
- block.submitValue(mNameStack, *this);
- }
- else
- {
- mCurReadSD = &sd;
- block.submitValue(mNameStack, *this);
- }
+ name_stack_t name_stack;
+ block.serializeBlock(*this, name_stack);
}
/*virtual*/ std::string LLParamSDParser::getCurrentElementName()
@@ -150,83 +122,8 @@ void LLParamSDParser::readSDValues(const LLSD& sd, LLInitParam::BaseBlock& block
return full_name;
}
-LLSD* LLParamSDParser::getSDWriteNode(const parser_t::name_stack_t& name_stack)
-{
- //TODO: implement nested LLSD writing
- LLSD* sd_to_write = mWriteRootSD;
- bool new_traversal = false;
- for (name_stack_t::const_iterator it = name_stack.begin(), prev_it = mNameStack.begin();
- it != name_stack.end();
- ++it)
- {
- bool new_array_entry = false;
- if (prev_it == mNameStack.end())
- {
- new_traversal = true;
- }
- else
- {
- if (!new_traversal // have not diverged yet from previous trace
- && prev_it->first == it->first // names match
- && prev_it->second != it->second) // versions differ
- {
- // name stacks match, but version numbers differ in last place.
- // create a different entry at this point using an LLSD array
- new_array_entry = true;
- }
- if (prev_it->first != it->first // names differ
- || prev_it->second != it->second) // versions differ
- {
- // at this point we have diverged from our last trace
- // so any elements referenced here are new
- new_traversal = true;
- }
- }
-
- LLSD* child_sd = it->first.empty() ? sd_to_write : &(*sd_to_write)[it->first];
- if (child_sd->isArray())
- {
- if (new_traversal)
- {
- // write to new element at end
- sd_to_write = &(*child_sd)[child_sd->size()];
- }
- else
- {
- // write to last of existing elements, or first element if empty
- sd_to_write = &(*child_sd)[llmax(0, child_sd->size() - 1)];
- }
- }
- else
- {
- if (new_array_entry && !child_sd->isArray())
- {
- // copy child contents into first element of an array
- LLSD new_array = LLSD::emptyArray();
- new_array.append(*child_sd);
- // assign array to slot that previously held the single value
- *child_sd = new_array;
- // return next element in that array
- sd_to_write = &((*child_sd)[1]);
- }
- else
- {
- sd_to_write = child_sd;
- }
- }
- if (prev_it != mNameStack.end())
- {
- ++prev_it;
- }
- }
- mNameStack = name_stack;
-
- //llinfos << ll_pretty_print_sd(*mWriteRootSD) << llendl;
- return sd_to_write;
-}
-
-bool LLParamSDParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLParamSDParser::readFlag(Parser& parser, void* val_ptr)
{
LLParamSDParser& self = static_cast<LLParamSDParser&>(parser);
return self.mCurReadSD == &NO_VALUE_MARKER;
@@ -312,3 +209,132 @@ bool LLParamSDParser::readSD(Parser& parser, void* val_ptr)
*((LLSD*)val_ptr) = *self.mCurReadSD;
return true;
}
+
+// static
+LLSD& LLParamSDParserUtilities::getSDWriteNode(LLSD& input, LLInitParam::Parser::name_stack_range_t& name_stack_range)
+{
+ LLSD* sd_to_write = &input;
+
+ for (LLInitParam::Parser::name_stack_t::iterator it = name_stack_range.first;
+ it != name_stack_range.second;
+ ++it)
+ {
+ bool new_traversal = it->second;
+
+ LLSD* child_sd = it->first.empty() ? sd_to_write : &(*sd_to_write)[it->first];
+
+ if (child_sd->isArray())
+ {
+ if (new_traversal)
+ {
+ // write to new element at end
+ sd_to_write = &(*child_sd)[child_sd->size()];
+ }
+ else
+ {
+ // write to last of existing elements, or first element if empty
+ sd_to_write = &(*child_sd)[llmax(0, child_sd->size() - 1)];
+ }
+ }
+ else
+ {
+ if (new_traversal
+ && child_sd->isDefined()
+ && !child_sd->isArray())
+ {
+ // copy child contents into first element of an array
+ LLSD new_array = LLSD::emptyArray();
+ new_array.append(*child_sd);
+ // assign array to slot that previously held the single value
+ *child_sd = new_array;
+ // return next element in that array
+ sd_to_write = &((*child_sd)[1]);
+ }
+ else
+ {
+ sd_to_write = child_sd;
+ }
+ }
+ it->second = false;
+ }
+
+ return *sd_to_write;
+}
+
+//static
+void LLParamSDParserUtilities::readSDValues(read_sd_cb_t cb, const LLSD& sd, LLInitParam::Parser::name_stack_t& stack)
+{
+ if (sd.isMap())
+ {
+ for (LLSD::map_const_iterator it = sd.beginMap();
+ it != sd.endMap();
+ ++it)
+ {
+ stack.push_back(make_pair(it->first, true));
+ readSDValues(cb, it->second, stack);
+ stack.pop_back();
+ }
+ }
+ else if (sd.isArray())
+ {
+ for (LLSD::array_const_iterator it = sd.beginArray();
+ it != sd.endArray();
+ ++it)
+ {
+ stack.back().second = true;
+ readSDValues(cb, *it, stack);
+ }
+ }
+ else if (sd.isUndefined())
+ {
+ if (!cb.empty())
+ {
+ cb(NO_VALUE_MARKER, stack);
+ }
+ }
+ else
+ {
+ if (!cb.empty())
+ {
+ cb(sd, stack);
+ }
+ }
+}
+
+//static
+void LLParamSDParserUtilities::readSDValues(read_sd_cb_t cb, const LLSD& sd)
+{
+ LLInitParam::Parser::name_stack_t stack = LLInitParam::Parser::name_stack_t();
+ readSDValues(cb, sd, stack);
+}
+namespace LLInitParam
+{
+ // LLSD specialization
+ // block param interface
+ bool ParamValue<LLSD, TypeValues<LLSD>, false>::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, bool new_name)
+ {
+ LLSD& sd = LLParamSDParserUtilities::getSDWriteNode(mValue, name_stack);
+
+ LLSD::String string;
+
+ if (p.readValue<LLSD::String>(string))
+ {
+ sd = string;
+ return true;
+ }
+ return false;
+ }
+
+ //static
+ void ParamValue<LLSD, TypeValues<LLSD>, false>::serializeElement(Parser& p, const LLSD& sd, Parser::name_stack_t& name_stack)
+ {
+ p.writeValue<LLSD::String>(sd.asString(), name_stack);
+ }
+
+ void ParamValue<LLSD, TypeValues<LLSD>, false>::serializeBlock(Parser& p, Parser::name_stack_t& name_stack, const BaseBlock* diff_block) const
+ {
+ // read from LLSD value and serialize out to parser (which could be LLSD, XUI, etc)
+ Parser::name_stack_t stack;
+ LLParamSDParserUtilities::readSDValues(boost::bind(&serializeElement, boost::ref(p), _1, _2), mValue, stack);
+ }
+}
diff --git a/indra/llui/llsdparam.h b/indra/llui/llsdparam.h
index f776c781b3..c1cfa98399 100644
--- a/indra/llui/llsdparam.h
+++ b/indra/llui/llsdparam.h
@@ -29,6 +29,16 @@
#define LL_LLSDPARAM_H
#include "llinitparam.h"
+#include "boost/function.hpp"
+
+struct LLParamSDParserUtilities
+{
+ static LLSD& getSDWriteNode(LLSD& input, LLInitParam::Parser::name_stack_range_t& name_stack_range);
+
+ typedef boost::function<void (const LLSD&, LLInitParam::Parser::name_stack_t&)> read_sd_cb_t;
+ static void readSDValues(read_sd_cb_t cb, const LLSD& sd, LLInitParam::Parser::name_stack_t& stack);
+ static void readSDValues(read_sd_cb_t cb, const LLSD& sd);
+};
class LLParamSDParser
: public LLInitParam::Parser
@@ -45,27 +55,25 @@ public:
/*virtual*/ std::string getCurrentElementName();
private:
- void readSDValues(const LLSD& sd, LLInitParam::BaseBlock& block);
+ void submit(LLInitParam::BaseBlock& block, const LLSD& sd, LLInitParam::Parser::name_stack_t& name_stack);
template<typename T>
- static bool writeTypedValue(Parser& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack)
+ static bool writeTypedValue(Parser& parser, const void* val_ptr, parser_t::name_stack_t& name_stack)
{
LLParamSDParser& sdparser = static_cast<LLParamSDParser&>(parser);
if (!sdparser.mWriteRootSD) return false;
- LLSD* sd_to_write = sdparser.getSDWriteNode(name_stack);
- if (!sd_to_write) return false;
+ LLInitParam::Parser::name_stack_range_t range(name_stack.begin(), name_stack.end());
+ LLSD& sd_to_write = LLParamSDParserUtilities::getSDWriteNode(*sdparser.mWriteRootSD, range);
- sd_to_write->assign(*((const T*)val_ptr));
+ sd_to_write.assign(*((const T*)val_ptr));
return true;
}
- LLSD* getSDWriteNode(const parser_t::name_stack_t& name_stack);
+ static bool writeU32Param(Parser& parser, const void* value_ptr, parser_t::name_stack_t& name_stack);
+ static bool writeFlag(Parser& parser, const void* value_ptr, parser_t::name_stack_t& name_stack);
- static bool writeU32Param(Parser& parser, const void* value_ptr, const parser_t::name_stack_t& name_stack);
- static bool writeNoValue(Parser& parser, const void* value_ptr, const parser_t::name_stack_t& name_stack);
-
- static bool readNoValue(Parser& parser, void* val_ptr);
+ static bool readFlag(Parser& parser, void* val_ptr);
static bool readS32(Parser& parser, void* val_ptr);
static bool readU32(Parser& parser, void* val_ptr);
static bool readF32(Parser& parser, void* val_ptr);
@@ -85,29 +93,29 @@ private:
template<typename T>
class LLSDParamAdapter : public T
+{
+public:
+ LLSDParamAdapter() {}
+ LLSDParamAdapter(const LLSD& sd)
{
- public:
- LLSDParamAdapter() {}
- LLSDParamAdapter(const LLSD& sd)
- {
- LLParamSDParser parser;
- parser.readSD(sd, *this);
- }
-
- operator LLSD() const
- {
- LLParamSDParser parser;
- LLSD sd;
- parser.writeSD(sd, *this);
- return sd;
- }
+ LLParamSDParser parser;
+ parser.readSD(sd, *this);
+ }
+
+ operator LLSD() const
+ {
+ LLParamSDParser parser;
+ LLSD sd;
+ parser.writeSD(sd, *this);
+ return sd;
+ }
- LLSDParamAdapter(const T& val)
- : T(val)
- {
- T::operator=(val);
- }
- };
+ LLSDParamAdapter(const T& val)
+ : T(val)
+ {
+ T::operator=(val);
+ }
+};
#endif // LL_LLSDPARAM_H
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 7d545a1ba6..384d9116fc 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -237,7 +237,7 @@ public:
friend class LLNormalTextSegment;
friend class LLUICtrlFactory;
- struct LineSpacingParams : public LLInitParam::Choice<LineSpacingParams>
+ struct LineSpacingParams : public LLInitParam::ChoiceBlock<LineSpacingParams>
{
Alternative<F32> multiple;
Alternative<S32> pixels;
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
new file mode 100644
index 0000000000..629c7d9bc7
--- /dev/null
+++ b/indra/llui/lltoolbar.cpp
@@ -0,0 +1,1053 @@
+/**
+ * @file lltoolbar.cpp
+ * @author Richard Nelson
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include <boost/foreach.hpp>
+#include "lltoolbar.h"
+
+#include "llcommandmanager.h"
+#include "llmenugl.h"
+#include "lltrans.h"
+#include "llinventory.h"
+#include "lliconctrl.h"
+
+// uncomment this and remove the one in llui.cpp when there is an external reference to this translation unit
+// thanks, MSVC!
+//static LLDefaultChildRegistry::Register<LLToolBar> r1("toolbar");
+
+namespace LLToolBarEnums
+{
+ LLLayoutStack::ELayoutOrientation getOrientation(SideType sideType)
+ {
+ LLLayoutStack::ELayoutOrientation orientation = LLLayoutStack::HORIZONTAL;
+
+ if ((sideType == SIDE_LEFT) || (sideType == SIDE_RIGHT))
+ {
+ orientation = LLLayoutStack::VERTICAL;
+ }
+
+ return orientation;
+ }
+}
+
+using namespace LLToolBarEnums;
+
+
+namespace LLInitParam
+{
+ void TypeValues<ButtonType>::declareValues()
+ {
+ declare("icons_with_text", BTNTYPE_ICONS_WITH_TEXT);
+ declare("icons_only", BTNTYPE_ICONS_ONLY);
+ }
+
+ void TypeValues<SideType>::declareValues()
+ {
+ declare("bottom", SIDE_BOTTOM);
+ declare("left", SIDE_LEFT);
+ declare("right", SIDE_RIGHT);
+ declare("top", SIDE_TOP);
+ }
+}
+
+LLToolBar::Params::Params()
+: button_display_mode("button_display_mode"),
+ commands("command"),
+ side("side", SIDE_TOP),
+ button_icon("button_icon"),
+ button_icon_and_text("button_icon_and_text"),
+ read_only("read_only", false),
+ wrap("wrap", true),
+ pad_left("pad_left"),
+ pad_top("pad_top"),
+ pad_right("pad_right"),
+ pad_bottom("pad_bottom"),
+ pad_between("pad_between"),
+ min_girth("min_girth"),
+ button_panel("button_panel")
+{}
+
+LLToolBar::LLToolBar(const LLToolBar::Params& p)
+: LLUICtrl(p),
+ mReadOnly(p.read_only),
+ mButtonType(p.button_display_mode),
+ mSideType(p.side),
+ mWrap(p.wrap),
+ mNeedsLayout(false),
+ mModified(false),
+ mButtonPanel(NULL),
+ mCenteringStack(NULL),
+ mPadLeft(p.pad_left),
+ mPadRight(p.pad_right),
+ mPadTop(p.pad_top),
+ mPadBottom(p.pad_bottom),
+ mPadBetween(p.pad_between),
+ mMinGirth(p.min_girth),
+ mPopupMenuHandle(),
+ mStartDragItemCallback(NULL),
+ mHandleDragItemCallback(NULL),
+ mHandleDropCallback(NULL),
+ mDragAndDropTarget(false)
+{
+ mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_WITH_TEXT] = p.button_icon_and_text;
+ mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_ONLY] = p.button_icon;
+}
+
+LLToolBar::~LLToolBar()
+{
+ delete mPopupMenuHandle.get();
+}
+
+void LLToolBar::createContextMenu()
+{
+ if (!mPopupMenuHandle.get())
+ {
+ // Setup bindings specific to this instance for the context menu options
+
+ LLUICtrl::CommitCallbackRegistry::ScopedRegistrar commit_reg;
+ commit_reg.add("Toolbars.EnableSetting", boost::bind(&LLToolBar::onSettingEnable, this, _2));
+
+ LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_reg;
+ enable_reg.add("Toolbars.CheckSetting", boost::bind(&LLToolBar::isSettingChecked, this, _2));
+
+ // Create the context menu
+ LLContextMenu* menu = LLUICtrlFactory::instance().createFromFile<LLContextMenu>("menu_toolbars.xml", LLMenuGL::sMenuContainer, LLMenuHolderGL::child_registry_t::instance());
+
+ if (menu)
+ {
+ menu->setBackgroundColor(LLUIColorTable::instance().getColor("MenuPopupBgColor"));
+
+ mPopupMenuHandle = menu->getHandle();
+ }
+ else
+ {
+ llwarns << "Unable to load toolbars context menu." << llendl;
+ }
+ }
+}
+
+void LLToolBar::initFromParams(const LLToolBar::Params& p)
+{
+ // Initialize the base object
+ LLUICtrl::initFromParams(p);
+
+ LLLayoutStack::ELayoutOrientation orientation = getOrientation(p.side);
+
+ LLLayoutStack::Params centering_stack_p;
+ centering_stack_p.name = "centering_stack";
+ centering_stack_p.rect = getLocalRect();
+ centering_stack_p.follows.flags = FOLLOWS_ALL;
+ centering_stack_p.orientation = orientation;
+ centering_stack_p.mouse_opaque = false;
+
+ mCenteringStack = LLUICtrlFactory::create<LLLayoutStack>(centering_stack_p);
+ addChild(mCenteringStack);
+
+ LLLayoutPanel::Params border_panel_p;
+ border_panel_p.name = "border_panel";
+ border_panel_p.rect = getLocalRect();
+ border_panel_p.auto_resize = true;
+ border_panel_p.user_resize = false;
+ border_panel_p.mouse_opaque = false;
+
+ mCenteringStack->addChild(LLUICtrlFactory::create<LLLayoutPanel>(border_panel_p));
+
+ LLLayoutPanel::Params center_panel_p;
+ center_panel_p.name = "center_panel";
+ center_panel_p.rect = getLocalRect();
+ center_panel_p.auto_resize = false;
+ center_panel_p.user_resize = false;
+ center_panel_p.mouse_opaque = false;
+ LLLayoutPanel* center_panel = LLUICtrlFactory::create<LLLayoutPanel>(center_panel_p);
+ mCenteringStack->addChild(center_panel);
+
+ LLPanel::Params button_panel_p(p.button_panel);
+ button_panel_p.rect = center_panel->getLocalRect();
+ button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
+ mButtonPanel = LLUICtrlFactory::create<LLPanel>(button_panel_p);
+ center_panel->addChild(mButtonPanel);
+
+ mCenteringStack->addChild(LLUICtrlFactory::create<LLLayoutPanel>(border_panel_p));
+
+ BOOST_FOREACH(LLCommandId id, p.commands)
+ {
+ addCommand(id);
+ }
+
+ mNeedsLayout = true;
+}
+
+bool LLToolBar::addCommand(const LLCommandId& commandId, int rank)
+{
+ LLCommand * command = LLCommandManager::instance().getCommand(commandId);
+ if (!command) return false;
+
+ // Create the button and do the things that don't need ordering
+ LLToolBarButton* button = createButton(commandId);
+ mButtonPanel->addChild(button);
+ mButtonMap.insert(std::make_pair(commandId.uuid(), button));
+
+
+ // Insert the command and button in the right place in their respective lists
+ if ((rank >= mButtonCommands.size()) || (rank == RANK_NONE))
+ {
+ // In that case, back load
+ mButtonCommands.push_back(commandId);
+ mButtons.push_back(button);
+ }
+ else
+ {
+ // Insert in place: iterate to the right spot...
+ std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
+ command_id_list_t::iterator it_command = mButtonCommands.begin();
+ while (rank > 0)
+ {
+ ++it_button;
+ ++it_command;
+ rank--;
+ }
+ // ...then insert
+ mButtonCommands.insert(it_command,commandId);
+ mButtons.insert(it_button,button);
+ }
+
+ mNeedsLayout = true;
+
+ return true;
+}
+
+// Remove a command from the list
+// Returns the rank of the command in the original list so that doing addCommand(id,rank) right after
+// a removeCommand(id) would leave the list unchanged.
+// Returns RANK_NONE if the command is not found in the list
+int LLToolBar::removeCommand(const LLCommandId& commandId)
+{
+ if (!hasCommand(commandId)) return RANK_NONE;
+
+ // First erase the map record
+ command_id_map::iterator it = mButtonMap.find(commandId.uuid());
+ mButtonMap.erase(it);
+
+ // Now iterate on the commands and buttons to identify the relevant records
+ int rank = 0;
+ std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
+ command_id_list_t::iterator it_command = mButtonCommands.begin();
+ while (*it_command != commandId)
+ {
+ ++it_button;
+ ++it_command;
+ ++rank;
+ }
+
+ // Delete the button and erase the command and button records
+ delete (*it_button);
+ mButtonCommands.erase(it_command);
+ mButtons.erase(it_button);
+
+ mNeedsLayout = true;
+
+ return rank;
+}
+
+void LLToolBar::clearCommandsList()
+{
+ // Clears the commands list
+ mButtonCommands.clear();
+ // This will clear the buttons
+ createButtons();
+}
+
+bool LLToolBar::hasCommand(const LLCommandId& commandId) const
+{
+ if (commandId != LLCommandId::null)
+ {
+ command_id_map::const_iterator it = mButtonMap.find(commandId.uuid());
+ return (it != mButtonMap.end());
+ }
+
+ return false;
+}
+
+bool LLToolBar::enableCommand(const LLCommandId& commandId, bool enabled)
+{
+ LLButton * command_button = NULL;
+
+ if (commandId != LLCommandId::null)
+ {
+ command_id_map::iterator it = mButtonMap.find(commandId.uuid());
+ if (it != mButtonMap.end())
+ {
+ it->second->setEnabled(enabled);
+ }
+ }
+
+ return (command_button != NULL);
+}
+
+BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
+{
+ LLRect button_panel_rect;
+ mButtonPanel->localRectToOtherView(mButtonPanel->getLocalRect(), &button_panel_rect, this);
+ BOOL handle_it_here = !mReadOnly && button_panel_rect.pointInRect(x, y);
+
+ if (handle_it_here)
+ {
+ createContextMenu();
+
+ LLContextMenu * menu = (LLContextMenu *) mPopupMenuHandle.get();
+
+ if (menu)
+ {
+ menu->show(x, y);
+
+ LLMenuGL::showPopup(this, menu, x, y);
+ }
+ }
+
+ return handle_it_here;
+}
+
+BOOL LLToolBar::isSettingChecked(const LLSD& userdata)
+{
+ BOOL retval = FALSE;
+
+ const std::string setting_name = userdata.asString();
+
+ if (setting_name == "icons_with_text")
+ {
+ retval = (mButtonType == BTNTYPE_ICONS_WITH_TEXT);
+ }
+ else if (setting_name == "icons_only")
+ {
+ retval = (mButtonType == BTNTYPE_ICONS_ONLY);
+ }
+
+ return retval;
+}
+
+void LLToolBar::onSettingEnable(const LLSD& userdata)
+{
+ llassert(!mReadOnly);
+
+ const std::string setting_name = userdata.asString();
+
+ if (setting_name == "icons_with_text")
+ {
+ setButtonType(BTNTYPE_ICONS_WITH_TEXT);
+ }
+ else if (setting_name == "icons_only")
+ {
+ setButtonType(BTNTYPE_ICONS_ONLY);
+ }
+}
+
+void LLToolBar::setButtonType(LLToolBarEnums::ButtonType button_type)
+{
+ bool regenerate_buttons = (mButtonType != button_type);
+
+ mButtonType = button_type;
+
+ if (regenerate_buttons)
+ {
+ createButtons();
+ }
+}
+
+void LLToolBar::resizeButtonsInRow(std::vector<LLToolBarButton*>& buttons_in_row, S32 max_row_girth)
+{
+ // make buttons in current row all same girth
+ BOOST_FOREACH(LLToolBarButton* button, buttons_in_row)
+ {
+ if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
+ {
+ button->reshape(button->mWidthRange.clamp(button->getRect().getWidth()), max_row_girth);
+ }
+ else // VERTICAL
+ {
+ button->reshape(max_row_girth, button->getRect().getHeight());
+ }
+ }
+}
+
+// Returns the position of the coordinates as a rank in the button list.
+// The rank is the position a tool dropped in (x,y) would assume in the button list.
+// The returned value is between 0 and mButtons.size(), 0 being the first element to the left
+// (or top) and mButtons.size() the last one to the right (or bottom).
+// Various drag data are stored in the toolbar object though are not exposed outside (and shouldn't).
+int LLToolBar::getRankFromPosition(S32 x, S32 y)
+{
+ if (mButtons.empty())
+ {
+ return RANK_NONE;
+ }
+
+ int rank = 0;
+
+ // Convert the toolbar coord into button panel coords
+ LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
+ S32 button_panel_x = 0;
+ S32 button_panel_y = 0;
+ localPointToOtherView(x, y, &button_panel_x, &button_panel_y, mButtonPanel);
+ S32 dx = x - button_panel_x;
+ S32 dy = y - button_panel_y;
+
+ // Simply compare the passed coord with the buttons outbound box + padding
+ std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
+ std::list<LLToolBarButton*>::iterator end_button = mButtons.end();
+ LLRect button_rect;
+ while (it_button != end_button)
+ {
+ button_rect = (*it_button)->getRect();
+ S32 point_x = button_rect.mRight + mPadRight;
+ S32 point_y = button_rect.mBottom - mPadBottom;
+
+ if ((button_panel_x < point_x) && (button_panel_y > point_y))
+ {
+ break;
+ }
+ rank++;
+ ++it_button;
+ }
+
+ // Update the passed coordinates to the hit button relevant corner
+ // (different depending on toolbar orientation)
+ if (rank < mButtons.size())
+ {
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ // Horizontal
+ S32 mid_point = (button_rect.mRight + button_rect.mLeft) / 2;
+ if (button_panel_x < mid_point)
+ {
+ mDragx = button_rect.mLeft - mPadLeft;
+ mDragy = button_rect.mTop + mPadTop;
+ }
+ else
+ {
+ rank++;
+ mDragx = button_rect.mRight + mPadRight - 1;
+ mDragy = button_rect.mTop + mPadTop;
+ }
+ }
+ else
+ {
+ // Vertical
+ S32 mid_point = (button_rect.mTop + button_rect.mBottom) / 2;
+ if (button_panel_y > mid_point)
+ {
+ mDragx = button_rect.mLeft - mPadLeft;
+ mDragy = button_rect.mTop + mPadTop;
+ }
+ else
+ {
+ rank++;
+ mDragx = button_rect.mLeft - mPadLeft;
+ mDragy = button_rect.mBottom - mPadBottom + 1;
+ }
+ }
+ }
+ else
+ {
+ // We hit passed the end of the list so put the insertion point at the end
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ mDragx = button_rect.mRight + mPadRight;
+ mDragy = button_rect.mTop + mPadTop;
+ }
+ else
+ {
+ mDragx = button_rect.mLeft - mPadLeft;
+ mDragy = button_rect.mBottom - mPadBottom;
+ }
+ }
+
+ // Update the "girth" of the caret, i.e. the width or height (depending of orientation)
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ mDragGirth = button_rect.getHeight() + mPadBottom + mPadTop;
+ }
+ else
+ {
+ mDragGirth = button_rect.getWidth() + mPadLeft + mPadRight;
+ }
+
+ // The delta account for the coord model change (i.e. convert back to toolbar coord)
+ mDragx += dx;
+ mDragy += dy;
+
+ return rank;
+}
+
+int LLToolBar::getRankFromPosition(const LLCommandId& id)
+{
+ if (!hasCommand(id))
+ {
+ return RANK_NONE;
+ }
+ int rank = 0;
+ std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
+ std::list<LLToolBarButton*>::iterator end_button = mButtons.end();
+ while (it_button != end_button)
+ {
+ if ((*it_button)->mId == id)
+ {
+ break;
+ }
+ rank++;
+ ++it_button;
+ }
+ return rank;
+}
+
+void LLToolBar::updateLayoutAsNeeded()
+{
+ if (!mNeedsLayout) return;
+
+ LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
+
+ // our terminology for orientation-agnostic layout is such that
+ // length refers to a distance in the direction we stack the buttons
+ // and girth refers to a distance in the direction buttons wrap
+ S32 max_row_girth = 0;
+ S32 max_row_length = 0;
+
+ S32 max_length;
+ S32 max_total_girth;
+ S32 cur_start;
+ S32 cur_row ;
+ S32 row_pad_start;
+ S32 row_pad_end;
+ S32 girth_pad_end;
+ S32 row_running_length;
+
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ max_length = getRect().getWidth() - mPadLeft - mPadRight;
+ max_total_girth = getRect().getHeight() - mPadTop - mPadBottom;
+ row_pad_start = mPadLeft;
+ row_pad_end = mPadRight;
+ cur_row = mPadTop;
+ girth_pad_end = mPadBottom;
+ }
+ else // VERTICAL
+ {
+ max_length = getRect().getHeight() - mPadTop - mPadBottom;
+ max_total_girth = getRect().getWidth() - mPadLeft - mPadRight;
+ row_pad_start = mPadTop;
+ row_pad_end = mPadBottom;
+ cur_row = mPadLeft;
+ girth_pad_end = mPadRight;
+ }
+
+ row_running_length = row_pad_start;
+ cur_start = row_pad_start;
+
+
+ LLRect panel_rect = mButtonPanel->getLocalRect();
+
+ std::vector<LLToolBarButton*> buttons_in_row;
+
+ BOOST_FOREACH(LLToolBarButton* button, mButtons)
+ {
+ button->reshape(button->mWidthRange.getMin(), button->mDesiredHeight);
+ button->autoResize();
+
+ S32 button_clamped_width = button->mWidthRange.clamp(button->getRect().getWidth());
+ S32 button_length = (orientation == LLLayoutStack::HORIZONTAL)
+ ? button_clamped_width
+ : button->getRect().getHeight();
+ S32 button_girth = (orientation == LLLayoutStack::HORIZONTAL)
+ ? button->getRect().getHeight()
+ : button_clamped_width;
+
+ // wrap if needed
+ if (mWrap
+ && row_running_length + button_length > max_length // out of room...
+ && cur_start != row_pad_start) // ...and not first button in row
+ {
+ if (orientation == LLLayoutStack::VERTICAL)
+ { // row girth (width in this case) is clamped to allowable button widths
+ max_row_girth = button->mWidthRange.clamp(max_row_girth);
+ }
+
+ // make buttons in current row all same girth
+ resizeButtonsInRow(buttons_in_row, max_row_girth);
+ buttons_in_row.clear();
+
+ max_row_length = llmax(max_row_length, row_running_length);
+ row_running_length = row_pad_start;
+ cur_start = row_pad_start;
+ cur_row += max_row_girth + mPadBetween;
+ max_row_girth = 0;
+ }
+
+ LLRect button_rect;
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ button_rect.setLeftTopAndSize(cur_start, panel_rect.mTop - cur_row, button_clamped_width, button->getRect().getHeight());
+ }
+ else // VERTICAL
+ {
+ button_rect.setLeftTopAndSize(cur_row, panel_rect.mTop - cur_start, button_clamped_width, button->getRect().getHeight());
+ }
+ button->setShape(button_rect);
+
+ buttons_in_row.push_back(button);
+
+ row_running_length += button_length + mPadBetween;
+ cur_start = row_running_length;
+ max_row_girth = llmax(button_girth, max_row_girth);
+ }
+
+ // final resizing in "girth" direction
+ S32 total_girth = cur_row // current row position...
+ + max_row_girth // ...incremented by size of final row...
+ + girth_pad_end; // ...plus padding reserved on end
+ total_girth = llmax(total_girth,mMinGirth);
+
+ max_row_length = llmax(max_row_length, row_running_length - mPadBetween + row_pad_end);
+
+ resizeButtonsInRow(buttons_in_row, max_row_girth);
+
+ // grow and optionally shift toolbar to accommodate buttons
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ if (mSideType == SIDE_TOP)
+ { // shift down to maintain top edge
+ translate(0, getRect().getHeight() - total_girth);
+ }
+
+ reshape(getRect().getWidth(), total_girth);
+ mButtonPanel->reshape(max_row_length, total_girth);
+ }
+ else // VERTICAL
+ {
+ if (mSideType == SIDE_RIGHT)
+ { // shift left to maintain right edge
+ translate(getRect().getWidth() - total_girth, 0);
+ }
+
+ reshape(total_girth, getRect().getHeight());
+ mButtonPanel->reshape(total_girth, max_row_length);
+ }
+
+ // make parent fit button panel
+ mButtonPanel->getParent()->setShape(mButtonPanel->getLocalRect());
+
+ // re-center toolbar buttons
+ mCenteringStack->updateLayout();
+
+ // don't clear flag until after we've resized ourselves, to avoid laying out every frame
+ mNeedsLayout = false;
+}
+
+
+void LLToolBar::draw()
+{
+ if (mButtons.empty())
+ {
+ mButtonPanel->setVisible(FALSE);
+ mButtonPanel->setMouseOpaque(FALSE);
+ }
+ else
+ {
+ mButtonPanel->setVisible(TRUE);
+ mButtonPanel->setMouseOpaque(TRUE);
+ }
+
+ // Update enable/disable state and highlight state for editable toolbars
+ if (!mReadOnly)
+ {
+ for (toolbar_button_list::iterator btn_it = mButtons.begin(); btn_it != mButtons.end(); ++btn_it)
+ {
+ LLToolBarButton* btn = *btn_it;
+ LLCommand* command = LLCommandManager::instance().getCommand(btn->mId);
+
+ if (command && btn->mIsEnabledSignal)
+ {
+ const bool button_command_enabled = (*btn->mIsEnabledSignal)(btn, command->isEnabledParameters());
+ btn->setEnabled(button_command_enabled);
+ }
+
+ if (command && btn->mIsRunningSignal)
+ {
+ const bool button_command_running = (*btn->mIsRunningSignal)(btn, command->isRunningParameters());
+ btn->setToggleState(button_command_running);
+ }
+ }
+ }
+
+ updateLayoutAsNeeded();
+ // rect may have shifted during layout
+ LLUI::popMatrix();
+ LLUI::pushMatrix();
+ LLUI::translate((F32)getRect().mLeft, (F32)getRect().mBottom, 0.f);
+
+ // Position the caret
+ LLIconCtrl* caret = getChild<LLIconCtrl>("caret");
+ caret->setVisible(FALSE);
+ if (mDragAndDropTarget && !mButtonCommands.empty())
+ {
+ LLRect caret_rect = caret->getRect();
+ LLRect toolbar_rect = getRect();
+ if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
+ {
+ caret->setRect(LLRect(mDragx-caret_rect.getWidth()/2+1,
+ mDragy,
+ mDragx+caret_rect.getWidth()/2+1,
+ mDragy-mDragGirth));
+ }
+ else
+ {
+ caret->setRect(LLRect(mDragx,
+ mDragy+caret_rect.getHeight()/2,
+ mDragx+mDragGirth,
+ mDragy-caret_rect.getHeight()/2));
+ }
+ caret->setVisible(TRUE);
+ }
+
+ LLUICtrl::draw();
+ caret->setVisible(FALSE);
+ mDragAndDropTarget = false;
+}
+
+void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ LLUICtrl::reshape(width, height, called_from_parent);
+ mNeedsLayout = true;
+}
+
+void LLToolBar::createButtons()
+{
+ BOOST_FOREACH(LLToolBarButton* button, mButtons)
+ {
+ delete button;
+ }
+ mButtons.clear();
+ mButtonMap.clear();
+
+ BOOST_FOREACH(LLCommandId& command_id, mButtonCommands)
+ {
+ LLToolBarButton* button = createButton(command_id);
+ mButtons.push_back(button);
+ mButtonPanel->addChild(button);
+ mButtonMap.insert(std::make_pair(command_id.uuid(), button));
+ }
+ mNeedsLayout = true;
+}
+
+void LLToolBarButton::callIfEnabled(LLUICtrl::commit_callback_t commit, LLUICtrl* ctrl, const LLSD& param )
+{
+ LLCommand* command = LLCommandManager::instance().getCommand(mId);
+
+ if (!mIsEnabledSignal || (*mIsEnabledSignal)(this, command->isEnabledParameters()))
+ {
+ commit(ctrl, param);
+ }
+}
+
+LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)
+{
+ LLCommand* commandp = LLCommandManager::instance().getCommand(id);
+ if (!commandp) return NULL;
+
+ LLToolBarButton::Params button_p;
+ button_p.name = id.name();
+ button_p.label = LLTrans::getString(commandp->labelRef());
+ button_p.tool_tip = LLTrans::getString(commandp->tooltipRef());
+ button_p.image_overlay = LLUI::getUIImage(commandp->icon());
+ button_p.overwriteFrom(mButtonParams[mButtonType]);
+ LLToolBarButton* button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
+
+ if (!mReadOnly)
+ {
+ enable_callback_t isEnabledCB;
+
+ const std::string& isEnabledFunction = commandp->isEnabledFunctionName();
+ if (isEnabledFunction.length() > 0)
+ {
+ LLUICtrl::EnableCallbackParam isEnabledParam;
+ isEnabledParam.function_name = isEnabledFunction;
+ isEnabledParam.parameter = commandp->isEnabledParameters();
+ isEnabledCB = initEnableCallback(isEnabledParam);
+
+ if (NULL == button->mIsEnabledSignal)
+ {
+ button->mIsEnabledSignal = new enable_signal_t();
+ }
+
+ button->mIsEnabledSignal->connect(isEnabledCB);
+ }
+
+ LLUICtrl::CommitCallbackParam executeParam;
+ executeParam.function_name = commandp->executeFunctionName();
+ executeParam.parameter = commandp->executeParameters();
+
+ // If we have a "stop" function then we map the command to mouse down / mouse up otherwise commit
+ const std::string& executeStopFunction = commandp->executeStopFunctionName();
+ if (executeStopFunction.length() > 0)
+ {
+ LLUICtrl::CommitCallbackParam executeStopParam;
+ executeStopParam.function_name = executeStopFunction;
+ executeStopParam.parameter = commandp->executeStopParameters();
+ LLUICtrl::commit_callback_t execute_func = initCommitCallback(executeParam);
+ LLUICtrl::commit_callback_t stop_func = initCommitCallback(executeStopParam);
+
+ button->setMouseDownCallback(boost::bind(&LLToolBarButton::callIfEnabled, button, execute_func, _1, _2));
+ button->setMouseUpCallback(boost::bind(&LLToolBarButton::callIfEnabled, button, stop_func, _1, _2));
+ }
+ else
+ {
+ button->setCommitCallback(executeParam);
+ }
+
+
+
+ const std::string& isRunningFunction = commandp->isRunningFunctionName();
+ if (isRunningFunction.length() > 0)
+ {
+ LLUICtrl::EnableCallbackParam isRunningParam;
+ isRunningParam.function_name = isRunningFunction;
+ isRunningParam.parameter = commandp->isRunningParameters();
+ enable_signal_t::slot_type isRunningCB = initEnableCallback(isRunningParam);
+
+ if (NULL == button->mIsRunningSignal)
+ {
+ button->mIsRunningSignal = new enable_signal_t();
+ }
+
+ button->mIsRunningSignal->connect(isRunningCB);
+ }
+ }
+
+ // Drag and drop behavior must work also if provided in the Toybox and, potentially, any read-only toolbar
+ button->setStartDragCallback(mStartDragItemCallback);
+ button->setHandleDragCallback(mHandleDragItemCallback);
+
+ button->setCommandId(id);
+
+ return button;
+}
+
+BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg)
+{
+ // If we have a drop callback, that means that we can handle the drop
+ BOOL handled = (mHandleDropCallback ? TRUE : FALSE);
+
+ // if drop is set, it's time to call the callback to get the operation done
+ if (handled && drop)
+ {
+ handled = mHandleDropCallback(cargo_data, x, y ,this);
+ }
+
+ // We accept only single tool drop on toolbars
+ *accept = (handled ? ACCEPT_YES_SINGLE : ACCEPT_NO);
+
+ // We'll use that flag to change the visual aspect of the toolbar target on draw()
+ mDragAndDropTarget = false;
+
+ // Convert drag position into insert position and rank
+ if (!isReadOnly() && handled && !drop)
+ {
+ LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
+ LLAssetType::EType type = inv_item->getType();
+ if (type == LLAssetType::AT_WIDGET)
+ {
+ LLCommandId dragged_command(inv_item->getUUID());
+ int orig_rank = getRankFromPosition(dragged_command);
+ mDragRank = getRankFromPosition(x, y);
+ // Don't DaD if we're dragging a command on itself
+ mDragAndDropTarget = ((orig_rank != RANK_NONE) && ((mDragRank == orig_rank) || ((mDragRank-1) == orig_rank)) ? false : true);
+ //llinfos << "Merov debug : DaD, rank = " << mDragRank << ", dragged uui = " << inv_item->getUUID() << llendl;
+ /* Do the following if you want to animate the button itself
+ LLCommandId dragged_command(inv_item->getUUID());
+ removeCommand(dragged_command);
+ addCommand(dragged_command,rank);
+ */
+ }
+ else
+ {
+ handled = FALSE;
+ }
+ }
+
+ return handled;
+}
+
+LLToolBarButton::LLToolBarButton(const Params& p)
+: LLButton(p),
+ mMouseDownX(0),
+ mMouseDownY(0),
+ mWidthRange(p.button_width),
+ mDesiredHeight(p.desired_height),
+ mId(""),
+ mIsEnabledSignal(NULL),
+ mIsRunningSignal(NULL),
+ mIsStartingSignal(NULL),
+ mIsDragged(false),
+ mStartDragItemCallback(NULL),
+ mHandleDragItemCallback(NULL),
+ mOriginalImageSelected(p.image_selected),
+ mOriginalImageUnselected(p.image_unselected),
+ mOriginalImagePressed(p.image_pressed),
+ mOriginalImagePressedSelected(p.image_pressed_selected),
+ mOriginalLabelColor(p.label_color),
+ mOriginalLabelColorSelected(p.label_color_selected),
+ mOriginalImageOverlayColor(p.image_overlay_color),
+ mOriginalImageOverlaySelectedColor(p.image_overlay_selected_color)
+{
+ mButtonFlashRate = 0.0;
+ mButtonFlashCount = 0;
+}
+
+LLToolBarButton::~LLToolBarButton()
+{
+ delete mIsEnabledSignal;
+ delete mIsRunningSignal;
+ delete mIsStartingSignal;
+}
+
+BOOL LLToolBarButton::handleMouseDown(S32 x, S32 y, MASK mask)
+{
+ mMouseDownX = x;
+ mMouseDownY = y;
+ return LLButton::handleMouseDown(x, y, mask);
+}
+
+BOOL LLToolBarButton::handleHover(S32 x, S32 y, MASK mask)
+{
+ BOOL handled = FALSE;
+
+ S32 mouse_distance_squared = (x - mMouseDownX) * (x - mMouseDownX) + (y - mMouseDownY) * (y - mMouseDownY);
+ S32 drag_threshold = LLUI::sSettingGroups["config"]->getS32("DragAndDropDistanceThreshold");
+ if (mouse_distance_squared > drag_threshold * drag_threshold
+ && hasMouseCapture() &&
+ mStartDragItemCallback && mHandleDragItemCallback)
+ {
+ if (!mIsDragged)
+ {
+ mStartDragItemCallback(x,y,mId.uuid());
+ mIsDragged = true;
+ handled = TRUE;
+ }
+ else
+ {
+ handled = mHandleDragItemCallback(x,y,mId.uuid(),LLAssetType::AT_WIDGET);
+ }
+ }
+ else
+ {
+ handled = LLButton::handleHover(x, y, mask);
+ }
+ return handled;
+}
+
+void LLToolBarButton::onMouseEnter(S32 x, S32 y, MASK mask)
+{
+ LLUICtrl::onMouseEnter(x, y, mask);
+
+ // Always highlight toolbar buttons, even if they are disabled
+ if (!gFocusMgr.getMouseCapture() || gFocusMgr.getMouseCapture() == this)
+ {
+ mNeedsHighlight = TRUE;
+ }
+}
+
+void LLToolBarButton::onMouseCaptureLost()
+{
+ mIsDragged = false;
+}
+
+void LLToolBarButton::onCommit()
+{
+ LLCommand* command = LLCommandManager::instance().getCommand(mId);
+
+ if (!mIsEnabledSignal || (*mIsEnabledSignal)(this, command->isEnabledParameters()))
+ {
+ LLButton::onCommit();
+ }
+}
+
+void LLToolBarButton::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ LLButton::reshape(mWidthRange.clamp(width), height, called_from_parent);
+}
+
+void LLToolBarButton::setEnabled(BOOL enabled)
+{
+ if (enabled)
+ {
+ mImageSelected = mOriginalImageSelected;
+ mImageUnselected = mOriginalImageUnselected;
+ mImagePressed = mOriginalImagePressed;
+ mImagePressedSelected = mOriginalImagePressedSelected;
+ mUnselectedLabelColor = mOriginalLabelColor;
+ mSelectedLabelColor = mOriginalLabelColorSelected;
+ mImageOverlayColor = mOriginalImageOverlayColor;
+ mImageOverlaySelectedColor = mOriginalImageOverlaySelectedColor;
+ }
+ else
+ {
+ mImageSelected = mImageDisabledSelected;
+ mImageUnselected = mImageDisabled;
+ mImagePressed = mImageDisabled;
+ mImagePressedSelected = mImageDisabledSelected;
+ mUnselectedLabelColor = mDisabledLabelColor;
+ mSelectedLabelColor = mDisabledSelectedLabelColor;
+ mImageOverlayColor = mImageOverlayDisabledColor;
+ mImageOverlaySelectedColor = mImageOverlayDisabledColor;
+ }
+}
+
+
+const std::string LLToolBarButton::getToolTip() const
+{
+ std::string tooltip;
+ if (labelIsTruncated() || getCurrentLabel().empty())
+ {
+ return LLTrans::getString(LLCommandManager::instance().getCommand(mId)->labelRef()) + " -- " + LLView::getToolTip();
+ }
+ else
+ {
+ return LLView::getToolTip();
+ }
+}
+
+
+
+
+
+
+
+
+
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
new file mode 100644
index 0000000000..616710ea70
--- /dev/null
+++ b/indra/llui/lltoolbar.h
@@ -0,0 +1,259 @@
+/**
+ * @file lltoolbar.h
+ * @author Richard Nelson
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLTOOLBAR_H
+#define LL_LLTOOLBAR_H
+
+#include "llbutton.h"
+#include "llcommandmanager.h"
+#include "lllayoutstack.h"
+#include "lluictrl.h"
+#include "llcommandmanager.h"
+#include "llassettype.h"
+
+class LLToolBar;
+
+typedef boost::function<void (S32 x, S32 y, const LLUUID& uuid)> tool_startdrag_callback_t;
+typedef boost::function<BOOL (S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type)> tool_handledrag_callback_t;
+typedef boost::function<BOOL (void* data, S32 x, S32 y, LLToolBar* toolbar)> tool_handledrop_callback_t;
+
+class LLToolBarButton : public LLButton
+{
+ friend class LLToolBar;
+public:
+ struct Params : public LLInitParam::Block<Params, LLButton::Params>
+ {
+ Optional<LLUI::RangeS32::Params> button_width;
+ Optional<S32> desired_height;
+
+ Params()
+ : button_width("button_width"),
+ desired_height("desired_height", 20)
+ {}
+
+ };
+
+ LLToolBarButton(const Params& p);
+ ~LLToolBarButton();
+
+ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+ BOOL handleHover(S32 x, S32 y, MASK mask);
+ void reshape(S32 width, S32 height, BOOL called_from_parent = true);
+ void setEnabled(BOOL enabled);
+ void setCommandId(const LLCommandId& id) { mId = id; }
+
+ void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; }
+ void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
+
+ void onMouseEnter(S32 x, S32 y, MASK mask);
+ void onMouseCaptureLost();
+
+ void onCommit();
+
+ virtual const std::string getToolTip() const;
+
+private:
+ void callIfEnabled(LLUICtrl::commit_callback_t commit, LLUICtrl* ctrl, const LLSD& param );
+
+ LLCommandId mId;
+ S32 mMouseDownX;
+ S32 mMouseDownY;
+ LLUI::RangeS32 mWidthRange;
+ S32 mDesiredHeight;
+ bool mIsDragged;
+ tool_startdrag_callback_t mStartDragItemCallback;
+ tool_handledrag_callback_t mHandleDragItemCallback;
+
+ enable_signal_t* mIsEnabledSignal;
+ enable_signal_t* mIsRunningSignal;
+ enable_signal_t* mIsStartingSignal;
+ LLPointer<LLUIImage> mOriginalImageSelected,
+ mOriginalImageUnselected,
+ mOriginalImagePressed,
+ mOriginalImagePressedSelected;
+ LLUIColor mOriginalLabelColor,
+ mOriginalLabelColorSelected,
+ mOriginalImageOverlayColor,
+ mOriginalImageOverlaySelectedColor;
+};
+
+
+namespace LLToolBarEnums
+{
+ enum ButtonType
+ {
+ BTNTYPE_ICONS_WITH_TEXT = 0,
+ BTNTYPE_ICONS_ONLY,
+
+ BTNTYPE_COUNT
+ };
+
+ enum SideType
+ {
+ SIDE_BOTTOM,
+ SIDE_LEFT,
+ SIDE_RIGHT,
+ SIDE_TOP,
+ };
+}
+
+// NOTE: This needs to occur before Param block declaration for proper compilation.
+namespace LLInitParam
+{
+ template<>
+ struct TypeValues<LLToolBarEnums::ButtonType> : public TypeValuesHelper<LLToolBarEnums::ButtonType>
+ {
+ static void declareValues();
+ };
+
+ template<>
+ struct TypeValues<LLToolBarEnums::SideType> : public TypeValuesHelper<LLToolBarEnums::SideType>
+ {
+ static void declareValues();
+ };
+}
+
+
+class LLToolBar
+: public LLUICtrl
+{
+public:
+ struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
+ {
+ Mandatory<LLToolBarEnums::ButtonType> button_display_mode;
+ Mandatory<LLToolBarEnums::SideType> side;
+
+ Optional<LLToolBarButton::Params> button_icon,
+ button_icon_and_text;
+
+ Optional<bool> read_only,
+ wrap;
+
+ Optional<S32> pad_left,
+ pad_top,
+ pad_right,
+ pad_bottom,
+ pad_between,
+ min_girth;
+ // get rid of this
+ Multiple<LLCommandId::Params> commands;
+
+ Optional<LLPanel::Params> button_panel;
+
+ Params();
+ };
+
+ // virtuals
+ void draw();
+ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+ int getRankFromPosition(S32 x, S32 y);
+ int getRankFromPosition(const LLCommandId& id);
+ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
+ virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg);
+
+ static const int RANK_NONE = -1;
+
+ bool addCommand(const LLCommandId& commandId, int rank = RANK_NONE);
+ int removeCommand(const LLCommandId& commandId); // Returns the rank the removed command was at, RANK_NONE if not found
+ bool hasCommand(const LLCommandId& commandId) const;
+ bool enableCommand(const LLCommandId& commandId, bool enabled);
+
+ void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; }
+ void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
+ void setHandleDropCallback(tool_handledrop_callback_t cb) { mHandleDropCallback = cb; }
+ bool isReadOnly() const { return mReadOnly; }
+
+ LLToolBarButton* createButton(const LLCommandId& id);
+
+ bool hasButtons() const { return !mButtons.empty(); }
+ bool isModified() const { return mModified; }
+
+protected:
+ friend class LLUICtrlFactory;
+ LLToolBar(const Params&);
+ ~LLToolBar();
+
+ void initFromParams(const Params&);
+ tool_startdrag_callback_t mStartDragItemCallback;
+ tool_handledrag_callback_t mHandleDragItemCallback;
+ tool_handledrop_callback_t mHandleDropCallback;
+ bool mDragAndDropTarget;
+ int mDragRank;
+ S32 mDragx,
+ mDragy,
+ mDragGirth;
+
+public:
+ // Methods used in loading and saving toolbar settings
+ void setButtonType(LLToolBarEnums::ButtonType button_type);
+ LLToolBarEnums::ButtonType getButtonType() { return mButtonType; }
+ command_id_list_t& getCommandsList() { return mButtonCommands; }
+ void clearCommandsList();
+
+private:
+ void createContextMenu();
+ void updateLayoutAsNeeded();
+ void createButtons();
+ void resizeButtonsInRow(std::vector<LLToolBarButton*>& buttons_in_row, S32 max_row_girth);
+ BOOL isSettingChecked(const LLSD& userdata);
+ void onSettingEnable(const LLSD& userdata);
+
+ const bool mReadOnly;
+
+ typedef std::list<LLToolBarButton*> toolbar_button_list;
+ toolbar_button_list mButtons;
+ command_id_list_t mButtonCommands;
+ typedef std::map<LLUUID, LLToolBarButton*> command_id_map;
+ command_id_map mButtonMap;
+
+ LLToolBarEnums::ButtonType mButtonType;
+ LLLayoutStack* mCenteringStack;
+ LLLayoutStack* mWrapStack;
+ LLPanel* mButtonPanel;
+ LLToolBarEnums::SideType mSideType;
+
+ bool mWrap;
+ bool mNeedsLayout;
+ bool mModified;
+ S32 mPadLeft,
+ mPadRight,
+ mPadTop,
+ mPadBottom,
+ mPadBetween,
+ mMinGirth;
+
+ LLToolBarButton::Params mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
+
+ LLHandle<class LLContextMenu> mPopupMenuHandle;
+};
+
+
+#endif // LL_LLTOOLBAR_H
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index bc6461a0c2..23cdd9ad9a 100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
@@ -200,7 +200,7 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)
icon_params.image_selected(imagep);
icon_params.scale_image(true);
- icon_params.flash_color(icon_params.highlight_color());
+ icon_params.flash_color.control = "ButtonUnselectedFgColor";
mInfoButton = LLUICtrlFactory::create<LLButton>(icon_params);
if (p.click_callback.isProvided())
{
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 58ba9e05f5..79ad99a770 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -41,6 +41,7 @@
#include "llgl.h"
// Project includes
+#include "llcommandmanager.h"
#include "llcontrol.h"
#include "llui.h"
#include "lluicolortable.h"
@@ -57,6 +58,7 @@
#include "llfiltereditor.h"
#include "llflyoutbutton.h"
#include "llsearcheditor.h"
+#include "lltoolbar.h"
// for XUIParse
#include "llquaternion.h"
@@ -87,13 +89,14 @@ std::list<std::string> gUntranslated;
/*static*/ LLUI::remove_popup_t LLUI::sRemovePopupFunc;
/*static*/ LLUI::clear_popups_t LLUI::sClearPopupsFunc;
-// register filtereditor here
+// register filter editor here
static LLDefaultChildRegistry::Register<LLFilterEditor> register_filter_editor("filter_editor");
static LLDefaultChildRegistry::Register<LLFlyoutButton> register_flyout_button("flyout_button");
static LLDefaultChildRegistry::Register<LLSearchEditor> register_search_editor("search_editor");
// register other widgets which otherwise may not be linked in
static LLDefaultChildRegistry::Register<LLLoadingIndicator> register_loading_indicator("loading_indicator");
+static LLDefaultChildRegistry::Register<LLToolBar> register_toolbar("toolbar");
//
// Functions
@@ -103,7 +106,7 @@ void make_ui_sound(const char* namep)
std::string name = ll_safe_string(namep);
if (!LLUI::sSettingGroups["config"]->controlExists(name))
{
- llwarns << "tried to make ui sound for unknown sound name: " << name << llendl;
+ llwarns << "tried to make UI sound for unknown sound name: " << name << llendl;
}
else
{
@@ -114,12 +117,12 @@ void make_ui_sound(const char* namep)
{
if (LLUI::sSettingGroups["config"]->getBOOL("UISndDebugSpamToggle"))
{
- llinfos << "ui sound name: " << name << " triggered but silent (null uuid)" << llendl;
+ llinfos << "UI sound name: " << name << " triggered but silent (null uuid)" << llendl;
}
}
else
{
- llwarns << "ui sound named: " << name << " does not translate to a valid uuid" << llendl;
+ llwarns << "UI sound named: " << name << " does not translate to a valid uuid" << llendl;
}
}
@@ -127,7 +130,7 @@ void make_ui_sound(const char* namep)
{
if (LLUI::sSettingGroups["config"]->getBOOL("UISndDebugSpamToggle"))
{
- llinfos << "ui sound name: " << name << llendl;
+ llinfos << "UI sound name: " << name << llendl;
}
LLUI::sAudioCallback(uuid);
}
@@ -471,7 +474,7 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
return;
}
- // add in offset of current image to current ui translation
+ // add in offset of current image to current UI translation
const LLVector3 ui_scale = gGL.getUIScale();
const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale);
@@ -1613,16 +1616,16 @@ void LLUI::initClass(const settings_map_t& settings,
LLUICtrl::CommitCallbackRegistry::Registrar& reg = LLUICtrl::CommitCallbackRegistry::defaultRegistrar();
- // Callbacks for associating controls with floater visibilty:
- reg.add("Floater.Toggle", boost::bind(&LLFloaterReg::toggleFloaterInstance, _2));
- reg.add("Floater.Show", boost::bind(&LLFloaterReg::showFloaterInstance, _2));
- reg.add("Floater.Hide", boost::bind(&LLFloaterReg::hideFloaterInstance, _2));
- reg.add("Floater.InitToVisibilityControl", boost::bind(&LLFloaterReg::initUICtrlToFloaterVisibilityControl, _1, _2));
+ // Callbacks for associating controls with floater visibility:
+ reg.add("Floater.Toggle", boost::bind(&LLFloaterReg::toggleInstance, _2, LLSD()));
+ reg.add("Floater.ToggleOrBringToFront", boost::bind(&LLFloaterReg::toggleInstanceOrBringToFront, _2, LLSD()));
+ reg.add("Floater.Show", boost::bind(&LLFloaterReg::showInstance, _2, LLSD(), FALSE));
+ reg.add("Floater.Hide", boost::bind(&LLFloaterReg::hideInstance, _2, LLSD()));
// Button initialization callback for toggle buttons
reg.add("Button.SetFloaterToggle", boost::bind(&LLButton::setFloaterToggle, _1, _2));
- // Button initialization callback for toggle buttons on dockale floaters
+ // Button initialization callback for toggle buttons on dockable floaters
reg.add("Button.SetDockableFloaterToggle", boost::bind(&LLButton::setDockableFloaterToggle, _1, _2));
// Display the help topic for the current context
@@ -1631,8 +1634,12 @@ void LLUI::initClass(const settings_map_t& settings,
// Currently unused, but kept for reference:
reg.add("Button.ToggleFloater", boost::bind(&LLButton::toggleFloaterAndSetToggleState, _1, _2));
- // Used by menus along with Floater.Toggle to display visibility as a checkmark
- LLUICtrl::EnableCallbackRegistry::defaultRegistrar().add("Floater.Visible", boost::bind(&LLFloaterReg::floaterInstanceVisible, _2));
+ // Used by menus along with Floater.Toggle to display visibility as a check-mark
+ LLUICtrl::EnableCallbackRegistry::defaultRegistrar().add("Floater.Visible", boost::bind(&LLFloaterReg::instanceVisible, _2, LLSD()));
+ LLUICtrl::EnableCallbackRegistry::defaultRegistrar().add("Floater.IsOpen", boost::bind(&LLFloaterReg::instanceVisible, _2, LLSD()));
+
+ // Parse the master list of commands
+ LLCommandManager::load();
}
void LLUI::cleanupClass()
@@ -2026,12 +2033,12 @@ void LLUI::positionViewNearMouse(LLView* view, S32 spawn_x, S32 spawn_y)
CURSOR_HEIGHT + MOUSE_CURSOR_PADDING * 2);
S32 local_x, local_y;
- // convert screen coordinates to tooltipview-local coordinates
+ // convert screen coordinates to tooltip view-local coordinates
parent->screenPointToLocal(spawn_x, spawn_y, &local_x, &local_y);
// Start at spawn position (using left/top)
view->setOrigin( local_x, local_y - view->getRect().getHeight());
- // Make sure we're onscreen and not overlapping the mouse
+ // Make sure we're on-screen and not overlapping the mouse
view->translateIntoRectWithExclusion( virtual_window_rect, mouse_rect, FALSE );
}
@@ -2100,7 +2107,7 @@ namespace LLInitParam
void ParamValue<LLUIColor, TypeValues<LLUIColor> >::updateValueFromBlock()
{
- if (control.isProvided())
+ if (control.isProvided() && !control().empty())
{
updateValue(LLUIColorTable::instance().getColor(control));
}
@@ -2257,9 +2264,11 @@ namespace LLInitParam
// in this case, that is left+width and bottom+height
LLRect& value = getValue();
+ right.set(value.mRight, false);
left.set(value.mLeft, make_block_authoritative);
width.set(value.getWidth(), make_block_authoritative);
+ top.set(value.mTop, false);
bottom.set(value.mBottom, make_block_authoritative);
height.set(value.getHeight(), make_block_authoritative);
}
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 7801a01ace..28e84fa444 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -41,6 +41,7 @@
#include <boost/signals2.hpp>
#include "lllazyvalue.h"
#include "llframetimer.h"
+#include <limits>
// LLUIFactory
#include "llsd.h"
@@ -148,6 +149,122 @@ class LLUI
LOG_CLASS(LLUI);
public:
//
+ // Classes
+ //
+
+ struct RangeS32
+ {
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Optional<S32> minimum,
+ maximum;
+
+ Params()
+ : minimum("min", 0),
+ maximum("max", S32_MAX)
+ {}
+ };
+
+ // correct for inverted params
+ RangeS32(const Params& p = Params())
+ : mMin(p.minimum),
+ mMax(p.maximum)
+ {
+ sanitizeRange();
+ }
+
+ RangeS32(S32 minimum, S32 maximum)
+ : mMin(minimum),
+ mMax(maximum)
+ {
+ sanitizeRange();
+ }
+
+ S32 clamp(S32 input)
+ {
+ if (input < mMin) return mMin;
+ if (input > mMax) return mMax;
+ return input;
+ }
+
+ void setRange(S32 minimum, S32 maximum)
+ {
+ mMin = minimum;
+ mMax = maximum;
+ sanitizeRange();
+ }
+
+ S32 getMin() { return mMin; }
+ S32 getMax() { return mMax; }
+
+ bool operator==(const RangeS32& other) const
+ {
+ return mMin == other.mMin
+ && mMax == other.mMax;
+ }
+ private:
+ void sanitizeRange()
+ {
+ if (mMin > mMax)
+ {
+ llwarns << "Bad interval range (" << mMin << ", " << mMax << ")" << llendl;
+ // since max is usually the most dangerous one to ignore (buffer overflow, etc), prefer it
+ // in the case of a malformed range
+ mMin = mMax;
+ }
+ }
+
+
+ S32 mMin,
+ mMax;
+ };
+
+ struct ClampedS32 : public RangeS32
+ {
+ struct Params : public LLInitParam::Block<Params, RangeS32::Params>
+ {
+ Mandatory<S32> value;
+
+ Params()
+ : value("", 0)
+ {
+ addSynonym(value, "value");
+ }
+ };
+
+ ClampedS32(const Params& p)
+ : RangeS32(p)
+ {}
+
+ ClampedS32(const RangeS32& range)
+ : RangeS32(range)
+ {
+ // set value here, after range has been sanitized
+ mValue = clamp(0);
+ }
+
+ ClampedS32(S32 value, const RangeS32& range = RangeS32())
+ : RangeS32(range)
+ {
+ mValue = clamp(value);
+ }
+
+ S32 get()
+ {
+ return mValue;
+ }
+
+ void set(S32 value)
+ {
+ mValue = clamp(value);
+ }
+
+
+ private:
+ S32 mValue;
+ };
+
+ //
// Methods
//
typedef std::map<std::string, LLControlGroup*> settings_map_t;
@@ -365,7 +482,7 @@ template <typename T> LLRegisterWith<LLInitClassList> LLInitClass<T>::sRegister(
template <typename T> LLRegisterWith<LLDestroyClassList> LLDestroyClass<T>::sRegister(&T::destroyClass);
// useful parameter blocks
-struct TimeIntervalParam : public LLInitParam::Choice<TimeIntervalParam>
+struct TimeIntervalParam : public LLInitParam::ChoiceBlock<TimeIntervalParam>
{
Alternative<F32> seconds;
Alternative<S32> frames;
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index 76518789ec..6a7a681d57 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -44,7 +44,7 @@ LOG_CLASS(LLUIColorTable);
typedef std::map<std::string, LLUIColor> string_color_map_t;
public:
- struct ColorParams : LLInitParam::Choice<ColorParams>
+ struct ColorParams : LLInitParam::ChoiceBlock<ColorParams>
{
Alternative<LLColor4> value;
Alternative<std::string> reference;
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index 9b9e2ddb55..2fa260ded1 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -992,6 +992,16 @@ void LLUICtrl::setTransparencyType(ETypeTransparency type)
mTransparencyType = type;
}
+boost::signals2::connection LLUICtrl::setCommitCallback(const CommitCallbackParam& cb)
+{
+ return setCommitCallback(initCommitCallback(cb));
+}
+
+boost::signals2::connection LLUICtrl::setValidateCallback(const EnableCallbackParam& cb)
+{
+ return setValidateCallback(initEnableCallback(cb));
+}
+
boost::signals2::connection LLUICtrl::setCommitCallback( const commit_signal_t::slot_type& cb )
{
if (!mCommitSignal) mCommitSignal = new commit_signal_t();
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 8a8b589e9c..3e055a9d06 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -76,14 +76,14 @@ public:
Optional<enable_callback_t> function;
};
- struct EnableControls : public LLInitParam::Choice<EnableControls>
+ struct EnableControls : public LLInitParam::ChoiceBlock<EnableControls>
{
Alternative<std::string> enabled;
Alternative<std::string> disabled;
EnableControls();
};
- struct ControlVisibility : public LLInitParam::Choice<ControlVisibility>
+ struct ControlVisibility : public LLInitParam::ChoiceBlock<ControlVisibility>
{
Alternative<std::string> visible;
Alternative<std::string> invisible;
@@ -235,6 +235,9 @@ public:
// topic then put in help_topic_out
bool findHelpTopic(std::string& help_topic_out);
+ boost::signals2::connection setCommitCallback(const CommitCallbackParam& cb);
+ boost::signals2::connection setValidateCallback(const EnableCallbackParam& cb);
+
boost::signals2::connection setCommitCallback( const commit_signal_t::slot_type& cb );
boost::signals2::connection setValidateCallback( const enable_signal_t::slot_type& cb );
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index d345ad4cd0..d612ad5005 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -125,12 +125,12 @@ private:
// base case for recursion, there are NO base classes of LLInitParam::BaseBlock
template<int DUMMY>
- class ParamDefaults<LLInitParam::BaseBlockWithFlags, DUMMY> : public LLSingleton<ParamDefaults<LLInitParam::BaseBlockWithFlags, DUMMY> >
+ class ParamDefaults<LLInitParam::BaseBlock, DUMMY> : public LLSingleton<ParamDefaults<LLInitParam::BaseBlock, DUMMY> >
{
public:
- const LLInitParam::BaseBlockWithFlags& get() { return mBaseBlock; }
+ const LLInitParam::BaseBlock& get() { return mBaseBlock; }
private:
- LLInitParam::BaseBlockWithFlags mBaseBlock;
+ LLInitParam::BaseBlock mBaseBlock;
};
public:
@@ -172,7 +172,7 @@ public:
static T* createFromFile(const std::string &filename, LLView *parent, const widget_registry_t& registry, LLXMLNodePtr output_node = NULL)
{
T* widget = NULL;
-
+
std::string skinned_filename = findSkinnedFilename(filename);
instance().pushFileName(filename);
{
@@ -201,10 +201,10 @@ public:
// not of right type, so delete it
if (!widget)
{
+ llwarns << "Widget in " << filename << " was of type " << typeid(view).name() << " instead of expected type " << typeid(T).name() << llendl;
delete view;
view = NULL;
}
-
}
}
fail:
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 3ddfb090c8..fdb84f1ec5 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -862,15 +862,16 @@ BOOL LLView::handleToolTip(S32 x, S32 y, MASK mask)
// parents provide tooltips first, which are optionally
// overridden by children, in case child is mouse_opaque
- if (!mToolTipMsg.empty())
+ std::string tooltip = getToolTip();
+ if (!tooltip.empty())
{
// allow "scrubbing" over ui by showing next tooltip immediately
// if previous one was still visible
F32 timeout = LLToolTipMgr::instance().toolTipVisible()
- ? 0.f
+ ? LLUI::sSettingGroups["config"]->getF32( "ToolTipFastDelay" )
: LLUI::sSettingGroups["config"]->getF32( "ToolTipDelay" );
LLToolTipMgr::instance().show(LLToolTip::Params()
- .message(mToolTipMsg)
+ .message(tooltip)
.sticky_rect(calcScreenRect())
.delay_time(timeout));
@@ -1601,13 +1602,6 @@ LLView* LLView::findNextSibling(LLView* child)
return (next_it != mChildList.end()) ? *next_it : NULL;
}
-void LLView::deleteViewByHandle(LLHandle<LLView> handle)
-{
- LLView* viewp = handle.get();
-
- delete viewp;
-}
-
LLCoordGL getNeededTranslation(const LLRect& input, const LLRect& constraint, BOOL allow_partial_outside)
{
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index fe15307a5d..6d1dda90af 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -97,13 +97,10 @@ private:
static std::vector<LLViewDrawContext*> sDrawContextStack;
};
-class LLViewWidgetRegistry : public LLChildRegistry<LLViewWidgetRegistry>
-{};
-
class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElement
{
public:
- struct Follows : public LLInitParam::Choice<Follows>
+ struct Follows : public LLInitParam::ChoiceBlock<Follows>
{
Alternative<std::string> string;
Alternative<U32> flags;
@@ -152,7 +149,8 @@ public:
Params();
};
- typedef LLViewWidgetRegistry child_registry_t;
+ // most widgets are valid children of LLView
+ typedef LLDefaultChildRegistry child_registry_t;
void initFromParams(const LLView::Params&);
@@ -242,7 +240,7 @@ public:
ECursorType getHoverCursor() { return mHoverCursor; }
- const std::string& getToolTip() const { return mToolTipMsg.getString(); }
+ virtual const std::string getToolTip() const { return mToolTipMsg.getString(); }
void sendChildToFront(LLView* child);
void sendChildToBack(LLView* child);
@@ -472,6 +470,20 @@ public:
return dynamic_cast<T*>(widgetp);
}
+ template <class T> T* getParentByType() const
+ {
+ LLView* parent = getParent();
+ while(parent)
+ {
+ if (dynamic_cast<T*>(parent))
+ {
+ return static_cast<T*>(parent);
+ }
+ parent = parent->getParent();
+ }
+ return NULL;
+ }
+
//////////////////////////////////////////////
// statics
//////////////////////////////////////////////
@@ -487,7 +499,6 @@ public:
// return query for iterating over focus roots in tab order
static const LLCtrlQuery & getFocusRootsQuery();
- static void deleteViewByHandle(LLHandle<LLView> handle);
static LLWindow* getWindow(void) { return LLUI::sWindow; }
// Set up params after XML load before calling new(),
diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp
index d522123260..4f251db93b 100644
--- a/indra/llui/tests/llurlentry_stub.cpp
+++ b/indra/llui/tests/llurlentry_stub.cpp
@@ -124,8 +124,8 @@ namespace LLInitParam
{
descriptor.mCurrentBlockPtr = this;
}
- bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; }
- void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {}
+ bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, bool new_name){ return true; }
+ void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t& name_stack, const LLInitParam::BaseBlock* diff_block) const {}
bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_value, S32 max_value) const { return true; }
bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
bool BaseBlock::validateBlock(bool emit_errors) const { return true; }
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 2f814f4200..c1fb050206 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -72,7 +72,6 @@ S32 LLUIImage::getHeight() const
namespace LLInitParam
{
- S32 Parser::sNextParseGeneration = 0;
BlockDescriptor::BlockDescriptor() {}
ParamDescriptor::ParamDescriptor(param_handle_t p,
merge_func_t merge_func,
diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp
index fb6a2eabf1..627f3129e9 100644
--- a/indra/llui/tests/llurlmatch_test.cpp
+++ b/indra/llui/tests/llurlmatch_test.cpp
@@ -66,8 +66,6 @@ namespace LLInitParam
BaseBlock::BaseBlock() {}
BaseBlock::~BaseBlock() {}
- S32 Parser::sNextParseGeneration = 0;
-
BlockDescriptor::BlockDescriptor() {}
ParamDescriptor::ParamDescriptor(param_handle_t p,
merge_func_t merge_func,
@@ -98,8 +96,8 @@ namespace LLInitParam
mEnclosingBlockOffset = 0x7FFFffff & ((U32)(my_addr - block_addr));
}
- bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; }
- void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {}
+ bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, bool new_name){ return true; }
+ void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t& name_stack, const LLInitParam::BaseBlock* diff_block) const {}
bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_count, S32 max_count) const { return true; }
bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
bool BaseBlock::validateBlock(bool emit_errors) const { return true; }
diff --git a/indra/llvfs/lllfsthread.cpp b/indra/llvfs/lllfsthread.cpp
index bf49b9668e..3d3ed9f6d4 100644
--- a/indra/llvfs/lllfsthread.cpp
+++ b/indra/llvfs/lllfsthread.cpp
@@ -67,6 +67,10 @@ LLLFSThread::LLLFSThread(bool threaded) :
LLQueuedThread("LFS", threaded),
mPriorityCounter(PRIORITY_LOWBITS)
{
+ if(!mLocalAPRFilePoolp)
+ {
+ mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
+ }
}
LLLFSThread::~LLLFSThread()
@@ -178,7 +182,8 @@ bool LLLFSThread::Request::processRequest()
if (mOperation == FILE_READ)
{
llassert(mOffset >= 0);
- LLAPRFile infile(mFileName, LL_APR_RB);
+ LLAPRFile infile ; // auto-closes
+ infile.open(mFileName, LL_APR_RB, mThread->getLocalAPRFilePool());
if (!infile.getFileHandle())
{
llwarns << "LLLFS: Unable to read file: " << mFileName << llendl;
@@ -200,7 +205,8 @@ bool LLLFSThread::Request::processRequest()
apr_int32_t flags = APR_CREATE|APR_WRITE|APR_BINARY;
if (mOffset < 0)
flags |= APR_APPEND;
- LLAPRFile outfile(mFileName, flags);
+ LLAPRFile outfile ; // auto-closes
+ outfile.open(mFileName, flags, mThread->getLocalAPRFilePool());
if (!outfile.getFileHandle())
{
llwarns << "LLLFS: Unable to write file: " << mFileName << llendl;
diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp
index ade19f8103..82c926620a 100644
--- a/indra/llvfs/llvfs.cpp
+++ b/indra/llvfs/llvfs.cpp
@@ -234,7 +234,7 @@ LLVFS::LLVFS(const std::string& index_filename, const std::string& data_filename
mDataFP(NULL),
mIndexFP(NULL)
{
- mDataMutex = new LLMutex;
+ mDataMutex = new LLMutex(0);
S32 i;
for (i = 0; i < VFSLOCK_COUNT; i++)
@@ -2098,7 +2098,8 @@ void LLVFS::dumpFiles()
std::string filename = id.asString() + extension;
llinfos << " Writing " << filename << llendl;
- LLAPRFile outfile(filename, LL_APR_WB);
+ LLAPRFile outfile;
+ outfile.open(filename, LL_APR_WB);
outfile.write(&buffer[0], size);
outfile.close();
diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp
index c024fd405e..482064ed7b 100644
--- a/indra/llxuixml/llinitparam.cpp
+++ b/indra/llxuixml/llinitparam.cpp
@@ -62,7 +62,6 @@ namespace LLInitParam
mInspectFunc(inspect_func),
mMinCount(min_count),
mMaxCount(max_count),
- mGeneration(0),
mUserData(NULL)
{}
@@ -75,7 +74,6 @@ namespace LLInitParam
mInspectFunc(NULL),
mMinCount(0),
mMaxCount(0),
- mGeneration(0),
mUserData(NULL)
{}
@@ -87,8 +85,6 @@ namespace LLInitParam
//
// Parser
//
- S32 Parser::sNextParseGeneration = 0;
-
Parser::~Parser()
{}
@@ -162,9 +158,9 @@ namespace LLInitParam
return (param_address - baseblock_address);
}
- bool BaseBlock::submitValue(const Parser::name_stack_t& name_stack, Parser& p, bool silent)
+ bool BaseBlock::submitValue(Parser::name_stack_t& name_stack, Parser& p, bool silent)
{
- if (!deserializeBlock(p, std::make_pair(name_stack.begin(), name_stack.end()), -1))
+ if (!deserializeBlock(p, std::make_pair(name_stack.begin(), name_stack.end()), true))
{
if (!silent)
{
@@ -194,7 +190,7 @@ namespace LLInitParam
return true;
}
- void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const
+ void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t& name_stack, const LLInitParam::BaseBlock* diff_block) const
{
// named param is one like LLView::Params::follows
// unnamed param is like LLView::Params::rect - implicit
@@ -213,8 +209,7 @@ namespace LLInitParam
// each param descriptor remembers its serial number
// so we can inspect the same param under different names
// and see that it has the same number
- (*it)->mGeneration = parser.newParseGeneration();
- name_stack.push_back(std::make_pair("", (*it)->mGeneration));
+ name_stack.push_back(std::make_pair("", true));
serialize_func(*param, parser, name_stack, diff_param);
name_stack.pop_back();
}
@@ -250,12 +245,7 @@ namespace LLInitParam
continue;
}
- if (!duplicate)
- {
- it->second->mGeneration = parser.newParseGeneration();
- }
-
- name_stack.push_back(std::make_pair(it->first, it->second->mGeneration));
+ name_stack.push_back(std::make_pair(it->first, !duplicate));
const Param* diff_param = diff_block ? diff_block->getParamFromHandle(param_handle) : NULL;
serialize_func(*param, parser, name_stack, diff_param);
name_stack.pop_back();
@@ -278,8 +268,7 @@ namespace LLInitParam
ParamDescriptor::inspect_func_t inspect_func = (*it)->mInspectFunc;
if (inspect_func)
{
- (*it)->mGeneration = parser.newParseGeneration();
- name_stack.push_back(std::make_pair("", (*it)->mGeneration));
+ name_stack.push_back(std::make_pair("", true));
inspect_func(*param, parser, name_stack, (*it)->mMinCount, (*it)->mMaxCount);
name_stack.pop_back();
}
@@ -307,11 +296,7 @@ namespace LLInitParam
}
}
- if (!duplicate)
- {
- it->second->mGeneration = parser.newParseGeneration();
- }
- name_stack.push_back(std::make_pair(it->first, it->second->mGeneration));
+ name_stack.push_back(std::make_pair(it->first, !duplicate));
inspect_func(*param, parser, name_stack, it->second->mMinCount, it->second->mMaxCount);
name_stack.pop_back();
}
@@ -320,16 +305,18 @@ namespace LLInitParam
return true;
}
- bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 parent_generation)
+ bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool ignored)
{
BlockDescriptor& block_data = mostDerivedBlockDescriptor();
- bool names_left = name_stack.first != name_stack.second;
+ bool names_left = name_stack_range.first != name_stack_range.second;
- S32 parse_generation = name_stack.first == name_stack.second ? -1 : name_stack.first->second;
+ bool new_name = names_left
+ ? name_stack_range.first->second
+ : true;
if (names_left)
{
- const std::string& top_name = name_stack.first->first;
+ const std::string& top_name = name_stack_range.first->first;
ParamDescriptor::deserialize_func_t deserialize_func = NULL;
Param* paramp = NULL;
@@ -341,9 +328,18 @@ namespace LLInitParam
paramp = getParamFromHandle(found_it->second->mParamHandle);
deserialize_func = found_it->second->mDeserializeFunc;
- Parser::name_stack_range_t new_name_stack(name_stack.first, name_stack.second);
+ Parser::name_stack_range_t new_name_stack(name_stack_range.first, name_stack_range.second);
++new_name_stack.first;
- return deserialize_func(*paramp, p, new_name_stack, parse_generation);
+ if (deserialize_func(*paramp, p, new_name_stack, new_name))
+ {
+ // value is no longer new, we know about it now
+ name_stack_range.first->second = false;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
}
}
@@ -355,7 +351,7 @@ namespace LLInitParam
Param* paramp = getParamFromHandle((*it)->mParamHandle);
ParamDescriptor::deserialize_func_t deserialize_func = (*it)->mDeserializeFunc;
- if (deserialize_func && deserialize_func(*paramp, p, name_stack, parse_generation))
+ if (deserialize_func && deserialize_func(*paramp, p, name_stack_range, new_name))
{
return true;
}
@@ -365,7 +361,7 @@ namespace LLInitParam
// verify by calling readValue with NoParamValue type, an inherently unparseable type
if (!names_left)
{
- NoParamValue no_value;
+ Flag no_value;
return p.readValue(no_value);
}
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 69dcd474f7..1e295ada2d 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -38,6 +38,9 @@
namespace LLInitParam
{
+ // used to indicate no matching value to a given name when parsing
+ struct Flag{};
+
template<typename T> const T& defaultValue() { static T value; return value; }
template <typename T, bool IS_BOOST_FUNCTION = boost::is_convertible<T, boost::function_base>::value >
@@ -65,6 +68,12 @@ namespace LLInitParam
static bool equals(const LLSD &a, const LLSD &b) { return false; }
};
+ template<>
+ struct ParamCompare<Flag, false>
+ {
+ static bool equals(const Flag& a, const Flag& b) { return false; }
+ };
+
// helper functions and classes
typedef ptrdiff_t param_handle_t;
@@ -78,6 +87,7 @@ namespace LLInitParam
void setValueName(const std::string& key) {}
std::string getValueName() const { return ""; }
+ std::string calcValueName(const T& value) const { return ""; }
void clearValueName() const {}
static bool getValueFromName(const std::string& name, T& value)
@@ -115,6 +125,22 @@ namespace LLInitParam
return mValueName;
}
+ std::string calcValueName(const T& value) const
+ {
+ value_name_map_t* map = getValueNames();
+ for (typename value_name_map_t::iterator it = map->begin(), end_it = map->end();
+ it != end_it;
+ ++it)
+ {
+ if (ParamCompare<T>::equals(it->second, value))
+ {
+ return it->first;
+ }
+ }
+
+ return "";
+ }
+
void clearValueName() const
{
mValueName.clear();
@@ -188,13 +214,13 @@ namespace LLInitParam
}
};
- typedef std::vector<std::pair<std::string, S32> > name_stack_t;
- typedef std::pair<name_stack_t::const_iterator, name_stack_t::const_iterator> name_stack_range_t;
- typedef std::vector<std::string> possible_values_t;
+ typedef std::vector<std::pair<std::string, bool> > name_stack_t;
+ typedef std::pair<name_stack_t::iterator, name_stack_t::iterator> name_stack_range_t;
+ typedef std::vector<std::string> possible_values_t;
typedef bool (*parser_read_func_t)(Parser& parser, void* output);
- typedef bool (*parser_write_func_t)(Parser& parser, const void*, const name_stack_t&);
- typedef boost::function<void (const name_stack_t&, S32, S32, const possible_values_t*)> parser_inspect_func_t;
+ typedef bool (*parser_write_func_t)(Parser& parser, const void*, name_stack_t&);
+ typedef boost::function<void (name_stack_t&, S32, S32, const possible_values_t*)> parser_inspect_func_t;
typedef std::map<const std::type_info*, parser_read_func_t, CompareTypeID> parser_read_func_map_t;
typedef std::map<const std::type_info*, parser_write_func_t, CompareTypeID> parser_write_func_map_t;
@@ -202,7 +228,6 @@ namespace LLInitParam
Parser(parser_read_func_map_t& read_map, parser_write_func_map_t& write_map, parser_inspect_func_map_t& inspect_map)
: mParseSilently(false),
- mParseGeneration(sNextParseGeneration),
mParserReadFuncs(&read_map),
mParserWriteFuncs(&write_map),
mParserInspectFuncs(&inspect_map)
@@ -219,7 +244,7 @@ namespace LLInitParam
return false;
}
- template <typename T> bool writeValue(const T& param, const name_stack_t& name_stack)
+ template <typename T> bool writeValue(const T& param, name_stack_t& name_stack)
{
parser_write_func_map_t::iterator found_it = mParserWriteFuncs->find(&typeid(T));
if (found_it != mParserWriteFuncs->end())
@@ -230,7 +255,7 @@ namespace LLInitParam
}
// dispatch inspection to registered inspection functions, for each parameter in a param block
- template <typename T> bool inspectValue(const name_stack_t& name_stack, S32 min_count, S32 max_count, const possible_values_t* possible_values)
+ template <typename T> bool inspectValue(name_stack_t& name_stack, S32 min_count, S32 max_count, const possible_values_t* possible_values)
{
parser_inspect_func_map_t::iterator found_it = mParserInspectFuncs->find(&typeid(T));
if (found_it != mParserInspectFuncs->end())
@@ -246,10 +271,6 @@ namespace LLInitParam
virtual void parserError(const std::string& message);
void setParseSilently(bool silent) { mParseSilently = silent; }
- S32 getParseGeneration() { return mParseGeneration; }
- S32 newParseGeneration() { return mParseGeneration = ++sNextParseGeneration; }
-
-
protected:
template <typename T>
void registerParserFuncs(parser_read_func_t read_func, parser_write_func_t write_func = NULL)
@@ -270,14 +291,8 @@ namespace LLInitParam
parser_read_func_map_t* mParserReadFuncs;
parser_write_func_map_t* mParserWriteFuncs;
parser_inspect_func_map_t* mParserInspectFuncs;
- S32 mParseGeneration;
-
- static S32 sNextParseGeneration;
};
- // used to indicate no matching value to a given name when parsing
- struct NoParamValue{};
-
class BaseBlock;
class Param
@@ -318,7 +333,7 @@ namespace LLInitParam
};
typedef bool(*merge_func_t)(Param&, const Param&, bool);
- typedef bool(*deserialize_func_t)(Param&, Parser&, const Parser::name_stack_range_t&, S32);
+ typedef bool(*deserialize_func_t)(Param&, Parser&, const Parser::name_stack_range_t&, bool);
typedef void(*serialize_func_t)(const Param&, Parser&, Parser::name_stack_t&, const Param* diff_param);
typedef void(*inspect_func_t)(const Param&, Parser&, Parser::name_stack_t&, S32 min_count, S32 max_count);
typedef bool(*validation_func_t)(const Param*);
@@ -343,7 +358,6 @@ namespace LLInitParam
validation_func_t mValidationFunc;
S32 mMinCount;
S32 mMaxCount;
- S32 mGeneration;
S32 mNumRefs;
UserData* mUserData;
};
@@ -385,36 +399,36 @@ namespace LLInitParam
// "Multiple" constraint types, put here in root class to avoid ambiguity during use
struct AnyAmount
{
- static U32 minCount() { return 0; }
- static U32 maxCount() { return U32_MAX; }
+ enum { minCount = 0 };
+ enum { maxCount = U32_MAX };
};
template<U32 MIN_AMOUNT>
struct AtLeast
{
- static U32 minCount() { return MIN_AMOUNT; }
- static U32 maxCount() { return U32_MAX; }
+ enum { minCount = MIN_AMOUNT };
+ enum { maxCount = U32_MAX };
};
template<U32 MAX_AMOUNT>
struct AtMost
{
- static U32 minCount() { return 0; }
- static U32 maxCount() { return MAX_AMOUNT; }
+ enum { minCount = 0 };
+ enum { maxCount = MAX_AMOUNT };
};
template<U32 MIN_AMOUNT, U32 MAX_AMOUNT>
struct Between
{
- static U32 minCount() { return MIN_AMOUNT; }
- static U32 maxCount() { return MAX_AMOUNT; }
+ enum { minCount = MIN_AMOUNT };
+ enum { maxCount = MAX_AMOUNT };
};
template<U32 EXACT_COUNT>
struct Exactly
{
- static U32 minCount() { return EXACT_COUNT; }
- static U32 maxCount() { return EXACT_COUNT; }
+ enum { minCount = EXACT_COUNT };
+ enum { maxCount = EXACT_COUNT };
};
// this typedef identifies derived classes as being blocks
@@ -424,7 +438,7 @@ namespace LLInitParam
BaseBlock();
virtual ~BaseBlock();
- bool submitValue(const Parser::name_stack_t& name_stack, Parser& p, bool silent=false);
+ bool submitValue(Parser::name_stack_t& name_stack, Parser& p, bool silent=false);
param_handle_t getHandleFromParam(const Param* param) const;
bool validateBlock(bool emit_errors = true) const;
@@ -450,8 +464,8 @@ namespace LLInitParam
S32 getLastChangeVersion() const { return mChangeVersion; }
- bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation);
- void serializeBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), const BaseBlock* diff_block = NULL) const;
+ bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool new_name);
+ void serializeBlock(Parser& p, Parser::name_stack_t& name_stack, const BaseBlock* diff_block = NULL) const;
bool inspectBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), S32 min_count = 0, S32 max_count = S32_MAX) const;
virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); }
@@ -477,9 +491,9 @@ namespace LLInitParam
void init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size);
- bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+ bool mergeBlockParam(bool source_provided, bool dst_provided, BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
{
- return mergeBlock(block_data, other, overwrite);
+ return mergeBlock(block_data, source, overwrite);
}
// take all provided params from other and apply to self
bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite);
@@ -497,92 +511,6 @@ namespace LLInitParam
const std::string& getParamName(const BlockDescriptor& block_data, const Param* paramp) const;
};
- class BaseBlockWithFlags : public BaseBlock
- {
- public:
- class FlagBase : public Param
- {
- public:
- typedef FlagBase self_t;
-
- FlagBase(const char* name, BaseBlock* enclosing_block) : Param(enclosing_block)
- {
- if (LL_UNLIKELY(enclosing_block->mostDerivedBlockDescriptor().mInitializationState == BlockDescriptor::INITIALIZING))
- {
- ParamDescriptorPtr param_descriptor = ParamDescriptorPtr(new ParamDescriptor(
- enclosing_block->getHandleFromParam(this),
- &mergeWith,
- &deserializeParam,
- &serializeParam,
- NULL,
- &inspectParam,
- 0, 1));
- BaseBlock::addParam(enclosing_block->mostDerivedBlockDescriptor(), param_descriptor, name);
- }
- }
-
- bool isProvided() const { return anyProvided(); }
-
- private:
- static bool mergeWith(Param& dst, const Param& src, bool overwrite)
- {
- const self_t& src_typed_param = static_cast<const self_t&>(src);
- self_t& dst_typed_param = static_cast<self_t&>(dst);
-
- if (src_typed_param.isProvided()
- && (overwrite || !dst_typed_param.isProvided()))
- {
- dst.setProvided(true);
- return true;
- }
- return false;
- }
-
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
- {
- self_t& typed_param = static_cast<self_t&>(param);
-
- // no further names in stack, parse value now
- if (name_stack.first == name_stack.second)
- {
- typed_param.setProvided(true);
- typed_param.enclosingBlock().paramChanged(param, true);
- return true;
- }
-
- return false;
- }
-
- static void serializeParam(const Param& param, Parser& parser, Parser::name_stack_t& name_stack, const Param* diff_param)
- {
- const self_t& typed_param = static_cast<const self_t&>(param);
- const self_t* typed_diff_param = static_cast<const self_t*>(diff_param);
-
- if (!typed_param.isProvided()) return;
-
- if (!name_stack.empty())
- {
- name_stack.back().second = parser.newParseGeneration();
- }
-
- // then try to serialize value directly
- if (!typed_diff_param || !typed_diff_param->isProvided())
- {
- if (!parser.writeValue(NoParamValue(), name_stack))
- {
- return;
- }
- }
- }
-
- static void inspectParam(const Param& param, Parser& parser, Parser::name_stack_t& name_stack, S32 min_count, S32 max_count)
- {
- // tell parser about our actual type
- parser.inspectValue<NoParamValue>(name_stack, min_count, max_count, NULL);
- }
- };
- };
-
// these templates allow us to distinguish between template parameters
// that derive from BaseBlock and those that don't
template<typename T, typename Void = void>
@@ -604,7 +532,7 @@ namespace LLInitParam
typedef const T& value_assignment_t;
ParamValue(): mValue() {}
- ParamValue(const T& other) : mValue(other) {}
+ ParamValue(value_assignment_t other) : mValue(other) {}
void setValue(value_assignment_t val)
{
@@ -621,6 +549,17 @@ namespace LLInitParam
return mValue;
}
+ operator value_assignment_t() const
+ {
+ return mValue;
+ }
+
+ value_assignment_t operator()() const
+ {
+ return mValue;
+ }
+
+
private:
T mValue;
};
@@ -633,10 +572,6 @@ namespace LLInitParam
public:
typedef const T& value_assignment_t;
- S32 mKeyVersion;
- mutable S32 mValidatedVersion;
- mutable bool mValidated; // lazy validation flag
-
ParamValue()
: T(),
mKeyVersion(0),
@@ -644,13 +579,12 @@ namespace LLInitParam
mValidated(false)
{}
- ParamValue(const T& other)
+ ParamValue(value_assignment_t other)
: T(other),
mKeyVersion(0),
mValidatedVersion(-1),
mValidated(false)
- {
- }
+ {}
void setValue(value_assignment_t val)
{
@@ -666,6 +600,22 @@ namespace LLInitParam
{
return *this;
}
+
+ operator value_assignment_t() const
+ {
+ return *this;
+ }
+
+ value_assignment_t operator()() const
+ {
+ return *this;
+ }
+
+ S32 mKeyVersion;
+
+ protected:
+ mutable S32 mValidatedVersion;
+ mutable bool mValidated; // lazy validation flag
};
template<typename T, typename NAME_VALUE_LOOKUP = TypeValues<T> >
@@ -712,11 +662,11 @@ namespace LLInitParam
bool isProvided() const { return Param::anyProvided(); }
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
+ static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
{
self_t& typed_param = static_cast<self_t&>(param);
// no further names in stack, attempt to parse value now
- if (name_stack.first == name_stack.second)
+ if (name_stack_range.first == name_stack_range.second)
{
if (parser.readValue(typed_param.getValue()))
{
@@ -755,7 +705,7 @@ namespace LLInitParam
if (!name_stack.empty())
{
- name_stack.back().second = parser.newParseGeneration();
+ name_stack.back().second = true;
}
std::string key = typed_param.getValueName();
@@ -766,10 +716,7 @@ namespace LLInitParam
{
if (!diff_param || !ParamCompare<std::string>::equals(static_cast<const self_t*>(diff_param)->getValueName(), key))
{
- if (!parser.writeValue(key, name_stack))
- {
- return;
- }
+ parser.writeValue(key, name_stack);
}
}
// then try to serialize value directly
@@ -777,7 +724,11 @@ namespace LLInitParam
{
if (!parser.writeValue(typed_param.getValue(), name_stack))
{
- return;
+ std::string calculated_key = typed_param.calcValueName(typed_param.getValue());
+ if (!diff_param || !ParamCompare<std::string>::equals(static_cast<const self_t*>(diff_param)->getValueName(), calculated_key))
+ {
+ parser.writeValue(calculated_key, name_stack);
+ }
}
}
}
@@ -801,11 +752,6 @@ namespace LLInitParam
Param::enclosingBlock().paramChanged(*this, flag_as_provided);
}
- // implicit conversion
- operator value_assignment_t() const { return param_value_t::getValue(); }
- // explicit conversion
- value_assignment_t operator()() const { return param_value_t::getValue(); }
-
protected:
static bool mergeWith(Param& dst, const Param& src, bool overwrite)
@@ -855,11 +801,11 @@ namespace LLInitParam
}
}
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
+ static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
{
self_t& typed_param = static_cast<self_t&>(param);
// attempt to parse block...
- if(typed_param.deserializeBlock(parser, name_stack, generation))
+ if(typed_param.deserializeBlock(parser, name_stack_range, new_name))
{
typed_param.clearValueName();
typed_param.enclosingBlock().paramChanged(param, true);
@@ -895,7 +841,7 @@ namespace LLInitParam
if (!name_stack.empty())
{
- name_stack.back().second = parser.newParseGeneration();
+ name_stack.back().second = true;
}
std::string key = typed_param.getValueName();
@@ -958,11 +904,6 @@ namespace LLInitParam
}
}
- // implicit conversion
- operator value_assignment_t() const { return param_value_t::getValue(); }
- // explicit conversion
- value_assignment_t operator()() const { return param_value_t::getValue(); }
-
protected:
static bool mergeWith(Param& dst, const Param& src, bool overwrite)
@@ -972,8 +913,7 @@ namespace LLInitParam
if (src_typed_param.anyProvided())
{
- bool param_provided = src_typed_param.isProvided() && (overwrite || !dst_typed_param.isProvided());
- if (dst_typed_param.mergeBlockParam(param_provided, param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
+ if (dst_typed_param.mergeBlockParam(src_typed_param.isProvided(), dst_typed_param.isProvided(), param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
{
dst_typed_param.clearValueName();
dst_typed_param.setProvided(true);
@@ -992,7 +932,7 @@ namespace LLInitParam
{
public:
typedef TypedParam<VALUE_TYPE, NAME_VALUE_LOOKUP, true, false> self_t;
- typedef ParamValue<VALUE_TYPE, NAME_VALUE_LOOKUP> param_value_t;
+ typedef ParamValue<VALUE_TYPE, NAME_VALUE_LOOKUP> param_value_t;
typedef typename std::vector<param_value_t> container_t;
typedef const container_t& value_assignment_t;
@@ -1020,12 +960,12 @@ namespace LLInitParam
bool isProvided() const { return Param::anyProvided(); }
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
+ static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
{
self_t& typed_param = static_cast<self_t&>(param);
value_t value;
// no further names in stack, attempt to parse value now
- if (name_stack.first == name_stack.second)
+ if (name_stack_range.first == name_stack_range.second)
{
// attempt to read value directly
if (parser.readValue(value))
@@ -1065,14 +1005,19 @@ namespace LLInitParam
++it)
{
std::string key = it->getValue();
- name_stack.back().second = parser.newParseGeneration();
+ name_stack.back().second = true;
if(key.empty())
// not parsed via name values, write out value directly
{
- if (!parser.writeValue(*it, name_stack))
+ bool value_written = parser.writeValue(*it, name_stack);
+ if (!value_written)
{
- break;
+ std::string calculated_key = typed_param.calcValueName(typed_param.getValue());
+ if (!parser.writeValue(calculated_key, name_stack))
+ {
+ break;
+ }
}
}
else
@@ -1118,6 +1063,8 @@ namespace LLInitParam
// implicit conversion
operator value_assignment_t() const { return mValues; }
+ // explicit conversion
+ value_assignment_t operator()() const { return mValues; }
typedef typename container_t::iterator iterator;
typedef typename container_t::const_iterator const_iterator;
@@ -1169,14 +1116,13 @@ namespace LLInitParam
public:
typedef TypedParam<VALUE_TYPE, NAME_VALUE_LOOKUP, true, true> self_t;
typedef ParamValue<VALUE_TYPE, NAME_VALUE_LOOKUP> param_value_t;
- typedef typename std::vector<param_value_t> container_t;
+ typedef typename std::vector<param_value_t> container_t;
typedef const container_t& value_assignment_t;
typedef VALUE_TYPE value_t;
typedef NAME_VALUE_LOOKUP name_value_lookup_t;
TypedParam(BlockDescriptor& block_descriptor, const char* name, value_assignment_t value, ParamDescriptor::validation_func_t validate_func, S32 min_count, S32 max_count)
- : Param(block_descriptor.mCurrentBlockPtr),
- mLastParseGeneration(0)
+ : Param(block_descriptor.mCurrentBlockPtr)
{
std::copy(value.begin(), value.end(), back_inserter(mValues));
@@ -1196,13 +1142,12 @@ namespace LLInitParam
bool isProvided() const { return Param::anyProvided(); }
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
+ static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
{
self_t& typed_param = static_cast<self_t&>(param);
bool new_value = false;
- if (generation != typed_param.mLastParseGeneration
- || typed_param.mValues.empty())
+ if (new_name || typed_param.mValues.empty())
{
new_value = true;
typed_param.mValues.push_back(value_t());
@@ -1211,12 +1156,8 @@ namespace LLInitParam
param_value_t& value = typed_param.mValues.back();
// attempt to parse block...
- if(value.deserializeBlock(parser, name_stack, generation))
+ if(value.deserializeBlock(parser, name_stack_range, new_name))
{
- if (new_value)
- { // successfully parsed new value, let's keep it
- typed_param.mLastParseGeneration = generation;
- }
typed_param.enclosingBlock().paramChanged(param, true);
typed_param.setProvided(true);
return true;
@@ -1230,11 +1171,6 @@ namespace LLInitParam
// try to parse a per type named value
if (name_value_lookup_t::getValueFromName(name, value.getValue()))
{
- if (new_value)
- { // successfully parsed new value, let's keep it
- typed_param.mLastParseGeneration = generation;
- }
-
typed_param.mValues.back().setValueName(name);
typed_param.mValues.back().mKeyVersion = value.getLastChangeVersion();
typed_param.enclosingBlock().paramChanged(param, true);
@@ -1262,7 +1198,7 @@ namespace LLInitParam
it != end_it;
++it)
{
- name_stack.back().second = parser.newParseGeneration();
+ name_stack.back().second = true;
std::string key = it->getValueName();
if (!key.empty() && it->mKeyVersion == it->getLastChangeVersion())
@@ -1308,6 +1244,8 @@ namespace LLInitParam
// implicit conversion
operator value_assignment_t() const { return mValues; }
+ // explicit conversion
+ value_assignment_t operator()() const { return mValues; }
typedef typename container_t::iterator iterator;
typedef typename container_t::const_iterator const_iterator;
@@ -1358,15 +1296,13 @@ namespace LLInitParam
}
container_t mValues;
-
- S32 mLastParseGeneration;
};
template <typename DERIVED_BLOCK>
- class Choice : public BaseBlock
+ class ChoiceBlock : public BaseBlock
{
- typedef Choice<DERIVED_BLOCK> self_t;
- typedef Choice<DERIVED_BLOCK> enclosing_block_t;
+ typedef ChoiceBlock<DERIVED_BLOCK> self_t;
+ typedef ChoiceBlock<DERIVED_BLOCK> enclosing_block_t;
LOG_CLASS(self_t);
public:
@@ -1382,11 +1318,13 @@ namespace LLInitParam
return mergeBlock(selfBlockDescriptor(), other, false);
}
- bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const self_t& other, bool overwrite)
+ bool mergeBlockParam(bool source_provided, bool dest_provided, BlockDescriptor& block_data, const self_t& source, bool overwrite)
{
- if (param_provided)
+ bool source_override = source_provided && (overwrite || !dest_provided);
+
+ if (source_override || source.mCurChoice == mCurChoice)
{
- return mergeBlock(block_data, other, overwrite);
+ return mergeBlock(block_data, source, overwrite);
}
return false;
}
@@ -1420,7 +1358,7 @@ namespace LLInitParam
virtual BlockDescriptor& mostDerivedBlockDescriptor() { return selfBlockDescriptor(); }
protected:
- Choice()
+ ChoiceBlock()
: mCurChoice(0)
{
BaseBlock::init(selfBlockDescriptor(), BaseBlock::selfBlockDescriptor(), sizeof(DERIVED_BLOCK));
@@ -1433,13 +1371,13 @@ namespace LLInitParam
class Alternative : public TypedParam<T, NAME_VALUE_LOOKUP, false>
{
public:
- friend class Choice<DERIVED_BLOCK>;
+ friend class ChoiceBlock<DERIVED_BLOCK>;
typedef Alternative<T, NAME_VALUE_LOOKUP> self_t;
typedef TypedParam<T, NAME_VALUE_LOOKUP, false, IsBlock<ParamValue<T, NAME_VALUE_LOOKUP> >::value> super_t;
typedef typename super_t::value_assignment_t value_assignment_t;
- explicit Alternative(const char* name, value_assignment_t val = defaultValue<T>())
+ explicit Alternative(const char* name = "", value_assignment_t val = defaultValue<T>())
: super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1),
mOriginalValue(val)
{
@@ -1454,10 +1392,19 @@ namespace LLInitParam
}
}
- Alternative& operator=(value_assignment_t val)
+ void choose()
+ {
+ static_cast<enclosing_block_t&>(Param::enclosingBlock()).paramChanged(*this, true);
+ }
+
+ void chooseAs(value_assignment_t val)
+ {
+ super_t::set(val);
+ }
+
+ void operator=(value_assignment_t val)
{
super_t::set(val);
- return *this;
}
void operator()(typename super_t::value_assignment_t val)
@@ -1466,12 +1413,8 @@ namespace LLInitParam
}
operator value_assignment_t() const
- {
- if (static_cast<enclosing_block_t&>(Param::enclosingBlock()).getCurrentChoice() == this)
- {
- return super_t::getValue();
- }
- return mOriginalValue;
+ {
+ return (*this)();
}
value_assignment_t operator()() const
@@ -1508,7 +1451,7 @@ namespace LLInitParam
}
};
- template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlockWithFlags>
+ template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlock>
class Block
: public BASE_BLOCK
{
@@ -1604,13 +1547,6 @@ namespace LLInitParam
};
- class Flag : public BaseBlockWithFlags::FlagBase
- {
- public:
- Flag(const char* name) : FlagBase(name, DERIVED_BLOCK::selfBlockDescriptor().mCurrentBlockPtr)
- {}
- };
-
template <typename T, typename RANGE = BaseBlock::AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
class Multiple : public TypedParam<T, NAME_VALUE_LOOKUP, true>
{
@@ -1623,7 +1559,7 @@ namespace LLInitParam
typedef typename super_t::const_iterator const_iterator;
explicit Multiple(const char* name = "")
- : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, container_t(), &validate, RANGE::minCount(), RANGE::maxCount())
+ : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, container_t(), &validate, RANGE::minCount, RANGE::maxCount)
{}
Multiple& operator=(value_assignment_t val)
@@ -1641,100 +1577,10 @@ namespace LLInitParam
static bool validate(const Param* paramp)
{
U32 num_valid = ((super_t*)paramp)->numValidElements();
- return RANGE::minCount() <= num_valid && num_valid <= RANGE::maxCount();
+ return RANGE::minCount <= num_valid && num_valid <= RANGE::maxCount;
}
};
- template <typename T, typename RANGE = BaseBlock::AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
- class Batch : private TypedParam<T, NAME_VALUE_LOOKUP, false>
- {
- public:
- typedef ParamValue<T, NAME_VALUE_LOOKUP> param_value_t;
- typedef TypedParam<T, NAME_VALUE_LOOKUP, false, IsBlock<param_value_t>::value> super_t;
- typedef Batch<T, RANGE, NAME_VALUE_LOOKUP> self_t;
- typedef typename super_t::value_assignment_t value_assignment_t;
- typedef typename super_t::value_t value_t;
-
- struct BatchDefaultValue : public ParamDescriptor::UserData
- {
- BatchDefaultValue(const T& value)
- : mValue(value)
- {}
-
- T mValue;
- };
-
- explicit Batch(const char* name, value_assignment_t val)
- : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1),
- mLastParseGeneration(-1)
- {
- BlockDescriptor& block_descriptor = DERIVED_BLOCK::selfBlockDescriptor();
- if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))
- {
- ParamDescriptorPtr param_descriptorp = block_descriptor.mCurrentBlockPtr->findParamDescriptor(*this);
-
- if (param_descriptorp)
- {
- param_descriptorp->mDeserializeFunc = &deserializeParam;
- param_descriptorp->mUserData = new BatchDefaultValue(new param_value_t(val));
- }
- }
- }
-
- explicit Batch(const char* name = "")
- : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, defaultValue<T>(), NULL, 0, 1),
- mLastParseGeneration(-1)
- {
- BlockDescriptor& block_descriptor = DERIVED_BLOCK::selfBlockDescriptor();
- if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))
- {
- ParamDescriptorPtr param_descriptorp = block_descriptor.mCurrentBlockPtr->findParamDescriptor(*this);
-
- if (param_descriptorp)
- {
- param_descriptorp->mDeserializeFunc = &deserializeParam;
- }
- }
- }
-
- Batch& operator=(value_assignment_t val)
- {
- set(val);
- return *this;
- }
-
- DERIVED_BLOCK& operator()(value_assignment_t val)
- {
- super_t::set(val);
- return static_cast<DERIVED_BLOCK&>(Param::enclosingBlock());
- }
-
- using super_t::operator();
-
- private:
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
- {
- self_t& typed_param = static_cast<self_t&>(param);
-
- if (generation != typed_param.mLastParseGeneration)
- {
- ParamDescriptorPtr descriptor = typed_param.enclosingBlock().findParamDescriptor(param);
- if (descriptor && static_cast<BatchDefaultValue*>(descriptor->mUserData))
- {
- static_cast<param_value_t&>(typed_param) = (static_cast<BatchDefaultValue*>(descriptor->mUserData))->mValue;
- }
- else
- {
- static_cast<param_value_t&>(typed_param) = param_value_t(value_t());
- }
- typed_param.mLastParseGeneration = generation;
- }
- return super_t::deserializeParam(param, parser, name_stack, generation);
- }
-
- S32 mLastParseGeneration;
- };
-
class Deprecated : public Param
{
public:
@@ -1756,9 +1602,9 @@ namespace LLInitParam
}
}
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
+ static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
{
- if (name_stack.first == name_stack.second)
+ if (name_stack_range.first == name_stack_range.second)
{
//std::string message = llformat("Deprecated value %s ignored", getName().c_str());
//parser.parserWarning(message);
@@ -1769,6 +1615,7 @@ namespace LLInitParam
}
};
+ // different semantics for documentation purposes, but functionally identical
typedef Deprecated Ignored;
protected:
@@ -1790,6 +1637,160 @@ namespace LLInitParam
};
+ template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlock>
+ class BatchBlock
+ : public Block<DERIVED_BLOCK, BASE_BLOCK>
+ {
+ public:
+ typedef BatchBlock<DERIVED_BLOCK, BASE_BLOCK> self_t;
+ typedef Block<DERIVED_BLOCK, BASE_BLOCK> super_t;
+
+ BatchBlock()
+ {}
+
+ bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool new_name)
+ {
+ if (new_name)
+ {
+ // reset block
+ *static_cast<DERIVED_BLOCK*>(this) = defaultBatchValue();
+ }
+ return super_t::deserializeBlock(p, name_stack_range, new_name);
+ }
+
+ bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+ {
+ if (overwrite)
+ {
+ *static_cast<DERIVED_BLOCK*>(this) = defaultBatchValue();
+ // merge individual parameters into destination
+ return super_t::mergeBlock(super_t::selfBlockDescriptor(), other, overwrite);
+ }
+ return false;
+ }
+ protected:
+ static const DERIVED_BLOCK& defaultBatchValue()
+ {
+ static DERIVED_BLOCK default_value;
+ return default_value;
+ }
+ };
+
+ // FIXME: this specialization is not currently used, as it only matches against the BatchBlock base class
+ // and not the derived class with the actual params
+ template<typename DERIVED_BLOCK,
+ typename BASE_BLOCK,
+ typename NAME_VALUE_LOOKUP>
+ class ParamValue <BatchBlock<DERIVED_BLOCK, BASE_BLOCK>,
+ NAME_VALUE_LOOKUP,
+ true>
+ : public NAME_VALUE_LOOKUP,
+ protected BatchBlock<DERIVED_BLOCK, BASE_BLOCK>
+ {
+ public:
+ typedef BatchBlock<DERIVED_BLOCK, BASE_BLOCK> block_t;
+ typedef const BatchBlock<DERIVED_BLOCK, BASE_BLOCK>& value_assignment_t;
+
+ ParamValue()
+ : block_t(),
+ mKeyVersion(0),
+ mValidatedVersion(-1),
+ mValidated(false)
+ {}
+
+ ParamValue(value_assignment_t other)
+ : block_t(other),
+ mKeyVersion(0),
+ mValidatedVersion(-1),
+ mValidated(false)
+ {
+ }
+
+ void setValue(value_assignment_t val)
+ {
+ *this = val;
+ }
+
+ value_assignment_t getValue() const
+ {
+ return *this;
+ }
+
+ BatchBlock<DERIVED_BLOCK, BASE_BLOCK>& getValue()
+ {
+ return *this;
+ }
+
+ operator value_assignment_t() const
+ {
+ return *this;
+ }
+
+ value_assignment_t operator()() const
+ {
+ return *this;
+ }
+
+ S32 mKeyVersion;
+
+ protected:
+ mutable S32 mValidatedVersion;
+ mutable bool mValidated; // lazy validation flag
+ };
+
+ template <>
+ class ParamValue <LLSD,
+ TypeValues<LLSD>,
+ false>
+ : public TypeValues<LLSD>,
+ public BaseBlock
+ {
+ public:
+ typedef ParamValue<LLSD, TypeValues<LLSD>, false> self_t;
+ typedef const LLSD& value_assignment_t;
+
+ ParamValue()
+ : mKeyVersion(0),
+ mValidatedVersion(-1),
+ mValidated(false)
+ {}
+
+ ParamValue(value_assignment_t other)
+ : mValue(other),
+ mKeyVersion(0),
+ mValidatedVersion(-1),
+ mValidated(false)
+ {}
+
+ void setValue(value_assignment_t val) { mValue = val; }
+
+ value_assignment_t getValue() const { return mValue; }
+ LLSD& getValue() { return mValue; }
+
+ operator value_assignment_t() const { return mValue; }
+ value_assignment_t operator()() const { return mValue; }
+
+ S32 mKeyVersion;
+
+ // block param interface
+ bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool new_name);
+ void serializeBlock(Parser& p, Parser::name_stack_t& name_stack, const BaseBlock* diff_block = NULL) const;
+ bool inspectBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), S32 min_count = 0, S32 max_count = S32_MAX) const
+ {
+ //TODO: implement LLSD params as schema type Any
+ return true;
+ }
+
+ protected:
+ mutable S32 mValidatedVersion;
+ mutable bool mValidated; // lazy validation flag
+
+ private:
+ static void serializeElement(Parser& p, const LLSD& sd, Parser::name_stack_t& name_stack);
+
+ LLSD mValue;
+ };
+
template<typename T>
class CustomParamValue
: public Block<ParamValue<T, TypeValues<T> > >,
@@ -1816,11 +1817,11 @@ namespace LLInitParam
mValidated(false)
{}
- bool deserializeBlock(Parser& parser, Parser::name_stack_range_t name_stack, S32 generation)
+ bool deserializeBlock(Parser& parser, Parser::name_stack_range_t name_stack_range, bool new_name)
{
derived_t& typed_param = static_cast<derived_t&>(*this);
// try to parse direct value T
- if (name_stack.first == name_stack.second)
+ if (name_stack_range.first == name_stack_range.second)
{
if(parser.readValue(typed_param.mValue))
{
@@ -1834,10 +1835,10 @@ namespace LLInitParam
}
// fall back on parsing block components for T
- return typed_param.BaseBlock::deserializeBlock(parser, name_stack, generation);
+ return typed_param.BaseBlock::deserializeBlock(parser, name_stack_range, new_name);
}
- void serializeBlock(Parser& parser, Parser::name_stack_t name_stack = Parser::name_stack_t(), const BaseBlock* diff_block = NULL) const
+ void serializeBlock(Parser& parser, Parser::name_stack_t& name_stack, const BaseBlock* diff_block = NULL) const
{
const derived_t& typed_param = static_cast<const derived_t&>(*this);
const derived_t* diff_param = static_cast<const derived_t*>(diff_block);
@@ -1955,6 +1956,16 @@ namespace LLInitParam
return mValue;
}
+ operator value_assignment_t() const
+ {
+ return getValue();
+ }
+
+ value_assignment_t operator()() const
+ {
+ return getValue();
+ }
+
S32 mKeyVersion;
protected:
@@ -1965,30 +1976,29 @@ namespace LLInitParam
mValue = value;
}
- bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+ bool mergeBlockParam(bool source_provided, bool dst_provided, BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
{
- if (param_provided)
- {
- return mergeBlock(block_data, other, overwrite);
- }
- return false;
- }
+ bool source_override = source_provided && (overwrite || !dst_provided);
- bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
- {
- const derived_t& src_typed_param = static_cast<const derived_t&>(other);
+ const derived_t& src_typed_param = static_cast<const derived_t&>(source);
- if (src_typed_param.mValueAge == VALUE_AUTHORITATIVE)
+ if (source_override && src_typed_param.mValueAge == VALUE_AUTHORITATIVE)
{
// copy value over
setValue(src_typed_param.getValue());
return true;
}
- else
+ // merge individual parameters into destination
+ if (mValueAge == VALUE_AUTHORITATIVE)
{
- // merge individual parameters into destination
- return block_t::mergeBlock(block_t::selfBlockDescriptor(), src_typed_param, overwrite);
+ static_cast<derived_t*>(this)->updateBlockFromValue(dst_provided);
}
+ return mergeBlock(block_data, source, overwrite);
+ }
+
+ bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
+ {
+ return block_t::mergeBlock(block_data, source, overwrite);
}
mutable S32 mValidatedVersion;
diff --git a/indra/llxuixml/llxuiparser.cpp b/indra/llxuixml/llxuiparser.cpp
index 4af077b22c..d4556113ea 100644
--- a/indra/llxuixml/llxuiparser.cpp
+++ b/indra/llxuixml/llxuiparser.cpp
@@ -51,6 +51,136 @@ static LLInitParam::Parser::parser_read_func_map_t sXSDReadFuncs;
static LLInitParam::Parser::parser_write_func_map_t sXSDWriteFuncs;
static LLInitParam::Parser::parser_inspect_func_map_t sXSDInspectFuncs;
+struct MaxOccur : public LLInitParam::ChoiceBlock<MaxOccur>
+{
+ Alternative<int> count;
+ Alternative<std::string> unbounded;
+
+ MaxOccur()
+ : unbounded("", "unbounded")
+ {}
+};
+
+struct Occurs : public LLInitParam::Block<Occurs>
+{
+ Optional<S32> minOccurs;
+ Optional<MaxOccur> maxOccurs;
+
+ Occurs()
+ : minOccurs("minOccurs"),
+ maxOccurs("maxOccurs")
+ {
+ minOccurs = 0;
+ maxOccurs.unbounded.choose();
+ }
+};
+
+
+typedef enum
+{
+ USE_REQUIRED,
+ USE_OPTIONAL
+} EUse;
+
+namespace LLInitParam
+{
+ template<>
+ struct TypeValues<EUse> : public TypeValuesHelper<EUse>
+ {
+ static void declareValues()
+ {
+ declare("required", USE_REQUIRED);
+ declare("optional", USE_OPTIONAL);
+ }
+ };
+}
+
+struct Name : public LLInitParam::Block<Name>
+{
+ Mandatory<std::string> name;
+
+ Name()
+ : name("name")
+ {}
+};
+
+struct Attribute : public LLInitParam::Block<Attribute>
+{
+ Mandatory<Name> name;
+ Mandatory<std::string> type;
+ Mandatory<EUse> use;
+
+ Attribute()
+ : name("name"),
+ type("type"),
+ use("use")
+ {
+ }
+};
+
+struct ComplexType : public LLInitParam::Block<ComplexType>
+{
+ Multiple<Attribute> attribute;
+ //Multiple<struct Element> elements;
+ Optional<bool> mixed;
+
+ ComplexType()
+ : attribute("xs:attribute"),
+ //elements("xs:element"),
+ mixed("mixed")
+ {
+ mixed = true;
+ }
+};
+
+struct Element : public LLInitParam::Block<Element, Occurs>
+{
+ Mandatory<ComplexType> complexType;
+ Mandatory<Name> name;
+
+ Element()
+ : complexType("xs:complexType")
+ {}
+};
+
+struct Elements : public LLInitParam::Block<Elements, Occurs>
+{
+ Multiple<Element> elements;
+
+ Elements()
+ : elements("xs:element")
+ {}
+};
+
+struct Schema : public LLInitParam::Block<Schema>
+{
+private:
+ Mandatory<std::string> targetNamespace,
+ xmlns;
+
+public:
+ Optional<std::string> attributeFormDefault,
+ elementFormDefault,
+ xs;
+
+ Optional<Elements> elements;
+
+ void setNameSpace(const std::string& ns) {targetNamespace = ns; xmlns = ns;}
+
+ Schema()
+ : attributeFormDefault("attributeFormDefault"),
+ elementFormDefault("elementFormDefault"),
+ xs("xmlns:xs"),
+ targetNamespace("targetNamespace"),
+ xmlns("xmlns"),
+ elements("xs:choice")
+ {
+ attributeFormDefault = "unqualified";
+ elementFormDefault = "qualified";
+ xs = "http://www.w3.org/2001/XMLSchema";
+ }
+
+};
//
// LLXSDWriter
@@ -383,12 +513,11 @@ static LLInitParam::Parser::parser_inspect_func_map_t sXUIInspectFuncs;
//
LLXUIParser::LLXUIParser()
: Parser(sXUIReadFuncs, sXUIWriteFuncs, sXUIInspectFuncs),
- mLastWriteGeneration(-1),
mCurReadDepth(0)
{
if (sXUIReadFuncs.empty())
{
- registerParserFuncs<LLInitParam::NoParamValue>(readNoValue, writeNoValue);
+ registerParserFuncs<LLInitParam::Flag>(readFlag, writeFlag);
registerParserFuncs<bool>(readBoolValue, writeBoolValue);
registerParserFuncs<std::string>(readStringValue, writeStringValue);
registerParserFuncs<U8>(readU8Value, writeU8Value);
@@ -453,7 +582,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block)
if (!text_contents.empty())
{
mCurReadNode = nodep;
- mNameStack.push_back(std::make_pair(std::string("value"), newParseGeneration()));
+ mNameStack.push_back(std::make_pair(std::string("value"), true));
// child nodes are not necessarily valid parameters (could be a child widget)
// so don't complain once we've recursed
if (!block.submitValue(mNameStack, *this, true))
@@ -488,7 +617,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block)
// since there is no widget named "rect"
if (child_name.find(".") == std::string::npos)
{
- mNameStack.push_back(std::make_pair(child_name, newParseGeneration()));
+ mNameStack.push_back(std::make_pair(child_name, true));
num_tokens_pushed++;
}
else
@@ -524,7 +653,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block)
// copy remaining tokens on to our running token list
for(tokenizer::iterator token_to_push = name_token_it; token_to_push != name_tokens.end(); ++token_to_push)
{
- mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration()));
+ mNameStack.push_back(std::make_pair(*token_to_push, true));
num_tokens_pushed++;
}
}
@@ -574,7 +703,7 @@ bool LLXUIParser::readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& blo
// copy remaining tokens on to our running token list
for(tokenizer::iterator token_to_push = name_tokens.begin(); token_to_push != name_tokens.end(); ++token_to_push)
{
- mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration()));
+ mNameStack.push_back(std::make_pair(*token_to_push, true));
num_tokens_pushed++;
}
@@ -593,48 +722,40 @@ bool LLXUIParser::readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& blo
void LLXUIParser::writeXUI(LLXMLNodePtr node, const LLInitParam::BaseBlock &block, const LLInitParam::BaseBlock* diff_block)
{
mWriteRootNode = node;
- block.serializeBlock(*this, Parser::name_stack_t(), diff_block);
+ name_stack_t name_stack = Parser::name_stack_t();
+ block.serializeBlock(*this, name_stack, diff_block);
mOutNodes.clear();
}
// go from a stack of names to a specific XML node
-LLXMLNodePtr LLXUIParser::getNode(const name_stack_t& stack)
+LLXMLNodePtr LLXUIParser::getNode(name_stack_t& stack)
{
- name_stack_t name_stack;
- for (name_stack_t::const_iterator it = stack.begin();
- it != stack.end();
- ++it)
- {
- if (!it->first.empty())
- {
- name_stack.push_back(*it);
- }
- }
-
LLXMLNodePtr out_node = mWriteRootNode;
- name_stack_t::const_iterator next_it = name_stack.begin();
- for (name_stack_t::const_iterator it = name_stack.begin();
- it != name_stack.end();
+ name_stack_t::iterator next_it = stack.begin();
+ for (name_stack_t::iterator it = stack.begin();
+ it != stack.end();
it = next_it)
{
++next_it;
if (it->first.empty())
{
+ it->second = false;
continue;
}
- out_nodes_t::iterator found_it = mOutNodes.lower_bound(it->second);
+ out_nodes_t::iterator found_it = mOutNodes.find(it->first);
// node with this name not yet written
- if (found_it == mOutNodes.end() || mOutNodes.key_comp()(found_it->first, it->second))
+ if (found_it == mOutNodes.end() || it->second)
{
// make an attribute if we are the last element on the name stack
- bool is_attribute = next_it == name_stack.end();
+ bool is_attribute = next_it == stack.end();
LLXMLNodePtr new_node = new LLXMLNode(it->first.c_str(), is_attribute);
out_node->addChild(new_node);
- mOutNodes.insert(found_it, std::make_pair(it->second, new_node));
+ mOutNodes[it->first] = new_node;
out_node = new_node;
+ it->second = false;
}
else
{
@@ -645,13 +766,13 @@ LLXMLNodePtr LLXUIParser::getNode(const name_stack_t& stack)
return (out_node == mWriteRootNode ? LLXMLNodePtr(NULL) : out_node);
}
-bool LLXUIParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLXUIParser::readFlag(Parser& parser, void* val_ptr)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
return self.mCurReadNode == DUMMY_NODE;
}
-bool LLXUIParser::writeNoValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeFlag(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
// just create node
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
@@ -668,7 +789,7 @@ bool LLXUIParser::readBoolValue(Parser& parser, void* val_ptr)
return success;
}
-bool LLXUIParser::writeBoolValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeBoolValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -687,7 +808,7 @@ bool LLXUIParser::readStringValue(Parser& parser, void* val_ptr)
return true;
}
-bool LLXUIParser::writeStringValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeStringValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -725,7 +846,7 @@ bool LLXUIParser::readU8Value(Parser& parser, void* val_ptr)
return self.mCurReadNode->getByteValue(1, (U8*)val_ptr);
}
-bool LLXUIParser::writeU8Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeU8Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -749,7 +870,7 @@ bool LLXUIParser::readS8Value(Parser& parser, void* val_ptr)
return false;
}
-bool LLXUIParser::writeS8Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeS8Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -773,7 +894,7 @@ bool LLXUIParser::readU16Value(Parser& parser, void* val_ptr)
return false;
}
-bool LLXUIParser::writeU16Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeU16Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -797,7 +918,7 @@ bool LLXUIParser::readS16Value(Parser& parser, void* val_ptr)
return false;
}
-bool LLXUIParser::writeS16Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeS16Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -815,7 +936,7 @@ bool LLXUIParser::readU32Value(Parser& parser, void* val_ptr)
return self.mCurReadNode->getUnsignedValue(1, (U32*)val_ptr);
}
-bool LLXUIParser::writeU32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeU32Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -833,7 +954,7 @@ bool LLXUIParser::readS32Value(Parser& parser, void* val_ptr)
return self.mCurReadNode->getIntValue(1, (S32*)val_ptr);
}
-bool LLXUIParser::writeS32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeS32Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -851,7 +972,7 @@ bool LLXUIParser::readF32Value(Parser& parser, void* val_ptr)
return self.mCurReadNode->getFloatValue(1, (F32*)val_ptr);
}
-bool LLXUIParser::writeF32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeF32Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -869,7 +990,7 @@ bool LLXUIParser::readF64Value(Parser& parser, void* val_ptr)
return self.mCurReadNode->getDoubleValue(1, (F64*)val_ptr);
}
-bool LLXUIParser::writeF64Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeF64Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -893,7 +1014,7 @@ bool LLXUIParser::readColor4Value(Parser& parser, void* val_ptr)
return false;
}
-bool LLXUIParser::writeColor4Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeColor4Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -920,7 +1041,7 @@ bool LLXUIParser::readUIColorValue(Parser& parser, void* val_ptr)
return false;
}
-bool LLXUIParser::writeUIColorValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeUIColorValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -949,7 +1070,7 @@ bool LLXUIParser::readUUIDValue(Parser& parser, void* val_ptr)
return false;
}
-bool LLXUIParser::writeUUIDValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeUUIDValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
LLXMLNodePtr node = self.getNode(stack);
@@ -968,7 +1089,7 @@ bool LLXUIParser::readSDValue(Parser& parser, void* val_ptr)
return true;
}
-bool LLXUIParser::writeSDValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeSDValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
{
LLXUIParser& self = static_cast<LLXUIParser&>(parser);
@@ -1077,13 +1198,12 @@ const char* NO_VALUE_MARKER = "no_value";
LLSimpleXUIParser::LLSimpleXUIParser(LLSimpleXUIParser::element_start_callback_t element_cb)
: Parser(sSimpleXUIReadFuncs, sSimpleXUIWriteFuncs, sSimpleXUIInspectFuncs),
- mLastWriteGeneration(-1),
mCurReadDepth(0),
mElementCB(element_cb)
{
if (sSimpleXUIReadFuncs.empty())
{
- registerParserFuncs<LLInitParam::NoParamValue>(readNoValue);
+ registerParserFuncs<LLInitParam::Flag>(readFlag);
registerParserFuncs<bool>(readBoolValue);
registerParserFuncs<std::string>(readStringValue);
registerParserFuncs<U8>(readU8Value);
@@ -1208,7 +1328,7 @@ void LLSimpleXUIParser::startElement(const char *name, const char **atts)
{ // compound attribute
if (child_name.find(".") == std::string::npos)
{
- mNameStack.push_back(std::make_pair(child_name, newParseGeneration()));
+ mNameStack.push_back(std::make_pair(child_name, true));
num_tokens_pushed++;
mScope.push_back(child_name);
}
@@ -1235,7 +1355,7 @@ void LLSimpleXUIParser::startElement(const char *name, const char **atts)
// copy remaining tokens on to our running token list
for(tokenizer::iterator token_to_push = name_token_it; token_to_push != name_tokens.end(); ++token_to_push)
{
- mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration()));
+ mNameStack.push_back(std::make_pair(*token_to_push, true));
num_tokens_pushed++;
}
mScope.push_back(mNameStack.back().first);
@@ -1268,7 +1388,7 @@ bool LLSimpleXUIParser::readAttributes(const char **atts)
// copy remaining tokens on to our running token list
for(tokenizer::iterator token_to_push = name_tokens.begin(); token_to_push != name_tokens.end(); ++token_to_push)
{
- mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration()));
+ mNameStack.push_back(std::make_pair(*token_to_push, true));
num_tokens_pushed++;
}
@@ -1290,7 +1410,7 @@ bool LLSimpleXUIParser::processText()
LLStringUtil::trim(mTextContents);
if (!mTextContents.empty())
{
- mNameStack.push_back(std::make_pair(std::string("value"), newParseGeneration()));
+ mNameStack.push_back(std::make_pair(std::string("value"), true));
mCurAttributeValueBegin = mTextContents.c_str();
mOutputStack.back().first->submitValue(mNameStack, *this, mParseSilently);
mNameStack.pop_back();
@@ -1376,7 +1496,7 @@ void LLSimpleXUIParser::parserError(const std::string& message)
#endif
}
-bool LLSimpleXUIParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLSimpleXUIParser::readFlag(Parser& parser, void* val_ptr)
{
LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser);
return self.mCurAttributeValueBegin == NO_VALUE_MARKER;
diff --git a/indra/llxuixml/llxuiparser.h b/indra/llxuixml/llxuiparser.h
index 0c38c4da93..d7cd256967 100644
--- a/indra/llxuixml/llxuiparser.h
+++ b/indra/llxuixml/llxuiparser.h
@@ -116,7 +116,7 @@ private:
bool readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block);
//reader helper functions
- static bool readNoValue(Parser& parser, void* val_ptr);
+ static bool readFlag(Parser& parser, void* val_ptr);
static bool readBoolValue(Parser& parser, void* val_ptr);
static bool readStringValue(Parser& parser, void* val_ptr);
static bool readU8Value(Parser& parser, void* val_ptr);
@@ -133,23 +133,23 @@ private:
static bool readSDValue(Parser& parser, void* val_ptr);
//writer helper functions
- static bool writeNoValue(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeBoolValue(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeStringValue(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeU8Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeS8Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeU16Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeS16Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeU32Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeS32Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeF32Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeF64Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeColor4Value(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeUIColorValue(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeUUIDValue(Parser& parser, const void* val_ptr, const name_stack_t&);
- static bool writeSDValue(Parser& parser, const void* val_ptr, const name_stack_t&);
-
- LLXMLNodePtr getNode(const name_stack_t& stack);
+ static bool writeFlag(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeBoolValue(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeStringValue(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeU8Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeS8Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeU16Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeS16Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeU32Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeS32Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeF32Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeF64Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeColor4Value(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeUIColorValue(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeUUIDValue(Parser& parser, const void* val_ptr, name_stack_t&);
+ static bool writeSDValue(Parser& parser, const void* val_ptr, name_stack_t&);
+
+ LLXMLNodePtr getNode(name_stack_t& stack);
private:
Parser::name_stack_t mNameStack;
@@ -157,9 +157,8 @@ private:
// Root of the widget XML sub-tree, for example, "line_editor"
LLXMLNodePtr mWriteRootNode;
- typedef std::map<S32, LLXMLNodePtr> out_nodes_t;
+ typedef std::map<std::string, LLXMLNodePtr> out_nodes_t;
out_nodes_t mOutNodes;
- S32 mLastWriteGeneration;
LLXMLNodePtr mLastWrittenChild;
S32 mCurReadDepth;
std::string mCurFileName;
@@ -197,7 +196,7 @@ public:
private:
//reader helper functions
- static bool readNoValue(Parser&, void* val_ptr);
+ static bool readFlag(Parser&, void* val_ptr);
static bool readBoolValue(Parser&, void* val_ptr);
static bool readStringValue(Parser&, void* val_ptr);
static bool readU8Value(Parser&, void* val_ptr);
@@ -226,7 +225,6 @@ private:
Parser::name_stack_t mNameStack;
struct XML_ParserStruct* mParser;
- S32 mLastWriteGeneration;
LLXMLNodePtr mLastWrittenChild;
S32 mCurReadDepth;
std::string mCurFileName;
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h
index 77d6d19663..6bc272c009 100644
--- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h
+++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h
@@ -37,6 +37,7 @@ extern "C" {
#include <stdio.h>
#include <gst/gst.h>
+#include "apr_pools.h"
#include "apr_dso.h"
}
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp
index 93a10424dd..2e4baaa9eb 100644
--- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp
+++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp
@@ -28,18 +28,16 @@
#if LL_GSTREAMER010_ENABLED
-#include "linden_common.h"
-
#include <string>
extern "C" {
#include <gst/gst.h>
+#include "apr_pools.h"
#include "apr_dso.h"
}
#include "llmediaimplgstreamertriviallogging.h"
-#include "llaprpool.h"
#define LL_GST_SYM(REQ, GSTSYM, RTN, ...) RTN (*ll##GSTSYM)(__VA_ARGS__) = NULL
#include "llmediaimplgstreamer_syms_raw.inc"
@@ -58,7 +56,7 @@ void ll_gst_debug_register_funcptr(GstDebugFuncPtr func, gchar* ptrname)
}
static bool sSymsGrabbed = false;
-static LLAPRPool sSymGSTDSOMemoryPool;
+static apr_pool_t *sSymGSTDSOMemoryPool = NULL;
static apr_dso_handle_t *sSymGSTDSOHandleG = NULL;
static apr_dso_handle_t *sSymGSTDSOHandleV = NULL;
@@ -80,11 +78,11 @@ bool grab_gst_syms(std::string gst_dso_name,
#define LL_GST_SYM(REQ, GSTSYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##GSTSYM, sSymGSTDSOHandle, #GSTSYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #GSTSYM); if (REQ) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #GSTSYM, (void*)ll##GSTSYM);}while(0)
//attempt to load the shared libraries
- sSymGSTDSOMemoryPool.create();
+ apr_pool_create(&sSymGSTDSOMemoryPool, NULL);
if ( APR_SUCCESS == (rv = apr_dso_load(&sSymGSTDSOHandle,
gst_dso_name.c_str(),
- sSymGSTDSOMemoryPool()) ))
+ sSymGSTDSOMemoryPool) ))
{
INFOMSG("Found DSO: %s", gst_dso_name.c_str());
#include "llmediaimplgstreamer_syms_raw.inc"
@@ -98,7 +96,7 @@ bool grab_gst_syms(std::string gst_dso_name,
if ( APR_SUCCESS ==
(rv = apr_dso_load(&sSymGSTDSOHandle,
gst_dso_name_vid.c_str(),
- sSymGSTDSOMemoryPool()) ))
+ sSymGSTDSOMemoryPool) ))
{
INFOMSG("Found DSO: %s", gst_dso_name_vid.c_str());
#include "llmediaimplgstreamer_syms_rawv.inc"
@@ -152,7 +150,8 @@ void ungrab_gst_syms()
if ( sSymGSTDSOMemoryPool )
{
- sSymGSTDSOMemoryPool.destroy();
+ apr_pool_destroy(sSymGSTDSOMemoryPool);
+ sSymGSTDSOMemoryPool = NULL;
}
// NULL-out all of the symbols we'd grabbed
diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp
index 94dfd80700..91be3a89e9 100644
--- a/indra/media_plugins/webkit/linux_volume_catcher.cpp
+++ b/indra/media_plugins/webkit/linux_volume_catcher.cpp
@@ -65,7 +65,7 @@ extern "C" {
#undef LL_PA_SYM
static bool sSymsGrabbed = false;
-static LLAPRPool sSymPADSOMemoryPool;
+static apr_pool_t *sSymPADSOMemoryPool = NULL;
static apr_dso_handle_t *sSymPADSOHandleG = NULL;
bool grab_pa_syms(std::string pulse_dso_name)
@@ -84,11 +84,11 @@ bool grab_pa_syms(std::string pulse_dso_name)
#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##PASYM, sSymPADSOHandle, #PASYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #PASYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #PASYM, (void*)ll##PASYM);}while(0)
//attempt to load the shared library
- sSymPADSOMemoryPool.create();
+ apr_pool_create(&sSymPADSOMemoryPool, NULL);
if ( APR_SUCCESS == (rv = apr_dso_load(&sSymPADSOHandle,
pulse_dso_name.c_str(),
- sSymPADSOMemoryPool()) ))
+ sSymPADSOMemoryPool) ))
{
INFOMSG("Found DSO: %s", pulse_dso_name.c_str());
@@ -130,8 +130,12 @@ void ungrab_pa_syms()
apr_dso_unload(sSymPADSOHandleG);
sSymPADSOHandleG = NULL;
}
-
- sSymPADSOMemoryPool.destroy();
+
+ if ( sSymPADSOMemoryPool )
+ {
+ apr_pool_destroy(sSymPADSOMemoryPool);
+ sSymPADSOMemoryPool = NULL;
+ }
// NULL-out all of the symbols we'd grabbed
#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{ll##PASYM = NULL;}while(0)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index cb0f630aa0..7288bf6933 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -102,7 +102,6 @@ set(viewer_SOURCE_FILES
llavatarlist.cpp
llavatarlistitem.cpp
llavatarpropertiesprocessor.cpp
- llbottomtray.cpp
llbox.cpp
llbreadcrumbview.cpp
llbrowsernotification.cpp
@@ -118,6 +117,7 @@ set(viewer_SOURCE_FILES
llchatitemscontainerctrl.cpp
llchatmsgbox.cpp
llchiclet.cpp
+ llchicletbar.cpp
llclassifiedinfo.cpp
llclassifiedstatsresponder.cpp
llcofwearables.cpp
@@ -168,6 +168,7 @@ set(viewer_SOURCE_FILES
llfloaterabout.cpp
llfloateranimpreview.cpp
llfloaterauction.cpp
+ llfloateravatar.cpp
llfloateravatarpicker.cpp
llfloateravatartextures.cpp
llfloaterbeacons.cpp
@@ -182,6 +183,7 @@ set(viewer_SOURCE_FILES
llfloatercamera.cpp
llfloatercolorpicker.cpp
llfloaterdeleteenvpreset.cpp
+ llfloaterdestinations.cpp
llfloaterdisplayname.cpp
llfloatereditdaycycle.cpp
llfloatereditsky.cpp
@@ -229,7 +231,7 @@ set(viewer_SOURCE_FILES
llfloatersearch.cpp
llfloatersellland.cpp
llfloatersettingsdebug.cpp
- llfloatersidetraytab.cpp
+ llfloatersidepanelcontainer.cpp
llfloatersnapshot.cpp
llfloatersounddevices.cpp
llfloatertelehub.cpp
@@ -238,6 +240,7 @@ set(viewer_SOURCE_FILES
llfloatertools.cpp
llfloatertopobjects.cpp
llfloatertos.cpp
+ llfloatertoybox.cpp
llfloateruipreview.cpp
llfloaterurlentry.cpp
llfloatervoiceeffect.cpp
@@ -441,13 +444,10 @@ set(viewer_SOURCE_FILES
llsidepanelinventorysubpanel.cpp
llsidepaneliteminfo.cpp
llsidepaneltaskinfo.cpp
- llsidetray.cpp
- llsidetraylistener.cpp
llsidetraypanelcontainer.cpp
llsky.cpp
llslurl.cpp
llspatialpartition.cpp
- llspeakbutton.cpp
llspeakers.cpp
llspeakingindicatormanager.cpp
llsplitbutton.cpp
@@ -483,6 +483,7 @@ set(viewer_SOURCE_FILES
lltoastpanel.cpp
lltoastscripttextbox.cpp
lltool.cpp
+ lltoolbarview.cpp
lltoolbrush.cpp
lltoolcomp.cpp
lltooldraganddrop.cpp
@@ -667,7 +668,6 @@ set(viewer_HEADER_FILES
llavatarlist.h
llavatarlistitem.h
llavatarpropertiesprocessor.h
- llbottomtray.h
llbox.h
llbreadcrumbview.h
llbuycurrencyhtml.h
@@ -683,6 +683,7 @@ set(viewer_HEADER_FILES
llchatitemscontainerctrl.h
llchatmsgbox.h
llchiclet.h
+ llchicletbar.h
llclassifiedinfo.h
llclassifiedstatsresponder.h
llcofwearables.h
@@ -733,6 +734,7 @@ set(viewer_HEADER_FILES
llfloaterabout.h
llfloateranimpreview.h
llfloaterauction.h
+ llfloateravatar.h
llfloateravatarpicker.h
llfloateravatartextures.h
llfloaterbeacons.h
@@ -747,6 +749,7 @@ set(viewer_HEADER_FILES
llfloatercamera.h
llfloatercolorpicker.h
llfloaterdeleteenvpreset.h
+ llfloaterdestinations.h
llfloaterdisplayname.h
llfloatereditdaycycle.h
llfloatereditsky.h
@@ -794,7 +797,7 @@ set(viewer_HEADER_FILES
llfloatersearch.h
llfloatersellland.h
llfloatersettingsdebug.h
- llfloatersidetraytab.h
+ llfloatersidepanelcontainer.h
llfloatersnapshot.h
llfloatersounddevices.h
llfloatertelehub.h
@@ -803,6 +806,7 @@ set(viewer_HEADER_FILES
llfloatertools.h
llfloatertopobjects.h
llfloatertos.h
+ llfloatertoybox.h
llfloateruipreview.h
llfloaterurlentry.h
llfloatervoiceeffect.h
@@ -1001,13 +1005,10 @@ set(viewer_HEADER_FILES
llsidepanelinventorysubpanel.h
llsidepaneliteminfo.h
llsidepaneltaskinfo.h
- llsidetray.h
- llsidetraylistener.h
llsidetraypanelcontainer.h
llsky.h
llslurl.h
llspatialpartition.h
- llspeakbutton.h
llspeakers.h
llspeakingindicatormanager.h
llsplitbutton.h
@@ -1044,6 +1045,7 @@ set(viewer_HEADER_FILES
lltoastpanel.h
lltoastscripttextbox.h
lltool.h
+ lltoolbarview.h
lltoolbrush.h
lltoolcomp.h
lltooldraganddrop.h
@@ -1385,11 +1387,6 @@ endif (WINDOWS)
set(viewer_XUI_FILES
skins/default/colors.xml
skins/default/textures/textures.xml
- skins/minimal/colors.xml
- skins/minimal/textures/textures.xml
-
-
-
)
file(GLOB DEFAULT_XUI_FILE_GLOB_LIST
${CMAKE_CURRENT_SOURCE_DIR}/skins/*/xui/en/*.xml)
@@ -1416,6 +1413,7 @@ list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES})
set(viewer_APPSETTINGS_FILES
app_settings/anim.ini
app_settings/cmd_line.xml
+ app_settings/commands.xml
app_settings/grass.xml
app_settings/high_graphics.xml
app_settings/ignorable_dialogs.xml
@@ -1428,8 +1426,8 @@ set(viewer_APPSETTINGS_FILES
app_settings/settings_crash_behavior.xml
app_settings/settings_files.xml
app_settings/settings_per_account.xml
- app_settings/settings_minimal.xml
app_settings/std_bump.ini
+ app_settings/toolbars.xml
app_settings/trees.xml
app_settings/ultra_graphics.xml
app_settings/viewerart.xml
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
new file mode 100644
index 0000000000..391a864846
--- /dev/null
+++ b/indra/newview/app_settings/commands.xml
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<commands>
+ <command name="aboutland"
+ available_in_toybox="true"
+ icon="Command_AboutLand_Icon"
+ label_ref="Command_AboutLand_Label"
+ tooltip_ref="Command_AboutLand_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="about_land"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="about_land"
+ />
+ <command name="appearance"
+ available_in_toybox="true"
+ icon="Command_Appearance_Icon"
+ label_ref="Command_Appearance_Label"
+ tooltip_ref="Command_Appearance_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="appearance"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="appearance"
+ />
+ <command name="avatar"
+ available_in_toybox="true"
+ icon="Command_Avatar_Icon"
+ label_ref="Command_Avatar_Label"
+ tooltip_ref="Command_Avatar_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="avatar"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="avatar"
+ />
+ <command name="build"
+ available_in_toybox="true"
+ icon="Command_Build_Icon"
+ label_ref="Command_Build_Label"
+ tooltip_ref="Command_Build_Tooltip"
+ execute_function="Build.Toggle"
+ execute_parameters="build"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="build"
+ />
+ <command name="chat"
+ available_in_toybox="true"
+ icon="Command_Chat_Icon"
+ label_ref="Command_Chat_Label"
+ tooltip_ref="Command_Chat_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="chat_bar"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="chat_bar"
+ />
+ <command name="compass"
+ available_in_toybox="false"
+ icon="Command_Compass_Icon"
+ label_ref="Command_Compass_Label"
+ tooltip_ref="Command_Compass_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="compass"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="compass"
+ />
+ <command name="destinations"
+ available_in_toybox="true"
+ icon="Command_Destinations_Icon"
+ label_ref="Command_Destinations_Label"
+ tooltip_ref="Command_Destinations_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="destinations"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="destinations"
+ />
+ <command name="gestures"
+ available_in_toybox="true"
+ icon="Command_Gestures_Icon"
+ label_ref="Command_Gestures_Label"
+ tooltip_ref="Command_Gestures_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="gestures"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="gestures"
+ />
+ <command name="howto"
+ available_in_toybox="true"
+ icon="Command_HowTo_Icon"
+ label_ref="Command_HowTo_Label"
+ tooltip_ref="Command_HowTo_Tooltip"
+ execute_function="Help.ToggleHowTo"
+ is_running_function="Help.HowToVisible"
+ />
+ <command name="inventory"
+ available_in_toybox="true"
+ icon="Command_Inventory_Icon"
+ label_ref="Command_Inventory_Label"
+ tooltip_ref="Command_Inventory_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="inventory"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="inventory"
+ />
+ <command name="map"
+ available_in_toybox="true"
+ icon="Command_Map_Icon"
+ label_ref="Command_Map_Label"
+ tooltip_ref="Command_Map_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="world_map"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="world_map"
+ />
+ <command name="marketplace"
+ available_in_toybox="false"
+ icon="Command_Marketplace_Icon"
+ label_ref="Command_Marketplace_Label"
+ tooltip_ref="Command_Marketplace_Tooltip"
+ execute_function="Avatar.OpenMarketplace"
+ />
+ <command name="minimap"
+ available_in_toybox="true"
+ icon="Command_MiniMap_Icon"
+ label_ref="Command_MiniMap_Label"
+ tooltip_ref="Command_MiniMap_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="mini_map"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="mini_map"
+ />
+ <command name="move"
+ available_in_toybox="true"
+ icon="Command_Move_Icon"
+ label_ref="Command_Move_Label"
+ tooltip_ref="Command_Move_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="moveview"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="moveview"
+ />
+ <command name="people"
+ available_in_toybox="true"
+ icon="Command_People_Icon"
+ label_ref="Command_People_Label"
+ tooltip_ref="Command_People_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="people"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="people"
+ />
+ <command name="picks"
+ available_in_toybox="true"
+ icon="Command_Picks_Icon"
+ label_ref="Command_Picks_Label"
+ tooltip_ref="Command_Picks_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="picks"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="picks"
+ />
+ <command name="places"
+ available_in_toybox="true"
+ icon="Command_Places_Icon"
+ label_ref="Command_Places_Label"
+ tooltip_ref="Command_Places_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="places"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="places"
+ />
+ <command name="preferences"
+ available_in_toybox="true"
+ icon="Command_Preferences_Icon"
+ label_ref="Command_Preferences_Label"
+ tooltip_ref="Command_Preferences_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="preferences"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="preferences"
+ />
+ <command name="profile"
+ available_in_toybox="true"
+ icon="Command_Profile_Icon"
+ label_ref="Command_Profile_Label"
+ tooltip_ref="Command_Profile_Tooltip"
+ execute_function="Avatar.ToggleMyProfile"
+ is_running_function="Avatar.IsMyProfileOpen"
+ />
+ <command name="search"
+ available_in_toybox="true"
+ icon="Command_Search_Icon"
+ label_ref="Command_Search_Label"
+ tooltip_ref="Command_Search_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="search"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="search"
+ />
+ <command name="snapshot"
+ available_in_toybox="true"
+ icon="Command_Snapshot_Icon"
+ label_ref="Command_Snapshot_Label"
+ tooltip_ref="Command_Snapshot_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="snapshot"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="snapshot"
+ />
+ <command name="speak"
+ available_in_toybox="true"
+ icon="Command_Speak_Icon"
+ label_ref="Command_Speak_Label"
+ tooltip_ref="Command_Speak_Tooltip"
+ execute_function="Agent.PressMicrophone"
+ execute_parameters="speak"
+ execute_stop_function="Agent.ReleaseMicrophone"
+ execute_stop_parameters="speak"
+ is_enabled_function="Agent.IsActionAllowed"
+ is_enabled_parameters="speak"
+ is_running_function="Agent.IsMicrophoneOn"
+ is_running_parameters="speak"
+ />
+ <command name="view"
+ available_in_toybox="true"
+ icon="Command_View_Icon"
+ label_ref="Command_View_Label"
+ tooltip_ref="Command_View_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="camera"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="camera"
+ />
+ <command name="voice"
+ available_in_toybox="true"
+ icon="Command_Voice_Icon"
+ label_ref="Command_Voice_Label"
+ tooltip_ref="Command_Voice_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="voice_controls"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="voice_controls"
+ />
+</commands>
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index 9fa4046fdf..b5f105439c 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -10,7 +10,7 @@ state Keyword to indicate state block or state transition
integer Integer type
float Floating-point type
string String type
-key Key type. Use NULL_KEY to test for empty keys.
+key Key type. Use NULL_KEY to test for empty keys
vector Vector type of 3 floats. Used to represent 3D motion, Euler angles, and color.:Access components by .x, .y. or .z
rotation Rotation type of 4 floats. Used to represent rotation.:Access components by .x, .y., .z, or .w
list List of various data types
@@ -28,7 +28,7 @@ collision_end collision_end(integer num_detected):Triggered when task stops coll
land_collision_start land_collision_start(vector pos):Triggered when task starts colliding with land
land_collision land_collision(vector pos):Triggered when task is colliding with land
land_collision_end land_collision_end(vector pos):Triggered when task stops colliding with land
-timer timer():Result of the llSetTimerEvent library function call.
+timer timer():Result of the llSetTimerEvent library function call
listen listen(integer channel, string name, key id, string message):Result of the llListen library function call
sensor sensor(integer num_detected):Result of the llSensor library function call
no_sensor no_sensor():Result of the llSensor library function call
@@ -44,8 +44,8 @@ attach attach(key id):Triggered when task attaches or detaches from agent
dataserver dataserver(key queryid, string data):Triggered when task receives asynchronous data
moving_start moving_start():Triggered when task begins moving
moving_end moving_end():Triggered when task stops moving
-on_rez on_rez(integer start_param):Triggered when task is rezed in from inventory or another task
-object_rez object_rez(key id):Triggered when task rezes in another task
+on_rez on_rez(integer start_param):Triggered when task is rezzed in from inventory or another task
+object_rez object_rez(key id):Triggered when task rezzes in another task
link_message link_message(integer sender_num, integer num, string str, key id):Triggered when task receives a link message via LLMessageLinked library function call
changed changed( integer change ):Triggered various event change the task:(test change with CHANGED_INVENTORY, CHANGED_COLOR, CHANGED_SHAPE, CHANGED_SCALE, CHANGED_TEXTURE, CHANGED_LINK, CHANGED_ALLOWED_DROP, CHANGED_OWNER, CHANGED_REGION, CHANGED_TELEPORT, CHANGED_REGION_START, CHANGED_MEDIA)
remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY)
@@ -151,15 +151,15 @@ PSYS_SRC_PATTERN_ANGLE
PSYS_SRC_PATTERN_ANGLE_CONE
PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
-OBJECT_UNKNOWN_DETAIL Returned by llGetObjectDetails when passed an invalid object parameter type.
-OBJECT_NAME Used with llGetObjectDetails to get an object's name.
-OBJECT_DESC Used with llGetObjectDetails to get an object's description.
-OBJECT_POS Used with llGetObjectDetails to get an object's position.
-OBJECT_ROT Used with llGetObjectDetails to get an object's rotation.
-OBJECT_VELOCITY Used with llGetObjectDetails to get an object's velocity.
-OBJECT_OWNER Used with llGetObjectDetails to get an object's owner's key. Will be NULL_KEY if group owned.
-OBJECT_GROUP Used with llGetObjectDetails to get an object's group's key.
-OBJECT_CREATOR Used with llGetObjectDetails to get an object's creator's key.
+OBJECT_UNKNOWN_DETAIL Returned by llGetObjectDetails when passed an invalid object parameter type
+OBJECT_NAME Used with llGetObjectDetails to get an object's name
+OBJECT_DESC Used with llGetObjectDetails to get an object's description
+OBJECT_POS Used with llGetObjectDetails to get an object's position
+OBJECT_ROT Used with llGetObjectDetails to get an object's rotation
+OBJECT_VELOCITY Used with llGetObjectDetails to get an object's velocity
+OBJECT_OWNER Used with llGetObjectDetails to get an object's owner's key. Will be NULL_KEY if group owned
+OBJECT_GROUP Used with llGetObjectDetails to get an object's group's key
+OBJECT_CREATOR Used with llGetObjectDetails to get an object's creator's key
# some vehicle params
VEHICLE_TYPE_NONE
@@ -198,7 +198,7 @@ VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY A slider between 0 (bouncy) and 1 (critic
VEHICLE_VERTICAL_ATTRACTION_TIMESCALE The exponential timescale for the vehicle to align its z-axis to the world z-axis (vertical)
VEHICLE_BANKING_EFFICIENCY A slider between -1 (leans out of turns), 0 (no banking), and +1 (leans into turns)
-VEHICLE_BANKING_MIX A slider betwen 0 (static banking) and 1 (dynamic banking)
+VEHICLE_BANKING_MIX A slider between 0 (static banking) and 1 (dynamic banking)
VEHICLE_BANKING_TIMESCALE The exponential timescale for the banking behavior to take full effect
VEHICLE_FLAG_NO_DEFLECTION_UP Prevents linear deflection along world-z axis
@@ -208,9 +208,9 @@ VEHICLE_FLAG_HOVER_TERRAIN_ONLY Hover only pays attention to terrain height
VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT Hover only pays attention to global height
VEHICLE_FLAG_HOVER_UP_ONLY Hover only pushes up
VEHICLE_FLAG_LIMIT_MOTOR_UP Prevents ground vehicles from motoring into the sky
-VEHICLE_FLAG_MOUSELOOK_STEER Makes vehicle try to turn toward mouselook direction.
-VEHICLE_FLAG_MOUSELOOK_BANK Makes vehicle try to turn toward mouselook direction assuming banking is enabled.
-VEHICLE_FLAG_CAMERA_DECOUPLED Causes the camera look-at axis to NOT move when the vehicle rotates.
+VEHICLE_FLAG_MOUSELOOK_STEER Makes vehicle try to turn toward mouselook direction
+VEHICLE_FLAG_MOUSELOOK_BANK Makes vehicle try to turn toward mouselook direction assuming banking is enabled
+VEHICLE_FLAG_CAMERA_DECOUPLED Causes the camera look-at axis to NOT move when the vehicle rotates
CAMERA_PITCH (-45 to 80) (Adjusts the angular amount that the camera aims straight ahead vs. straight down, maintaining the same distance. Analogous to 'incidence'.")
CAMERA_FOCUS_OFFSET (-10 to 10) A vector that adjusts the position of the camera focus position relative to the subject
@@ -238,7 +238,7 @@ INVENTORY_BODYPART Passed to task inventory library functions to reference body
INVENTORY_ANIMATION Passed to task inventory library functions to reference animations
INVENTORY_GESTURE Passed to task inventory library functions to reference gestures
INVENTORY_ALL Passed to task inventory library functions to reference all inventory items
-INVENTORY_NONE Returned by llGetInventoryType when no item is found.
+INVENTORY_NONE Returned by llGetInventoryType when no item is found
ATTACH_CHEST Passed to llAttachToAvatar to attach task to chest
ATTACH_HEAD Passed to llAttachToAvatar to attach task to head
@@ -256,7 +256,7 @@ ATTACH_LEAR Passed to llAttachToAvatar to attach task to left ear
ATTACH_REAR Passed to llAttachToAvatar to attach task to right ear
ATTACH_LEYE Passed to llAttachToAvatar to attach task to left eye
ATTACH_REYE Passed to llAttachToAvatar to attach task to right eye
-ATTACH_NOSE Passed to llAttachToAvatar to attach task to noce
+ATTACH_NOSE Passed to llAttachToAvatar to attach task to nose
ATTACH_RUARM Passed to llAttachToAvatar to attach task to right upper arm
ATTACH_RLARM Passed to llAttachToAvatar to attach task to right lower arm
ATTACH_LUARM Passed to llAttachToAvatar to attach task to left upper arm
@@ -296,7 +296,7 @@ PAYMENT_INFO_USED Used with llRequestAgentData to tell if Agent is of "Payment I
ANIM_ON Enable texture animation
LOOP Loop when animating textures
REVERSE Animate in the reverse direction
-PING_PONG Animate forward, then reverse.
+PING_PONG Animate forward, then reverse
SMOOTH Textures slides, instead of stepping
ROTATE Rotates the texture, instead of using frames
SCALE Scales the texture, instead of using frames
@@ -343,7 +343,7 @@ PRIM_FLEXIBLE Followed by TRUE or FALSE, integer softness, float gravity, float
PRIM_POINT_LIGHT Followed by TRUE or FALSE, vector color, float intensity, float radius, float falloff
PRIM_TEMP_ON_REZ Sets temporay on rez to TRUE or FALSE
PRIM_PHANTOM Sets phantom to TRUE or FALSE
-PRIM_CAST_SHADOWS DEPRECATED. Takes 1 parameter, an integer, but has no effect when set and always returns 0 if used in llGetPrimitiveParams.
+PRIM_CAST_SHADOWS DEPRECATED. Takes 1 parameter, an integer, but has no effect when set and always returns 0 if used in llGetPrimitiveParams
PRIM_POSITION Sets primitive position to a vector position
PRIM_SIZE Sets primitive size to a vector size
PRIM_ROTATION Sets primitive rotation
@@ -363,10 +363,10 @@ PRIM_TYPE_TUBE Followed by integer hole shape, vector cut, float hollow, vector
PRIM_TYPE_RING Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
PRIM_TYPE_SCULPT Followed by a key/string texture uuid, and one of PRIM_SCULPT_TYPE_SPHERE, PRIM_SCULPT_TYPE_TORUS, PRIM_SCULPT_TYPE_PLANE, or PRIM_SCULPT_TYPE_CYLINDER
-PRIM_HOLE_DEFAULT Sets hole type to match the prim type.
-PRIM_HOLE_SQUARE Sets hole type to square.
-PRIM_HOLE_CIRCLE Sets hole type to circle.
-PRIM_HOLE_TRIANGLE Sets hole type to triangle.
+PRIM_HOLE_DEFAULT Sets hole type to match the prim type
+PRIM_HOLE_SQUARE Sets hole type to square
+PRIM_HOLE_CIRCLE Sets hole type to circle
+PRIM_HOLE_TRIANGLE Sets hole type to triangle
PRIM_MATERIAL_STONE Sets material to stone
PRIM_MATERIAL_METAL Sets material to metal
@@ -436,7 +436,7 @@ PARCEL_MEDIA_COMMAND_TIME Set media stream to specific time
PARCEL_MEDIA_COMMAND_SIZE Get or set the parcel's media pixel resolution
PARCEL_MEDIA_COMMAND_AGENT Allows media stream commands to apply to only one agent
PARCEL_MEDIA_COMMAND_UNLOAD Unloads the media stream
-PARCEL_MEDIA_COMMAND_AUTO_ALIGN Auto aligns the media stream to the texture size. May cause a performance hit and loss of some visual quality.
+PARCEL_MEDIA_COMMAND_AUTO_ALIGN Auto aligns the media stream to the texture size. May cause a performance hit and loss of some visual quality
PAY_HIDE Used with llSetPayPrice to hide a button
PAY_DEFAULT Used with llSetPayPrice to use the default price for a button
@@ -481,7 +481,7 @@ REGION_FLAG_RESTRICT_PUSHOBJECT Used with llGetRegionFlags to find if a region
HTTP_METHOD Used with llHTTPRequest to specify the method, such as "GET" or "POST"
HTTP_MIMETYPE Used with llHTTPRequest to specify the MIME type, defaults to "text/plain"
-HTTP_BODY_MAXLENGTH Used with llHTTPRequest to specify the maxium reponse body to return
+HTTP_BODY_MAXLENGTH Used with llHTTPRequest to specify the maximum response body to return
HTTP_VERIFY_CERT Used with llHTTPRequest to specify SSL certificate verification
HTTP_BODY_TRUNCATED Used with http_response to indicate truncation point in bytes
@@ -492,17 +492,17 @@ PARCEL_COUNT_OTHER Used with llGetParcelPrimCount to get the number of prims on
PARCEL_COUNT_SELECTED Used with llGetParcelPrimCount to get the number of prims on the parcel currently selected or sat upon
PARCEL_COUNT_TEMP Used with llGetParcelPrimCount to get the number of prims on the parcel that are temp on rez
-PARCEL_DETAILS_NAME Used with llGetParcelDetails to get the parcel name.
-PARCEL_DETAILS_DESC Used with llGetParcelDetails to get the parcel description.
-PARCEL_DETAILS_OWNER Used with llGetParcelDetails to get the parcel owner id.
-PARCEL_DETAILS_GROUP Used with llGetParcelDetails to get the parcel group id.
-PARCEL_DETAILS_AREA Used with llGetParcelDetails to get the parcel area in square meters.
-PARCEL_DETAILS_ID Used with llGetParcelDetails to get the parcel id.
-PARCEL_DETAILS_SEE_AVATARS Used with llGetParcelDetails to get the avatars visibility setting.
+PARCEL_DETAILS_NAME Used with llGetParcelDetails to get the parcel name
+PARCEL_DETAILS_DESC Used with llGetParcelDetails to get the parcel description
+PARCEL_DETAILS_OWNER Used with llGetParcelDetails to get the parcel owner id
+PARCEL_DETAILS_GROUP Used with llGetParcelDetails to get the parcel group id
+PARCEL_DETAILS_AREA Used with llGetParcelDetails to get the parcel area in square meters
+PARCEL_DETAILS_ID Used with llGetParcelDetails to get the parcel id
+PARCEL_DETAILS_SEE_AVATARS Used with llGetParcelDetails to get the avatars visibility setting
-STRING_TRIM_HEAD Used with llStringTrim to trim leading spaces from a string.
-STRING_TRIM_TAIL Used with llStringTrim to trim trailing spaces from a string.
-STRING_TRIM Used with llStringTrim to trim both leading and trailing spaces from a string.
+STRING_TRIM_HEAD Used with llStringTrim to trim leading spaces from a string
+STRING_TRIM_TAIL Used with llStringTrim to trim trailing spaces from a string
+STRING_TRIM Used with llStringTrim to trim both leading and trailing spaces from a string
CLICK_ACTION_NONE Used with llSetClickAction to disable the click action
CLICK_ACTION_TOUCH Used with llSetClickAction to set touch as the default action when object is clicked
@@ -514,9 +514,9 @@ CLICK_ACTION_PLAY Used with llSetClickAction to set play as the default ac
CLICK_ACTION_OPEN_MEDIA Used with llSetClickAction to set open-media as the default action when object is clicked
CLICK_ACTION_ZOOM Used with llSetClickAction to set zoom in as the default action when object is clicked
-TOUCH_INVALID_TEXCOORD Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid.
-TOUCH_INVALID_VECTOR Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid.
-TOUCH_INVALID_FACE Value returned by llDetectedTouchFace() when the touch position is not valid.
+TOUCH_INVALID_TEXCOORD Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid
+TOUCH_INVALID_VECTOR Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid
+TOUCH_INVALID_FACE Value returned by llDetectedTouchFace() when the touch position is not valid
PRIM_MEDIA_ALT_IMAGE_ENABLE Used with ll{Get,Set}PrimMediaParams to enable the default alt image for media
PRIM_MEDIA_CONTROLS Used with ll{Get,Set}PrimMediaParams to determine the controls shown for media
@@ -608,4 +608,4 @@ return Leave current function or event handler
[two_sided_delimiter 0, .2, 0]
" String literal
-#functions are supplied by the program now.
+#functions are supplied by the program now
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 15f1bbd1b1..7396209e27 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -619,7 +619,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string></string>
+ <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/avatars.html</string>
</map>
<key>AvatarBakedTextureUploadTimeout</key>
<map>
@@ -1150,28 +1150,6 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>ButtonFlashCount</key>
- <map>
- <key>Comment</key>
- <string>Number of flashes after which flashing buttons stay lit up</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>8</integer>
- </map>
- <key>ButtonFlashRate</key>
- <map>
- <key>Comment</key>
- <string>Frequency at which buttons flash (hz)</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>1.25</real>
- </map>
<key>ButtonHPad</key>
<map>
<key>Comment</key>
@@ -1858,7 +1836,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>0</integer>
</map>
<key>Cursor3D</key>
<map>
@@ -2652,6 +2630,17 @@
<key>Value</key>
<integer>-1</integer>
</map>
+ <key>DebugToolbarFUI</key>
+ <map>
+ <key>Comment</key>
+ <string>Turn on the FUI Toolbars</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>DebugViews</key>
<map>
<key>Comment</key>
@@ -2728,7 +2717,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string></string>
+ <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/guide.html</string>
</map>
<key>DisableCameraConstraints</key>
<map>
@@ -3179,7 +3168,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>0</integer>
</map>
<key>EnableVoiceChat</key>
<map>
@@ -4039,6 +4028,17 @@
<key>Value</key>
<string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC][DEBUG_MODE]</string>
</map>
+ <key>HowToHelpURL</key>
+ <map>
+ <key>Comment</key>
+ <string>URL for How To help content</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/howto/index.html</string>
+ </map>
<key>HomeSidePanelURL</key>
<map>
<key>Comment</key>
@@ -4257,7 +4257,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>InventoryDisplayOutbox</key>
<map>
@@ -4589,21 +4589,21 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>LastGPUClass</key>
+ <key>LastGPUString</key>
<map>
<key>Comment</key>
- <string>[DO NOT MODIFY] previous GPU class for tracking hardware changes</string>
+ <string>[DO NOT MODIFY] previous GPU id string for tracking hardware changes</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>S32</string>
+ <string>String</string>
<key>Value</key>
- <integer>-1</integer>
+ <string></string>
</map>
<key>LastFeatureVersion</key>
<map>
<key>Comment</key>
- <string>[DO NOT MODIFY] Version number for tracking hardware changes</string>
+ <string>[DO NOT MODIFY] Feature Table Version number for tracking rendering system changes</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -5094,7 +5094,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/</string>
+ <string>https://marketplace.secondlife.com/</string>
</map>
<key>MarketplaceURL_objectFemale</key>
<map>
@@ -5105,7 +5105,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
</map>
<key>MarketplaceURL_objectMale</key>
<map>
@@ -5116,7 +5116,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
</map>
<key>MarketplaceURL_clothingFemale</key>
<map>
@@ -5127,7 +5127,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/clothing_female_avatar</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/clothing_female_avatar</string>
</map>
<key>MarketplaceURL_clothingMale</key>
<map>
@@ -5138,7 +5138,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/clothing_male_avatar</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/clothing_male_avatar</string>
</map>
<key>MarketplaceURL_bodypartFemale</key>
<map>
@@ -5149,7 +5149,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com</string>
+ <string>https://marketplace.secondlife.com/</string>
</map>
<key>MarketplaceURL_bodypartMale</key>
<map>
@@ -5160,7 +5160,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/</string>
+ <string>https://marketplace.secondlife.com/</string>
</map>
<key>MarketplaceURL_glovesMale</key>
<map>
@@ -5171,7 +5171,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
</map>
<key>MarketplaceURL_glovesFemale</key>
<map>
@@ -5182,7 +5182,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
</map>
<key>MarketplaceURL_jacketFemale</key>
<map>
@@ -5193,7 +5193,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/jacket_womens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/jacket_womens</string>
</map>
<key>MarketplaceURL_jacketMale</key>
<map>
@@ -5204,7 +5204,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/jacket_mens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/jacket_mens</string>
</map>
<key>MarketplaceURL_shirtFemale</key>
<map>
@@ -5215,7 +5215,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/shirt_womens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/shirt_womens</string>
</map>
<key>MarketplaceURL_shirtMale</key>
<map>
@@ -5226,7 +5226,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/shirt_mens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/shirt_mens</string>
</map>
<key>MarketplaceURL_undershirtFemale</key>
<map>
@@ -5237,7 +5237,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/undershirt_womens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/undershirt_womens</string>
</map>
<key>MarketplaceURL_undershirtMale</key>
<map>
@@ -5248,7 +5248,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/undershirt_mens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/undershirt_mens</string>
</map>
<key>MarketplaceURL_skirtFemale</key>
<map>
@@ -5259,7 +5259,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
</map>
<key>MarketplaceURL_skirtMale</key>
<map>
@@ -5270,7 +5270,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
</map>
<key>MarketplaceURL_pantsFemale</key>
<map>
@@ -5281,7 +5281,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/pants_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/pants_women</string>
</map>
<key>MarketplaceURL_pantsMale</key>
<map>
@@ -5292,7 +5292,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/pants_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/pants_men</string>
</map>
<key>MarketplaceURL_underpantsFemale</key>
<map>
@@ -5303,7 +5303,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/underwear_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/underwear_women</string>
</map>
<key>MarketplaceURL_underpantsMale</key>
<map>
@@ -5314,7 +5314,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/underwear_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/underwear_men</string>
</map>
<key>MarketplaceURL_shoesFemale</key>
<map>
@@ -5325,7 +5325,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/shoes_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/shoes_women</string>
</map>
<key>MarketplaceURL_shoesMale</key>
<map>
@@ -5336,7 +5336,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/shoes_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/shoes_men</string>
</map>
<key>MarketplaceURL_socksFemale</key>
<map>
@@ -5347,7 +5347,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
</map>
<key>MarketplaceURL_socksMale</key>
<map>
@@ -5358,7 +5358,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
</map>
<key>MarketplaceURL_tattooMale</key>
<map>
@@ -5369,7 +5369,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
</map>
<key>MarketplaceURL_tattooFemale</key>
<map>
@@ -5380,7 +5380,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
</map>
<key>MarketplaceURL_hairFemale</key>
<map>
@@ -5391,7 +5391,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_hair</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_hair</string>
</map>
<key>MarketplaceURL_hairMale</key>
<map>
@@ -5402,7 +5402,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_hair</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_hair</string>
</map>
<key>MarketplaceURL_eyesFemale</key>
<map>
@@ -5413,7 +5413,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_eyes</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_eyes</string>
</map>
<key>MarketplaceURL_eyesMale</key>
<map>
@@ -5424,7 +5424,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_eyes</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_eyes</string>
</map>
<key>MarketplaceURL_shapeFemale</key>
<map>
@@ -5435,7 +5435,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_shape</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_shape</string>
</map>
<key>MarketplaceURL_shapeMale</key>
<map>
@@ -5446,7 +5446,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_shape</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_shape</string>
</map>
<key>MarketplaceURL_skinFemale</key>
<map>
@@ -5457,7 +5457,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_skin</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_skin</string>
</map>
<key>MarketplaceURL_skinMale</key>
<map>
@@ -5468,7 +5468,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_skin</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_skin</string>
</map>
<key>MaxDragDistance</key>
<map>
@@ -7509,7 +7509,7 @@
<key>Value</key>
<integer>-1</integer>
</map>
- <key>RenderAvatarLODFactor</key>
+ <key>RenderAvatarLODFactor</key>
<map>
<key>Comment</key>
<string>Controls level of detail of avatars (multiplier for current screen area when calculated level of detail)</string>
@@ -9731,7 +9731,7 @@
<key>ShowBuildButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Build button in the bottom tray.</string>
+ <string>Shows/hides build button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9742,7 +9742,7 @@
<key>ShowCameraButton</key>
<map>
<key>Comment</key>
- <string>Show/Hide View button in the bottom tray.</string>
+ <string>Show/hide view button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9830,7 +9830,7 @@
<key>ShowGestureButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Gesture button in the bottom tray.</string>
+ <string>Shows/hides gesture button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9863,7 +9863,7 @@
<key>ShowMiniMapButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Mini-Map button in the bottom tray.</string>
+ <string>Shows/hides mini-map button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9874,7 +9874,7 @@
<key>ShowMoveButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Move button in the bottom tray.</string>
+ <string>Shows/hides move button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9907,7 +9907,7 @@
<key>ShowSearchButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Search button in the bottom tray.</string>
+ <string>Shows/hides search button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9918,7 +9918,7 @@
<key>ShowSnapshotButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Snapshot button button in the bottom tray.</string>
+ <string>Shows/hides snapshot button button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9940,7 +9940,7 @@
<key>ShowNavbarFavoritesPanel</key>
<map>
<key>Comment</key>
- <string>Show/Hide Navigation Bar Favorites Panel</string>
+ <string>Show/hide navigation bar favorites panel</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9951,7 +9951,7 @@
<key>ShowNavbarNavigationPanel</key>
<map>
<key>Comment</key>
- <string>Show/Hide Navigation Bar Navigation Panel</string>
+ <string>Show/hide navigation bar navigation panel</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9962,7 +9962,7 @@
<key>ShowWorldMapButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Map button in the bottom tray.</string>
+ <string>Shows/hides map button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9973,18 +9973,7 @@
<key>ShowMiniLocationPanel</key>
<map>
<key>Comment</key>
- <string>Show/Hide Mini-Location Panel</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SidebarCameraMovement</key>
- <map>
- <key>Comment</key>
- <string>Reflects world rect changing while changing sidebar visibility.</string>
+ <string>Show/hide mini-location panel</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -10927,7 +10916,17 @@
<key>Value</key>
<real>0.699999988079</real>
</map>
- <key>ToolTipFadeTime</key>
+ <key>ToolTipFastDelay</key>
+ <map>
+ <key>Comment</key>
+ <string>Seconds before displaying tooltip when mouse stops over UI element (when a tooltip is already visible)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0.1</real>
+ </map> <key>ToolTipFadeTime</key>
<map>
<key>Comment</key>
<string>Seconds over which tooltip fades away</string>
@@ -13599,17 +13598,6 @@
<key>Value</key>
<string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/404.html</string>
</map>
- <key>DestinationsAndAvatarsVisibility</key>
- <map>
- <key>Comment</key>
- <string>Whether destination panel or avatar picker are open (0=destination guide, 1=avatar picker, default=nothing)</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>OpenIMOnVoice</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index 29e52ab054..01a70f2671 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -1,474 +1 @@
-<llsd>
- <map>
- <key>ChannelBottomPanelMargin</key>
- <map>
- <key>Comment</key>
- <string>Space from a lower toast to the Bottom Tray</string>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>2</integer>
- </map>
- <key>ClickActionBuyEnabled</key>
- <map>
- <key>Comment</key>
- <string>Enable click to buy actions in tool pie menu</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ClickActionPayEnabled</key>
- <map>
- <key>Comment</key>
- <string>Enable click to pay actions in tool pie menu</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableGrab</key>
- <map>
- <key>Comment</key>
- <string>Use Ctrl+mouse to grab and manipulate objects</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableMouselook</key>
- <map>
- <key>Comment</key>
- <string>Allow first person perspective and mouse control of camera</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>HelpURLFormat</key>
- <map>
- <key>Comment</key>
- <string>URL pattern for help page; arguments will be encoded; see llviewerhelp.cpp:buildHelpURL for arguments</string>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/howto/index.html?topic=[TOPIC]</string>
- </map>
- <key>PreferredMaturity</key>
- <map>
- <key>Comment</key>
- <string>Setting for the user&apos;s preferred maturity level (consts in indra_constants.h)</string>
- <key>Type</key>
- <string>U32</string>
- <key>Value</key>
- <integer>21</integer>
- </map>
- <key>RenderTrackerBeacon</key>
- <map>
- <key>Comment</key>
- <string>Display tracking arrow and beacon to target avatar, teleport destination</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ShowScriptErrors</key>
- <map>
- <key>Comment</key>
- <string>Show script errors</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ShowScriptErrorsLocation</key>
- <map>
- <key>Comment</key>
- <string>Show script error in chat or window</string>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SkinCurrent</key>
- <map>
- <key>Comment</key>
- <string>The currently selected skin.</string>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>minimal</string>
- </map>
- <key>UseExternalBrowser</key>
- <map>
- <key>Comment</key>
- <string>Use default browser when opening web pages instead of in-world browser.</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>VoiceCallsRejectGroup</key>
- <map>
- <key>Comment</key>
- <string>Silently reject all incoming group voice calls.</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>VoiceDisableMic</key>
- <map>
- <key>Comment</key>
- <string>Completely disable the ability to open the mic.</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ScriptsCanShowUI</key>
- <map>
- <key>Comment</key>
- <string>Allow LSL calls (such as LLMapDestination) to spawn viewer UI</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ChatFontSize</key>
- <map>
- <key>Comment</key>
- <string>Size of chat text in chat console (0 = small, 1 = big, 2 = extra large)</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>AvatarPickerHintTimeout</key>
- <map>
- <key>Comment</key>
- <string>Number of seconds to wait before telling resident about avatar picker.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.0</real>
- </map>
- <key>RenderShowGroupTitleAll</key>
- <map>
- <key>Comment</key>
- <string>Show group titles in name labels</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>OpenSidePanelsInFloaters</key>
- <map>
- <key>Comment</key>
- <string>If true, will always open side panel contents in a floater.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>AvatarInspectorTooltipDelay</key>
- <map>
- <key>Comment</key>
- <string>Seconds before displaying avatar inspector tooltip</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.1</real>
- </map>
- <key>AFKTimeout</key>
- <map>
- <key>Comment</key>
- <string>
- Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never).
- Valid values are: 0, 120, 300, 600, 1800
- </string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <real>0</real>
- </map>
- <key>SLURLTeleportDirectly</key>
- <map>
- <key>Comment</key>
- <string>Clicking on a slurl will teleport you directly instead of opening places panel</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>EnableClassifieds</key>
- <map>
- <key>Comment</key>
- <string>Enable creation of new classified ads</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableGroupInfo</key>
- <map>
- <key>Comment</key>
- <string>Enable viewing and editing of group info.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnablePlaceProfile</key>
- <map>
- <key>Comment</key>
- <string>Enable viewing of place profile from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnablePicks</key>
- <map>
- <key>Comment</key>
- <string>Enable editing of picks</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableWorldMap</key>
- <map>
- <key>Comment</key>
- <string>Enable opening world map from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableAvatarPay</key>
- <map>
- <key>Comment</key>
- <string>Enable paying other avatars from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableVoiceCall</key>
- <map>
- <key>Comment</key>
- <string>Enable voice calls from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>EnableAvatarShare</key>
- <map>
- <key>Comment</key>
- <string>Enable sharing from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableInventory</key>
- <map>
- <key>Comment</key>
- <string>Enable opening inventory from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableSearch</key>
- <map>
- <key>Comment</key>
- <string>Enable opening search from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableAppearance</key>
- <map>
- <key>Comment</key>
- <string>Enable opening appearance from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>DoubleClickShowWorldMap</key>
- <map>
- <key>Comment</key>
- <string>Enable double-click to show world map from mini map</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableGroupChatPopups</key>
- <map>
- <key>Comment</key>
- <string>Enable Incoming Group Chat Popups</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SearchFromAddressBar</key>
- <map>
- <key>Comment</key>
- <string>Can enter search queries into navigation address bar</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>DestinationGuideURL</key>
- <map>
- <key>Comment</key>
- <string>Destination guide contents</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/guide.html</string>
- </map>
- <key>AvatarPickerURL</key>
- <map>
- <key>Comment</key>
- <string>Avatar picker contents</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/avatars.html</string>
- </map>
- <key>LogInventoryDecline</key>
- <map>
- <key>Comment</key>
- <string>Log in system chat whenever an inventory offer is declined</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>UseHTTPInventory</key>
- <map>
- <key>Comment</key>
- <string>Allow use of http inventory transfers instead of UDP</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ClickToWalk</key>
- <map>
- <key>Comment</key>
- <string>Click in world to walk to location</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>ShowOfferedInventory</key>
- <map>
- <key>Comment</key>
- <string>Show inventory window with last inventory offer selected when receiving inventory from other users.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>OpenIMOnVoice</key>
- <map>
- <key>Comment</key>
- <string>Open the corresponding IM window when connecting to a voice call.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>AllowBottomTrayButtonReordering</key>
- <map>
- <key>Comment</key>
- <string>Allow user to move and hide bottom tray buttons</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ShowHelpOnFirstLogin</key>
- <map>
- <key>Comment</key>
- <string>Show Help Floater on first login</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- </map>
-</llsd>
+<llsd/> \ No newline at end of file
diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml
new file mode 100644
index 0000000000..f2192a75ad
--- /dev/null
+++ b/indra/newview/app_settings/toolbars.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbars>
+ <bottom_toolbar
+ button_display_mode="icons_with_text">
+ <command name="chat"/>
+ <command name="speak"/>
+ <command name="destinations"/>
+ <command name="people"/>
+ <command name="profile"/>
+ <command name="view"/>
+ <command name="move"/>
+ <command name="howto"/>
+ </bottom_toolbar>
+ <left_toolbar
+ button_display_mode="icons_only">
+ <command name="avatar"/>
+ <command name="appearance"/>
+ <command name="inventory"/>
+ <command name="search"/>
+ <command name="places"/>
+ <command name="voice"/>
+ <command name="minimap"/>
+ </left_toolbar>
+</toolbars>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index e12c2f7853..9ad313a9a7 100755..100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,8 @@
version 32
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index 6e962f3c56..2dbdf3a76e 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -1,4 +1,8 @@
version 27
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 2690e8ec70..996e574350 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,8 @@
version 30
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
diff --git a/indra/newview/featuretable_solaris.txt b/indra/newview/featuretable_solaris.txt
index 7df75687f2..e7cae1abdc 100644
--- a/indra/newview/featuretable_solaris.txt
+++ b/indra/newview/featuretable_solaris.txt
@@ -1,4 +1,8 @@
version 15
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable.txt with a few differences
// Should be combined into one table
diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt
index a0245f5369..a53be10be1 100644
--- a/indra/newview/featuretable_xp.txt
+++ b/indra/newview/featuretable_xp.txt
@@ -1,4 +1,8 @@
version 31
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi
index 3702eeb12c..f4fb70a726 100644
--- a/indra/newview/installers/windows/lang_zh.nsi
+++ b/indra/newview/installers/windows/lang_zh.nsi
Binary files differ
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 296ae8f10b..773e20eda7 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -36,10 +36,10 @@
#include "llagentwearables.h"
#include "llagentui.h"
#include "llanimationstates.h"
-#include "llbottomtray.h"
#include "llcallingcard.h"
#include "llcapabilitylistener.h"
#include "llchannelmanager.h"
+#include "llchicletbar.h"
#include "llconsole.h"
#include "llenvmanager.h"
#include "llfirstuse.h"
@@ -68,9 +68,11 @@
#include "llstatusbar.h"
#include "llteleportflags.h"
#include "lltool.h"
+#include "lltoolbarview.h"
#include "lltoolpie.h"
#include "lltoolmgr.h"
#include "lltrans.h"
+#include "lluictrl.h"
#include "llurlentry.h"
#include "llviewercontrol.h"
#include "llviewerdisplay.h"
@@ -152,6 +154,60 @@ bool handleSlowMotionAnimation(const LLSD& newvalue)
return true;
}
+// static
+void LLAgent::parcelChangedCallback()
+{
+ bool can_edit = LLToolMgr::getInstance()->canEdit();
+
+ gAgent.mCanEditParcel = can_edit;
+}
+
+// static
+bool LLAgent::isActionAllowed(const LLSD& sdname)
+{
+ bool retval = false;
+
+ const std::string& param = sdname.asString();
+
+ if (param == "build")
+ {
+ retval = gAgent.canEditParcel();
+ }
+ else if (param == "speak")
+ {
+ if ( gAgent.isVoiceConnected() )
+ {
+ retval = true;
+ }
+ else
+ {
+ retval = false;
+ }
+ }
+
+ return retval;
+}
+
+// static
+void LLAgent::pressMicrophone(const LLSD& name)
+{
+ LLFirstUse::speak(false);
+
+ LLVoiceClient::getInstance()->inputUserControlState(true);
+}
+
+// static
+void LLAgent::releaseMicrophone(const LLSD& name)
+{
+ LLVoiceClient::getInstance()->inputUserControlState(false);
+}
+
+// static
+bool LLAgent::isMicrophoneOn(const LLSD& sdname)
+{
+ return LLVoiceClient::getInstance()->getUserPTTState();
+}
+
// ************************************************************
// Enabled this definition to compile a 'hacked' viewer that
// locally believes the end user has godlike powers.
@@ -183,6 +239,7 @@ LLAgent::LLAgent() :
mbTeleportKeepsLookAt(false),
mAgentAccess(new LLAgentAccess(gSavedSettings)),
+ mCanEditParcel(false),
mTeleportSourceSLURL(new LLSLURL),
mTeleportState( TELEPORT_NONE ),
mRegionp(NULL),
@@ -231,6 +288,8 @@ LLAgent::LLAgent() :
mCurrentFidget(0),
mFirstLogin(FALSE),
mGenderChosen(FALSE),
+
+ mVoiceConnected(false),
mAppearanceSerialNum(0),
@@ -246,6 +305,13 @@ LLAgent::LLAgent() :
mListener.reset(new LLAgentListener(*this));
mMoveTimer.stop();
+
+ LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&LLAgent::parcelChangedCallback));
+
+ LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Agent.IsActionAllowed", boost::bind(&LLAgent::isActionAllowed, _2));
+ LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Agent.PressMicrophone", boost::bind(&LLAgent::pressMicrophone, _2));
+ LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Agent.ReleaseMicrophone", boost::bind(&LLAgent::releaseMicrophone, _2));
+ LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Agent.IsMicrophoneOn", boost::bind(&LLAgent::isMicrophoneOn, _2));
}
// Requires gSavedSettings to be initialized.
@@ -1797,11 +1863,12 @@ void LLAgent::endAnimationUpdateUI()
// clean up UI from mode we're leaving
if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_MOUSELOOK )
{
+ gToolBarView->setToolBarsVisible(true);
// show mouse cursor
gViewerWindow->showCursor();
// show menus
gMenuBarView->setVisible(TRUE);
- LLNavigationBar::getInstance()->setVisible(TRUE);
+ LLNavigationBar::getInstance()->setVisible(TRUE && gSavedSettings.getBOOL("ShowNavbarNavigationPanel"));
gStatusBar->setVisibleForMouselook(true);
if (gSavedSettings.getBOOL("ShowMiniLocationPanel"))
@@ -1809,7 +1876,7 @@ void LLAgent::endAnimationUpdateUI()
LLPanelTopInfoBar::getInstance()->setVisible(TRUE);
}
- LLBottomTray::getInstance()->onMouselookModeOut();
+ LLChicletBar::getInstance()->setVisible(TRUE);
LLPanelStandStopFlying::getInstance()->setVisible(TRUE);
@@ -1906,14 +1973,19 @@ void LLAgent::endAnimationUpdateUI()
//---------------------------------------------------------------------
if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)
{
- // hide menus
+ // clean up UI
+ // first show anything hidden by UI toggle
+ gViewerWindow->setUIVisibility(TRUE);
+
+ // then hide stuff we want hidden for mouselook
+ gToolBarView->setToolBarsVisible(false);
gMenuBarView->setVisible(FALSE);
LLNavigationBar::getInstance()->setVisible(FALSE);
gStatusBar->setVisibleForMouselook(false);
LLPanelTopInfoBar::getInstance()->setVisible(FALSE);
- LLBottomTray::getInstance()->onMouselookModeIn();
+ LLChicletBar::getInstance()->setVisible(FALSE);
LLPanelStandStopFlying::getInstance()->setVisible(FALSE);
@@ -3361,7 +3433,14 @@ bool LLAgent::teleportCore(bool is_local)
LLFloaterReg::hideInstance("region_info");
// minimize the Search floater (STORM-1474)
- LLFloaterReg::getInstance("search")->setMinimized(TRUE);
+ {
+ LLFloater* instance = LLFloaterReg::getInstance("search");
+
+ if (instance && instance->getVisible())
+ {
+ instance->setMinimized(TRUE);
+ }
+ }
LLViewerParcelMgr::getInstance()->deselectLand();
LLViewerMediaFocus::getInstance()->clearFocus();
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 5e23ced424..0f7ed9ce68 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -282,7 +282,21 @@ public:
static void toggleFlying();
static bool enableFlying();
BOOL canFly(); // Does this parcel allow you to fly?
-
+
+ //--------------------------------------------------------------------
+ // Voice
+ //--------------------------------------------------------------------
+public:
+ bool isVoiceConnected() const { return mVoiceConnected; }
+ void setVoiceConnected(const bool b) { mVoiceConnected = b; }
+
+ static void pressMicrophone(const LLSD& name);
+ static void releaseMicrophone(const LLSD& name);
+ static bool isMicrophoneOn(const LLSD& sdname);
+
+private:
+ bool mVoiceConnected;
+
//--------------------------------------------------------------------
// Chat
//--------------------------------------------------------------------
@@ -575,6 +589,15 @@ private:
** **
*******************************************************************************/
+ // Build
+public:
+ bool canEditParcel() const { return mCanEditParcel; }
+private:
+ bool mCanEditParcel;
+
+ static bool isActionAllowed(const LLSD& sdname);
+ static void parcelChangedCallback();
+
/********************************************************************************
** **
** ACCESS
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index f195c985c0..751b73e1eb 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -2040,11 +2040,12 @@ void LLAgentCamera::resetCamera()
//-----------------------------------------------------------------------------
void LLAgentCamera::changeCameraToMouselook(BOOL animate)
{
- if (!gSavedSettings.getBOOL("EnableMouselook") || LLViewerJoystick::getInstance()->getOverrideCamera())
+ if (!gSavedSettings.getBOOL("EnableMouselook")
+ || LLViewerJoystick::getInstance()->getOverrideCamera())
{
return;
}
-
+
// visibility changes at end of animation
gViewerWindow->getWindow()->resetBusyCount();
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index b9125ec8d3..13b62cb019 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -33,6 +33,7 @@
#include "llagentwearablesfetch.h"
#include "llappearancemgr.h"
#include "llcallbacklist.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgesturemgr.h"
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
@@ -42,7 +43,6 @@
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltexlayer.h"
#include "lltooldraganddrop.h"
#include "llviewerregion.h"
@@ -1168,15 +1168,12 @@ private:
std::vector<LLWearable*> mWearablesAwaitingItems;
};
-void LLAgentWearables::createStandardWearables(BOOL female)
+void LLAgentWearables::createStandardWearables()
{
- llwarns << "Creating Standard " << (female ? "female" : "male")
- << " Wearables" << llendl;
+ llwarns << "Creating standard wearables" << llendl;
if (!isAgentAvatarValid()) return;
- gAgentAvatarp->setSex(female ? SEX_FEMALE : SEX_MALE);
-
const BOOL create[LLWearableType::WT_COUNT] =
{
TRUE, //LLWearableType::WT_SHAPE
@@ -2015,7 +2012,7 @@ void LLAgentWearables::editWearable(const LLUUID& item_id)
}
const BOOL disable_camera_switch = LLWearableType::getDisableCameraSwitch(wearable->getType());
- LLPanel* panel = LLSideTray::getInstance()->getPanel("sidepanel_appearance");
+ LLPanel* panel = LLFloaterSidePanelContainer::getPanel("appearance");
LLSidepanelAppearance::editWearable(wearable, panel, disable_camera_switch);
}
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 252b812c27..01cae3ffd8 100644
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -56,7 +56,7 @@ public:
LLAgentWearables();
virtual ~LLAgentWearables();
void setAvatarObject(LLVOAvatarSelf *avatar);
- void createStandardWearables(BOOL female);
+ void createStandardWearables();
void cleanup();
void dump();
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 3cb9b77010..663257042e 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -34,6 +34,7 @@
#include "llattachmentsmgr.h"
#include "llcommandhandler.h"
#include "lleventtimer.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgesturemgr.h"
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
@@ -43,7 +44,6 @@
#include "lloutfitslist.h"
#include "llselectmgr.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "llviewerobjectlist.h"
#include "llvoavatar.h"
#include "llvoavatarself.h"
@@ -116,7 +116,7 @@ public:
return true;
}
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD());
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
return true;
}
};
@@ -1505,7 +1505,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
void LLAppearanceMgr::updatePanelOutfitName(const std::string& name)
{
LLSidepanelAppearance* panel_appearance =
- dynamic_cast<LLSidepanelAppearance *>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ dynamic_cast<LLSidepanelAppearance *>(LLFloaterSidePanelContainer::getPanel("appearance"));
if (panel_appearance)
{
panel_appearance->refreshCurrentOutfitName(name);
@@ -1943,7 +1943,7 @@ void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* catego
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit editor should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append);
@@ -2264,6 +2264,85 @@ void LLAppearanceMgr::updateIsDirty()
}
}
+// *HACK: Must match name in Library or agent inventory
+const std::string ROOT_GESTURES_FOLDER = "Gestures";
+const std::string COMMON_GESTURES_FOLDER = "Common Gestures";
+const std::string MALE_GESTURES_FOLDER = "Male Gestures";
+const std::string FEMALE_GESTURES_FOLDER = "Female Gestures";
+const std::string SPEECH_GESTURES_FOLDER = "Speech Gestures";
+const std::string OTHER_GESTURES_FOLDER = "Other Gestures";
+
+void LLAppearanceMgr::copyLibraryGestures()
+{
+ llinfos << "Copying library gestures" << llendl;
+
+ // Copy gestures
+ LLUUID lib_gesture_cat_id =
+ gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE,false,true);
+ if (lib_gesture_cat_id.isNull())
+ {
+ llwarns << "Unable to copy gestures, source category not found" << llendl;
+ }
+ LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
+
+ std::vector<std::string> gesture_folders_to_copy;
+ gesture_folders_to_copy.push_back(MALE_GESTURES_FOLDER);
+ gesture_folders_to_copy.push_back(FEMALE_GESTURES_FOLDER);
+ gesture_folders_to_copy.push_back(COMMON_GESTURES_FOLDER);
+ gesture_folders_to_copy.push_back(SPEECH_GESTURES_FOLDER);
+ gesture_folders_to_copy.push_back(OTHER_GESTURES_FOLDER);
+
+ for(std::vector<std::string>::iterator it = gesture_folders_to_copy.begin();
+ it != gesture_folders_to_copy.end();
+ ++it)
+ {
+ std::string& folder_name = *it;
+
+ LLPointer<LLInventoryCallback> cb(NULL);
+
+ // After copying gestures, activate Common, Other, plus
+ // Male and/or Female, depending upon the initial outfit gender.
+ ESex gender = gAgentAvatarp->getSex();
+
+ std::string activate_male_gestures;
+ std::string activate_female_gestures;
+ switch (gender) {
+ case SEX_MALE:
+ activate_male_gestures = MALE_GESTURES_FOLDER;
+ break;
+ case SEX_FEMALE:
+ activate_female_gestures = FEMALE_GESTURES_FOLDER;
+ break;
+ case SEX_BOTH:
+ activate_male_gestures = MALE_GESTURES_FOLDER;
+ activate_female_gestures = FEMALE_GESTURES_FOLDER;
+ break;
+ }
+
+ if (folder_name == activate_male_gestures ||
+ folder_name == activate_female_gestures ||
+ folder_name == COMMON_GESTURES_FOLDER ||
+ folder_name == OTHER_GESTURES_FOLDER)
+ {
+ cb = new ActivateGestureCallback;
+ }
+
+ LLUUID cat_id = findDescendentCategoryIDByName(lib_gesture_cat_id,folder_name);
+ if (cat_id.isNull())
+ {
+ llwarns << "failed to find gesture folder for " << folder_name << llendl;
+ }
+ else
+ {
+ llinfos << "initiating fetch and copy for " << folder_name << " cat_id " << cat_id << llendl;
+ callAfterCategoryFetch(cat_id,
+ boost::bind(&LLAppearanceMgr::shallowCopyCategory,
+ &LLAppearanceMgr::instance(),
+ cat_id, dst_id, cb));
+ }
+ }
+}
+
void LLAppearanceMgr::autopopulateOutfits()
{
// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
@@ -2285,9 +2364,16 @@ void LLAppearanceMgr::autopopulateOutfits()
void LLAppearanceMgr::onFirstFullyVisible()
{
gAgentAvatarp->debugAvatarVisible();
+
// The auto-populate is failing at the point of generating outfits
// folders, so don't do the library copy until that is resolved.
// autopopulateOutfits();
+
+ // If this is the first time we've ever logged in,
+ // then copy default gestures from the library.
+ if (gAgent.isFirstLogin()) {
+ copyLibraryGestures();
+ }
}
bool LLAppearanceMgr::updateBaseOutfit()
@@ -2465,10 +2551,11 @@ public:
// add may be processed after login process is finished
if (mShowPanel)
{
- LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("appearance", "panel_outfits_inventory", key);
+
}
LLOutfitsList *outfits_list =
- dynamic_cast<LLOutfitsList*>(LLSideTray::getInstance()->getPanel("outfitslist_tab"));
+ dynamic_cast<LLOutfitsList*>(LLFloaterSidePanelContainer::getPanel("appearance", "outfitslist_tab"));
if (outfits_list)
{
outfits_list->setSelectedOutfitByUUID(mFolderID);
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 4b1d95cf25..c1d561781d 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -151,6 +151,9 @@ public:
// Create initial outfits from library.
void autopopulateOutfits();
+
+ // Copy initial gestures from library.
+ void copyLibraryGestures();
void wearBaseOutfit();
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index a4640f5504..e38f86d0fc 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -81,7 +81,6 @@
#include "llviewermenufile.h"
#include "llvoicechannel.h"
#include "llvoavatarself.h"
-#include "llsidetray.h"
#include "llurlmatch.h"
#include "lltextutil.h"
#include "lllogininstance.h"
@@ -110,6 +109,7 @@
// Third party library includes
#include <boost/bind.hpp>
+#include <boost/foreach.hpp>
#if LL_WINDOWS
@@ -1124,7 +1124,7 @@ void LLAppViewer::checkMemory()
{
const static F32 MEMORY_CHECK_INTERVAL = 1.0f ; //second
//const static F32 MAX_QUIT_WAIT_TIME = 30.0f ; //seconds
- //static F32 force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
+ //static F32 force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
if(!gGLManager.mDebugGPU)
{
@@ -1137,8 +1137,8 @@ void LLAppViewer::checkMemory()
}
mMemCheckTimer.reset() ;
- //update the availability of memory
- LLMemory::updateMemoryInfo() ;
+ //update the availability of memory
+ LLMemory::updateMemoryInfo() ;
bool is_low = LLMemory::isMemoryPoolLow() ;
@@ -1175,7 +1175,7 @@ bool LLAppViewer::mainLoop()
//-------------------------------------------
// Create IO Pump to use for HTTP Requests.
- gServicePump = new LLPumpIO;
+ gServicePump = new LLPumpIO(gAPRPoolp);
LLHTTPClient::setPump(*gServicePump);
LLCurl::setCAFile(gDirUtilp->getCAFile());
@@ -1217,7 +1217,7 @@ bool LLAppViewer::mainLoop()
if (gViewerWindow)
{
LLFastTimer t2(FTM_MESSAGES);
- gViewerWindow->mWindow->processMiscNativeEvents();
+ gViewerWindow->getWindow()->processMiscNativeEvents();
}
pingMainloopTimeout("Main:GatherInput");
@@ -1230,7 +1230,7 @@ bool LLAppViewer::mainLoop()
llwarns << " Someone took over my signal/exception handler (post messagehandling)!" << llendl;
}
- gViewerWindow->mWindow->gatherInput();
+ gViewerWindow->getWindow()->gatherInput();
}
#if 1 && !LL_RELEASE_FOR_DOWNLOAD
@@ -1259,9 +1259,9 @@ bool LLAppViewer::mainLoop()
// Scan keyboard for movement keys. Command keys and typing
// are handled by windows callbacks. Don't do this until we're
// done initializing. JC
- if ((gHeadlessClient || gViewerWindow->mWindow->getVisible())
+ if ((gHeadlessClient || gViewerWindow->getWindow()->getVisible())
&& gViewerWindow->getActive()
- && !gViewerWindow->mWindow->getMinimized()
+ && !gViewerWindow->getWindow()->getMinimized()
&& LLStartUp::getStartupState() == STATE_STARTED
&& (gHeadlessClient || !gViewerWindow->getShowProgress())
&& !gFocusMgr.focusLocked())
@@ -1340,7 +1340,7 @@ bool LLAppViewer::mainLoop()
}
// yield cooperatively when not running as foreground window
- if ( (gViewerWindow && !gViewerWindow->mWindow->getVisible())
+ if ( (gViewerWindow && !gViewerWindow->getWindow()->getVisible())
|| !gFocusMgr.getAppHasFocus())
{
// Sleep if we're not rendering, or the window is minimized.
@@ -1534,16 +1534,16 @@ bool LLAppViewer::cleanup()
}
// *TODO - generalize this and move DSO wrangling to a helper class -brad
- for(std::map<apr_dso_handle_t*, boost::shared_ptr<LLAPRPool> >::iterator plugin = mPlugins.begin();
- plugin != mPlugins.end(); ++plugin)
+ std::set<struct apr_dso_handle_t *>::const_iterator i;
+ for(i = mPlugins.begin(); i != mPlugins.end(); ++i)
{
int (*ll_plugin_stop_func)(void) = NULL;
- apr_status_t rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll_plugin_stop_func, plugin->first, "ll_plugin_stop");
+ apr_status_t rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll_plugin_stop_func, *i, "ll_plugin_stop");
ll_plugin_stop_func();
- rv = apr_dso_unload(plugin->first);
+ rv = apr_dso_unload(*i);
}
- mPlugins.clear(); // Forget handles and destroy all memory pools.
+ mPlugins.clear();
//flag all elements as needing to be destroyed immediately
// to ensure shutdown order
@@ -1981,7 +1981,7 @@ bool LLAppViewer::initThreads()
if (LLFastTimer::sLog || LLFastTimer::sMetricLog)
{
- LLFastTimer::sLogLock = new LLMutex;
+ LLFastTimer::sLogLock = new LLMutex(NULL);
mFastTimerLogThread = new LLFastTimerLogThread(LLFastTimer::sLogName);
mFastTimerLogThread->start();
}
@@ -2042,42 +2042,37 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
llerrs << "Invalid settings location list" << llendl;
}
- for(LLInitParam::ParamIterator<SettingsGroup>::const_iterator it = mSettingsLocationList->groups.begin(), end_it = mSettingsLocationList->groups.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(const SettingsGroup& group, mSettingsLocationList->groups)
{
// skip settings groups that aren't the one we requested
- if (it->name() != location_key) continue;
+ if (group.name() != location_key) continue;
- ELLPath path_index = (ELLPath)it->path_index();
+ ELLPath path_index = (ELLPath)group.path_index();
if(path_index <= LL_PATH_NONE || path_index >= LL_PATH_LAST)
{
llerrs << "Out of range path index in app_settings/settings_files.xml" << llendl;
return false;
}
- LLInitParam::ParamIterator<SettingsFile>::const_iterator file_it, end_file_it;
- for (file_it = it->files.begin(), end_file_it = it->files.end();
- file_it != end_file_it;
- ++file_it)
+ BOOST_FOREACH(const SettingsFile& file, group.files)
{
- llinfos << "Attempting to load settings for the group " << file_it->name()
+ llinfos << "Attempting to load settings for the group " << file.name()
<< " - from location " << location_key << llendl;
- LLControlGroup* settings_group = LLControlGroup::getInstance(file_it->name);
+ LLControlGroup* settings_group = LLControlGroup::getInstance(file.name);
if(!settings_group)
{
- llwarns << "No matching settings group for name " << file_it->name() << llendl;
+ llwarns << "No matching settings group for name " << file.name() << llendl;
continue;
}
std::string full_settings_path;
- if (file_it->file_name_setting.isProvided()
- && gSavedSettings.controlExists(file_it->file_name_setting))
+ if (file.file_name_setting.isProvided()
+ && gSavedSettings.controlExists(file.file_name_setting))
{
// try to find filename stored in file_name_setting control
- full_settings_path = gSavedSettings.getString(file_it->file_name_setting);
+ full_settings_path = gSavedSettings.getString(file.file_name_setting);
if (full_settings_path.empty())
{
continue;
@@ -2091,16 +2086,16 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
else
{
// by default, use specified file name
- full_settings_path = gDirUtilp->getExpandedFilename((ELLPath)path_index, file_it->file_name());
+ full_settings_path = gDirUtilp->getExpandedFilename((ELLPath)path_index, file.file_name());
}
- if(settings_group->loadFromFile(full_settings_path, set_defaults, file_it->persistent))
+ if(settings_group->loadFromFile(full_settings_path, set_defaults, file.persistent))
{ // success!
llinfos << "Loaded settings file " << full_settings_path << llendl;
}
else
{ // failed to load
- if(file_it->required)
+ if(file.required)
{
llerrs << "Error: Cannot load required settings file from: " << full_settings_path << llendl;
return false;
@@ -2123,20 +2118,15 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
std::string LLAppViewer::getSettingsFilename(const std::string& location_key,
const std::string& file)
{
- for(LLInitParam::ParamIterator<SettingsGroup>::const_iterator it = mSettingsLocationList->groups.begin(), end_it = mSettingsLocationList->groups.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(const SettingsGroup& group, mSettingsLocationList->groups)
{
- if (it->name() == location_key)
+ if (group.name() == location_key)
{
- LLInitParam::ParamIterator<SettingsFile>::const_iterator file_it, end_file_it;
- for (file_it = it->files.begin(), end_file_it = it->files.end();
- file_it != end_file_it;
- ++file_it)
+ BOOST_FOREACH(const SettingsFile& settings_file, group.files)
{
- if (file_it->name() == file)
+ if (settings_file.name() == file)
{
- return file_it->file_name;
+ return settings_file.file_name;
}
}
}
@@ -2930,7 +2920,7 @@ bool LLAppViewer::initWindow()
if (gSavedSettings.getBOOL("WindowMaximized"))
{
- gViewerWindow->mWindow->maximize();
+ gViewerWindow->getWindow()->maximize();
}
//
@@ -2973,7 +2963,7 @@ bool LLAppViewer::initWindow()
if (gSavedSettings.getBOOL("WindowMaximized"))
{
- gViewerWindow->mWindow->maximize();
+ gViewerWindow->getWindow()->maximize();
}
LLUI::sWindow = gViewerWindow->getWindow();
@@ -2985,7 +2975,7 @@ bool LLAppViewer::initWindow()
gViewerWindow->initBase();
// show viewer window
- //gViewerWindow->mWindow->show();
+ //gViewerWindow->getWindow()->show();
LL_INFOS("AppInit") << "Window initialization done." << LL_ENDL;
return true;
@@ -3019,12 +3009,12 @@ void LLAppViewer::cleanupSavedSettings()
// as we don't track it in callbacks
if(NULL != gViewerWindow)
{
- BOOL maximized = gViewerWindow->mWindow->getMaximized();
+ BOOL maximized = gViewerWindow->getWindow()->getMaximized();
if (!maximized)
{
LLCoordScreen window_pos;
- if (gViewerWindow->mWindow->getPosition(&window_pos))
+ if (gViewerWindow->getWindow()->getPosition(&window_pos))
{
gSavedSettings.setS32("WindowX", window_pos.mX);
gSavedSettings.setS32("WindowY", window_pos.mY);
@@ -3229,7 +3219,8 @@ void LLAppViewer::handleViewerCrash()
else crash_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,ERROR_MARKER_FILE_NAME);
llinfos << "Creating crash marker file " << crash_file_name << llendl;
- LLAPRFile crash_file(crash_file_name, LL_APR_W);
+ LLAPRFile crash_file ;
+ crash_file.open(crash_file_name, LL_APR_W);
if (crash_file.getFileHandle())
{
LL_INFOS("MarkerFile") << "Created crash marker file " << crash_file_name << LL_ENDL;
@@ -3293,10 +3284,11 @@ bool LLAppViewer::anotherInstanceRunning()
LL_DEBUGS("MarkerFile") << "Checking marker file for lock..." << LL_ENDL;
//Freeze case checks
- if (LLAPRFile::isExist(marker_file, LL_APR_RB))
+ if (LLAPRFile::isExist(marker_file, NULL, LL_APR_RB))
{
// File exists, try opening with write permissions
- LLAPRFile outfile(marker_file, LL_APR_WB);
+ LLAPRFile outfile ;
+ outfile.open(marker_file, LL_APR_WB);
apr_file_t* fMarker = outfile.getFileHandle() ;
if (!fMarker)
{
@@ -3335,25 +3327,25 @@ void LLAppViewer::initMarkerFile()
std::string llerror_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, LLERROR_MARKER_FILE_NAME);
std::string error_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ERROR_MARKER_FILE_NAME);
- if (LLAPRFile::isExist(mMarkerFileName, LL_APR_RB) && !anotherInstanceRunning())
+ if (LLAPRFile::isExist(mMarkerFileName, NULL, LL_APR_RB) && !anotherInstanceRunning())
{
gLastExecEvent = LAST_EXEC_FROZE;
LL_INFOS("MarkerFile") << "Exec marker found: program froze on previous execution" << LL_ENDL;
}
- if(LLAPRFile::isExist(logout_marker_file, LL_APR_RB))
+ if(LLAPRFile::isExist(logout_marker_file, NULL, LL_APR_RB))
{
gLastExecEvent = LAST_EXEC_LOGOUT_FROZE;
LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL;
LLAPRFile::remove(logout_marker_file);
}
- if(LLAPRFile::isExist(llerror_marker_file, LL_APR_RB))
+ if(LLAPRFile::isExist(llerror_marker_file, NULL, LL_APR_RB))
{
if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH;
else gLastExecEvent = LAST_EXEC_LLERROR_CRASH;
LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL;
LLAPRFile::remove(llerror_marker_file);
}
- if(LLAPRFile::isExist(error_marker_file, LL_APR_RB))
+ if(LLAPRFile::isExist(error_marker_file, NULL, LL_APR_RB))
{
if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH;
else gLastExecEvent = LAST_EXEC_OTHER_CRASH;
@@ -3369,7 +3361,7 @@ void LLAppViewer::initMarkerFile()
// Create the marker file for this execution & lock it
apr_status_t s;
- s = mMarkerFile.open(mMarkerFileName, LL_APR_W, LLAPRFile::long_lived);
+ s = mMarkerFile.open(mMarkerFileName, LL_APR_W, TRUE);
if (s == APR_SUCCESS && mMarkerFile.getFileHandle())
{
@@ -3464,8 +3456,6 @@ void LLAppViewer::requestQuit()
gFloaterView->closeAllChildren(true);
}
- LLSideTray::getInstance()->notifyChildren(LLSD().with("request","quit"));
-
send_stats();
gLogoutTimer.reset();
@@ -3484,20 +3474,6 @@ static bool finish_quit(const LLSD& notification, const LLSD& response)
}
static LLNotificationFunctorRegistration finish_quit_reg("ConfirmQuit", finish_quit);
-static bool switch_standard_skin_and_quit(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-
- if (option == 0)
- {
- gSavedSettings.setString("SessionSettingsFile", "");
- LLAppViewer::instance()->requestQuit();
- }
- return false;
-}
-
-static LLNotificationFunctorRegistration standard_skin_quit_reg("SwitchToStandardSkinAndQuit", switch_standard_skin_and_quit);
-
void LLAppViewer::userQuit()
{
if (gDisconnected || gViewerWindow->getProgressView()->getVisible())
@@ -4324,7 +4300,7 @@ void LLAppViewer::idle()
///////////////////////////////////////
// Agent and camera movement
//
- LLCoordGL current_mouse = gViewerWindow->getCurrentMouse();
+ LLCoordGL current_mouse = gViewerWindow->getCurrentMouse();
{
// After agent and camera moved, figure out if we need to
@@ -4526,10 +4502,6 @@ void LLAppViewer::idleShutdown()
return;
}
- if (LLSideTray::getInstance()->notifyChildren(LLSD().with("request","wait_quit")))
- {
- return;
- }
@@ -4615,7 +4587,8 @@ void LLAppViewer::sendLogoutRequest()
gLogoutInProgress = TRUE;
mLogoutMarkerFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,LOGOUT_MARKER_FILE_NAME);
- LLAPRFile outfile(mLogoutMarkerFileName, LL_APR_W);
+ LLAPRFile outfile ;
+ outfile.open(mLogoutMarkerFileName, LL_APR_W);
mLogoutMarkerFile = outfile.getFileHandle() ;
if (mLogoutMarkerFile)
{
@@ -5067,15 +5040,14 @@ void LLAppViewer::loadEventHostModule(S32 listen_port)
}
#endif // LL_WINDOWS
- boost::shared_ptr<LLAPRPool> eventhost_dso_memory_pool_ptr(new LLAPRPool);
- LLAPRPool& eventhost_dso_memory_pool(*eventhost_dso_memory_pool_ptr);
- apr_dso_handle_t* eventhost_dso_handle = NULL;
+ apr_dso_handle_t * eventhost_dso_handle = NULL;
+ apr_pool_t * eventhost_dso_memory_pool = NULL;
//attempt to load the shared library
- eventhost_dso_memory_pool.create();
+ apr_pool_create(&eventhost_dso_memory_pool, NULL);
apr_status_t rv = apr_dso_load(&eventhost_dso_handle,
dso_path.c_str(),
- eventhost_dso_memory_pool());
+ eventhost_dso_memory_pool);
llassert_always(! ll_apr_warn_status(rv, eventhost_dso_handle));
llassert_always(eventhost_dso_handle != NULL);
@@ -5095,8 +5067,7 @@ void LLAppViewer::loadEventHostModule(S32 listen_port)
llerrs << "problem loading eventhost plugin, status: " << status << llendl;
}
- // Store the handle and link it to the pool that was used to allocate it.
- mPlugins[eventhost_dso_handle] = eventhost_dso_memory_pool_ptr;
+ mPlugins.insert(eventhost_dso_handle);
}
void LLAppViewer::launchUpdater()
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 168aaf5d94..71a7868191 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -270,7 +270,7 @@ private:
LLAllocator mAlloc;
- std::map<apr_dso_handle_t*, boost::shared_ptr<LLAPRPool> > mPlugins;
+ std::set<struct apr_dso_handle_t*> mPlugins;
LLFrameTimer mMemCheckTimer;
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index db11462fcb..48d02dfeaa 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -111,7 +111,6 @@ int main( int argc, char **argv )
}
delete viewer_app_ptr;
viewer_app_ptr = NULL;
-
return 0;
}
diff --git a/indra/newview/llappviewerlinux_api_dbus.cpp b/indra/newview/llappviewerlinux_api_dbus.cpp
index 1ae469dfcf..32e7e0a83d 100644
--- a/indra/newview/llappviewerlinux_api_dbus.cpp
+++ b/indra/newview/llappviewerlinux_api_dbus.cpp
@@ -27,11 +27,11 @@
#if LL_DBUS_ENABLED
#include "linden_common.h"
-#include "llaprpool.h"
extern "C" {
#include <dbus/dbus-glib.h>
+#include "apr_pools.h"
#include "apr_dso.h"
}
@@ -44,7 +44,7 @@ extern "C" {
#undef LL_DBUS_SYM
static bool sSymsGrabbed = false;
-static LLAPRPool sSymDBUSDSOMemoryPool;
+static apr_pool_t *sSymDBUSDSOMemoryPool = NULL;
static apr_dso_handle_t *sSymDBUSDSOHandleG = NULL;
bool grab_dbus_syms(std::string dbus_dso_name)
@@ -63,11 +63,11 @@ bool grab_dbus_syms(std::string dbus_dso_name)
#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##DBUSSYM, sSymDBUSDSOHandle, #DBUSSYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #DBUSSYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #DBUSSYM, (void*)ll##DBUSSYM);}while(0)
//attempt to load the shared library
- sSymDBUSDSOMemoryPool.create();
+ apr_pool_create(&sSymDBUSDSOMemoryPool, NULL);
if ( APR_SUCCESS == (rv = apr_dso_load(&sSymDBUSDSOHandle,
dbus_dso_name.c_str(),
- sSymDBUSDSOMemoryPool()) ))
+ sSymDBUSDSOMemoryPool) ))
{
INFOMSG("Found DSO: %s", dbus_dso_name.c_str());
@@ -109,7 +109,11 @@ void ungrab_dbus_syms()
sSymDBUSDSOHandleG = NULL;
}
- sSymDBUSDSOMemoryPool.destroy();
+ if ( sSymDBUSDSOMemoryPool )
+ {
+ apr_pool_destroy(sSymDBUSDSOMemoryPool);
+ sSymDBUSDSOMemoryPool = NULL;
+ }
// NULL-out all of the symbols we'd grabbed
#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) do{ll##DBUSSYM = NULL;}while(0)
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index 8929c0c1a4..c2916717bd 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -113,7 +113,6 @@ int main( int argc, char **argv )
}
delete viewer_app_ptr;
viewer_app_ptr = NULL;
-
return 0;
}
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 4cdfcea64e..10fd6b739e 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -47,6 +47,7 @@
#include "llfloatergroups.h"
#include "llfloaterreg.h"
#include "llfloaterpay.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterwebcontent.h"
#include "llfloaterworldmap.h"
#include "llfolderview.h"
@@ -60,7 +61,6 @@
#include "llpaneloutfitedit.h"
#include "llpanelprofile.h"
#include "llrecentpeople.h"
-#include "llsidetray.h"
#include "lltrans.h"
#include "llviewercontrol.h"
#include "llviewerobjectlist.h"
@@ -316,12 +316,13 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa
// PROFILES: open in webkit window
const bool show_chrome = false;
static LLCachedControl<LLRect> profile_rect(gSavedSettings, "WebProfileRect");
- LLFloaterWebContent::create(LLFloaterWebContent::Params().
- url(url).
- id(agent_id.asString()).
- show_chrome(show_chrome).
- window_class("profile").
- preferred_media_size(profile_rect));
+ LLFloaterWebContent::Params p;
+ p.url(url).
+ id(agent_id.asString()).
+ show_chrome(show_chrome).
+ window_class("profile").
+ preferred_media_size(profile_rect);
+ LLFloaterReg::showInstance("profile", p);
}
// static
@@ -342,6 +343,12 @@ bool LLAvatarActions::profileVisible(const LLUUID& id)
return browser && browser->isShown();
}
+//static
+LLFloater* LLAvatarActions::getProfileFloater(const LLUUID& id)
+{
+ LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", LLSD().with("id", id)));
+ return browser;
+}
//static
void LLAvatarActions::hideProfile(const LLUUID& id)
@@ -438,8 +445,7 @@ void LLAvatarActions::csr(const LLUUID& id, std::string name)
void LLAvatarActions::share(const LLUUID& id)
{
LLSD key;
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
-
+ LLFloaterSidePanelContainer::showPanel("inventory", key);
LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL,id);
@@ -462,7 +468,7 @@ namespace action_give_inventory
*/
static LLInventoryPanel* get_outfit_editor_inventory_panel()
{
- LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+ LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
if (NULL == panel_outfit_edit) return NULL;
LLInventoryPanel* inventory_panel = panel_outfit_edit->findChild<LLInventoryPanel>("folder_view");
@@ -696,9 +702,11 @@ std::set<LLUUID> LLAvatarActions::getInventorySelectedUUIDs()
if (inventory_selected_uuids.empty())
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
- inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList();
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList();
+ }
}
return inventory_selected_uuids;
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index fbfd815f41..748b7cb3d1 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -35,7 +35,7 @@
#include <vector>
class LLInventoryPanel;
-
+class LLFloater;
/**
* Friend-related actions (add, remove, offer teleport, etc)
@@ -96,6 +96,7 @@ public:
static void showProfile(const LLUUID& id);
static void hideProfile(const LLUUID& id);
static bool profileVisible(const LLUUID& id);
+ static LLFloater* getProfileFloater(const LLUUID& id);
/**
* Show avatar on world map.
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
deleted file mode 100644
index c8cfe5b51e..0000000000
--- a/indra/newview/llbottomtray.cpp
+++ /dev/null
@@ -1,1991 +0,0 @@
-/**
- * @file llbottomtray.cpp
- * @brief LLBottomTray class implementation
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h" // must be first include
-
-#define LLBOTTOMTRAY_CPP
-#include "llbottomtray.h"
-
-// library includes
-#include "llfloaterreg.h"
-#include "llflyoutbutton.h"
-#include "lllayoutstack.h"
-#include "llnotifications.h"
-#include "llnotificationsutil.h"
-#include "lltexteditor.h"
-
-// newview includes
-#include "llagent.h"
-#include "llagentcamera.h"
-#include "llavataractions.h"
-#include "llchiclet.h"
-#include "llfloatercamera.h"
-#include "llhints.h"
-#include "llimfloater.h" // for LLIMFloater
-#include "llnearbychatbar.h"
-#include "llnearbychatbarlistener.h"
-#include "llsidetray.h"
-#include "llspeakbutton.h"
-#include "llsplitbutton.h"
-#include "llsyswellwindow.h"
-#include "lltoolmgr.h"
-#include "llviewerparcelmgr.h"
-
-#include "llviewerwindow.h"
-#include "llsdserialize.h"
-#include "llfirstuse.h"
-
-// Distance from mouse down on which drag'n'drop should be started.
-#define DRAG_START_DISTANCE 3
-
-static const std::string SORTING_DATA_FILE_NAME = "bottomtray_buttons_order.xml";
-
-LLDefaultChildRegistry::Register<LLBottomtrayButton> bottomtray_button("bottomtray_button");
-
-// LLBottomtrayButton methods
-
-// virtual
-BOOL LLBottomtrayButton::handleHover(S32 x, S32 y, MASK mask)
-{
- if (mCanDrag)
- {
- // pass hover to bottomtray
- S32 screenX, screenY;
- localPointToScreen(x, y, &screenX, &screenY);
- LLBottomTray::getInstance()->onDraggableButtonHover(screenX, screenY);
-
- return TRUE;
- }
- else
- {
- return LLButton::handleHover(x, y, mask);
- }
-}
-//virtual
-BOOL LLBottomtrayButton::handleMouseUp(S32 x, S32 y, MASK mask)
-{
- if (mCanDrag)
- {
- S32 screenX, screenY;
- localPointToScreen(x, y, &screenX, &screenY);
- // pass mouse up to bottomtray
- LLBottomTray::getInstance()->onDraggableButtonMouseUp(this, screenX, screenY);
- }
- return LLButton::handleMouseUp(x, y, mask);
-}
-//virtual
-BOOL LLBottomtrayButton::handleMouseDown(S32 x, S32 y, MASK mask)
-{
- if (mCanDrag)
- {
- S32 screenX, screenY;
- localPointToScreen(x, y, &screenX, &screenY);
- // pass mouse up to bottomtray
- LLBottomTray::getInstance()->onDraggableButtonMouseDown(this, screenX, screenY);
- }
- return LLButton::handleMouseDown(x, y, mask);
-}
-
-static void update_build_button_enable_state()
-{
- bool can_edit = LLToolMgr::getInstance()->canEdit();
-
- LLBottomTray::getInstance()->getChildView("build_btn")->setEnabled(can_edit);
-}
-
-// Build time optimization, generate extern template once in .cpp file
-template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance();
-
-namespace
-{
- const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
-
- S32 get_panel_min_width(LLLayoutStack* stack, LLView* panel)
- {
- S32 minimal_width = 0;
- llassert(stack);
- if ( stack && panel && panel->getVisible() )
- {
- stack->getPanelMinSize(panel->getName(), &minimal_width);
- }
- return minimal_width;
- }
-
- S32 get_panel_max_width(LLLayoutStack* stack, LLPanel* panel)
- {
- S32 max_width = 0;
- llassert(stack);
- if ( stack && panel && panel->getVisible() )
- {
- stack->getPanelMaxSize(panel->getName(), &max_width);
- }
- return max_width;
- }
-
- S32 get_curr_width(LLUICtrl* ctrl)
- {
- S32 cur_width = 0;
- if ( ctrl && ctrl->getVisible() )
- {
- cur_width = ctrl->getRect().getWidth();
- }
- return cur_width;
- }
-}
-
-class LLBottomTrayLite
- : public LLPanel
-{
-public:
- LLBottomTrayLite()
- : mNearbyChatBar(NULL),
- mChatBarContainer(NULL),
- mGesturePanel(NULL)
- {
- mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
- buildFromFile("panel_bottomtray_lite.xml");
- }
-
- BOOL postBuild()
- {
- mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar");
- mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel");
- mGesturePanel = getChild<LLPanel>("gesture_panel");
-
- // Hide "show_nearby_chat" button
- if (mNearbyChatBar)
- {
- LLLineEditor* chat_box = mNearbyChatBar->getChatBox();
- LLUICtrl* show_btn = mNearbyChatBar->getChild<LLUICtrl>("show_nearby_chat");
- S32 delta_width = show_btn->getRect().getWidth();
- show_btn->setVisible(FALSE);
- chat_box->reshape(chat_box->getRect().getWidth() + delta_width, chat_box->getRect().getHeight());
- }
- return TRUE;
- }
-
- void onFocusLost()
- {
- if (gAgentCamera.cameraMouselook())
- {
- LLBottomTray::getInstance()->setVisible(FALSE);
- }
- }
-
- LLNearbyChatBar* mNearbyChatBar;
- LLLayoutPanel* mChatBarContainer;
- LLPanel* mGesturePanel;
-};
-
-LLBottomTray::LLBottomTray(const LLSD&)
-: mDesiredNearbyChatWidth(0),
- mChicletPanel(NULL),
- mSpeakPanel(NULL),
- mSpeakBtn(NULL),
- mNearbyChatBar(NULL),
- mChatBarContainer(NULL),
- mNearbyCharResizeHandlePanel(NULL),
- mToolbarStack(NULL),
- mMovementButton(NULL),
- mResizeState(RS_NORESIZE),
- mBottomTrayContextMenu(NULL),
- mCamButton(NULL),
- mBottomTrayLite(NULL),
- mIsInLiteMode(false),
- mDragStarted(false),
- mDraggedItem(NULL),
- mLandingTab(NULL),
- mCheckForDrag(false)
-{
- // Firstly add our self to IMSession observers, so we catch session events
- // before chiclets do that.
- LLIMMgr::getInstance()->addSessionObserver(this);
-
- mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
-
- buildFromFile("panel_bottomtray.xml");
-
- LLUICtrl::CommitCallbackRegistry::defaultRegistrar().add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2));
-
- //this is to fix a crash that occurs because LLBottomTray is a singleton
- //and thus is deleted at the end of the viewers lifetime, but to be cleanly
- //destroyed LLBottomTray requires some subsystems that are long gone
- //LLUI::getRootView()->addChild(this);
-
- {
- mBottomTrayLite = new LLBottomTrayLite();
- mBottomTrayLite->setFollowsAll();
- mBottomTrayLite->setVisible(FALSE);
- }
-
- mImageDragIndication = LLUI::getUIImage(getString("DragIndicationImageName"));
- mDesiredNearbyChatWidth = mNearbyChatBar ? mNearbyChatBar->getRect().getWidth() : 0;
-}
-
-LLBottomTray::~LLBottomTray()
-{
- if (!LLSingleton<LLIMMgr>::destroyed())
- {
- LLIMMgr::getInstance()->removeSessionObserver(this);
- }
-
- if (mNearbyChatBar)
- {
- // store custom width of chatbar panel.
- S32 custom_width = mChatBarContainer->getRect().getWidth();
- gSavedSettings.setS32("ChatBarCustomWidth", custom_width);
- }
-
- // emulate previous floater behavior to be hidden on startup.
- // override effect of save_visibility=true.
- // this attribute is necessary to button.initial_callback=Button.SetFloaterToggle works properly:
- // i.g when floater changes its visibility - button changes its toggle state.
- getChild<LLUICtrl>("build_btn")->setControlValue(false);
- getChild<LLUICtrl>("search_btn")->setControlValue(false);
- getChild<LLUICtrl>("world_map_btn")->setControlValue(false);
-}
-
-// *TODO Vadim: why void* ?
-void* LLBottomTray::createNearbyChatBar(void* userdata)
-{
- return new LLNearbyChatBar();
-}
-
-LLNearbyChatBar* LLBottomTray::getNearbyChatBar()
-{
- return mIsInLiteMode ? mBottomTrayLite->mNearbyChatBar : mNearbyChatBar;
-}
-
-LLIMChiclet* LLBottomTray::createIMChiclet(const LLUUID& session_id)
-{
- LLIMChiclet::EType im_chiclet_type = LLIMChiclet::getIMSessionType(session_id);
-
- switch (im_chiclet_type)
- {
- case LLIMChiclet::TYPE_IM:
- return getChicletPanel()->createChiclet<LLIMP2PChiclet>(session_id);
- case LLIMChiclet::TYPE_GROUP:
- return getChicletPanel()->createChiclet<LLIMGroupChiclet>(session_id);
- case LLIMChiclet::TYPE_AD_HOC:
- return getChicletPanel()->createChiclet<LLAdHocChiclet>(session_id);
- case LLIMChiclet::TYPE_UNKNOWN:
- break;
- }
-
- return NULL;
-}
-
-//virtual
-void LLBottomTray::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id)
-{
- if (!getChicletPanel()) return;
-
- LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
- if (!session) return;
-
- // no need to spawn chiclets for participants in P2P calls called through Avaline
- if (session->isP2P() && session->isOtherParticipantAvaline()) return;
-
- if (getChicletPanel()->findChiclet<LLChiclet>(session_id)) return;
-
- LLIMChiclet* chiclet = createIMChiclet(session_id);
- if(chiclet)
- {
- chiclet->setIMSessionName(name);
- chiclet->setOtherParticipantId(other_participant_id);
-
- LLIMFloater::onIMChicletCreated(session_id);
-
- }
- else
- {
- llerrs << "Could not create chiclet" << llendl;
- }
-}
-
-//virtual
-void LLBottomTray::sessionRemoved(const LLUUID& session_id)
-{
- if(getChicletPanel())
- {
- // IM floater should be closed when session removed and associated chiclet closed
- LLIMFloater* iMfloater = LLFloaterReg::findTypedInstance<LLIMFloater>(
- "impanel", session_id);
- if (iMfloater != NULL)
- {
- iMfloater->closeFloater();
- }
-
- getChicletPanel()->removeChiclet(session_id);
- }
-}
-
-void LLBottomTray::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id)
-{
- //this is only needed in case of outgoing ad-hoc/group chat sessions
- LLChicletPanel* chiclet_panel = getChicletPanel();
- if (chiclet_panel)
- {
- //it should be ad-hoc im chiclet or group im chiclet
- LLChiclet* chiclet = chiclet_panel->findChiclet<LLChiclet>(old_session_id);
- if (chiclet) chiclet->setSessionId(new_session_id);
- }
-}
-
-S32 LLBottomTray::getTotalUnreadIMCount()
-{
- return getChicletPanel()->getTotalUnreadIMCount();
-}
-
-// virtual
-void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, bool proximal)
-{
- // Time it takes to connect to voice channel might be pretty long,
- // so don't expect user login or STATUS_VOICE_ENABLED to be followed by STATUS_JOINED.
- BOOL enable = FALSE;
-
- switch (status)
- {
- // Do not add STATUS_VOICE_ENABLED because voice chat is
- // inactive until STATUS_JOINED
- case STATUS_JOINED:
- enable = TRUE;
- break;
- default:
- enable = FALSE;
- break;
- }
-
- // We have to enable/disable right and left parts of speak button separately (EXT-4648)
- getChild<LLButton>("speak_btn")->setEnabled(enable);
-
- // skipped to avoid button blinking
- if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
- {
- bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
- getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status);
- gMenuBarView->getChild<LLView>("Nearby Voice")->setEnabled(voice_status);
- if (voice_status)
- {
- LLFirstUse::speak(true);
- }
- }
-}
-
-void LLBottomTray::onMouselookModeOut()
-{
- mIsInLiteMode = false;
- mBottomTrayLite->setVisible(FALSE);
- mNearbyChatBar->getChatBox()->setText(mBottomTrayLite->mNearbyChatBar->getChatBox()->getText());
- setVisible(TRUE);
-}
-
-void LLBottomTray::onMouselookModeIn()
-{
- setVisible(FALSE);
-
- // Attach the lite bottom tray
- if (getParent() && mBottomTrayLite->getParent() != getParent())
- getParent()->addChild(mBottomTrayLite);
-
- mBottomTrayLite->setShape(getLocalRect());
- mBottomTrayLite->mNearbyChatBar->getChatBox()->setText(mNearbyChatBar->getChatBox()->getText());
- mBottomTrayLite->mGesturePanel->setVisible(gSavedSettings.getBOOL("ShowGestureButton"));
-
- mIsInLiteMode = true;
-}
-
-//virtual
-// setVisible used instead of onVisibilityChange, since LLAgent calls it on entering/leaving mouselook mode.
-// If bottom tray is already visible in mouselook mode, then onVisibilityChange will not be called from setVisible(true),
-void LLBottomTray::setVisible(BOOL visible)
-{
- if (mIsInLiteMode)
- {
- mBottomTrayLite->setVisible(visible);
- }
- else
- {
- LLPanel::setVisible(visible);
- }
-}
-
-S32 LLBottomTray::notifyParent(const LLSD& info)
-{
- if(info.has("well_empty")) // implementation of EXT-3397
- {
- const std::string chiclet_name = info["well_name"];
-
- // only "im_well" or "notification_well" names are expected.
- // They are set in panel_bottomtray.xml in <chiclet_im_well> & <chiclet_notification>
- llassert("im_well" == chiclet_name || "notification_well" == chiclet_name);
-
- BOOL should_be_visible = !info["well_empty"];
- showWellButton("im_well" == chiclet_name ? RS_IM_WELL : RS_NOTIFICATION_WELL, should_be_visible);
- return 1;
- }
-
- if (info.has("action") && info["action"] == "resize")
- {
- const std::string& name = info["view_name"];
-
- // expected only resize of nearby chatbar
- if (mChatBarContainer->getName() != name) return LLPanel::notifyParent(info);
-
- const S32 new_width = info["new_width"];
-
- processChatbarCustomization(new_width);
-
- return 2;
- }
- return LLPanel::notifyParent(info);
-}
-
-void LLBottomTray::showBottomTrayContextMenu(S32 x, S32 y, MASK mask)
-{
- // We should show BottomTrayContextMenu in last turn
- if (mBottomTrayContextMenu && !LLMenuGL::sMenuContainer->getVisibleMenu())
- {
- //there are no other context menu (IM chiclet etc ), so we can show BottomTrayContextMenu
-
- updateContextMenu(x, y, mask);
- mBottomTrayContextMenu->buildDrawLabels();
- mBottomTrayContextMenu->updateParent(LLMenuGL::sMenuContainer);
- LLMenuGL::showPopup(this, mBottomTrayContextMenu, x, y);
-
- }
-}
-
-void LLBottomTray::updateContextMenu(S32 x, S32 y, MASK mask)
-{
- LLUICtrl* edit_box = mNearbyChatBar->getChild<LLUICtrl>("chat_box");
-
- S32 local_x = x - mChatBarContainer->getRect().mLeft - edit_box->getRect().mLeft;
- S32 local_y = y - mChatBarContainer->getRect().mBottom - edit_box->getRect().mBottom;
-
- bool in_edit_box = edit_box->pointInView(local_x, local_y);
-
- mBottomTrayContextMenu->setItemVisible("Separator", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Cut", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Copy", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Paste", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Delete", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Select_All", in_edit_box);
-}
-
-void LLBottomTray::showSpeakButton(bool visible)
-{
- // Show/hide the button
- setTrayButtonVisible(RS_BUTTON_SPEAK, visible);
-
- // and adjust other panels according to the occupied/freed space.
- const S32 panel_width = mSpeakPanel->getRect().getWidth();
- if (visible)
- {
- processWidthDecreased(-panel_width);
- }
- else
- {
- processWidthIncreased(panel_width);
- }
-}
-
-void LLBottomTray::toggleMovementControls()
-{
- if (mMovementButton)
- mMovementButton->onCommit();
-}
-
-void LLBottomTray::toggleCameraControls()
-{
- if (mCamButton)
- mCamButton->onCommit();
-}
-
-BOOL LLBottomTray::postBuild()
-{
- LLHints::registerHintTarget("bottom_tray", LLView::getHandle());
- LLHints::registerHintTarget("dest_guide_btn", getChild<LLUICtrl>("destination_btn")->getHandle());
- LLHints::registerHintTarget("avatar_picker_btn", getChild<LLUICtrl>("avatar_btn")->getHandle());
-
- LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("NearbyChatBar.Action", boost::bind(&LLBottomTray::onContextMenuItemClicked, this, _2));
- LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("NearbyChatBar.EnableMenuItem", boost::bind(&LLBottomTray::onContextMenuItemEnabled, this, _2));
-
- mBottomTrayContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_bottomtray.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
- gMenuHolder->addChild(mBottomTrayContextMenu);
-
- mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar");
- LLHints::registerHintTarget("chat_bar", mNearbyChatBar->LLView::getHandle());
-
- mListener.reset(new LLNearbyChatBarListener(*mNearbyChatBar));
-
- mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel");
- mNearbyCharResizeHandlePanel = getChild<LLPanel>("chat_bar_resize_handle_panel");
-
- mToolbarStack = getChild<LLLayoutStack>("toolbar_stack");
- mMovementButton = getChild<LLButton>("movement_btn");
- LLHints::registerHintTarget("move_btn", mMovementButton->getHandle());
- mCamButton = getChild<LLButton>("camera_btn");
- setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));
-
- mSpeakPanel = getChild<LLPanel>("speak_panel");
- mSpeakBtn = findChild<LLSpeakButton>("talk");
- if (mSpeakBtn)
- {
- LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
-
- // Localization tool doesn't understand custom buttons like <talk_button>
- mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
- mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
- }
- else
- {
- LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_btn"));
- LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("flyout_btn"));
- }
-
-
- // Both parts of speak button should be initially disabled because
- // it takes some time between logging in to world and connecting to voice channel.
- getChild<LLButton>("speak_btn")->setEnabled(false);
- getChild<LLButton>("speak_flyout_btn")->setEnabled(false);
- gMenuBarView->getChild<LLView>("Nearby Voice")->setEnabled(false);
-
- // Registering Chat Bar to receive Voice client status change notifications.
- LLVoiceClient::getInstance()->addObserver(this);
-
- mNearbyChatBar->getChatBox()->setContextMenu(NULL);
-
- mChicletPanel = getChild<LLChicletPanel>("chiclet_list");
-
- initResizeStateContainers();
-
- setButtonsControlsAndListeners();
-
- initButtonsVisibility();
-
- // update wells visibility:
- showWellButton(RS_IM_WELL, !LLIMWellWindow::getInstance()->isWindowEmpty());
- showWellButton(RS_NOTIFICATION_WELL, !LLNotificationWellWindow::getInstance()->isWindowEmpty());
-
- loadButtonsOrder();
-
- LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&update_build_button_enable_state));
-
- return TRUE;
-}
-
-//Drag-n-drop
-
-void LLBottomTray::onDraggableButtonMouseDown(LLUICtrl* ctrl, S32 x, S32 y)
-{
- if (ctrl == NULL) return;
- LLView* parent_view = ctrl->getParent();
- if(parent_view != NULL)
- {
- // we actually drag'n'drop panel (not button) in code, so have to find a parent
- // of button which called this method on mouse down.
- LLPanel* parent = dynamic_cast<LLPanel*>(parent_view);
- // It may happen that we clicked not usual button, but button inside widget(speak, gesture)
- // so we'll need to get a level higher to reach layout panel as a parent.
- if(parent == NULL) parent = dynamic_cast<LLPanel*>(parent_view->getParent());
- if (parent && parent->getVisible())
- {
- mDraggedItem = parent;
- mCheckForDrag = true;
- mStartX = x;
- mStartY = y;
- }
- }
-}
-
-LLPanel* LLBottomTray::findChildPanelByLocalCoords(S32 x, S32 y)
-{
- LLPanel* ctrl = 0;
- S32 screenX, screenY;
- const child_list_t* list = mToolbarStack->getChildList();
-
- localPointToScreen(x, y, &screenX, &screenY);
-
- // look for a child panel which contains the point (screenX, screenY) in it's rectangle
- for (child_list_const_iter_t i = list->begin(); i != list->end(); ++i)
- {
- LLRect rect;
- localRectToScreen((*i)->getRect(), &rect);
-
- if (rect.pointInRect(screenX, screenY))
- {
- ctrl = dynamic_cast<LLPanel*>(*i);
- break;
- }
- }
-
- return ctrl;
-}
-
-void LLBottomTray::onDraggableButtonHover(S32 x, S32 y)
-{
- // if mouse down on draggable item was done, check whether we should start DnD
- if (mCheckForDrag)
- {
- // Start drag'n'drop if mouse cursor was dragged away frome mouse down location enough
- if(sqrt((float)((mStartX-x)*(mStartX-x)+(mStartY-y)*(mStartY-y))) > DRAG_START_DISTANCE)
- {
- mDragStarted = true;
- mCheckForDrag = false;
- }
- }
- if (mDragStarted)
- {
- // Check whether the cursor is over draggable area, find which panel it is and set is as
- // landing tab for drag'n'drop
- if(isCursorOverDraggableArea(x, y))
- {
- LLPanel* panel = findChildPanelByLocalCoords(x,y);
- if (panel && panel != mDraggedItem) mLandingTab = panel;
- gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROWDRAG);
- }
- else
- {
- gViewerWindow->getWindow()->setCursor(UI_CURSOR_NO);
- }
- }
- else
- {
- // Reset cursor in case you move your mouse from the drag handle to a button.
- getWindow()->setCursor(UI_CURSOR_ARROW);
-
- }
-}
-
-bool LLBottomTray::isCursorOverDraggableArea(S32 x, S32 y)
-{
- // Draggable area lasts from the nearby chat input resize handle
- // to the chiclet area (exlusively).
- bool result = getRect().pointInRect(x, y);
- result = result && mNearbyCharResizeHandlePanel->calcScreenRect().mRight < x;
- result = result && mChicletPanel->calcScreenRect().mRight > x;
- return result;
-}
-
-void LLBottomTray::updateButtonsOrdersAfterDnD()
-{
- // *TODO: change implementation of this method to support simplify it
- // (and according to future possible changes in the way button order is saved between sessions).
- state_object_map_t::const_iterator it = mStateProcessedObjectMap.begin();
- state_object_map_t::const_iterator it_end = mStateProcessedObjectMap.end();
- EResizeState dragged_state = RS_NORESIZE;
- EResizeState landing_state = RS_NORESIZE;
- bool landing_state_found = false;
- // Find states for dragged item and landing tab
- for (; it != it_end; ++it)
- {
- if (it->second == mDraggedItem)
- {
- dragged_state = it->first;
- }
- else if (it->second == mLandingTab)
- {
- landing_state = it->first;
- landing_state_found = true;
- }
- }
-
- if (dragged_state == RS_NORESIZE)
- {
- llwarns << "Cannot determine what button is being dragged" << llendl;
- llassert(dragged_state != RS_NORESIZE);
- return;
- }
-
- lldebugs << "Will place " << resizeStateToString(dragged_state)
- << " before " << resizeStateToString(landing_state) << llendl;
-
- // Update order of buttons according to drag'n'drop
- mButtonsOrder.erase(std::find(mButtonsOrder.begin(), mButtonsOrder.end(), dragged_state));
- if (!landing_state_found && mLandingTab == getChild<LLPanel>(PANEL_CHICLET_NAME))
- {
- mButtonsOrder.push_back(dragged_state);
- }
- else
- {
- if (!landing_state_found) landing_state = RS_BUTTON_SPEAK; // just a random fallback
- mButtonsOrder.insert(std::find(mButtonsOrder.begin(), mButtonsOrder.end(), landing_state), dragged_state);
- }
-
- // Synchronize button process order with their order
- resize_state_vec_t::const_iterator it1 = mButtonsOrder.begin();
- const resize_state_vec_t::const_iterator it_end1 = mButtonsOrder.end();
- resize_state_vec_t::iterator it2 = mButtonsProcessOrder.begin();
- for (; it1 != it_end1; ++it1)
- {
- // Skip Speak because it is not in mButtonsProcessOrder(it's the reason why mButtonsOrder was introduced).
- // If any other draggable items will be added to bottomtray later, they should also be skipped here.
- if (*it1 != RS_BUTTON_SPEAK)
- {
- *it2 = *it1;
- ++it2;
- }
- }
-
- saveButtonsOrder();
-}
-
-void LLBottomTray::saveButtonsOrder()
-{
- if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
-
- std::string user_dir = gDirUtilp->getLindenUserDir();
- if (user_dir.empty()) return;
-
- std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
- LLSD settings_llsd;
- int i = 0;
- const resize_state_vec_t::const_iterator it_end = mButtonsOrder.end();
- // we use numbers as keys for map which is saved in file and contains resize states as its values
- for (resize_state_vec_t::const_iterator it = mButtonsOrder.begin(); it != it_end; ++it, i++)
- {
- std::string str = llformat("%d", i);
- settings_llsd[str] = *it;
- }
- llofstream file;
- file.open(filename);
- LLSDSerialize::toPrettyXML(settings_llsd, file);
-}
-
-void LLBottomTray::loadButtonsOrder()
-{
- if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
-
- // load per-resident sorting information
- std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
-
- LLSD settings_llsd;
- llifstream file;
- file.open(filename);
- if (!file.is_open()) return;
-
- LLSDSerialize::fromXML(settings_llsd, file);
-
-
- mButtonsOrder.clear();
- mButtonsProcessOrder.clear();
- int i = 0;
- // getting button order from file
- for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
- iter != settings_llsd.endMap(); ++iter, ++i)
- {
- std::string str = llformat("%d", i);
- EResizeState state = (EResizeState)settings_llsd[str].asInteger();
- mButtonsOrder.push_back(state);
- // RS_BUTTON_SPEAK is skipped, because it shouldn't be in mButtonsProcessOrder (it does not hide or shrink).
- if (state != RS_BUTTON_SPEAK)
- {
- mButtonsProcessOrder.push_back(state);
- }
- }
-
- // There are other panels in layout stack order of which is not saved. Also, panels order of which is saved,
- // are already in layout stack but in wrong order. The most convenient way to place them is moving them
- // to front one by one (because in this case we don't have to pass the panel before which we want to insert our
- // panel to movePanel()). So panels are moved in order from the end of mButtonsOrder vector(reverse iterator is used).
- const resize_state_vec_t::const_reverse_iterator it_end = mButtonsOrder.rend();
- // placing panels in layout stack according to button order which we loaded in previous for
- for (resize_state_vec_t::const_reverse_iterator it = mButtonsOrder.rbegin(); it != it_end; ++it, ++i)
- {
- LLPanel* panel_to_move = getButtonPanel(*it);
- mToolbarStack->movePanel(panel_to_move, NULL, true); // prepend
- }
- // Nearbychat is not stored in order settings file, but it must be the first of the panels, so moving it
- // (along with its drag handle) manually here.
- mToolbarStack->movePanel(getChild<LLLayoutPanel>("chat_bar_resize_handle_panel"), NULL, true);
- mToolbarStack->movePanel(mChatBarContainer, NULL, true);
-}
-
-void LLBottomTray::onDraggableButtonMouseUp(LLUICtrl* ctrl, S32 x, S32 y)
-{
- //if mouse up happened over area where drop is possible, change order of buttons
- if (mLandingTab != NULL && mDraggedItem != NULL && mDragStarted)
- {
- if(isCursorOverDraggableArea(x, y))
- {
- // change order of panels in layout stack
- mToolbarStack->movePanel(mDraggedItem, (LLPanel*)mLandingTab);
- // change order of buttons in order vectors
- updateButtonsOrdersAfterDnD();
- }
- }
- gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
- mDragStarted = false;
- mDraggedItem = NULL;
- mLandingTab = NULL;
- mCheckForDrag = false;
-}
-
-void LLBottomTray::draw()
-{
- LLPanel::draw();
- if (mLandingTab)
- {
- static S32 w = mImageDragIndication->getWidth();
- static S32 h = mImageDragIndication->getHeight();
- LLRect rect = mLandingTab->calcScreenRect();
- mImageDragIndication->draw(rect.mLeft - w/2, rect.getHeight(), w, h);
- }
- getChild<LLButton>("show_profile_btn")->setToggleState(LLAvatarActions::profileVisible(gAgent.getID()));
-
- LLPanel* panel = LLSideTray::getInstance()->getPanel("panel_people");
- if (panel && panel->isInVisibleChain())
- {
- getChild<LLButton>("show_people_button")->setToggleState(true);
- }
- else
- {
- getChild<LLButton>("show_people_button")->setToggleState(false);
- }
-
- LLFloater* help_browser = (LLFloaterReg::findInstance("help_browser"));
- bool help_floater_visible = (help_browser && help_browser->isInVisibleChain());
-
- getChild<LLButton>("show_help_btn")->setToggleState(help_floater_visible);
-
- bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
- bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
- getChild<LLButton>("speak_btn")->setToggleState(openmic && voiceenabled);
- getChild<LLOutputMonitorCtrl>("chat_zone_indicator")->setIsMuted(!voiceenabled);
-
-}
-
-bool LLBottomTray::onContextMenuItemEnabled(const LLSD& userdata)
-{
- std::string item = userdata.asString();
- LLLineEditor* edit_box = mNearbyChatBar->findChild<LLLineEditor>("chat_box");
-
- if (item == "can_cut")
- {
- return edit_box->canCut();
- }
- else if (item == "can_copy")
- {
- return edit_box->canCopy();
- }
- else if (item == "can_paste")
- {
- return edit_box->canPaste();
- }
- else if (item == "can_delete")
- {
- return edit_box->canDoDelete();
- }
- else if (item == "can_select_all")
- {
- return edit_box->canSelectAll() && (edit_box->getLength()>0);
- }
- return true;
-}
-
-
-void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata)
-{
- std::string item = userdata.asString();
- LLLineEditor* edit_box = mNearbyChatBar->findChild<LLLineEditor>("chat_box");
-
- if (item == "cut")
- {
- edit_box->cut();
- }
- else if (item == "copy")
- {
- edit_box->copy();
- }
- else if (item == "paste")
- {
- edit_box->paste();
- edit_box->setFocus(TRUE);
- }
- else if (item == "delete")
- {
- edit_box->doDelete();
- }
- else if (item == "select_all")
- {
- edit_box->selectAll();
- }
-}
-
-void LLBottomTray::log(LLView* panel, const std::string& descr)
-{
- if (NULL == panel) return;
- LLView* layout = panel->getParent();
- LL_DEBUGS("Bottom Tray Rects") << descr << ": "
- << "panel: " << panel->getName()
- << ", rect: " << panel->getRect()
-
-
- << " layout: " << layout->getName()
- << ", rect: " << layout->getRect()
- << LL_ENDL;
-}
-
-void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- static S32 debug_calling_number = 0;
- lldebugs << "**************************************** " << ++debug_calling_number << llendl;
-
- S32 current_width = getRect().getWidth();
- S32 delta_width = width - current_width;
- lldebugs << "Reshaping: "
- << ", width: " << width
- << ", cur width: " << current_width
- << ", delta_width: " << delta_width
- << ", called_from_parent: " << called_from_parent
- << llendl;
-
- if (mNearbyChatBar) log(mNearbyChatBar, "before");
- if (mChicletPanel) log(mChicletPanel, "before");
-
- // Difference between bottom tray width required to fit its children and the actual width. (see EXT-991)
- // Positive value means that bottom tray is not wide enough.
- // Negative value means that there is free space.
- static S32 extra_shrink_width = 0;
- bool should_be_reshaped = true;
-
- if (mChicletPanel && mToolbarStack && mNearbyChatBar)
- {
- // Firstly, update layout stack to ensure we deal with correct panel sizes.
- {
- BOOL saved_anim = mToolbarStack->getAnimate();
- // Set chiclet panel to be autoresized by default.
- mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
- // Disable animation to prevent layout updating in several frames.
- mToolbarStack->setAnimate(FALSE);
- // Force the updating of layout to reset panels collapse factor.
- mToolbarStack->updateLayout();
- // Restore animate state.
- mToolbarStack->setAnimate(saved_anim);
- }
-
- // bottom tray is narrowed
- if (delta_width < 0)
- {
- if (extra_shrink_width > 0) // not enough space
- {
- extra_shrink_width += llabs(delta_width);
- should_be_reshaped = false;
- }
- else
- {
- extra_shrink_width = processWidthDecreased(delta_width);
-
- // increase new width to extra_shrink_width value to not reshape less than bottom tray minimum
- width += extra_shrink_width;
- }
- }
- // bottom tray is widened
- else
- {
- if (extra_shrink_width > delta_width)
- {
- // Still not enough space.
- // Only subtract the delta from the required delta and don't reshape.
- extra_shrink_width -= delta_width;
- should_be_reshaped = false;
- }
- else
- {
- if (extra_shrink_width > 0)
- {
- // If we have some extra shrink width let's reduce delta_width & width
- delta_width -= extra_shrink_width;
- width -= extra_shrink_width;
- extra_shrink_width = 0;
- }
- processWidthIncreased(delta_width);
- }
- }
- }
-
- if (should_be_reshaped)
- {
- lldebugs << "Reshape all children with width: " << width << llendl;
- LLPanel::reshape(width, height, called_from_parent);
- }
-
- if (mNearbyChatBar) log(mNearbyChatBar, "after");
- if (mChicletPanel) log(mChicletPanel, "after");
-
-
- // Restore width of the chatbar on first reshape.
- // we can not to do this from postBuild because reshape is called from parent view on startup
- // creation after it and reset width according to resize logic.
- static bool needs_restore_custom_state = true;
- if (mChatBarContainer && needs_restore_custom_state)
- {
- // restore custom width of chatbar panel.
- S32 new_width = gSavedSettings.getS32("ChatBarCustomWidth");
- if (new_width > 0)
- {
- mDesiredNearbyChatWidth = new_width;
- processChatbarCustomization(new_width);
- lldebugs << "Setting nearby chat bar width to " << new_width << " px" << llendl;
- mChatBarContainer->reshape(new_width, mChatBarContainer->getRect().getHeight());
- }
- needs_restore_custom_state = false;
- }
-
-}
-
-S32 LLBottomTray::processWidthDecreased(S32 delta_width)
-{
- bool still_should_be_processed = true;
-
- const S32 chiclet_panel_shrink_headroom = getChicletPanelShrinkHeadroom();
-
- // There are four steps of processing width decrease. If in one of them required width was reached,
- // further are not needed.
- // 1. Decreasing width of chiclet panel.
- if (chiclet_panel_shrink_headroom > 0)
- {
- // we have some space to decrease chiclet panel
- S32 shrink_by = llmin(-delta_width, chiclet_panel_shrink_headroom);
-
- lldebugs << "delta_width: " << delta_width
- << ", panel_delta_min: " << chiclet_panel_shrink_headroom
- << ", shrink_by: " << shrink_by
- << llendl;
-
- // is chiclet panel wide enough to process resizing?
- delta_width += chiclet_panel_shrink_headroom;
-
- still_should_be_processed = delta_width < 0;
-
- lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
- mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
- log(mChicletPanel, "after processing panel decreasing via chiclet panel");
-
- lldebugs << "RS_CHICLET_PANEL"
- << ", delta_width: " << delta_width
- << llendl;
- }
-
- S32 buttons_freed_width = 0;
- // 2. Decreasing width of buttons.
- if (still_should_be_processed)
- {
- processShrinkButtons(delta_width, buttons_freed_width);
- still_should_be_processed = delta_width < 0;
- }
-
- // 3. Decreasing width of nearby chat.
- const S32 chatbar_panel_min_width = get_panel_min_width(mToolbarStack, mChatBarContainer);
- const S32 chatbar_panel_width = mChatBarContainer->getRect().getWidth();
- if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width)
- {
- // we have some space to decrease chatbar panel
- S32 chatbar_shrink_headroom = chatbar_panel_width - chatbar_panel_min_width;
-
- S32 shrink_by = llmin(-delta_width, chatbar_shrink_headroom);
-
- // is chatbar panel wide enough to process resizing?
- delta_width += chatbar_shrink_headroom;
-
- still_should_be_processed = delta_width < 0;
-
- // chatbar should only be shrunk here, not stretched
- if (shrink_by > 0)
- {
- lldebugs << "Shrinking nearby chat bar by " << shrink_by << " px " << llendl;
- mChatBarContainer->reshape(mNearbyChatBar->getRect().getWidth() - shrink_by, mChatBarContainer->getRect().getHeight());
- }
-
- log(mNearbyChatBar, "after processing panel decreasing via nearby chatbar panel");
-
- lldebugs << "RS_CHATBAR_INPUT"
- << ", shrink_by: " << shrink_by
- << ", delta_width: " << delta_width
- << llendl;
- }
-
- S32 extra_shrink_width = 0;
- // 4. Hiding buttons if needed.
- if (still_should_be_processed)
- {
- processHideButtons(delta_width, buttons_freed_width);
-
- if (delta_width < 0)
- {
- extra_shrink_width = -delta_width;
- llwarns << "There is no enough width to reshape all children: "
- << extra_shrink_width << llendl;
- }
-
- if (buttons_freed_width > 0)
- {
- S32 nearby_needed_width = mDesiredNearbyChatWidth - mNearbyChatBar->getRect().getWidth();
- if (nearby_needed_width > 0)
- {
- S32 compensative_width = nearby_needed_width > buttons_freed_width ? buttons_freed_width : nearby_needed_width;
- log(mNearbyChatBar, "before applying compensative width");
- lldebugs << "Extending nearby chat bar by " << compensative_width << " px" << llendl;
- mChatBarContainer->reshape(mChatBarContainer->getRect().getWidth() + compensative_width, mChatBarContainer->getRect().getHeight() );
- log(mNearbyChatBar, "after applying compensative width");
- lldebugs << buttons_freed_width << llendl;
- }
- }
- }
-
- return extra_shrink_width;
-}
-
-void LLBottomTray::processWidthIncreased(S32 delta_width)
-{
- if (delta_width <= 0) return;
-
- // how much room we have to show hidden buttons
- S32 available_width = delta_width + getChicletPanelShrinkHeadroom();
-
- lldebugs << "Distributing (" << getChicletPanelShrinkHeadroom()
- << " + " << delta_width << ") = " << available_width << " px" << llendl;
-
- // 1. Try showing buttons that have been auto-hidden.
- S32 processed_width = processShowButtons(available_width);
- lldebugs << "processed_width = " << processed_width << ", delta_width = " << delta_width << llendl;
-
- lldebugs << "Available_width after showing buttons: " << available_width << llendl;
-
- // If the newly shown buttons have consumed more than delta_width pixels,
- // shrink the chiclet panel.
- if (processed_width > delta_width)
- {
- // 1. use delta width of resizing
- S32 shrink_by = processed_width - delta_width;
-
- // 2. use width available via decreasing of chiclet panel
- if (shrink_by > 0)
- {
- lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
- mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
- log(mChicletPanel, "after applying compensative width for chiclets: ");
- lldebugs << shrink_by << llendl;
- }
-
- // shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
- delta_width -= processed_width;
- }
-
- // 2. Expand the nearby chat bar if needed.
- S32 chatbar_panel_width = mChatBarContainer->getRect().getWidth();
- lldebugs << "delta_width = " << delta_width
- << ", chatbar_panel_width = " << chatbar_panel_width
- << ", mDesiredNearbyChatWidth = " << mDesiredNearbyChatWidth << llendl;
- if (delta_width > 0 && chatbar_panel_width < mDesiredNearbyChatWidth)
- {
- S32 extend_by_max = mDesiredNearbyChatWidth - chatbar_panel_width;
- S32 extend_by = llmin(delta_width, extend_by_max);
- lldebugs << "Unprocessed delta width: " << delta_width
- << " px, chatbar can be extended by " << extend_by_max
- << " px, extending it by " << extend_by << " px"
- << llendl;
-
- delta_width -= extend_by_max;
- lldebugs << "Extending nearby chat bar by " << extend_by << " px " << llendl;
- mChatBarContainer->reshape(chatbar_panel_width + extend_by, mChatBarContainer->getRect().getHeight());
- log(mNearbyChatBar, "applied unprocessed delta width");
- }
-
- // 3. Expand buttons that have been auto-shrunk,
- // if we haven't yet consumed all the available headroom.
- if (delta_width > 0)
- {
- S32 available_width = delta_width + getChicletPanelShrinkHeadroom();
- processExtendButtons(available_width);
- }
-}
-
-S32 LLBottomTray::processShowButtons(S32& available_width)
-{
- lldebugs << "Distributing " << available_width << " px" << llendl;
- S32 original_available_width = available_width;
-
- // process buttons from left to right
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- for (; it != it_end; ++it)
- {
- // is there available space?
- if (available_width <= 0) break;
-
- // try to show next button
- processShowButton(*it, available_width);
- }
-
- return original_available_width - available_width;
-}
-
-bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32& available_width)
-{
- // Check if the button was previously auto-hidden (due to lack of space).
- if (!isAutoHidden(shown_object_type))
- {
- return false;
- }
-
- // Ok. Try showing the button.
- return showButton(shown_object_type, available_width);
-}
-
-void LLBottomTray::processHideButtons(S32& required_width, S32& buttons_freed_width)
-{
- // process buttons from right to left
- resize_state_vec_t::const_reverse_iterator it = mButtonsProcessOrder.rbegin();
- const resize_state_vec_t::const_reverse_iterator it_end = mButtonsProcessOrder.rend();
-
- for (; it != it_end; ++it)
- {
- // is it still necessary to hide a button?
- if (required_width >= 0) break;
-
- // try to hide next button
- processHideButton(*it, required_width, buttons_freed_width);
- }
-}
-
-void LLBottomTray::processHideButton(EResizeState processed_object_type, S32& required_width, S32& buttons_freed_width)
-{
- lldebugs << "Trying to hide object type: " << processed_object_type << llendl;
- LLPanel* panel = getButtonPanel(processed_object_type);
- if (NULL == panel)
- {
- return;
- }
-
- if (panel->getVisible())
- {
- required_width += panel->getRect().getWidth();
-
- if (required_width > 0)
- {
- buttons_freed_width += required_width;
- }
-
- setTrayButtonVisible(processed_object_type, false);
-
- setAutoHidden(processed_object_type, true);
-
- lldebugs << "processing object type: " << processed_object_type
- << ", buttons_freed_width: " << buttons_freed_width
- << llendl;
- }
-}
-
-void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_width)
-{
- // process buttons from right to left
- resize_state_vec_t::const_reverse_iterator it = mButtonsProcessOrder.rbegin();
- const resize_state_vec_t::const_reverse_iterator it_end = mButtonsProcessOrder.rend();
-
- // iterate through buttons in the mButtonsProcessOrder first
- for (; it != it_end; ++it)
- {
- // is it still necessary to hide a button?
- if (required_width >= 0) break;
-
- // try to shrink next button
- processShrinkButton(*it, required_width);
- }
-
- // then shrink Speak button
- if (required_width < 0)
- {
- S32 panel_min_width = 0;
- std::string panel_name = mSpeakPanel->getName();
- bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width);
- if (!success)
- {
- lldebugs << "Panel was not found to get its min width: " << panel_name << llendl;
- }
- else
- {
- S32 panel_width = mSpeakPanel->getRect().getWidth();
- S32 possible_shrink_width = panel_width - panel_min_width;
-
- if (possible_shrink_width > 0)
- {
- if (mSpeakBtn)
- {
- mSpeakBtn->setLabelVisible(false);
- }
-
- mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());
-
- required_width += possible_shrink_width;
-
- if (required_width > 0)
- {
- buttons_freed_width += required_width;
- }
-
- lldebugs << "Shrunk Speak button panel: " << panel_name
- << ", shrunk width: " << possible_shrink_width
- << ", rest width to process: " << required_width
- << llendl;
- }
- }
- }
-}
-
-void LLBottomTray::processShrinkButton(EResizeState processed_object_type, S32& required_width)
-{
- LLPanel* panel = getButtonPanel(processed_object_type);
- if (NULL == panel)
- {
- return;
- }
-
- if (panel->getVisible())
- {
- S32 panel_width = panel->getRect().getWidth();
- S32 panel_min_width = 0;
- std::string panel_name = panel->getName();
- bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width);
- S32 possible_shrink_width = panel_width - panel_min_width;
-
- if (!success)
- {
- lldebugs << "Panel was not found to get its min width: " << panel_name << llendl;
- }
- // we have some space to free by shrinking the button
- else if (possible_shrink_width > 0)
- {
- // let calculate real width to shrink
-
- // 1. apply all possible width
- required_width += possible_shrink_width;
-
- // 2. it it is too much...
- if (required_width > 0)
- {
- // reduce applied shrunk width to the excessive value.
- possible_shrink_width -= required_width;
- required_width = 0;
- }
- panel->reshape(panel_width - possible_shrink_width, panel->getRect().getHeight());
-
- lldebugs << "Shrunk panel: " << panel_name
- << ", shrunk width: " << possible_shrink_width
- << ", rest width to process: " << required_width
- << llendl;
- }
- }
-}
-
-
-void LLBottomTray::processExtendButtons(S32& available_width)
-{
- // do not allow extending any buttons if we have some buttons hidden via resize
- if (isAutoHidden(RS_BUTTONS_CAN_BE_HIDDEN)) return;
-
- lldebugs << "Distributing " << available_width << " px" << llendl;
-
- // First try extending the Speak button.
- if (available_width > 0)
- {
- if (!processExtendSpeakButton(available_width))
- {
- // The Speak button needs extension but lacks some space.
- // Don't extend other buttons in this case: the Speak button
- // should consume the available headroom first.
- return;
- }
- }
-
- // Then process the other buttons from left to right.
- if (available_width > 0)
- {
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- // iterate through buttons in the mButtonsProcessOrder first
- for (; it != it_end; ++it)
- {
- // is there available space?
- if (available_width <= 0) break;
-
- // try to extend next button
- processExtendButton(*it, available_width);
- }
- }
-}
-
-bool LLBottomTray::processExtendSpeakButton(S32& available_width)
-{
- if (available_width <= 0)
- {
- llassert(available_width > 0);
- return true;
- }
-
- const S32 panel_max_width = mObjectDefaultWidthMap[RS_BUTTON_SPEAK];
- const S32 panel_width = mSpeakPanel->getRect().getWidth();
- const S32 required_headroom = panel_max_width - panel_width;
-
- if (panel_width < panel_max_width) // if the button isn't extended already
- {
- if (available_width < required_headroom) // not enough space
- {
- lldebugs << "Need (" << required_headroom << " - " << available_width << ") = "
- << (required_headroom - available_width) << " more px"
- << " to extend the Speak button"<< llendl;
-
- return false; // Don't extend other buttons until we extend Speak.
- }
-
- // Reshape the Speak button to its maximum width.
- if (mSpeakBtn) mSpeakBtn->setLabelVisible(true);
- mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());
-
- available_width -= required_headroom;
- llassert(available_width >= 0);
-
- lldebugs << "Extending Speak button panel: " << mSpeakPanel->getName()
- << ", extended width: " << required_headroom
- << ", rest width to process: " << available_width
- << llendl;
- }
-
- return true;
-}
-
-void LLBottomTray::processExtendButton(EResizeState processed_object_type, S32& available_width)
-{
- llassert(available_width >= 0);
-
- LLPanel* panel = getButtonPanel(processed_object_type);
- if (NULL == panel)
- {
- return;
- }
-
- if (!panel->getVisible()) return;
-
- // Widen the button up to its maximum width, but by not more than <available_width> px.
- S32 panel_max_width = mObjectDefaultWidthMap[processed_object_type];
- S32 panel_width = panel->getRect().getWidth();
- S32 required_headroom = panel_max_width - panel_width;
-
- S32 extend_by = llmin(available_width, required_headroom);
- if (extend_by > 0)
- {
- panel->reshape(panel_width + extend_by, panel->getRect().getHeight());
-
- // Decrease amount of headroom available for other panels.
- available_width -= extend_by;
-
- lldebugs << "Extending " << panel->getName()
- << " by " << extend_by
- << " px; remaining available width: " << available_width
- << llendl;
- }
-}
-
-bool LLBottomTray::canButtonBeShown(EResizeState processed_object_type) const
-{
- // Check that all buttons (that can be hidden on resize)
- // to the left of the given one are already shown.
-
- // process buttons in direct order (from left to right)
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- MASK buttons_before_mask = RS_NORESIZE;
- for (; it != it_end; ++it)
- {
- const EResizeState button_type = *it;
- if (button_type == processed_object_type) break;
-
- buttons_before_mask |= button_type;
- }
-
- return !isAutoHidden(buttons_before_mask);
-}
-
-void LLBottomTray::initResizeStateContainers()
-{
- // init map with objects should be processed for each type
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPEAK, getChild<LLPanel>("speak_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLPanel>("gesture_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLPanel>("movement_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, getChild<LLPanel>("cam_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_DESTINATIONS, getChild<LLPanel>("destinations_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_AVATARS, getChild<LLPanel>("avatar_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, getChild<LLPanel>("snapshot_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_BUILD, getChild<LLPanel>("build_btn_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SEARCH, getChild<LLPanel>("search_btn_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_WORLD_MAP, getChild<LLPanel>("world_map_btn_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MINI_MAP, getChild<LLPanel>("mini_map_btn_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_1, getChild<LLPanel>("splitter_panel_1")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PEOPLE, getChild<LLPanel>("people_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PROFILE, getChild<LLPanel>("profile_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_2, getChild<LLPanel>("splitter_panel_2")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_HOWTO, getChild<LLPanel>("howto_panel")));
-
- // init an order of processed buttons
- mButtonsProcessOrder.push_back(RS_BUTTON_DESTINATIONS);
- mButtonsProcessOrder.push_back(RS_BUTTON_AVATARS);
- mButtonsProcessOrder.push_back(RS_BUTTON_SNAPSHOT);
- mButtonsProcessOrder.push_back(RS_BUTTON_BUILD);
- mButtonsProcessOrder.push_back(RS_BUTTON_SEARCH);
- mButtonsProcessOrder.push_back(RS_BUTTON_WORLD_MAP);
- mButtonsProcessOrder.push_back(RS_BUTTON_MINI_MAP);
- mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_1);
- mButtonsProcessOrder.push_back(RS_BUTTON_PEOPLE);
- mButtonsProcessOrder.push_back(RS_BUTTON_PROFILE);
- mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_2);
- mButtonsProcessOrder.push_back(RS_BUTTON_HOWTO);
- mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT);
- mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA);
- mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);
-
- mButtonsOrder.push_back(RS_BUTTON_SPEAK);
- mButtonsOrder.insert(mButtonsOrder.end(), mButtonsProcessOrder.begin(), mButtonsProcessOrder.end());
-
- // init default widths
-
- // process buttons that can be hidden on resize...
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- for (; it != it_end; ++it)
- {
- const EResizeState button_type = *it;
- // is there an appropriate object?
- LLPanel* button_panel = getButtonPanel(button_type);
- if (!button_panel) continue;
-
- // set default width for it.
- mObjectDefaultWidthMap[button_type] = button_panel->getRect().getWidth();
- }
-
- // ... and add Speak button because it also can be shrunk.
- mObjectDefaultWidthMap[RS_BUTTON_SPEAK] = mSpeakPanel->getRect().getWidth();
-}
-
-// this method must be called before restoring of the chat entry field on startup
-// because it resets chatbar's width according to resize logic.
-void LLBottomTray::initButtonsVisibility()
-{
- setVisibleAndFitWidths(RS_BUTTON_SPEAK, gSavedSettings.getBOOL("EnableVoiceChat") || !mSpeakBtn );
- setVisibleAndFitWidths(RS_BUTTON_GESTURES, gSavedSettings.getBOOL("ShowGestureButton"));
- setVisibleAndFitWidths(RS_BUTTON_MOVEMENT, gSavedSettings.getBOOL("ShowMoveButton"));
- setVisibleAndFitWidths(RS_BUTTON_CAMERA, gSavedSettings.getBOOL("ShowCameraButton"));
- setVisibleAndFitWidths(RS_BUTTON_SNAPSHOT, gSavedSettings.getBOOL("ShowSnapshotButton"));
- setVisibleAndFitWidths(RS_BUTTON_BUILD, gSavedSettings.getBOOL("ShowBuildButton"));
- setVisibleAndFitWidths(RS_BUTTON_SEARCH, gSavedSettings.getBOOL("ShowSearchButton"));
- setVisibleAndFitWidths(RS_BUTTON_WORLD_MAP, gSavedSettings.getBOOL("ShowWorldMapButton"));
- setVisibleAndFitWidths(RS_BUTTON_MINI_MAP, gSavedSettings.getBOOL("ShowMiniMapButton"));
- lldebugs << "mResizeState = " << resizeStateMaskToString(mResizeState) << llendl;
-}
-
-void LLBottomTray::setButtonsControlsAndListeners()
-{
- // always show the speak panel if using the basic skin
- if (mSpeakBtn)
- {
- gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SPEAK, _2));
- }
-
- gSavedSettings.getControl("ShowGestureButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_GESTURES, _2));
- gSavedSettings.getControl("ShowMoveButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_MOVEMENT, _2));
- gSavedSettings.getControl("ShowCameraButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_CAMERA, _2));
- gSavedSettings.getControl("ShowSnapshotButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SNAPSHOT, _2));
- gSavedSettings.getControl("ShowBuildButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_BUILD, _2));
- gSavedSettings.getControl("ShowSearchButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SEARCH, _2));
- gSavedSettings.getControl("ShowWorldMapButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_WORLD_MAP, _2));
- gSavedSettings.getControl("ShowMiniMapButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_MINI_MAP, _2));
-
-
- LLButton* build_btn = getChild<LLButton>("build_btn");
- // set control name for Build button. It is not enough to link it with Button.SetFloaterToggle in xml
- std::string vis_control_name = LLFloaterReg::declareVisibilityControl("build");
- // Set the button control value (toggle state) to the floater visibility control (Sets the value as well)
- build_btn->setControlVariable(LLFloater::getControlGroup()->getControl(vis_control_name));
-}
-
-bool LLBottomTray::toggleShowButton(LLBottomTray::EResizeState button_type, const LLSD& new_visibility)
-{
- if (LLBottomTray::instanceExists())
- {
- LLBottomTray::getInstance()->setTrayButtonVisibleIfPossible(button_type, new_visibility.asBoolean());
- }
- return true;
-}
-
-bool LLBottomTray::showButton(EResizeState button_type, S32& available_width)
-{
- LLPanel* panel = getButtonPanel(button_type);
- if (NULL == panel)
- {
- return false;
- }
-
- if (panel->getVisible())
- {
- return false;
- }
-
- // Check if none of the buttons to the left of the given one was auto-hidden.
- // (we auto-show the buttons left to right).
- if (!canButtonBeShown(button_type))
- {
- return false;
- }
-
- // Make sure we have enough room to show this button.
- const S32 required_width = panel->getRect().getWidth();
- if (available_width < required_width)
- {
- lldebugs << "Need " << (required_width - available_width) << " more px to show " << resizeStateToString(button_type) << llendl;
- return false;
- }
-
- // All good. Show the button.
- setTrayButtonVisible(button_type, true);
-
- // Let the caller know that there is now less available space.
- available_width -= required_width;
-
- lldebugs << "Showing button " << resizeStateToString(button_type)
- << ", remaining available width: " << available_width
- << llendl;
- setAutoHidden(button_type, false);
-
- return true;
-}
-
-void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool visible)
-{
- LLPanel* panel = getButtonPanel(shown_object_type);
- if (NULL == panel)
- {
- return;
- }
-
- panel->setVisible(visible);
-}
-
-void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification)
-{
- if (!setVisibleAndFitWidths(shown_object_type, visible) && visible && raise_notification)
- {
- LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown",
- LLSD(),
- LLSD(),
- LLNotificationFunctorRegistry::instance().DONOTHING);
- }
-}
-
-bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible)
-{
- // The Speak button is treated specially: if voice is enabled,
- // the button should be displayed no matter how much space we've got.
- if (object_type == RS_BUTTON_SPEAK)
- {
- showSpeakButton(visible);
- return true;
- }
-
- LLPanel* cur_panel = getButtonPanel(object_type);
- if (NULL == cur_panel)
- {
- return false;
- }
-
- bool is_set = true;
-
- if (visible)
- {
- // Assume that only chiclet panel can be auto-resized
- const S32 available_width = getChicletPanelShrinkHeadroom();
-
- S32 preferred_width = mObjectDefaultWidthMap[object_type];
- S32 current_width = cur_panel->getRect().getWidth();
- S32 result_width = 0;
- bool decrease_width = false;
-
- if (preferred_width > 0 && available_width >= preferred_width)
- {
- result_width = preferred_width;
- }
- else if (available_width >= current_width)
- {
- result_width = current_width;
- }
- else
- {
- // Calculate the possible shrunk width as difference between current and minimal widths
- const S32 chatbar_shrunk_width =
- mChatBarContainer->getRect().getWidth() - get_panel_min_width(mToolbarStack, mChatBarContainer);
-
- S32 sum_of_min_widths = get_panel_min_width(mToolbarStack, mSpeakPanel);
- S32 sum_of_curr_widths = get_curr_width(mSpeakPanel);
-
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- for (; it != it_end; ++it)
- {
- LLPanel* cur_panel = getButtonPanel(*it);
- sum_of_min_widths += get_panel_min_width(mToolbarStack, cur_panel);
- sum_of_curr_widths += get_curr_width(cur_panel);
- }
-
- const S32 possible_shrunk_width =
- chatbar_shrunk_width + (sum_of_curr_widths - sum_of_min_widths);
-
- // Minimal width of current panel
- S32 minimal_width = 0;
- mToolbarStack->getPanelMinSize(cur_panel->getName(), &minimal_width);
-
- if ( (available_width + possible_shrunk_width) >= minimal_width)
- {
- // There is enough space for minimal width, but set the result_width
- // to preferred_width so buttons widths decreasing will be done in predefined order
- result_width = (preferred_width > 0) ? preferred_width : current_width;
- decrease_width = true;
- }
- else
- {
- lldebugs << "Need " << (minimal_width - available_width - possible_shrunk_width)
- << " more px to show " << resizeStateToString(object_type) << llendl;
-
- // Make the button uppear when we have more available space.
- setAutoHidden(object_type, true);
- return false;
- }
- }
-
- if (result_width != current_width)
- {
- cur_panel->reshape(result_width, cur_panel->getRect().getHeight());
- current_width = result_width;
- }
-
- is_set = showButton(object_type, current_width);
-
- // Shrink buttons if needed
- if (is_set && decrease_width)
- {
- processWidthDecreased( -result_width);
- }
- }
- else
- {
- const S32 delta_width = get_curr_width(cur_panel);
-
- setTrayButtonVisible(object_type, false);
-
- // Mark button NOT to show while future bottom tray extending
- lldebugs << "Removing " << resizeStateToString(object_type) << " from mResizeState" << llendl;
- setAutoHidden(object_type, false);
-
- // Extend other buttons if need
- if (delta_width)
- {
- processWidthIncreased(delta_width);
- }
- }
- return is_set;
-}
-
-LLPanel* LLBottomTray::getButtonPanel(EResizeState button_type)
-{
- // Don't use the operator[] because it inserts a NULL value if the key is not found.
- if (mStateProcessedObjectMap.count(button_type) == 0)
- {
- llwarns << "Cannot find a panel for " << resizeStateToString(button_type) << llendl;
- llassert(mStateProcessedObjectMap.count(button_type) == 1);
- return NULL;
- }
-
- return mStateProcessedObjectMap[button_type];
-}
-
-void LLBottomTray::showWellButton(EResizeState object_type, bool visible)
-{
- llassert( ((RS_NOTIFICATION_WELL | RS_IM_WELL) & object_type) == object_type );
-
- const std::string panel_name = RS_IM_WELL == object_type ? "im_well_panel" : "notification_well_panel";
-
- LLView * panel = getChild<LLView>(panel_name);
-
- // if necessary visibility is set nothing to do here
- if (panel->getVisible() == (BOOL)visible) return;
-
- S32 panel_width = panel->getRect().getWidth();
- panel->setVisible(visible);
-
- if (visible)
- {
- // method assumes that input param is a negative value
- processWidthDecreased(-panel_width);
- }
- else
- {
- processWidthIncreased(panel_width);
- }
-}
-
-void LLBottomTray::processChatbarCustomization(S32 new_width)
-{
- if (NULL == mNearbyChatBar) return;
-
- const S32 delta_width = mChatBarContainer->getRect().getWidth() - new_width;
-
- if (delta_width == 0) return;
-
- {
- static unsigned dbg_cnt = 0;
- lldebugs << llformat("*** (%03d) ************************************* %d", delta_width, ++dbg_cnt) << llendl;
- }
-
- mDesiredNearbyChatWidth = new_width;
-
- const S32 available_chiclet_shrink_width = getChicletPanelShrinkHeadroom();
- llassert(available_chiclet_shrink_width >= 0);
-
- if (delta_width > 0) // panel gets narrowly
- {
- S32 total_possible_width = delta_width + available_chiclet_shrink_width;
- processShowButtons(total_possible_width);
- processExtendButtons(total_possible_width);
- }
- // here (delta_width < 0) // panel gets wider
- else //if (-delta_width > available_chiclet_shrink_width)
- {
- S32 required_width = delta_width + available_chiclet_shrink_width;
- S32 buttons_freed_width = 0;
- processShrinkButtons(required_width, buttons_freed_width);
- processHideButtons(required_width, buttons_freed_width);
- }
-}
-
-S32 LLBottomTray::getChicletPanelShrinkHeadroom() const
-{
- static const S32 min_width = mChicletPanel->getMinWidth();
- const S32 cur_width = mChicletPanel->getParent()->getRect().getWidth();
-
- S32 shrink_headroom = cur_width - min_width;
- llassert(shrink_headroom >= 0); // the panel cannot get narrower than the minimum
- return shrink_headroom;
-}
-
-// static
-std::string LLBottomTray::resizeStateToString(EResizeState state)
-{
- const char *rs_string = "UNKNOWN_BUTTON";
-
- switch (state)
- {
- case RS_NORESIZE: rs_string = "RS_NORESIZE"; break;
- case RS_CHICLET_PANEL: rs_string = "RS_CHICLET_PANEL"; break;
- case RS_CHATBAR_INPUT: rs_string = "RS_CHATBAR_INPUT"; break;
- case RS_BUTTON_SNAPSHOT: rs_string = "RS_BUTTON_SNAPSHOT"; break;
- case RS_BUTTON_CAMERA: rs_string = "RS_BUTTON_CAMERA"; break;
- case RS_BUTTON_MOVEMENT: rs_string = "RS_BUTTON_MOVEMENT"; break;
- case RS_BUTTON_GESTURES: rs_string = "RS_BUTTON_GESTURES"; break;
- case RS_BUTTON_SPEAK: rs_string = "RS_BUTTON_SPEAK"; break;
- case RS_IM_WELL: rs_string = "RS_IM_WELL"; break;
- case RS_NOTIFICATION_WELL: rs_string = "RS_NOTIFICATION_WELL"; break;
- case RS_BUTTON_BUILD: rs_string = "RS_BUTTON_BUILD"; break;
- case RS_BUTTON_SEARCH: rs_string = "RS_BUTTON_SEARCH"; break;
- case RS_BUTTON_WORLD_MAP: rs_string = "RS_BUTTON_WORLD_MAP"; break;
- case RS_BUTTON_MINI_MAP: rs_string = "RS_BUTTON_MINI_MAP"; break;
- case RS_BUTTON_DESTINATIONS: rs_string = "RS_BUTTON_DESTINATIONS"; break;
- case RS_BUTTON_AVATARS: rs_string = "RS_BUTTON_AVATARS"; break;
- case RS_BUTTON_PEOPLE: rs_string = "RS_BUTTON_PEOPLE"; break;
- case RS_BUTTON_PROFILE: rs_string = "RS_BUTTON_PROFILE"; break;
- case RS_BUTTON_HOWTO: rs_string = "RS_BUTTON_HOWTO"; break;
- case RS_BUTTON_SPLITTER_1: rs_string = "RS_BUTTON_SPLITTER_1"; break;
- case RS_BUTTON_SPLITTER_2: rs_string = "RS_BUTTON_SPLITTER_2"; break;
- case RS_BUTTONS_CAN_BE_HIDDEN: rs_string = "RS_BUTTONS_CAN_BE_HIDDEN"; break;
- // No default to track additions.
- }
-
- return rs_string;
-}
-
-// static
-std::string LLBottomTray::resizeStateMaskToString(MASK mask)
-{
- std::string res;
-
- bool add_delimiter = false;
- for (U32 i = 0; i < 16; i++)
- {
- EResizeState state = (EResizeState) (1 << i);
- if (mask & state)
- {
- if (!add_delimiter)
- {
- add_delimiter = true;
- }
- else
- {
- res += ", ";
- }
-
- res += resizeStateToString(state);
- }
- }
-
- if (res.empty())
- {
- res = resizeStateToString(RS_NORESIZE);
- }
-
- res += llformat(" (0x%X)", mask);
- return res;
-}
-
-bool LLBottomTray::isAutoHidden(MASK button_types) const
-{
- return (mResizeState & button_types) != 0;
-}
-
-void LLBottomTray::setAutoHidden(MASK button_types, bool hide)
-{
- if (hide)
- {
- mResizeState |= button_types;
- }
- else
- {
- mResizeState &= ~button_types;
- }
-}
-
-//EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
deleted file mode 100644
index e26b0792e9..0000000000
--- a/indra/newview/llbottomtray.h
+++ /dev/null
@@ -1,564 +0,0 @@
-/**
-* @file llbottomtray.h
-* @brief LLBottomTray class header file
-*
-* $LicenseInfo:firstyear=2009&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_LLBOTTOMPANEL_H
-#define LL_LLBOTTOMPANEL_H
-
-#include "llpanel.h"
-#include "llimview.h"
-#include "llbutton.h"
-
-class LLChicletPanel;
-class LLLayoutStack;
-class LLSpeakButton;
-class LLNearbyChatBar;
-class LLIMChiclet;
-class LLBottomTrayLite;
-class LLLayoutPanel;
-class LLMenuGL;
-class LLNearbyChatBarListener;
-
-// Build time optimization, generate once in .cpp file
-#ifndef LLBOTTOMTRAY_CPP
-extern template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance();
-#endif
-
-/**
- * Class for buttons that should have drag'n'drop ability in bottomtray.
- * These buttons pass mouse events handling to bottomtray.
- */
-class LLBottomtrayButton : public LLButton
-{
-public:
- struct Params : public LLInitParam::Block<Params, LLButton::Params>
- {
- Optional<bool> can_drag;
- Params()
- : can_drag("can_drag", true){}
- };
- /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
- /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
- /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
-protected:
- LLBottomtrayButton(const Params& p)
- : LLButton(p),
- mCanDrag(p.can_drag)
- {
-
- }
- friend class LLUICtrlFactory;
-
- bool mCanDrag;
-};
-
-class LLBottomTray
- : public LLSingleton<LLBottomTray>
- , public LLPanel
- , public LLIMSessionObserver
- , public LLVoiceClientStatusObserver
-{
- LOG_CLASS(LLBottomTray);
- friend class LLSingleton<LLBottomTray>;
- friend class LLBottomTrayLite;
-public:
- ~LLBottomTray();
-
- BOOL postBuild();
-
- LLChicletPanel* getChicletPanel() {return mChicletPanel;}
- LLNearbyChatBar* getNearbyChatBar();
-
- void onCommitGesture(LLUICtrl* ctrl);
-
- // LLIMSessionObserver observe triggers
- virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id);
- virtual void sessionRemoved(const LLUUID& session_id);
- void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
-
- S32 getTotalUnreadIMCount();
-
- virtual void reshape(S32 width, S32 height, BOOL called_from_parent);
-
- virtual void setVisible(BOOL visible);
-
- /*virtual*/ S32 notifyParent(const LLSD& info);
-
- // Implements LLVoiceClientStatusObserver::onChange() to enable the speak
- // button when voice is available
- /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
-
- void showBottomTrayContextMenu(S32 x, S32 y, MASK mask);
-
- void showSpeakButton(bool visible);
-
- void toggleMovementControls();
- void toggleCameraControls();
-
- void onMouselookModeIn();
- void onMouselookModeOut();
-
- /**
- * Creates IM Chiclet based on session type (IM chat or Group chat)
- */
- LLIMChiclet* createIMChiclet(const LLUUID& session_id);
-
- // Below are methods that were introduced or overriden in bottomtray to handle drag'n'drop
-
- virtual void draw();
-
- /**
- * These three methods handle drag'n'drop, they may be called directly from child buttons.
- * handleHover and other virtual handle* couldn't be used here, because we should call LLPanel::handle*,
- * but x and y here are often outside of bottomtray.
- */
- void onDraggableButtonHover(S32 x, S32 y);
- void onDraggableButtonMouseDown(LLUICtrl* button, S32 x, S32 y);
- void onDraggableButtonMouseUp(LLUICtrl* button, S32 x, S32 y);
-
-
-private:
- typedef enum e_resize_state
- {
- RS_NORESIZE = 0x0000,
- RS_CHICLET_PANEL = 0x0001,
- RS_CHATBAR_INPUT = 0x0002,
- RS_BUTTON_SNAPSHOT = 0x0004,
- RS_BUTTON_CAMERA = 0x0008,
- RS_BUTTON_MOVEMENT = 0x0010,
- RS_BUTTON_GESTURES = 0x0020,
- RS_BUTTON_SPEAK = 0x0040,
- RS_IM_WELL = 0x0080,
- RS_NOTIFICATION_WELL = 0x0100,
- RS_BUTTON_BUILD = 0x0200,
- RS_BUTTON_SEARCH = 0x0400,
- RS_BUTTON_WORLD_MAP = 0x0800,
- RS_BUTTON_MINI_MAP = 0x1000,
- RS_BUTTON_DESTINATIONS = 0x2000,
- RS_BUTTON_AVATARS = 0x4000,
- RS_BUTTON_PEOPLE = 0x8000,
- RS_BUTTON_PROFILE = 0x10000,
- RS_BUTTON_HOWTO = 0x20000,
- RS_BUTTON_SPLITTER_1 = 0x40000,
- RS_BUTTON_SPLITTER_2 = 0x80000,
-
- /*
- Once new button that can be hidden on resize is added don't forget to update related places:
- - RS_BUTTONS_CAN_BE_HIDDEN enum value below.
- - initResizeStateContainers(): mStateProcessedObjectMap and mButtonsProcessOrder
- */
-
- /**
- * Specifies buttons which can be hidden when bottom tray is shrunk.
- * They are: Gestures, Movement (Move), Camera (View), Snapshot
- * new: Build, Search, Map, World Map, Mini-Map, destinations, avatars
- */
- RS_BUTTONS_CAN_BE_HIDDEN = RS_BUTTON_SNAPSHOT | RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
- | RS_BUTTON_BUILD | RS_BUTTON_SEARCH | RS_BUTTON_WORLD_MAP | RS_BUTTON_MINI_MAP
- | RS_BUTTON_DESTINATIONS | RS_BUTTON_AVATARS
- }EResizeState;
-
- // Below are three methods that were introduced to handle drag'n'drop
-
- /**
- * finds a panel under the specified LOCAL point
- */
- LLPanel* findChildPanelByLocalCoords(S32 x, S32 y);
-
- /**
- * checks whether the cursor is over an area where the dragged button may be dropped
- */
- bool isCursorOverDraggableArea(S32 x, S32 y);
-
- /**
- * Updates process(shrink/show/hide) order of buttons and order in which they'll be stored for further save/load.
- * It is called when dragged button is dropped
- */
- void updateButtonsOrdersAfterDnD();
-
- // saves order of buttons to file on disk
- void saveButtonsOrder();
- // reads order of buttons from file on disk
- void loadButtonsOrder();
-
- /**
- * Updates child controls size and visibility when it is necessary to reduce total width.
- *
- * Process order:
- * - reduce chiclet panel to its minimal width;
- * - reduce chatbar to its minimal width;
- * - reduce visible buttons from right to left to their minimal width;
- * - hide visible buttons from right to left;
- * When button is hidden chatbar extended to fill released space if it is necessary.
- *
- * @param[in] delta_width - value by which bottom tray should be shrunk. It is a negative value.
- * @return positive value which bottom tray can not process when it reaches its minimal width.
- * Zero if there was enough space to process delta_width.
- */
- S32 processWidthDecreased(S32 delta_width);
-
- /**
- * Updates child controls size and visibility when it is necessary to extend total width.
- *
- * Process order:
- * - show invisible buttons should be shown from left to right if possible;
- * - extend visible buttons from left to right to their default width;
- * - extend chatbar to its maximal width;
- * - extend chiclet panel to all available space;
- * When chatbar & chiclet panels are wider then their minimal width they can be reduced to allow
- * a button gets visible in case if passed delta_width is not enough (chatbar first).
- *
- * @param[in] delta_width - value by which bottom tray should be extended. It is a positive value.
- */
- void processWidthIncreased(S32 delta_width);
-
- /** helper function to log debug messages */
- void log(LLView* panel, const std::string& descr);
-
- /**
- * Tries to show hidden by resize buttons using available width.
- *
- * Gets buttons visible if there is enough space. Reduces available_width in this case.
- *
- * @params[in, out] available_width - reference to available width to be used to show buttons.
- * @see processShowButton()
- * @return consumed pixels (difference in available width).
- */
- S32 processShowButtons(S32& available_width);
-
- /**
- * Tries to show panel with specified button using available width.
- *
- * Shows button specified by type if there is enough space. Reduces available_width in this case.
- *
- * @params[in] shown_object_type - type of button to be shown.
- * @params[in, out] available_width - reference to available width to be used to show button.
- *
- * @return true if button can be shown, false otherwise
- */
- bool processShowButton(EResizeState shown_object_type, S32& available_width);
-
- /**
- * Hides visible panels with all buttons that may be hidden by resize if it is necessary.
- *
- * When button gets hidden some space is released in bottom tray.
- * This space is taken into account for several consecutive calls for several buttons.
- *
- * @params[in, out] required_width - reference to required width to be released. This is a negative value.
- * Its absolute value is decreased by shown panel width.
- * @params[in, out] buttons_freed_width - reference to value released over required one.
- * If panel's width is more than required difference is added to buttons_freed_width.
- * @see processHideButton()
- */
- void processHideButtons(S32& required_width, S32& buttons_freed_width);
-
- /**
- * Hides panel with specified button if it is visible.
- *
- * When button gets hidden some space is released in bottom tray.
- * This space is taken into account for several consecutive calls for several buttons.
- *
- * @params[in] processed_object_type - type of button to be hide.
- * @params[in, out] required_width - reference to required width to be released. This is a negative value.
- * Its absolute value is decreased by panel width.
- * @params[in, out] buttons_freed_width - reference to value released over required one.
- * If panel's width is more than required difference is added to buttons_freed_width.
- */
- void processHideButton(EResizeState processed_object_type, S32& required_width, S32& buttons_freed_width);
-
- /**
- * Shrinks shown buttons to reduce total taken space.
- *
- * Shrinks buttons that may be shrunk smoothly first. Then shrinks Speak button.
- *
- * @param[in, out] required_width - reference to width value which should be released when buttons are shrunk. It is a negative value.
- * It is increased on the value processed by buttons.
- * @params[in, out] buttons_freed_width - reference to value released over required one.
- * If width of panel with Speak button is more than required that difference is added
- * to buttons_freed_width.
- * This is because Speak button shrinks discretely unlike other buttons which are changed smoothly.
- */
- void processShrinkButtons(S32& required_width, S32& buttons_freed_width);
-
- /**
- * Shrinks panel with specified button if it is visible.
- *
- * @params[in] processed_object_type - type of button to be shrunk.
- * @param[in, out] required_width - reference to width value which should be released when button is shrunk. It is a negative value.
- * It is increased on the value released by the button.
- */
- void processShrinkButton(EResizeState processed_object_type, S32& required_width);
-
- /**
- * Extends shown buttons to increase total taken space.
- *
- * Extends buttons that may be extended smoothly first. Then extends Speak button.
- *
- * @param[in, out] available_width - reference to width value which buttons can use to be extended.
- * It is a positive value. It is decreased on the value processed by buttons.
- */
- void processExtendButtons(S32& available_width);
-
- /**
- * Extends the Speak button if there is enough headroom.
- *
- * Unlike other buttons, the Speak buttons has only two possible widths:
- * the minimal one (without label) and the maximal (default) one.
- *
- * If the button is at its minimum width there is not enough headroom to
- * reshape it to the maximum width, the method does nothing.
- *
- * @param available_width Available headroom.
- * @return false if the button requires extension but there's not enough headroom, true otherwise.
- */
- bool processExtendSpeakButton(S32& available_width);
-
- /**
- * Extends shown button to increase total taken space.
- *
- * @params[in] processed_object_type - type of button to be extended.
- * @param[in, out] available_width - reference to width value which button can use to be extended.
- * It is a positive value. It is decreased on the value processed by buttons.
- */
- void processExtendButton(EResizeState processed_object_type, S32& available_width);
-
- /**
- * Determines if specified by type object can be shown. It should be hidden by shrink before.
- *
- * Processes buttons a such way to show buttons in constant order:
- * - Gestures, Move, View, Snapshot
- */
- bool canButtonBeShown(EResizeState processed_object_type) const;
-
- /**
- * Initializes all containers stored data related to children resize state.
- *
- * @see mStateProcessedObjectMap
- * @see mObjectDefaultWidthMap
- * @see mButtonsProcessOrder
- */
- void initResizeStateContainers();
-
- /**
- * Initializes buttons' visibility depend on stored Control Settings.
- */
- void initButtonsVisibility();
-
- /**
- * Initializes listeners of Control Settings to toggle appropriate buttons' visibility.
- *
- * @see toggleShowButton()
- */
- void setButtonsControlsAndListeners();
-
- /**
- * Toggles visibility of specified button depend on passed value.
- *
- * @param button_type - type of button to be toggled
- * @param new_visibility - new visibility of the button
- *
- * @see setButtonsControlsAndListeners()
- */
- static bool toggleShowButton(EResizeState button_type, const LLSD& new_visibility);
-
- /**
- * Show the button if there is enough space.
- *
- * @param[in] button_type - type of button to be shown.
- * @param[in, out] available_width amount of available space on the bottom bar.
- *
- * @return true if button was shown, false that's not possible (not enough space, etc)
- */
- bool showButton(EResizeState button_type, S32& available_width);
-
- /**
- * Sets passed visibility to object specified by resize type.
- */
- void setTrayButtonVisible(EResizeState shown_object_type, bool visible);
-
- /**
- * Sets passed visibility to object specified by resize type if it is possible.
- *
- * If it is impossible to show required button due to there is no enough room in bottom tray
- * it will no be shown. Is called via context menu commands.
- * In this case Alert Dialog will be shown to notify user about that.
- *
- * Method also stores resize state to be processed while future bottom tray extending:
- * - if hidden while resizing button should be hidden it will not be shown while extending;
- * - if hidden via context menu button should be shown but there is no enough room for now
- * it will be shown while extending.
- */
- void setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification = true);
-
- /**
- * Sets passed visibility to required button and fit widths of shown
- * buttons(notice that method can shrink widths to
- * allocate needed room in bottom tray).
- * Returns true if visibility of required button was set.
- */
- bool setVisibleAndFitWidths(EResizeState object_type, bool visible);
-
- /**
- * Get panel containing the given button.
- *
- * @see mStateProcessedObjectMap
- */
- LLPanel* getButtonPanel(EResizeState button_type);
-
- /**
- * Shows/hides panel with specified well button (IM or Notification)
- *
- * @param[in] object_type - type of well button to be processed.
- * Must be one of RS_IM_WELL or RS_NOTIFICATION_WELL.
- * @param[in] visible - flag specified whether button should be shown or hidden.
- */
- void showWellButton(EResizeState object_type, bool visible);
-
- /**
- * Handles a customization of chatbar width.
- *
- * When chatbar gets wider layout stack will reduce chiclet panel (it is auto-resizable)
- * But once chiclet panel reaches its minimal width Stack will force to reduce buttons width.
- * including Speak button. The similar behavior is when chatbar gets narrowly.
- * This methods force resize behavior to resize buttons properly in these cases.
- */
- void processChatbarCustomization(S32 new_width);
-
- /**
- * @return difference between current chiclet panel width and the minimum.
- */
- S32 getChicletPanelShrinkHeadroom() const;
-
- /// Get button name for debugging.
- static std::string resizeStateToString(EResizeState state);
-
- /// Dump a mask for debugging
- static std::string resizeStateMaskToString(MASK mask);
-
- /// @return true if any of the the passed buttons have been auto-hidden due to lack of available space.
- bool isAutoHidden(MASK button_types) const;
-
- /**
- * (Un)Mark the buttons as hidden.
- *
- * Auto-hidden buttons are those that re-appear as soon as we have enough available space.
- */
- void setAutoHidden(MASK button_types, bool hide);
-
- /// Buttons automatically hidden due to lack of space.
- MASK mResizeState;
-
- /**
- * Mapping of button types to the layout panels the buttons are wrapped in.
- *
- * Used by getButtonPanel().
- */
- typedef std::map<EResizeState, LLPanel*> state_object_map_t;
- state_object_map_t mStateProcessedObjectMap;
-
- /// Default (maximum) widths of the layout panels.
- typedef std::map<EResizeState, S32> state_object_width_map_t;
- state_object_width_map_t mObjectDefaultWidthMap;
-
- typedef std::vector<EResizeState> resize_state_vec_t;
-
- /**
- * Contains order in which child buttons should be processed in show/hide, extend/shrink methods.
- */
- resize_state_vec_t mButtonsProcessOrder;
-
- /**
- * Contains order in which child buttons are shown.
- * It traces order of all bottomtray buttons that may change place via drag'n'drop and should
- * save and load it between sessions. mButtonsProcessOrder is not enough for it because it contains only
- * buttons that may be hidden.
- */
- resize_state_vec_t mButtonsOrder;
-
-protected:
-
- LLBottomTray(const LLSD& key = LLSD());
-
- static void* createNearbyChatBar(void* userdata);
-
- void updateContextMenu(S32 x, S32 y, MASK mask);
- void onContextMenuItemClicked(const LLSD& userdata);
- bool onContextMenuItemEnabled(const LLSD& userdata);
-
- // Either default or saved after user's manual resize width of nearby chat.
- // Nearby chat will not always have it, because sometimes it can be shrunk on resize,
- // but when possible it will be restored back to this value.
- S32 mDesiredNearbyChatWidth;
- LLChicletPanel* mChicletPanel;
- LLPanel* mSpeakPanel;
- LLSpeakButton* mSpeakBtn;
- LLNearbyChatBar* mNearbyChatBar;
- LLLayoutPanel* mChatBarContainer;
- LLPanel* mNearbyCharResizeHandlePanel;
- LLLayoutStack* mToolbarStack;
- LLMenuGL* mBottomTrayContextMenu;
- LLButton* mCamButton;
- LLButton* mMovementButton;
- LLBottomTrayLite* mBottomTrayLite;
- bool mIsInLiteMode;
-
- // Drag'n'Drop
-
- /**
- * Is true if mouse down happened on draggable button.
- * Set false whether on drag start or on mouse up.
- */
- bool mCheckForDrag;
- /**
- * These two variables hold corrdinates of mouse down on draggable button.
- * They are used to compare with current coordinates of cursor and determine whether drag'n'drop should start.
- */
- S32 mStartX;
- S32 mStartY;
- /**
- * True if drag'n'drop is happening.
- */
- bool mDragStarted;
-
- /**
- * Pointer to panel which is currently dragged (though it seems to user that button is dragged,
- * we are changing place of layout panel).
- */
- LLPanel* mDraggedItem;
- /**
- * Panel before which the dragged button will be inserted.
- */
- LLPanel* mLandingTab;
- /**
- * Image used to show position where dragged button will be dropped.
- */
- LLUIImage* mImageDragIndication;
-
- // We want only one LLNearbyChatBarListener object, so it's tied to this singleton
- boost::shared_ptr<LLNearbyChatBarListener> mListener;
-};
-
-#endif // LL_LLBOTTOMPANEL_H
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 945a760d05..cc2a189b76 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -37,14 +37,13 @@
#include "llavatarnamecache.h"
#include "llavatariconctrl.h"
#include "llavatarlist.h"
-#include "llbottomtray.h"
#include "lldraghandle.h"
#include "llimfloater.h"
+#include "llimview.h"
#include "llfloaterreg.h"
#include "llparticipantlist.h"
#include "llspeakers.h"
#include "lltextutil.h"
-#include "lltransientfloatermgr.h"
#include "llviewercontrol.h"
#include "llviewerdisplayname.h"
#include "llviewerwindow.h"
@@ -97,7 +96,7 @@ static void* create_non_avatar_caller(void*)
LLVoiceChannel* LLCallFloater::sCurrentVoiceChannel = NULL;
LLCallFloater::LLCallFloater(const LLSD& key)
-: LLTransientDockableFloater(NULL, false, key)
+: LLFloater(key)
, mSpeakerManager(NULL)
, mParticipants(NULL)
, mAvatarList(NULL)
@@ -113,10 +112,6 @@ LLCallFloater::LLCallFloater(const LLSD& key)
mFactoryMap["non_avatar_caller"] = LLCallbackMap(create_non_avatar_caller, NULL);
LLVoiceClient::instance().addObserver(this);
- LLTransientFloaterMgr::getInstance()->addControlView(this);
-
- // force docked state since this floater doesn't save it between recreations
- setDocked(true);
// update the agent's name if display name setting change
LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this));
@@ -139,13 +134,11 @@ LLCallFloater::~LLCallFloater()
{
LLVoiceClient::getInstance()->removeObserver(this);
}
- LLTransientFloaterMgr::getInstance()->removeControlView(this);
}
// virtual
BOOL LLCallFloater::postBuild()
{
- LLTransientDockableFloater::postBuild();
mAvatarList = getChild<LLAvatarList>("speakers_list");
mAvatarListRefreshConnection = mAvatarList->setRefreshCompleteCallback(boost::bind(&LLCallFloater::onAvatarListRefreshed, this));
@@ -154,12 +147,6 @@ BOOL LLCallFloater::postBuild()
mNonAvatarCaller = findChild<LLNonAvatarCaller>("non_avatar_caller");
mNonAvatarCaller->setVisible(FALSE);
- LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn");
-
- setDockControl(new LLDockControl(
- anchor_panel, this,
- getDockTongue(), LLDockControl::TOP));
-
initAgentData();
connectToChannel(LLVoiceChannel::getCurrentVoiceChannel());
@@ -204,13 +191,13 @@ void LLCallFloater::draw()
if (mParticipants)
mParticipants->updateRecentSpeakersOrder();
- LLTransientDockableFloater::draw();
+ LLFloater::draw();
}
// virtual
void LLCallFloater::setFocus( BOOL b )
{
- LLTransientDockableFloater::setFocus(b);
+ LLFloater::setFocus(b);
// Force using active floater transparency (STORM-730).
// We have to override setFocus() for LLCallFloater because selecting an item
diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h
index 00a3f76e56..7282f7a8be 100644
--- a/indra/newview/llcallfloater.h
+++ b/indra/newview/llcallfloater.h
@@ -28,7 +28,7 @@
#ifndef LL_LLCALLFLOATER_H
#define LL_LLCALLFLOATER_H
-#include "lltransientdockablefloater.h"
+#include "llfloater.h"
#include "llvoicechannel.h"
#include "llvoiceclient.h"
@@ -52,7 +52,7 @@ class LLSpeakersDelayActionsStorage;
* When the Resident is engaged in any chat except Nearby Chat, the Voice Control Panel
* also provides a 'Leave Call' button to allow the Resident to leave that voice channel.
*/
-class LLCallFloater : public LLTransientDockableFloater, LLVoiceClientParticipantObserver
+class LLCallFloater : public LLFloater, LLVoiceClientParticipantObserver
{
public:
@@ -262,9 +262,6 @@ private:
*/
static LLVoiceChannel* sCurrentVoiceChannel;
- /* virtual */
- LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::IM; }
-
boost::signals2::connection mVoiceChannelStateChangeConnection;
};
diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp
index 4ab3d8dc98..987651fc80 100644
--- a/indra/newview/llchannelmanager.cpp
+++ b/indra/newview/llchannelmanager.cpp
@@ -58,7 +58,10 @@ LLChannelManager::~LLChannelManager()
{
for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it != mChannelList.end(); ++it)
{
- delete (*it).channel;
+ LLScreenChannelBase* channel = it->channel.get();
+ if (!channel) continue;
+
+ delete channel;
}
mChannelList.clear();
@@ -68,9 +71,10 @@ LLChannelManager::~LLChannelManager()
LLScreenChannel* LLChannelManager::createNotificationChannel()
{
// creating params for a channel
- LLChannelManager::Params p;
+ LLScreenChannelBase::Params p;
p.id = LLUUID(gSavedSettings.getString("NotificationChannelUUID"));
p.channel_align = CA_RIGHT;
+ p.toast_align = NA_TOP;
// Getting a Channel for our notifications
return dynamic_cast<LLScreenChannel*> (LLChannelManager::getInstance()->getChannel(p));
@@ -84,16 +88,19 @@ void LLChannelManager::onLoginCompleted()
// calc a number of all offline notifications
for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it != mChannelList.end(); ++it)
{
+ LLScreenChannelBase* channel = it->channel.get();
+ if (!channel) continue;
+
// don't calc notifications for Nearby Chat
- if((*it).channel->getChannelID() == LLUUID(gSavedSettings.getString("NearByChatChannelUUID")))
+ if(channel->getChannelID() == LLUUID(gSavedSettings.getString("NearByChatChannelUUID")))
{
continue;
}
// don't calc notifications for channels that always show their notifications
- if(!(*it).channel->getDisplayToastsAlways())
+ if(!channel->getDisplayToastsAlways())
{
- away_notifications +=(*it).channel->getNumberOfHiddenToasts();
+ away_notifications +=channel->getNumberOfHiddenToasts();
}
}
@@ -106,7 +113,7 @@ void LLChannelManager::onLoginCompleted()
else
{
// create a channel for the StartUp Toast
- LLChannelManager::Params p;
+ LLScreenChannelBase::Params p;
p.id = LLUUID(gSavedSettings.getString("StartUpChannelUUID"));
p.channel_align = CA_RIGHT;
mStartUpChannel = createChannel(p);
@@ -157,33 +164,22 @@ LLScreenChannelBase* LLChannelManager::addChannel(LLScreenChannelBase* channel)
ChannelElem new_elem;
new_elem.id = channel->getChannelID();
- new_elem.channel = channel;
+ new_elem.channel = channel->getHandle();
mChannelList.push_back(new_elem);
return channel;
}
-LLScreenChannel* LLChannelManager::createChannel(LLChannelManager::Params& p)
+LLScreenChannel* LLChannelManager::createChannel(LLScreenChannelBase::Params& p)
{
- LLScreenChannel* new_channel = new LLScreenChannel(p.id);
-
- if(!new_channel)
- {
- llerrs << "LLChannelManager::getChannel(LLChannelManager::Params& p) - can't create a channel!" << llendl;
- }
- else
- {
- new_channel->setToastAlignment(p.toast_align);
- new_channel->setChannelAlignment(p.channel_align);
- new_channel->setDisplayToastsAlways(p.display_toasts_always);
+ LLScreenChannel* new_channel = new LLScreenChannel(p);
- addChannel(new_channel);
- }
+ addChannel(new_channel);
return new_channel;
}
-LLScreenChannelBase* LLChannelManager::getChannel(LLChannelManager::Params& p)
+LLScreenChannelBase* LLChannelManager::getChannel(LLScreenChannelBase::Params& p)
{
LLScreenChannelBase* new_channel = findChannelByID(p.id);
@@ -195,19 +191,19 @@ LLScreenChannelBase* LLChannelManager::getChannel(LLChannelManager::Params& p)
}
//--------------------------------------------------------------------------
-LLScreenChannelBase* LLChannelManager::findChannelByID(const LLUUID id)
+LLScreenChannelBase* LLChannelManager::findChannelByID(const LLUUID& id)
{
std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id);
if(it != mChannelList.end())
{
- return (*it).channel;
+ return (*it).channel.get();
}
return NULL;
}
//--------------------------------------------------------------------------
-void LLChannelManager::removeChannelByID(const LLUUID id)
+void LLChannelManager::removeChannelByID(const LLUUID& id)
{
std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id);
if(it != mChannelList.end())
@@ -222,7 +218,10 @@ void LLChannelManager::muteAllChannels(bool mute)
for (std::vector<ChannelElem>::iterator it = mChannelList.begin();
it != mChannelList.end(); it++)
{
- it->channel->setShowToasts(!mute);
+ if (it->channel.get())
+ {
+ it->channel.get()->setShowToasts(!mute);
+ }
}
}
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
index 1a0b98f6cf..a5de8a5327 100644
--- a/indra/newview/llchannelmanager.h
+++ b/indra/newview/llchannelmanager.h
@@ -44,24 +44,14 @@ namespace LLNotificationsUI
class LLChannelManager : public LLSingleton<LLChannelManager>
{
public:
- struct Params
- {
- LLUUID id;
- bool display_toasts_always;
- EToastAlignment toast_align;
- EChannelAlignment channel_align;
-
- Params()
- : id(LLUUID("")), display_toasts_always(false), toast_align(NA_BOTTOM), channel_align(CA_LEFT)
- {}
- };
+
struct ChannelElem
{
- LLUUID id;
- LLScreenChannelBase* channel;
+ LLUUID id;
+ LLHandle<LLScreenChannelBase> channel;
- ChannelElem() : id(LLUUID("")), channel(NULL) { }
+ ChannelElem() { }
ChannelElem(const ChannelElem &elem)
{
@@ -84,18 +74,18 @@ public:
void onStartUpToastClose();
// creates a new ScreenChannel according to the given parameters or returns existing if present
- LLScreenChannelBase* getChannel(LLChannelManager::Params& p);
+ LLScreenChannelBase* getChannel(LLScreenChannelBase::Params& p);
LLScreenChannelBase* addChannel(LLScreenChannelBase* channel);
// returns a channel by its ID
- LLScreenChannelBase* findChannelByID(const LLUUID id);
+ LLScreenChannelBase* findChannelByID(const LLUUID& id);
// creator of the Notification channel, that is used in more than one handler
LLScreenChannel* createNotificationChannel();
// remove channel methods
- void removeChannelByID(const LLUUID id);
+ void removeChannelByID(const LLUUID& id);
/**
* Manages toasts showing for all channels.
@@ -117,7 +107,7 @@ public:
std::vector<ChannelElem>& getChannelList() { return mChannelList;}
private:
- LLScreenChannel* createChannel(LLChannelManager::Params& p);
+ LLScreenChannel* createChannel(LLScreenChannelBase::Params& p);
LLScreenChannel* mStartUpChannel;
std::vector<ChannelElem> mChannelList;
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index cf0374075a..d6095cce07 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -60,7 +60,6 @@
#include "llui.h"
#include "llviewermenu.h"
#include "lluictrlfactory.h"
-#include "llbottomtray.h"
//
// Globals
@@ -95,7 +94,7 @@ LLChatBar::LLChatBar()
mGestureCombo(NULL),
mObserver(NULL)
{
- setIsChrome(TRUE);
+ //setIsChrome(TRUE);
}
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 913d2f34b0..42de47e777 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -42,6 +42,7 @@
#include "llavataractions.h"
#include "lltrans.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmutelist.h"
#include "llstylemap.h"
#include "llslurl.h"
@@ -58,8 +59,6 @@
#include "llviewercontrol.h"
-#include "llsidetray.h"//for blocked objects panel
-
static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
const static std::string NEW_LINE(rawstr_to_utf8("\n"));
@@ -144,7 +143,7 @@ public:
{
LLMuteList::getInstance()->add(LLMute(getAvatarId(), mFrom, LLMute::OBJECT));
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
}
}
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index 8584885bc9..9a84280f25 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -35,6 +35,7 @@
#include "llfloaterreg.h"
#include "lllocalcliprect.h"
#include "lltrans.h"
+#include "llnearbychatbar.h"
#include "llviewercontrol.h"
#include "llagentdata.h"
@@ -315,12 +316,12 @@ BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
return TRUE;
else
{
- LLFloaterReg::showInstance("nearby_chat",LLSD());
+ LLNearbyChatBar::getInstance()->showHistory();
return FALSE;
}
}
- LLFloaterReg::showInstance("nearby_chat",LLSD());
+ LLNearbyChatBar::getInstance()->showHistory();
return LLPanel::handleMouseUp(x,y,mask);
}
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 245157923d..a076374903 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -29,7 +29,7 @@
#include "llagent.h"
#include "llavataractions.h"
-#include "llbottomtray.h"
+#include "llchicletbar.h"
#include "lleventtimer.h"
#include "llgroupactions.h"
#include "lliconctrl.h"
@@ -214,10 +214,10 @@ void LLSysWellChiclet::updateWidget(bool is_window_empty)
{
mButton->setEnabled(!is_window_empty);
- LLSD params;
- params["well_empty"] = is_window_empty;
- params["well_name"] = getName();
- notifyParent(params);
+ if (LLChicletBar::instanceExists())
+ {
+ LLChicletBar::getInstance()->showWellButton(getName(), !is_window_empty);
+ }
}
// virtual
BOOL LLSysWellChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)
@@ -297,7 +297,7 @@ void LLIMWellChiclet::createMenu()
void LLIMWellChiclet::messageCountChanged(const LLSD& session_data)
{
const LLUUID& session_id = session_data["session_id"];
- const S32 counter = LLBottomTray::getInstance()->getTotalUnreadIMCount();
+ const S32 counter = LLChicletBar::getInstance()->getTotalUnreadIMCount();
const bool im_not_visible = !LLFloaterReg::instanceVisible("im_container")
&& !LLFloaterReg::instanceVisible("impanel", session_id);
diff --git a/indra/newview/llchicletbar.cpp b/indra/newview/llchicletbar.cpp
new file mode 100644
index 0000000000..a17e1d13f5
--- /dev/null
+++ b/indra/newview/llchicletbar.cpp
@@ -0,0 +1,340 @@
+/**
+ * @file llchicletbar.cpp
+ * @brief LLChicletBar class implementation
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h" // must be first include
+
+#include "llchicletbar.h"
+
+// library includes
+#include "llfloaterreg.h"
+#include "lllayoutstack.h"
+
+// newview includes
+#include "llchiclet.h"
+#include "llimfloater.h" // for LLIMFloater
+#include "llsyswellwindow.h"
+
+namespace
+{
+ const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
+
+ S32 get_panel_min_width(LLLayoutStack* stack, LLView* panel)
+ {
+ S32 minimal_width = 0;
+ llassert(stack);
+ if ( stack && panel && panel->getVisible() )
+ {
+ stack->getPanelMinSize(panel->getName(), &minimal_width);
+ }
+ return minimal_width;
+ }
+
+ S32 get_panel_max_width(LLLayoutStack* stack, LLPanel* panel)
+ {
+ S32 max_width = 0;
+ llassert(stack);
+ if ( stack && panel && panel->getVisible() )
+ {
+ stack->getPanelMaxSize(panel->getName(), &max_width);
+ }
+ return max_width;
+ }
+
+ S32 get_curr_width(LLUICtrl* ctrl)
+ {
+ S32 cur_width = 0;
+ if ( ctrl && ctrl->getVisible() )
+ {
+ cur_width = ctrl->getRect().getWidth();
+ }
+ return cur_width;
+ }
+}
+
+LLChicletBar::LLChicletBar(const LLSD&)
+: mChicletPanel(NULL),
+ mToolbarStack(NULL)
+{
+ // Firstly add our self to IMSession observers, so we catch session events
+ // before chiclets do that.
+ LLIMMgr::getInstance()->addSessionObserver(this);
+
+ buildFromFile("panel_chiclet_bar.xml");
+}
+
+LLChicletBar::~LLChicletBar()
+{
+ if (!LLSingleton<LLIMMgr>::destroyed())
+ {
+ LLIMMgr::getInstance()->removeSessionObserver(this);
+ }
+}
+
+LLIMChiclet* LLChicletBar::createIMChiclet(const LLUUID& session_id)
+{
+ LLIMChiclet::EType im_chiclet_type = LLIMChiclet::getIMSessionType(session_id);
+
+ switch (im_chiclet_type)
+ {
+ case LLIMChiclet::TYPE_IM:
+ return getChicletPanel()->createChiclet<LLIMP2PChiclet>(session_id);
+ case LLIMChiclet::TYPE_GROUP:
+ return getChicletPanel()->createChiclet<LLIMGroupChiclet>(session_id);
+ case LLIMChiclet::TYPE_AD_HOC:
+ return getChicletPanel()->createChiclet<LLAdHocChiclet>(session_id);
+ case LLIMChiclet::TYPE_UNKNOWN:
+ break;
+ }
+
+ return NULL;
+}
+
+//virtual
+void LLChicletBar::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id)
+{
+ if (!getChicletPanel()) return;
+
+ LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
+ if (!session) return;
+
+ // no need to spawn chiclets for participants in P2P calls called through Avaline
+ if (session->isP2P() && session->isOtherParticipantAvaline()) return;
+
+ if (getChicletPanel()->findChiclet<LLChiclet>(session_id)) return;
+
+ LLIMChiclet* chiclet = createIMChiclet(session_id);
+ if(chiclet)
+ {
+ chiclet->setIMSessionName(name);
+ chiclet->setOtherParticipantId(other_participant_id);
+
+ LLIMFloater::onIMChicletCreated(session_id);
+
+ }
+ else
+ {
+ llwarns << "Could not create chiclet" << llendl;
+ }
+}
+
+//virtual
+void LLChicletBar::sessionRemoved(const LLUUID& session_id)
+{
+ if(getChicletPanel())
+ {
+ // IM floater should be closed when session removed and associated chiclet closed
+ LLIMFloater* iMfloater = LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
+ if (iMfloater != NULL)
+ {
+ iMfloater->closeFloater();
+ }
+
+ getChicletPanel()->removeChiclet(session_id);
+ }
+}
+
+void LLChicletBar::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id)
+{
+ //this is only needed in case of outgoing ad-hoc/group chat sessions
+ LLChicletPanel* chiclet_panel = getChicletPanel();
+ if (chiclet_panel)
+ {
+ //it should be ad-hoc im chiclet or group im chiclet
+ LLChiclet* chiclet = chiclet_panel->findChiclet<LLChiclet>(old_session_id);
+ if (chiclet) chiclet->setSessionId(new_session_id);
+ }
+}
+
+S32 LLChicletBar::getTotalUnreadIMCount()
+{
+ return getChicletPanel()->getTotalUnreadIMCount();
+}
+
+BOOL LLChicletBar::postBuild()
+{
+ mToolbarStack = getChild<LLLayoutStack>("toolbar_stack");
+ mChicletPanel = getChild<LLChicletPanel>("chiclet_list");
+
+ showWellButton("im_well", !LLIMWellWindow::getInstance()->isWindowEmpty());
+ showWellButton("notification_well", !LLNotificationWellWindow::getInstance()->isWindowEmpty());
+
+ return TRUE;
+}
+
+void LLChicletBar::showWellButton(const std::string& well_name, bool visible)
+{
+ LLView * panel = findChild<LLView>(well_name + "_panel");
+ if (!panel) return;
+
+ panel->setVisible(visible);
+}
+
+void LLChicletBar::log(LLView* panel, const std::string& descr)
+{
+ if (NULL == panel) return;
+ LLView* layout = panel->getParent();
+ LL_DEBUGS("Chiclet Bar Rects") << descr << ": "
+ << "panel: " << panel->getName()
+ << ", rect: " << panel->getRect()
+ << " layout: " << layout->getName()
+ << ", rect: " << layout->getRect()
+ << LL_ENDL;
+}
+
+void LLChicletBar::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ static S32 debug_calling_number = 0;
+ lldebugs << "**************************************** " << ++debug_calling_number << llendl;
+
+ S32 current_width = getRect().getWidth();
+ S32 delta_width = width - current_width;
+ lldebugs << "Reshaping: "
+ << ", width: " << width
+ << ", cur width: " << current_width
+ << ", delta_width: " << delta_width
+ << ", called_from_parent: " << called_from_parent
+ << llendl;
+
+ if (mChicletPanel) log(mChicletPanel, "before");
+
+ // Difference between chiclet bar width required to fit its children and the actual width. (see EXT-991)
+ // Positive value means that chiclet bar is not wide enough.
+ // Negative value means that there is free space.
+ static S32 extra_shrink_width = 0;
+ bool should_be_reshaped = true;
+
+ if (mChicletPanel && mToolbarStack)
+ {
+ // Firstly, update layout stack to ensure we deal with correct panel sizes.
+ {
+ BOOL saved_anim = mToolbarStack->getAnimate();
+ // Set chiclet panel to be autoresized by default.
+ mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+ // Disable animation to prevent layout updating in several frames.
+ mToolbarStack->setAnimate(FALSE);
+ // Force the updating of layout to reset panels collapse factor.
+ mToolbarStack->updateLayout();
+ // Restore animate state.
+ mToolbarStack->setAnimate(saved_anim);
+ }
+
+ // chiclet bar is narrowed
+ if (delta_width < 0)
+ {
+ if (extra_shrink_width > 0) // not enough space
+ {
+ extra_shrink_width += llabs(delta_width);
+ should_be_reshaped = false;
+ }
+ else
+ {
+ extra_shrink_width = processWidthDecreased(delta_width);
+
+ // increase new width to extra_shrink_width value to not reshape less than chiclet bar minimum
+ width += extra_shrink_width;
+ }
+ }
+ // chiclet bar is widened
+ else
+ {
+ if (extra_shrink_width > delta_width)
+ {
+ // Still not enough space.
+ // Only subtract the delta from the required delta and don't reshape.
+ extra_shrink_width -= delta_width;
+ should_be_reshaped = false;
+ }
+ else if (extra_shrink_width > 0)
+ {
+ // If we have some extra shrink width let's reduce delta_width & width
+ delta_width -= extra_shrink_width;
+ width -= extra_shrink_width;
+ extra_shrink_width = 0;
+ }
+ }
+ }
+
+ if (should_be_reshaped)
+ {
+ lldebugs << "Reshape all children with width: " << width << llendl;
+ LLPanel::reshape(width, height, called_from_parent);
+ }
+
+ if (mChicletPanel) log(mChicletPanel, "after");
+}
+
+S32 LLChicletBar::processWidthDecreased(S32 delta_width)
+{
+ bool still_should_be_processed = true;
+
+ const S32 chiclet_panel_shrink_headroom = getChicletPanelShrinkHeadroom();
+
+ // Decreasing width of chiclet panel.
+ if (chiclet_panel_shrink_headroom > 0)
+ {
+ // we have some space to decrease chiclet panel
+ S32 shrink_by = llmin(-delta_width, chiclet_panel_shrink_headroom);
+
+ lldebugs << "delta_width: " << delta_width
+ << ", panel_delta_min: " << chiclet_panel_shrink_headroom
+ << ", shrink_by: " << shrink_by
+ << llendl;
+
+ // is chiclet panel wide enough to process resizing?
+ delta_width += chiclet_panel_shrink_headroom;
+
+ still_should_be_processed = delta_width < 0;
+
+ lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
+ mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
+ log(mChicletPanel, "after processing panel decreasing via chiclet panel");
+
+ lldebugs << "RS_CHICLET_PANEL"
+ << ", delta_width: " << delta_width
+ << llendl;
+ }
+
+ S32 extra_shrink_width = 0;
+
+ if (still_should_be_processed)
+ {
+ extra_shrink_width = -delta_width;
+ llwarns << "There is no enough width to reshape all children: "
+ << extra_shrink_width << llendl;
+ }
+
+ return extra_shrink_width;
+}
+
+S32 LLChicletBar::getChicletPanelShrinkHeadroom() const
+{
+ static const S32 min_width = mChicletPanel->getMinWidth();
+ const S32 cur_width = mChicletPanel->getParent()->getRect().getWidth();
+
+ S32 shrink_headroom = cur_width - min_width;
+ llassert(shrink_headroom >= 0); // the panel cannot get narrower than the minimum
+ return shrink_headroom;
+}
diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h
new file mode 100644
index 0000000000..224dfbb647
--- /dev/null
+++ b/indra/newview/llchicletbar.h
@@ -0,0 +1,99 @@
+/**
+* @file llchicletbar.h
+* @brief LLChicletBar class header file
+*
+* $LicenseInfo:firstyear=2011&license=viewerlgpl$
+* Second Life Viewer Source Code
+* Copyright (C) 2011, Linden Research, Inc.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation;
+* version 2.1 of the License only.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*
+* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+* $/LicenseInfo$
+*/
+
+#ifndef LL_LLCHICLETBAR_H
+#define LL_LLCHICLETBAR_H
+
+#include "llpanel.h"
+#include "llimview.h"
+
+class LLChicletPanel;
+class LLIMChiclet;
+class LLLayoutPanel;
+class LLLayoutStack;
+
+class LLChicletBar
+ : public LLSingleton<LLChicletBar>
+ , public LLPanel
+ , public LLIMSessionObserver
+{
+ LOG_CLASS(LLChicletBar);
+ friend class LLSingleton<LLChicletBar>;
+public:
+ ~LLChicletBar();
+
+ BOOL postBuild();
+
+ LLChicletPanel* getChicletPanel() { return mChicletPanel; }
+
+ // LLIMSessionObserver observe triggers
+ virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id);
+ virtual void sessionRemoved(const LLUUID& session_id);
+ void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
+
+ S32 getTotalUnreadIMCount();
+
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent);
+
+ /**
+ * Creates IM Chiclet based on session type (IM chat or Group chat)
+ */
+ LLIMChiclet* createIMChiclet(const LLUUID& session_id);
+
+ /**
+ * Shows/hides panel with specified well button (IM or Notification)
+ *
+ * @param well_name - name of the well panel to be processed.
+ * @param visible - a flag specifying whether a button should be shown or hidden.
+ */
+ void showWellButton(const std::string& well_name, bool visible);
+
+private:
+ /**
+ * Updates child controls size and visibility when it is necessary to reduce total width.
+ *
+ * @param delta_width - value by which chiclet bar should be shrunk. It is a negative value.
+ * @returns positive value which chiclet bar can not process when it reaches its minimal width.
+ * Zero if there was enough space to process delta_width.
+ */
+ S32 processWidthDecreased(S32 delta_width);
+
+ /** helper function to log debug messages */
+ void log(LLView* panel, const std::string& descr);
+
+ /**
+ * @return difference between current chiclet panel width and the minimum.
+ */
+ S32 getChicletPanelShrinkHeadroom() const;
+
+protected:
+ LLChicletBar(const LLSD& key = LLSD());
+
+ LLChicletPanel* mChicletPanel;
+ LLLayoutStack* mToolbarStack;
+};
+
+#endif // LL_LLCHICLETBAR_H
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 254c0adef1..54598f90c8 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -33,6 +33,7 @@
#include "llagentdata.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventory.h"
#include "llinventoryfunctions.h"
#include "lllistcontextmenu.h"
@@ -40,7 +41,6 @@
#include "llviewermenu.h"
#include "llwearableitemslist.h"
#include "llpaneloutfitedit.h"
-#include "llsidetray.h"
#include "lltrans.h"
static LLRegisterPanelClassWrapper<LLCOFWearables> t_cof_wearables("cof_wearables");
@@ -159,13 +159,8 @@ public:
protected:
static void replaceWearable(const LLUUID& item_id)
{
- // *TODO: Most probable that accessing to LLPanelOutfitEdit instance should be:
- // LLSideTray::getInstance()->getSidepanelAppearance()->getPanelOutfitEdit()
- // without casting. Getter methods provides possibility to check and construct
- // absent instance. Explicit relations between components avoids situations
- // when we tries to construct instance with unsatisfied implicit input conditions.
LLPanelOutfitEdit * panel_outfit_edit =
- dynamic_cast<LLPanelOutfitEdit*> (LLSideTray::getInstance()->getPanel(
+ dynamic_cast<LLPanelOutfitEdit*> (LLFloaterSidePanelContainer::getPanel("appearance",
"panel_outfit_edit"));
if (panel_outfit_edit != NULL)
{
@@ -235,9 +230,7 @@ protected:
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
LLUUID selected_id = mUUIDs.back();
- // *HACK* need to pass pointer to LLPanelOutfitEdit instead of LLSideTray::getInstance()->getPanel().
- // LLSideTray::getInstance()->getPanel() is rather slow variant
- LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+ LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceMenuItemClicked, panel_oe, selected_id));
registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
registrar.add("BodyPart.Create", boost::bind(&CofBodyPartContextMenu::createNew, this, selected_id));
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index dd243397a1..1e03582a29 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -217,12 +217,12 @@ OSStatus LLDirPicker::doNavChooseDialog()
error = NavCreateChooseFolderDialog(&mNavOptions, &doNavCallbackEvent, NULL, NULL, &navRef);
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
if (error == noErr)
error = NavDialogRun(navRef);
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
if (error == noErr)
error = NavDialogGetReply(navRef, &navReply);
diff --git a/indra/newview/lldndbutton.cpp b/indra/newview/lldndbutton.cpp
index 8a38c8a643..7c9dda6b1d 100644
--- a/indra/newview/lldndbutton.cpp
+++ b/indra/newview/lldndbutton.cpp
@@ -31,16 +31,9 @@
static LLDefaultChildRegistry::Register<LLDragAndDropButton> r("dnd_button");
-LLDragAndDropButton::Params::Params()
-{
-
-}
-
LLDragAndDropButton::LLDragAndDropButton(const Params& params)
: LLButton(params)
-{
-
-}
+{}
BOOL LLDragAndDropButton::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, EAcceptance* accept, std::string& tooltip_msg)
{
diff --git a/indra/newview/lldndbutton.h b/indra/newview/lldndbutton.h
index 0642cbb7b9..53ea2f5ea7 100644
--- a/indra/newview/lldndbutton.h
+++ b/indra/newview/lldndbutton.h
@@ -43,10 +43,7 @@
class LLDragAndDropButton : public LLButton
{
public:
- struct Params : public LLInitParam::Block<Params, LLButton::Params>
- {
- Params();
- };
+ struct Params : public LLInitParam::Block<Params, LLButton::Params> {};
LLDragAndDropButton(const Params& params);
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 0b17d64eb0..98de418878 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -31,6 +31,7 @@
#include "llfocusmgr.h"
#include "llinventory.h"
#include "lllandmarkactions.h"
+#include "lltoolbarview.h"
#include "lltrans.h"
#include "lluictrlfactory.h"
#include "llmenugl.h"
@@ -41,10 +42,10 @@
#include "llinventoryclipboard.h"
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "lllandmarkactions.h"
#include "llnotificationsutil.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
#include "llviewermenu.h"
@@ -54,6 +55,7 @@
static LLDefaultChildRegistry::Register<LLFavoritesBarCtrl> r("favorites_bar");
const S32 DROP_DOWN_MENU_WIDTH = 250;
+const S32 DROP_DOWN_MENU_TOP_PAD = 13;
/**
* Helper for LLFavoriteLandmarkButton and LLFavoriteLandmarkMenuItem.
@@ -360,7 +362,7 @@ struct LLFavoritesSort
LLFavoritesBarCtrl::Params::Params()
: image_drag_indication("image_drag_indication"),
- chevron_button("chevron_button"),
+ more_button("more_button"),
label("label")
{
}
@@ -389,10 +391,10 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
gInventory.addObserver(this);
//make chevron button
- LLButton::Params chevron_button_params(p.chevron_button);
- chevron_button_params.click_callback.function(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
- mChevronButton = LLUICtrlFactory::create<LLButton> (chevron_button_params);
- addChild(mChevronButton);
+ LLTextBox::Params more_button_params(p.more_button);
+ mMoreTextBox = LLUICtrlFactory::create<LLTextBox> (more_button_params);
+ mMoreTextBox->setClickedCallback(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
+ addChild(mMoreTextBox);
LLTextBox::Params label_param(p.label);
mBarLabel = LLUICtrlFactory::create<LLTextBox> (label_param);
@@ -403,8 +405,8 @@ LLFavoritesBarCtrl::~LLFavoritesBarCtrl()
{
gInventory.removeObserver(this);
- LLView::deleteViewByHandle(mOverflowMenuHandle);
- LLView::deleteViewByHandle(mContextMenuHandle);
+ delete mOverflowMenuHandle.get();
+ delete mContextMenuHandle.get();
}
BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
@@ -692,7 +694,7 @@ void LLFavoritesBarCtrl::updateButtons()
const child_list_t* childs = getChildList();
child_list_const_iter_t child_it = childs->begin();
int first_changed_item_index = 0;
- int rightest_point = getRect().mRight - mChevronButton->getRect().getWidth();
+ int rightest_point = getRect().mRight - mMoreTextBox->getRect().getWidth();
//lets find first changed button
while (child_it != childs->end() && first_changed_item_index < mItems.count())
{
@@ -735,9 +737,9 @@ void LLFavoritesBarCtrl::updateButtons()
}
// we have to remove ChevronButton to make sure that the last item will be LandmarkButton to get the right aligning
// keep in mind that we are cutting all buttons in space between the last visible child of favbar and ChevronButton
- if (mChevronButton->getParent() == this)
+ if (mMoreTextBox->getParent() == this)
{
- removeChild(mChevronButton);
+ removeChild(mMoreTextBox);
}
int last_right_edge = 0;
//calculate new buttons offset
@@ -777,13 +779,13 @@ void LLFavoritesBarCtrl::updateButtons()
S32 buttonHGap = button_params.rect.left; // default value
LLRect rect;
// Chevron button should stay right aligned
- rect.setOriginAndSize(getRect().mRight - mChevronButton->getRect().getWidth() - buttonHGap, 0,
- mChevronButton->getRect().getWidth(),
- mChevronButton->getRect().getHeight());
+ rect.setOriginAndSize(getRect().mRight - mMoreTextBox->getRect().getWidth() - buttonHGap, 0,
+ mMoreTextBox->getRect().getWidth(),
+ mMoreTextBox->getRect().getHeight());
- addChild(mChevronButton);
- mChevronButton->setRect(rect);
- mChevronButton->setVisible(TRUE);
+ addChild(mMoreTextBox);
+ mMoreTextBox->setRect(rect);
+ mMoreTextBox->setVisible(TRUE);
}
// Update overflow menu
LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mOverflowMenuHandle.get());
@@ -816,8 +818,8 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
int width = required_width > def_button_width? def_button_width : required_width;
LLFavoriteLandmarkButton* fav_btn = NULL;
- // do we have a place for next button + double buttonHGap + mChevronButton ?
- if(curr_x + width + 2*button_x_delta + mChevronButton->getRect().getWidth() > getRect().mRight )
+ // do we have a place for next button + double buttonHGap + mMoreTextBox ?
+ if(curr_x + width + 2*button_x_delta + mMoreTextBox->getRect().getWidth() > getRect().mRight )
{
return NULL;
}
@@ -893,84 +895,155 @@ void LLFavoritesBarCtrl::showDropDownMenu()
{
if (mOverflowMenuHandle.isDead())
{
- LLToggleableMenu::Params menu_p;
- menu_p.name("favorites menu");
- menu_p.can_tear_off(false);
- menu_p.visible(false);
- menu_p.scrollable(true);
- menu_p.max_scrollable_items = 10;
- menu_p.preferred_width = DROP_DOWN_MENU_WIDTH;
-
- LLToggleableMenu* menu = LLUICtrlFactory::create<LLFavoriteLandmarkToggleableMenu>(menu_p);
- mOverflowMenuHandle = menu->getHandle();
+ createOverflowMenu();
}
LLToggleableMenu* menu = (LLToggleableMenu*)mOverflowMenuHandle.get();
+ if (menu && menu->toggleVisibility())
+ {
+ if (mUpdateDropDownItems)
+ {
+ updateMenuItems(menu);
+ }
+
+ menu->buildDrawLabels();
+ menu->updateParent(LLMenuGL::sMenuContainer);
+ menu->setButtonRect(mMoreTextBox->getRect(), this);
+ positionAndShowMenu(menu);
+ }
+}
+
+void LLFavoritesBarCtrl::createOverflowMenu()
+{
+ LLToggleableMenu::Params menu_p;
+ menu_p.name("favorites menu");
+ menu_p.can_tear_off(false);
+ menu_p.visible(false);
+ menu_p.scrollable(true);
+ menu_p.max_scrollable_items = 10;
+ menu_p.preferred_width = DROP_DOWN_MENU_WIDTH;
+
+ LLToggleableMenu* menu = LLUICtrlFactory::create<LLFavoriteLandmarkToggleableMenu>(menu_p);
+ mOverflowMenuHandle = menu->getHandle();
+}
- if (menu)
+void LLFavoritesBarCtrl::updateMenuItems(LLToggleableMenu* menu)
+{
+ menu->empty();
+
+ U32 widest_item = 0;
+
+ for (S32 i = mFirstDropDownItem; i < mItems.count(); i++)
{
- if (!menu->toggleVisibility())
- return;
+ LLViewerInventoryItem* item = mItems.get(i);
+ const std::string& item_name = item->getName();
- U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
- if (mUpdateDropDownItems)
+ LLFavoriteLandmarkMenuItem::Params item_params;
+ item_params.name(item_name);
+ item_params.label(item_name);
+ item_params.on_click.function(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID()));
+
+ LLFavoriteLandmarkMenuItem *menu_item = LLUICtrlFactory::create<LLFavoriteLandmarkMenuItem>(item_params);
+ menu_item->initFavoritesBarPointer(this);
+ menu_item->setRightMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonRightClick, this, item->getUUID(), _1, _2, _3, _4));
+ menu_item->LLUICtrl::setMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseDown, this, item->getUUID(), _1, _2, _3, _4));
+ menu_item->LLUICtrl::setMouseUpCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseUp, this, item->getUUID(), _1, _2, _3, _4));
+ menu_item->setLandmarkID(item->getUUID());
+
+ fitLabelWidth(menu_item);
+
+ widest_item = llmax(widest_item, menu_item->getNominalWidth());
+
+ menu->addChild(menu_item);
+ }
+
+ addOpenLandmarksMenuItem(menu);
+ mUpdateDropDownItems = false;
+}
+
+void LLFavoritesBarCtrl::fitLabelWidth(LLMenuItemCallGL* menu_item)
+{
+ U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
+ std::string item_name = menu_item->getName();
+
+ // Check whether item name wider than menu
+ if (menu_item->getNominalWidth() > max_width)
+ {
+ S32 chars_total = item_name.length();
+ S32 chars_fitted = 1;
+ menu_item->setLabel(LLStringExplicit(""));
+ S32 label_space = max_width - menu_item->getFont()->getWidth("...") -
+ menu_item->getNominalWidth();// This returns width of menu item with empty label (pad pixels)
+
+ while (chars_fitted < chars_total
+ && menu_item->getFont()->getWidth(item_name, 0, chars_fitted) < label_space)
{
- menu->empty();
+ chars_fitted++;
+ }
+ chars_fitted--; // Rolling back one char, that doesn't fit
- U32 widest_item = 0;
+ menu_item->setLabel(item_name.substr(0, chars_fitted) + "...");
+ }
+}
- for (S32 i = mFirstDropDownItem; i < mItems.count(); i++)
- {
- LLViewerInventoryItem* item = mItems.get(i);
- const std::string& item_name = item->getName();
-
- LLFavoriteLandmarkMenuItem::Params item_params;
- item_params.name(item_name);
- item_params.label(item_name);
-
- item_params.on_click.function(boost::bind(
- &LLFavoritesBarCtrl::onButtonClick, this,
- item->getUUID()));
- LLFavoriteLandmarkMenuItem *menu_item = LLUICtrlFactory::create<LLFavoriteLandmarkMenuItem>(item_params);
- menu_item->initFavoritesBarPointer(this);
- menu_item->setRightMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonRightClick, this, item->getUUID(), _1, _2, _3, _4));
- menu_item->LLUICtrl::setMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseDown, this, item->getUUID(), _1, _2, _3, _4));
- menu_item->LLUICtrl::setMouseUpCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseUp, this, item->getUUID(), _1, _2, _3, _4));
- menu_item->setLandmarkID(item->getUUID());
-
- // Check whether item name wider than menu
- if (menu_item->getNominalWidth() > max_width)
- {
- S32 chars_total = item_name.length();
- S32 chars_fitted = 1;
- menu_item->setLabel(LLStringExplicit(""));
- S32 label_space = max_width - menu_item->getFont()->getWidth("...") -
- menu_item->getNominalWidth();// This returns width of menu item with empty label (pad pixels)
-
- while (chars_fitted < chars_total
- && menu_item->getFont()->getWidth(item_name, 0, chars_fitted) < label_space)
- {
- chars_fitted++;
- }
- chars_fitted--; // Rolling back one char, that doesn't fit
+void LLFavoritesBarCtrl::addOpenLandmarksMenuItem(LLToggleableMenu* menu)
+{
+ std::string label_untrans = "Open landmarks";
+ std::string label_transl;
+ bool translated = LLTrans::findString(label_transl, label_untrans);
+
+ LLMenuItemCallGL::Params item_params;
+ item_params.name("open_my_landmarks");
+ item_params.label(translated ? label_transl: label_untrans);
+ item_params.on_click.function(boost::bind(&LLFloaterSidePanelContainer::showPanel, "places", LLSD()));
+ LLMenuItemCallGL* menu_item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params);
+
+ fitLabelWidth(menu_item);
+
+ LLMenuItemSeparatorGL::Params sep_params;
+ sep_params.enabled_color=LLUIColorTable::instance().getColor("MenuItemEnabledColor");
+ sep_params.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");
+ sep_params.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");
+ sep_params.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor");
+ LLMenuItemSeparatorGL* separator = LLUICtrlFactory::create<LLMenuItemSeparatorGL>(sep_params);
+
+ menu->addChild(separator);
+ menu->addChild(menu_item);
+}
- menu_item->setLabel(item_name.substr(0, chars_fitted)
- + "...");
- }
- widest_item = llmax(widest_item, menu_item->getNominalWidth());
+void LLFavoritesBarCtrl::positionAndShowMenu(LLToggleableMenu* menu)
+{
+ U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
- menu->addChild(menu_item);
- }
- mUpdateDropDownItems = false;
+ S32 menu_x = getRect().getWidth() - max_width;
+ S32 menu_y = getParent()->getRect().mBottom - DROP_DOWN_MENU_TOP_PAD;
+
+ // the menu should be offset of the right edge of the window
+ // so it's no covered by buttons in the right-side toolbar.
+ LLToolBar* right_toolbar = gToolBarView->getChild<LLToolBar>("toolbar_right");
+ if (right_toolbar && right_toolbar->hasButtons())
+ {
+ S32 toolbar_top = 0;
+
+ if (LLView* top_border_panel = right_toolbar->getChild<LLView>("button_panel"))
+ {
+ toolbar_top = top_border_panel->calcScreenRect().mTop;
}
- menu->buildDrawLabels();
- menu->updateParent(LLMenuGL::sMenuContainer);
+ // Calculating the bottom (in screen coord) of the drop down menu
+ S32 menu_top = getParent()->getRect().mBottom - DROP_DOWN_MENU_TOP_PAD;
+ S32 menu_bottom = menu_top - menu->getRect().getHeight();
+ S32 menu_bottom_screen = 0;
- menu->setButtonRect(mChevronButton->getRect(), this);
+ localPointToScreen(0, menu_bottom, &menu_top, &menu_bottom_screen);
- LLMenuGL::showPopup(this, menu, getRect().getWidth() - max_width, 0);
+ if (menu_bottom_screen < toolbar_top)
+ {
+ menu_x -= right_toolbar->getRect().getWidth();
+ }
}
+
+ LLMenuGL::showPopup(this, menu, menu_x, menu_y);
}
void LLFavoritesBarCtrl::onButtonClick(LLUUID item_id)
@@ -1057,7 +1130,7 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata)
key["type"] = "landmark";
key["id"] = mSelectedItemID;
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
else if (action == "copy_slurl")
{
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 1a28731c4f..1b11d6196e 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -34,13 +34,16 @@
#include "llinventoryobserver.h"
#include "llinventorymodel.h"
+class LLMenuItemCallGL;
+class LLToggleableMenu;
+
class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
{
public:
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
{
Optional<LLUIImage*> image_drag_indication;
- Optional<LLButton::Params> chevron_button;
+ Optional<LLTextBox::Params> more_button;
Optional<LLTextBox::Params> label;
Params();
};
@@ -132,10 +135,21 @@ private:
// finds an item by it's UUID in the items array
LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id);
+ void createOverflowMenu();
+
+ void updateMenuItems(LLToggleableMenu* menu);
+
+ // Fits menu item label width with favorites menu width
+ void fitLabelWidth(LLMenuItemCallGL* menu_item);
+
+ void addOpenLandmarksMenuItem(LLToggleableMenu* menu);
+
+ void positionAndShowMenu(LLToggleableMenu* menu);
+
BOOL mShowDragMarker;
LLUICtrl* mLandingTab;
LLUICtrl* mLastTab;
- LLButton* mChevronButton;
+ LLTextBox* mMoreTextBox;
LLTextBox* mBarLabel;
LLUUID mDragItemId;
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 8c0ed29855..4897cf1885 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -653,12 +653,12 @@ OSStatus LLFilePicker::doNavChooseDialog(ELoadFilter filter)
// (It is destroyed by NavDialogDispose() below.)
error = NavCreateChooseFileDialog(&mNavOptions, NULL, NULL, NULL, navOpenFilterProc, (void*)(&filter), &navRef);
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
if (error == noErr)
error = NavDialogRun(navRef);
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
if (error == noErr)
error = NavDialogGetReply(navRef, &navReply);
@@ -808,13 +808,13 @@ OSStatus LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& fi
}
}
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
// Run the dialog
if (error == noErr)
error = NavDialogRun(navRef);
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
if (error == noErr)
error = NavDialogGetReply(navRef, &navReply);
@@ -1204,7 +1204,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
return FALSE;
}
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
reset();
@@ -1284,7 +1284,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
rtn = (getFileCount() == 1);
}
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
return rtn;
}
@@ -1299,7 +1299,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
return FALSE;
}
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
reset();
@@ -1337,7 +1337,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
rtn = (getFileCount() == 1);
}
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
return rtn;
}
@@ -1352,7 +1352,7 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter )
return FALSE;
}
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
reset();
@@ -1370,7 +1370,7 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter )
rtn = !mFiles.empty();
}
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
return rtn;
}
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 9f0218a95e..1f334815d6 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -223,7 +223,8 @@ BOOL LLFloaterAnimPreview::postBuild()
// now load bvh file
S32 file_size;
- LLAPRFile infile(mFilenameAndPath, LL_APR_RB, &file_size);
+ LLAPRFile infile ;
+ infile.open(mFilenameAndPath, LL_APR_RB, NULL, &file_size);
if (!infile.getFileHandle())
{
diff --git a/indra/newview/llfloateravatar.cpp b/indra/newview/llfloateravatar.cpp
new file mode 100644
index 0000000000..bdc5b581a9
--- /dev/null
+++ b/indra/newview/llfloateravatar.cpp
@@ -0,0 +1,54 @@
+/**
+ * @file llfloateravatar.h
+ * @author Leyla Farazha
+ * @brief floater for the avatar changer
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+/**
+ * Floater that appears when buying an object, giving a preview
+ * of its contents and their permissions.
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloateravatar.h"
+#include "lluictrlfactory.h"
+
+
+LLFloaterAvatar::LLFloaterAvatar(const LLSD& key)
+ : LLFloater(key)
+{
+}
+
+LLFloaterAvatar::~LLFloaterAvatar()
+{
+}
+
+BOOL LLFloaterAvatar::postBuild()
+{
+ enableResizeCtrls(true, true, false);
+ return TRUE;
+}
+
+
diff --git a/indra/newview/llsidetraylistener.h b/indra/newview/llfloateravatar.h
index 51e2137762..cadc5e4028 100644
--- a/indra/newview/llsidetraylistener.h
+++ b/indra/newview/llfloateravatar.h
@@ -1,9 +1,8 @@
-/**
- * @file llsidetraylistener.h
- * @author Nat Goodspeed
- * @date 2011-02-15
- * @brief
- *
+/**
+ * @file llfloateravatar.h
+ * @author Leyla Farazha
+ * @brief floater for the avatar changer
+ *
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2011, Linden Research, Inc.
@@ -26,28 +25,19 @@
* $/LicenseInfo$
*/
-#if ! defined(LL_LLSIDETRAYLISTENER_H)
-#define LL_LLSIDETRAYLISTENER_H
-
-#include "lleventapi.h"
-#include <boost/function.hpp>
+#ifndef LL_FLOATER_AVATAR_H
+#define LL_FLOATER_AVATAR_H
-class LLSideTray;
-class LLSD;
+#include "llfloater.h"
-class LLSideTrayListener: public LLEventAPI
+class LLFloaterAvatar:
+ public LLFloater
{
- typedef boost::function<LLSideTray*()> Getter;
-
-public:
- LLSideTrayListener(const Getter& getter);
-
+ friend class LLFloaterReg;
private:
- void getCollapsed(const LLSD& event) const;
- void getTabs(const LLSD& event) const;
- void getPanels(const LLSD& event) const;
-
- Getter mGetter;
+ LLFloaterAvatar(const LLSD& key);
+ /*virtual*/ ~LLFloaterAvatar();
+ /*virtual*/ BOOL postBuild();
};
-#endif /* ! defined(LL_LLSIDETRAYLISTENER_H) */
+#endif
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index 1dfa904a19..aa78bc4f29 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -36,7 +36,6 @@
#include "lljoystickbutton.h"
#include "llviewercontrol.h"
#include "llviewercamera.h"
-#include "llbottomtray.h"
#include "lltoolmgr.h"
#include "lltoolfocus.h"
#include "llslider.h"
@@ -314,12 +313,6 @@ void LLFloaterCamera::onOpen(const LLSD& key)
{
LLFirstUse::viewPopup();
- LLButton *anchor_panel = LLBottomTray::getInstance()->getChild<LLButton>("camera_btn");
-
- setDockControl(new LLDockControl(
- anchor_panel, this,
- getDockTongue(), LLDockControl::TOP));
-
mZoom->onOpen(key);
// Returns to previous mode, see EXT-2727(View tool should remember state).
@@ -343,15 +336,12 @@ void LLFloaterCamera::onClose(bool app_quitting)
if (mCurrMode == CAMERA_CTRL_MODE_PAN)
mPrevMode = CAMERA_CTRL_MODE_PAN;
- // HACK: Should always close as docked to prevent toggleInstance without calling onOpen.
- if ( !isDocked() )
- setDocked(true);
switchMode(CAMERA_CTRL_MODE_PAN);
mClosed = TRUE;
}
LLFloaterCamera::LLFloaterCamera(const LLSD& val)
-: LLTransientDockableFloater(NULL, true, val),
+: LLFloater(val),
mClosed(FALSE),
mCurrMode(CAMERA_CTRL_MODE_PAN),
mPrevMode(CAMERA_CTRL_MODE_PAN)
@@ -379,7 +369,7 @@ BOOL LLFloaterCamera::postBuild()
// ensure that appearance mode is handled while building. See EXT-7796.
handleAvatarEditingAppearance(sAppearanceEditing);
- return LLDockableFloater::postBuild();
+ return LLFloater::postBuild();
}
void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel)
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index 424191ef26..4572932853 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -27,7 +27,7 @@
#ifndef LLFLOATERCAMERA_H
#define LLFLOATERCAMERA_H
-#include "lltransientdockablefloater.h"
+#include "llfloater.h"
#include "lliconctrl.h"
#include "lltextbox.h"
#include "llflatlistview.h"
@@ -45,8 +45,7 @@ enum ECameraControlMode
CAMERA_CTRL_MODE_PRESETS
};
-class LLFloaterCamera
- : public LLTransientDockableFloater
+class LLFloaterCamera : public LLFloater
{
friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterdestinations.cpp b/indra/newview/llfloaterdestinations.cpp
new file mode 100644
index 0000000000..af21cb593f
--- /dev/null
+++ b/indra/newview/llfloaterdestinations.cpp
@@ -0,0 +1,54 @@
+/**
+ * @file llfloaterdestinations.h
+ * @author Leyla Farazha
+ * @brief floater for the destinations guide
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+/**
+ * Floater that appears when buying an object, giving a preview
+ * of its contents and their permissions.
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterdestinations.h"
+#include "lluictrlfactory.h"
+
+
+LLFloaterDestinations::LLFloaterDestinations(const LLSD& key)
+ : LLFloater(key)
+{
+}
+
+LLFloaterDestinations::~LLFloaterDestinations()
+{
+}
+
+BOOL LLFloaterDestinations::postBuild()
+{
+ enableResizeCtrls(true, true, false);
+ return TRUE;
+}
+
+
diff --git a/indra/newview/llfloaterdestinations.h b/indra/newview/llfloaterdestinations.h
new file mode 100644
index 0000000000..85d9b3391e
--- /dev/null
+++ b/indra/newview/llfloaterdestinations.h
@@ -0,0 +1,43 @@
+/**
+ * @file llfloaterdestinations.h
+ * @author Leyla Farazha
+ * @brief floater for the destinations guide
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_FLOATER_DESTINATIONS_H
+#define LL_FLOATER_DESTINATIONS_H
+
+#include "llfloater.h"
+
+class LLFloaterDestinations:
+ public LLFloater
+{
+ friend class LLFloaterReg;
+private:
+ LLFloaterDestinations(const LLSD& key);
+ /*virtual*/ ~LLFloaterDestinations();
+ /*virtual*/ BOOL postBuild();
+};
+
+#endif
diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp
index 3012638d44..fd9c37ae73 100644
--- a/indra/newview/llfloaterhelpbrowser.cpp
+++ b/indra/newview/llfloaterhelpbrowser.cpp
@@ -39,6 +39,7 @@
#include "llurlhistory.h"
#include "llmediactrl.h"
#include "llviewermedia.h"
+#include "llviewerhelp.h"
LLFloaterHelpBrowser::LLFloaterHelpBrowser(const LLSD& key)
@@ -74,6 +75,17 @@ void LLFloaterHelpBrowser::buildURLHistory()
void LLFloaterHelpBrowser::onOpen(const LLSD& key)
{
gSavedSettings.setBOOL("HelpFloaterOpen", TRUE);
+
+ std::string topic = key.asString();
+
+ if (topic == "__local")
+ {
+ mBrowser->navigateToLocalPage( "help-offline" , "index.html" );
+ }
+ else
+ {
+ mBrowser->navigateTo(LLViewerHelp::instance().getURL(topic));
+ }
}
//virtual
@@ -148,8 +160,3 @@ void LLFloaterHelpBrowser::openMedia(const std::string& media_url)
mBrowser->navigateTo(media_url, "text/html");
setCurrentURL(media_url);
}
-
-void LLFloaterHelpBrowser::navigateToLocalPage( const std::string& subdir, const std::string& filename_in )
-{
- mBrowser->navigateToLocalPage(subdir, filename_in);
-}
diff --git a/indra/newview/llfloaterhelpbrowser.h b/indra/newview/llfloaterhelpbrowser.h
index afe0f4df69..80b0ecc06b 100644
--- a/indra/newview/llfloaterhelpbrowser.h
+++ b/indra/newview/llfloaterhelpbrowser.h
@@ -48,8 +48,6 @@ class LLFloaterHelpBrowser :
/*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
void openMedia(const std::string& media_url);
-
- void navigateToLocalPage( const std::string& subdir, const std::string& filename_in );
private:
void buildURLHistory();
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index 641e64247b..8713513054 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -100,16 +100,13 @@ BOOL LLFloaterMap::postBuild()
mTextBoxSouthWest = getChild<LLTextBox> ("floater_map_southwest");
mTextBoxNorthWest = getChild<LLTextBox> ("floater_map_northwest");
- stretchMiniMap(getRect().getWidth() - MAP_PADDING_LEFT - MAP_PADDING_RIGHT
- ,getRect().getHeight() - MAP_PADDING_TOP - MAP_PADDING_BOTTOM);
-
updateMinorDirections();
// Get the drag handle all the way in back
sendChildToBack(getDragHandle());
- setIsChrome(TRUE);
- getDragHandle()->setTitleVisible(TRUE);
+ //setIsChrome(TRUE);
+ //getDragHandle()->setTitleVisible(TRUE);
// keep onscreen
gFloaterView->adjustToFitScreen(this, FALSE);
@@ -223,40 +220,10 @@ void LLFloaterMap::draw()
LLFloater::draw();
}
-// virtual
-void LLFloaterMap::onFocusReceived()
-{
- setBackgroundOpaque(true);
- LLPanel::onFocusReceived();
-}
-
-// virtual
-void LLFloaterMap::onFocusLost()
-{
- setBackgroundOpaque(false);
- LLPanel::onFocusLost();
-}
-
-void LLFloaterMap::stretchMiniMap(S32 width,S32 height)
-{
- //fix for ext-7112
- //by default ctrl can't overlap caption area
- if(mMap)
- {
- LLRect map_rect;
- map_rect.setLeftTopAndSize( MAP_PADDING_LEFT, getRect().getHeight() - MAP_PADDING_TOP, width, height);
- mMap->reshape( width, height, 1);
- mMap->setRect(map_rect);
- }
-}
-
void LLFloaterMap::reshape(S32 width, S32 height, BOOL called_from_parent)
{
LLFloater::reshape(width, height, called_from_parent);
- stretchMiniMap(width - MAP_PADDING_LEFT - MAP_PADDING_RIGHT
- ,height - MAP_PADDING_TOP - MAP_PADDING_BOTTOM);
-
updateMinorDirections();
}
@@ -285,16 +252,3 @@ void LLFloaterMap::handleZoom(const LLSD& userdata)
mMap->setScale(scale);
}
}
-
-void LLFloaterMap::setMinimized(BOOL b)
-{
- LLFloater::setMinimized(b);
- if(b)
- {
- setTitle(getString("mini_map_caption"));
- }
- else
- {
- setTitle("");
- }
-}
diff --git a/indra/newview/llfloatermap.h b/indra/newview/llfloatermap.h
index 5cf66a594b..8a1b965e62 100644
--- a/indra/newview/llfloatermap.h
+++ b/indra/newview/llfloatermap.h
@@ -45,18 +45,12 @@ public:
/*virtual*/ BOOL handleDoubleClick( S32 x, S32 y, MASK mask );
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
/*virtual*/ void draw();
- /*virtual*/ void onFocusLost();
- /*virtual*/ void onFocusReceived();
- /*virtual*/ void setMinimized(BOOL b);
-
private:
void handleZoom(const LLSD& userdata);
void setDirectionPos( LLTextBox* text_box, F32 rotation );
void updateMinorDirections();
- void stretchMiniMap(S32 width,S32 height);
-
LLTextBox* mTextBoxEast;
LLTextBox* mTextBoxNorth;
LLTextBox* mTextBoxWest;
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 5869cf6fee..881f087d7b 100644
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -388,7 +388,7 @@ mCalculateBtn(NULL)
mLastMouseX = 0;
mLastMouseY = 0;
mGLName = 0;
- mStatusLock = new LLMutex();
+ mStatusLock = new LLMutex(NULL);
mModelPreview = NULL;
mLODMode[LLModel::LOD_HIGH] = 0;
@@ -3077,7 +3077,7 @@ LLColor4 LLModelLoader::getDaeColor(daeElement* element)
//-----------------------------------------------------------------------------
LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)
-: LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex()
+: LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex(NULL)
, mPelvisZOffset( 0.0f )
, mLegacyRigValid( false )
, mRigValidJointUpload( false )
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 9630d7b29f..5fdeb46daa 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -50,6 +50,7 @@
#include "llfloaterreg.h"
#include "llfloaterabout.h"
#include "llfloaterhardwaresettings.h"
+#include "llfloatersidepanelcontainer.h"
#include "llimfloater.h"
#include "llkeyboard.h"
#include "llmodaldialog.h"
@@ -66,7 +67,6 @@
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
#include "llsliderctrl.h"
-#include "llsidetray.h"
#include "lltabcontainer.h"
#include "lltrans.h"
#include "llviewercontrol.h"
@@ -679,7 +679,7 @@ void LLFloaterPreference::onOpen(const LLSD& key)
// Display selected maturity icons.
onChangeMaturity();
-
+
// Load (double-)click to walk/teleport settings.
updateClickActionControls();
@@ -1497,11 +1497,7 @@ void LLFloaterPreference::onChangeMaturity()
// but the UI for this will still be enabled
void LLFloaterPreference::onClickBlockList()
{
- // don't create side tray on demand
- if (LLSideTray::instanceCreated())
- {
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray");
- }
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
}
void LLFloaterPreference::onClickProxySettings()
@@ -1917,7 +1913,6 @@ BOOL LLFloaterPreferenceProxy::postBuild()
getChild<LLLineEditor>("socks5_password")->setValue(socks_cred->getAuthenticator()["creds"].asString());
}
- center();
return TRUE;
}
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
new file mode 100644
index 0000000000..be7a53491d
--- /dev/null
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -0,0 +1,111 @@
+/**
+ * @file llfloatersidepanelcontainer.cpp
+ * @brief LLFloaterSidePanelContainer class definition
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
+
+// newview includes
+#include "llsidetraypanelcontainer.h"
+#include "lltransientfloatermgr.h"
+
+//static
+const std::string LLFloaterSidePanelContainer::sMainPanelName("main_panel");
+
+LLFloaterSidePanelContainer::LLFloaterSidePanelContainer(const LLSD& key, const Params& params)
+: LLFloater(key, params)
+{
+ // Prevent transient floaters (e.g. IM windows) from hiding
+ // when this floater is clicked.
+ LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
+}
+
+LLFloaterSidePanelContainer::~LLFloaterSidePanelContainer()
+{
+ LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::GLOBAL, this);
+}
+
+void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
+{
+ getChild<LLPanel>(sMainPanelName)->onOpen(key);
+}
+
+LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params)
+{
+ LLView* view = findChildView(panel_name, true);
+ if (!view) return NULL;
+
+ openFloater();
+
+ LLPanel* panel = NULL;
+
+ LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(view->getParent());
+ if (container)
+ {
+ LLSD new_params = params;
+ new_params[LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME] = panel_name;
+ container->onOpen(new_params);
+
+ panel = container->getCurrentPanel();
+ }
+ else if ((panel = dynamic_cast<LLPanel*>(view)) != NULL)
+ {
+ panel->onOpen(params);
+ }
+
+ return panel;
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const LLSD& key)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+ if (floaterp)
+ {
+ floaterp->openChildPanel(sMainPanelName, key);
+ }
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+ if (floaterp)
+ {
+ floaterp->openChildPanel(panel_name, key);
+ }
+}
+
+LLPanel* LLFloaterSidePanelContainer::getPanel(const std::string& floater_name, const std::string& panel_name)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+
+ if (floaterp)
+ {
+ return floaterp->findChild<LLPanel>(panel_name, true);
+ }
+
+ return NULL;
+}
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
new file mode 100644
index 0000000000..10d85867ce
--- /dev/null
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -0,0 +1,81 @@
+/**
+ * @file llfloatersidepanelcontainer.h
+ * @brief LLFloaterSidePanelContainer class
+ *
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERSIDEPANELCONTAINER_H
+#define LL_LLFLOATERSIDEPANELCONTAINER_H
+
+#include "llfloater.h"
+
+/**
+ * Class LLFloaterSidePanelContainer
+ *
+ * Provides an interface for all former Side Tray panels.
+ *
+ * This class helps to make sure that clicking a floater containing the side panel
+ * doesn't make transient floaters (e.g. IM windows) hide, so that it's possible to
+ * drag an inventory item from My Inventory window to a docked IM window,
+ * i.e. share the item (see VWR-22891).
+ */
+class LLFloaterSidePanelContainer : public LLFloater
+{
+private:
+ static const std::string sMainPanelName;
+
+public:
+ LLFloaterSidePanelContainer(const LLSD& key, const Params& params = getDefaultParams());
+ ~LLFloaterSidePanelContainer();
+
+ /*virtual*/ void onOpen(const LLSD& key);
+
+ LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
+
+ static void showPanel(const std::string& floater_name, const LLSD& key);
+
+ static void showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key);
+
+ static LLPanel* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName);
+
+ /**
+ * Gets the panel of given type T (doesn't show it or do anything else with it).
+ *
+ * @param floater_name a string specifying the floater to be searched for a child panel.
+ * @param panel_name a string specifying the child panel to get.
+ * @returns a pointer to the panel of given type T.
+ */
+ template <typename T>
+ static T* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName)
+ {
+ T* panel = dynamic_cast<T*>(getPanel(floater_name, panel_name));
+ if (!panel)
+ {
+ llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
+ }
+ return panel;
+ }
+};
+
+#endif // LL_LLFLOATERSIDEPANELCONTAINER_H
diff --git a/indra/newview/llfloatersidetraytab.cpp b/indra/newview/llfloatersidetraytab.cpp
deleted file mode 100644
index 9f15e62d84..0000000000
--- a/indra/newview/llfloatersidetraytab.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file llfloatersidetraytab.cpp
- * @brief LLFloaterSideTrayTab class definition
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloatersidetraytab.h"
-
-// newview includes
-#include "lltransientfloatermgr.h"
-#include "llsidetray.h"
-
-LLFloaterSideTrayTab::LLFloaterSideTrayTab(const LLSD& key, const Params& params)
-: LLFloater(key, params)
-{
- // Prevent transient floaters (e.g. IM windows) from hiding
- // when this floater is clicked.
- LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-LLFloaterSideTrayTab::~LLFloaterSideTrayTab()
-{
- LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-void LLFloaterSideTrayTab::onClose(bool app_quitting)
-{
- // The floater is already being closed, so don't toggle it once more (that may crash viewer).
- LLSideTray::getInstance()->setTabDocked(getName(), /* dock = */ true, /* toggle_floater = */ false);
-}
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 00dc7b1627..8105844b0d 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -2112,7 +2112,7 @@ LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key)
// Destroys the object
LLFloaterSnapshot::~LLFloaterSnapshot()
{
- LLView::deleteViewByHandle(impl.mPreviewHandle);
+ delete impl.mPreviewHandle.get();
//unfreeze everything else
gSavedSettings.setBOOL("FreezeTime", FALSE);
@@ -2217,7 +2217,7 @@ void LLFloaterSnapshot::draw()
LLFloater::draw();
- if (previewp)
+ if (previewp && !isMinimized())
{
if(previewp->getThumbnailImage())
{
diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
index e692f1735a..56c0806546 100644
--- a/indra/newview/llfloatersounddevices.cpp
+++ b/indra/newview/llfloatersounddevices.cpp
@@ -28,7 +28,6 @@
#include "llfloatersounddevices.h"
-#include "llbottomtray.h"
#include "lldraghandle.h"
#include "llpanelvoicedevicesettings.h"
@@ -55,9 +54,6 @@ LLFloaterSoundDevices::~LLFloaterSoundDevices()
BOOL LLFloaterSoundDevices::postBuild()
{
LLTransientDockableFloater::postBuild();
-
- LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("flyout_btn");
- setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
setIsChrome(TRUE);
if (mDragHandle)
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
new file mode 100644
index 0000000000..b4c9894271
--- /dev/null
+++ b/indra/newview/llfloatertoybox.cpp
@@ -0,0 +1,146 @@
+/**
+ * @file llfloatertoybox.cpp
+ * @brief The toybox for flexibilizing the UI.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloatertoybox.h"
+
+#include "llbutton.h"
+#include "llcommandmanager.h"
+#include "llnotifications.h"
+#include "llnotificationsutil.h"
+#include "llpanel.h"
+#include "lltoolbar.h"
+#include "lltoolbarview.h"
+#include "lltrans.h"
+
+LLFloaterToybox::LLFloaterToybox(const LLSD& key)
+ : LLFloater(key)
+ , mBtnRestoreDefaults(NULL)
+ , mToolBar(NULL)
+{
+ mCommitCallbackRegistrar.add("Toybox.RestoreDefaults", boost::bind(&LLFloaterToybox::onBtnRestoreDefaults, this));
+}
+
+LLFloaterToybox::~LLFloaterToybox()
+{
+}
+
+bool compare_localized_command_labels(LLCommand * cmd1, LLCommand * cmd2)
+{
+ std::string lab1 = LLTrans::getString(cmd1->labelRef());
+ std::string lab2 = LLTrans::getString(cmd2->labelRef());
+
+ return (lab1 < lab2);
+}
+
+BOOL LLFloaterToybox::postBuild()
+{
+ mBtnRestoreDefaults = getChild<LLButton>("btn_restore_defaults");
+ mToolBar = getChild<LLToolBar>("toybox_toolbar");
+ mToolBar->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+ mToolBar->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+ mToolBar->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+
+ LLCommandManager& cmdMgr = LLCommandManager::instance();
+
+ //
+ // Sort commands by localized labels so they will appear alphabetized in all languages
+ //
+
+ std::list<LLCommand *> alphabetized_commands;
+
+ for (U32 i = 0; i < cmdMgr.commandCount(); i++)
+ {
+ LLCommand * command = cmdMgr.getCommand(i);
+
+ if (command->availableInToybox())
+ {
+ alphabetized_commands.push_back(command);
+ }
+ }
+
+ alphabetized_commands.sort(compare_localized_command_labels);
+
+ //
+ // Create Buttons
+ //
+
+ for (std::list<LLCommand *>::iterator it = alphabetized_commands.begin(); it != alphabetized_commands.end(); ++it)
+ {
+ mToolBar->addCommand((*it)->id());
+ }
+
+ return TRUE;
+}
+
+void LLFloaterToybox::draw()
+{
+ llassert(gToolBarView != NULL);
+
+ const command_id_list_t& command_list = mToolBar->getCommandsList();
+
+ for (command_id_list_t::const_iterator it = command_list.begin(); it != command_list.end(); ++it)
+ {
+ const LLCommandId& id = *it;
+
+ const bool commandOnToolbar = gToolBarView->hasCommand(id);
+ mToolBar->enableCommand(id, !commandOnToolbar);
+ }
+
+ LLFloater::draw();
+}
+
+static bool finish_restore_toybox(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+ if (option == 0)
+ {
+ LLToolBarView::loadDefaultToolbars();
+ }
+ return false;
+}
+static LLNotificationFunctorRegistration finish_restore_toybox_reg("ConfirmRestoreToybox", finish_restore_toybox);
+
+void LLFloaterToybox::onBtnRestoreDefaults()
+{
+ LLNotificationsUtil::add("ConfirmRestoreToybox");
+}
+
+BOOL LLFloaterToybox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg)
+{
+ S32 local_x = x - mToolBar->getRect().mLeft;
+ S32 local_y = y - mToolBar->getRect().mBottom;
+ return mToolBar->handleDragAndDrop(local_x, local_y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+}
+
+
+// eof
diff --git a/indra/newview/llfloatersidetraytab.h b/indra/newview/llfloatertoybox.h
index 89f2444a0e..f0a6cf1a8b 100644
--- a/indra/newview/llfloatersidetraytab.h
+++ b/indra/newview/llfloatertoybox.h
@@ -1,10 +1,10 @@
/**
- * @file llfloatersidetraytab.h
- * @brief LLFloaterSideTrayTab class definition
+ * @file llfloatertoybox.h
+ * @brief The toybox for flexibilizing the UI.
*
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
* Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * Copyright (C) 2011, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -24,26 +24,37 @@
* $/LicenseInfo$
*/
-#ifndef LL_LLFLOATERSIDETRAYTAB_H
-#define LL_LLFLOATERSIDETRAYTAB_H
+#ifndef LL_LLFLOATERTOYBOX_H
+#define LL_LLFLOATERTOYBOX_H
#include "llfloater.h"
-/**
- * When a side tray tab gets detached, it's wrapped in an instance of this class.
- *
- * This class helps to make sure that clicking a detached side tray tab doesn't
- * make transient floaters (e.g. IM windows) hide, so that it's possible to
- * drag an inventory item from detached My Inventory window to a docked IM window,
- * i.e. share the item (see VWR-22891).
- */
-class LLFloaterSideTrayTab : public LLFloater
+
+class LLButton;
+class LLToolBar;
+
+
+class LLFloaterToybox : public LLFloater
{
public:
- LLFloaterSideTrayTab(const LLSD& key, const Params& params = getDefaultParams());
- ~LLFloaterSideTrayTab();
+ LLFloaterToybox(const LLSD& key);
+ virtual ~LLFloaterToybox();
+
+ // virtuals
+ BOOL postBuild();
+ void draw();
+ /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg);
- void onClose(bool app_quitting);
+protected:
+ void onBtnRestoreDefaults();
+
+public:
+ LLButton * mBtnRestoreDefaults;
+ LLToolBar * mToolBar;
};
-#endif // LL_LLFLOATERSIDETRAYTAB_H
+#endif // LL_LLFLOATERTOYBOX_H
diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp
index 2c9a736aff..f410c31f44 100644
--- a/indra/newview/llfloaterwebcontent.cpp
+++ b/indra/newview/llfloaterwebcontent.cpp
@@ -48,13 +48,15 @@ LLFloaterWebContent::_Params::_Params()
show_chrome("show_chrome", true),
allow_address_entry("allow_address_entry", true),
preferred_media_size("preferred_media_size"),
- trusted_content("trusted_content", false)
+ trusted_content("trusted_content", false),
+ show_page_title("show_page_title", true)
{}
LLFloaterWebContent::LLFloaterWebContent( const Params& params )
: LLFloater( params ),
LLInstanceTracker<LLFloaterWebContent, std::string>(params.id()),
- mUUID(params.id())
+ mUUID(params.id()),
+ mShowPageTitle(params.show_page_title)
{
mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this ));
mCommitCallbackRegistrar.add( "WebContent.Forward", boost::bind( &LLFloaterWebContent::onClickForward, this ));
@@ -88,20 +90,6 @@ BOOL LLFloaterWebContent::postBuild()
return TRUE;
}
-bool LLFloaterWebContent::matchesKey(const LLSD& key)
-{
- LLUUID id = key["id"];
- if (id.notNull())
- {
- return id == mKey["id"].asUUID();
- }
- else
- {
- return key["target"].asString() == mKey["target"].asString();
- }
-}
-
-
void LLFloaterWebContent::initializeURLHistory()
{
// start with an empty list
@@ -123,6 +111,20 @@ void LLFloaterWebContent::initializeURLHistory()
}
}
+bool LLFloaterWebContent::matchesKey(const LLSD& key)
+{
+ Params p(mKey);
+ Params other_p(key);
+ if (!other_p.target().empty() && other_p.target() != "_blank")
+ {
+ return other_p.target() == p.target();
+ }
+ else
+ {
+ return other_p.id() == p.id();
+ }
+}
+
//static
LLFloater* LLFloaterWebContent::create( Params p)
{
@@ -139,14 +141,7 @@ LLFloater* LLFloaterWebContent::create( Params p)
}
S32 browser_window_limit = gSavedSettings.getS32("WebContentWindowLimit");
-
- LLSD sd;
- sd["target"] = p.target;
- if(LLFloaterReg::findInstance(p.window_class, sd) != NULL)
- {
- // There's already a web browser for this tag, so we won't be opening a new window.
- }
- else if(browser_window_limit != 0)
+ if(browser_window_limit != 0)
{
// showInstance will open a new window. Figure out how many web browsers are already open,
// and close the least recently opened one if this will put us over the limit.
@@ -166,7 +161,7 @@ LLFloater* LLFloaterWebContent::create( Params p)
}
}
- return LLFloaterReg::showInstance(p.window_class, p);
+ return new LLFloaterWebContent(p);
}
//static
@@ -366,10 +361,13 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
{
std::string page_title = self->getMediaName();
// simulate browser behavior - title is empty, use the current URL
- if ( page_title.length() > 0 )
- setTitle( page_title );
- else
- setTitle( mCurrentURL );
+ if (mShowPageTitle)
+ {
+ if ( page_title.length() > 0 )
+ setTitle( page_title );
+ else
+ setTitle( mCurrentURL );
+ }
}
else if(event == MEDIA_EVENT_LINK_HOVERED )
{
diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h
index 36e214b7a9..6fc66d1ad8 100644
--- a/indra/newview/llfloaterwebcontent.h
+++ b/indra/newview/llfloaterwebcontent.h
@@ -53,7 +53,8 @@ public:
id;
Optional<bool> show_chrome,
allow_address_entry,
- trusted_content;
+ trusted_content,
+ show_page_title;
Optional<LLRect> preferred_media_size;
_Params();
@@ -91,13 +92,14 @@ protected:
void open_media(const Params& );
void set_current_url(const std::string& url);
- LLMediaCtrl* mWebBrowser;
- LLComboBox* mAddressCombo;
- LLIconCtrl *mSecureLockIcon;
- LLTextBox* mStatusBarText;
- LLProgressBar* mStatusBarProgress;
- std::string mCurrentURL;
- std::string mUUID;
+ LLMediaCtrl* mWebBrowser;
+ LLComboBox* mAddressCombo;
+ LLIconCtrl* mSecureLockIcon;
+ LLTextBox* mStatusBarText;
+ LLProgressBar* mStatusBarProgress;
+ std::string mCurrentURL;
+ std::string mUUID;
+ bool mShowPageTitle;
};
#endif // LL_LLFLOATERWEBCONTENT_H
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 9ba5f827e2..6ec2598e44 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -299,7 +299,7 @@ LLFolderView::~LLFolderView( void )
mAutoOpenItems.removeAllNodes();
gIdleCallbacks.deleteFunction(idle, this);
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
mAutoOpenItems.removeAllNodes();
clearSelection();
@@ -1969,7 +1969,7 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
void LLFolderView::deleteAllChildren()
{
closeRenamer();
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
mPopupMenuHandle = LLHandle<LLView>();
mScrollContainer = NULL;
mRenameItem = NULL;
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index 97fa551441..623ebb76f2 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -34,10 +34,10 @@
#include "llagent.h"
#include "llcommandhandler.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgroupmgr.h"
#include "llimview.h" // for gIMMgr
#include "llnotificationsutil.h"
-#include "llsidetray.h"
#include "llstatusbar.h" // can_afford_transaction()
#include "llimfloater.h"
#include "groupchatlistener.h"
@@ -83,7 +83,7 @@ public:
{
LLSD params;
params["people_panel_tab_name"] = "groups_panel";
- LLSideTray::getInstance()->showPanel("panel_people", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", params);
return true;
}
return false;
@@ -243,7 +243,7 @@ static bool isGroupUIVisible()
{
static LLPanel* panel = 0;
if(!panel)
- panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray");
+ panel = LLFloaterSidePanelContainer::getPanel("people", "panel_group_info_sidetray");
if(!panel)
return false;
return panel->isInVisibleChain();
@@ -265,7 +265,7 @@ void LLGroupActions::show(const LLUUID& group_id)
params["group_id"] = group_id;
params["open_tab_name"] = "panel_group_info_sidetray";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
void LLGroupActions::refresh_notices()
@@ -278,7 +278,7 @@ void LLGroupActions::refresh_notices()
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "refresh_notices";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -292,7 +292,7 @@ void LLGroupActions::refresh(const LLUUID& group_id)
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "refresh";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -303,7 +303,7 @@ void LLGroupActions::createGroup()
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "create";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -317,7 +317,7 @@ void LLGroupActions::closeGroup(const LLUUID& group_id)
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "close";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index c3e6e1c2dc..f7ed1116cb 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -95,7 +95,7 @@ LLGroupList::LLGroupList(const Params& p)
LLGroupList::~LLGroupList()
{
gAgent.removeListener(this);
- LLView::deleteViewByHandle(mContextMenuHandle);
+ delete mContextMenuHandle.get();
}
// virtual
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 50a9c56518..f5cda52d44 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -34,9 +34,9 @@
#include "llappviewer.h"
#include "llavatarnamecache.h"
#include "llbutton.h"
-#include "llbottomtray.h"
#include "llchannelmanager.h"
#include "llchiclet.h"
+#include "llchicletbar.h"
#include "llfloaterreg.h"
#include "llimfloatercontainer.h" // to replace separate IM Floaters with multifloater container
#include "llinventoryfunctions.h"
@@ -55,15 +55,9 @@
#include "llinventorymodel.h"
#include "llrootview.h"
#include "llspeakers.h"
-#include "llsidetray.h"
#include "llviewerchat.h"
-static const S32 RECT_PADDING_NOT_INIT = -1;
-static const S32 RECT_PADDING_NEED_RECALC = -2;
-
-S32 LLIMFloater::sAllowedRectRightPadding = RECT_PADDING_NOT_INIT;
-
LLIMFloater::LLIMFloater(const LLUUID& session_id)
: LLTransientDockableFloater(NULL, true, session_id),
mControlPanel(NULL),
@@ -123,14 +117,14 @@ void LLIMFloater::onFocusLost()
{
LLIMModel::getInstance()->resetActiveSessionID();
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
}
void LLIMFloater::onFocusReceived()
{
LLIMModel::getInstance()->setActiveSessionID(mSessionID);
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
if (getVisible())
{
@@ -450,7 +444,7 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
if (floater->getDockControl() == NULL)
{
LLChiclet* chiclet =
- LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(
+ LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(
session_id);
if (chiclet == NULL)
{
@@ -458,11 +452,11 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
}
else
{
- LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
+ LLChicletBar::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
}
floater->setDockControl(new LLDockControl(chiclet, floater, floater->getDockTongue(),
- LLDockControl::TOP, boost::bind(&LLIMFloater::getAllowedRect, floater, _1)));
+ LLDockControl::BOTTOM));
}
// window is positioned, now we can show it.
@@ -472,43 +466,6 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
return floater;
}
-//static
-bool LLIMFloater::resetAllowedRectPadding()
-{
- //reset allowed rect right padding if "SidebarCameraMovement" option
- //or sidebar state changed
- sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC ;
- return true;
-}
-
-void LLIMFloater::getAllowedRect(LLRect& rect)
-{
- if (sAllowedRectRightPadding == RECT_PADDING_NOT_INIT) //wasn't initialized
- {
- gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLIMFloater::resetAllowedRectPadding));
-
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->setVisibleWidthChangeCallback(boost::bind(&LLIMFloater::resetAllowedRectPadding));
- sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC;
- }
-
- rect = gViewerWindow->getWorldViewRectScaled();
- if (sAllowedRectRightPadding == RECT_PADDING_NEED_RECALC) //recalc allowed rect right padding
- {
- LLPanel* side_bar_tabs =
- gViewerWindow->getRootView()->getChild<LLPanel> (
- "side_bar_tabs");
- sAllowedRectRightPadding = side_bar_tabs->getRect().getWidth();
- LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
-
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
- {
- sAllowedRectRightPadding += LLSideTray::getInstance()->getVisibleWidth();
- }
- }
- rect.mRight -= sAllowedRectRightPadding;
-}
-
void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
{
// update notification channel state
@@ -560,7 +517,7 @@ void LLIMFloater::setVisible(BOOL visible)
if(!visible)
{
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
+ LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
if(chiclet)
{
chiclet->setToggleState(false);
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 5158f6c1f7..f7cd35b5eb 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -145,8 +145,6 @@ private:
static void* createPanelIMControl(void* userdata);
static void* createPanelGroupControl(void* userdata);
static void* createPanelAdHocControl(void* userdata);
- // gets a rect that bounds possible positions for the LLIMFloater on a screen (EXT-1111)
- void getAllowedRect(LLRect& rect);
// Add the "User is typing..." indicator.
void addTypingIndicator(const LLIMInfo* im_info);
@@ -156,10 +154,6 @@ private:
static void closeHiddenIMToasts();
- static bool resetAllowedRectPadding();
- //need to keep this static for performance issues
- static S32 sAllowedRectRightPadding;
-
static void confirmLeaveCallCallback(const LLSD& notification, const LLSD& response);
LLPanelChatControlPanel* mControlPanel;
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index b3b0c93b99..0250af6a0e 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -41,7 +41,6 @@
#include "llagent.h"
#include "llbutton.h"
-#include "llbottomtray.h"
#include "llcallingcard.h"
#include "llchannelmanager.h"
#include "llchat.h"
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 4de6976534..6e9baed5f2 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -46,7 +46,6 @@
#include "llagentui.h"
#include "llappviewer.h"
#include "llavatariconctrl.h"
-#include "llbottomtray.h"
#include "llcallingcard.h"
#include "llchat.h"
#include "llimfloater.h"
@@ -61,6 +60,7 @@
#include "llnearbychat.h"
#include "llspeakers.h" //for LLIMSpeakerMgr
#include "lltextbox.h"
+#include "lltoolbarview.h"
#include "llviewercontrol.h"
#include "llviewerparcelmgr.h"
@@ -1675,23 +1675,13 @@ LLCallDialog::~LLCallDialog()
LLUI::removePopup(this);
}
-void LLCallDialog::getAllowedRect(LLRect& rect)
-{
- rect = gViewerWindow->getWorldViewRectScaled();
-}
-
BOOL LLCallDialog::postBuild()
{
- if (!LLDockableFloater::postBuild())
+ if (!LLDockableFloater::postBuild() || !gToolBarView)
return FALSE;
- // dock the dialog to the Speak Button, where other sys messages appear
- LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_panel");
-
- setDockControl(new LLDockControl(
- anchor_panel, this,
- getDockTongue(), LLDockControl::TOP,
- boost::bind(&LLCallDialog::getAllowedRect, this, _1)));
+ LLView *anchor_panel = gToolBarView->findChildView("speak");
+ setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
return TRUE;
}
@@ -2449,8 +2439,10 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
LLChat chat(message);
chat.mSourceType = CHAT_SOURCE_SYSTEM;
+
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+ LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
if(nearby_chat)
{
nearby_chat->addMessage(chat);
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 0ee56c8070..93b604d36a 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -508,8 +508,6 @@ protected:
virtual bool lifetimeHasExpired();
virtual void onLifetimeExpired();
- virtual void getAllowedRect(LLRect& rect);
-
/**
* Sets icon depend on session.
*
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index ee076f68ea..acc139c569 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -28,6 +28,7 @@
#include "llinspectobject.h"
// Viewer
+#include "llfloatersidepanelcontainer.h"
#include "llinspect.h"
#include "llmediaentry.h"
#include "llnotificationsutil.h" // *TODO: Eliminate, add LLNotificationsUtil wrapper
@@ -45,7 +46,6 @@
#include "llmenubutton.h"
#include "llresmgr.h" // getMonetaryString
#include "llsafehandle.h"
-#include "llsidetray.h"
#include "lltextbox.h" // for description truncation
#include "lltoggleablemenu.h"
#include "lltrans.h"
@@ -640,7 +640,7 @@ void LLInspectObject::onClickMoreInfo()
{
LLSD key;
key["task"] = "task";
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("inventory", key);
closeFloater();
}
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 5e2d2fa3f2..0e27bd81be 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -39,6 +39,7 @@
#include "llavataractions.h"
#include "llfloateropenobject.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llfolderview.h"
#include "llfriendcard.h"
@@ -59,7 +60,6 @@
#include "llpreviewtexture.h"
#include "llselectmgr.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltrans.h"
#include "llviewerassettype.h"
#include "llviewerfoldertype.h"
@@ -1185,7 +1185,7 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
std::string buffer;
asset_id.toString(buffer);
- gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(buffer));
+ gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(buffer));
return;
}
else if ("copy" == action)
@@ -3852,7 +3852,7 @@ void LLLandmarkBridge::performAction(LLInventoryModel* model, std::string action
key["type"] = "landmark";
key["id"] = item->getUUID();
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
}
else
@@ -4781,7 +4781,7 @@ void remove_inventory_category_from_avatar( LLInventoryCategory* category )
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit editor should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() );
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 0af013fde5..5fb3f15cd5 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -47,6 +47,7 @@
#include "llappviewer.h"
//#include "llfirstuse.h"
#include "llfloaterinventory.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
#include "llfolderview.h"
#include "llgesturemgr.h"
@@ -70,7 +71,6 @@
#include "llscrollbar.h"
#include "llscrollcontainer.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llsidepanelinventory.h"
#include "lltabcontainer.h"
#include "lltooldraganddrop.h"
@@ -459,22 +459,28 @@ BOOL get_is_category_renameable(const LLInventoryModel* model, const LLUUID& id)
void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id)
{
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", item_uuid).with("object", object_id));
+ LLFloaterSidePanelContainer::showPanel("inventory", LLSD().with("id", item_uuid).with("object", object_id));
}
void show_item_profile(const LLUUID& item_uuid)
{
LLUUID linked_uuid = gInventory.getLinkedItemID(item_uuid);
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", linked_uuid));
+ LLFloaterSidePanelContainer::showPanel("inventory", LLSD().with("id", linked_uuid));
}
void show_item_original(const LLUUID& item_uuid)
{
+ LLFloater* floater_inventory = LLFloaterReg::getInstance("inventory");
+ if (!floater_inventory)
+ {
+ llwarns << "Could not find My Inventory floater" << llendl;
+ return;
+ }
+
//sidetray inventory panel
- LLSidepanelInventory *sidepanel_inventory =
- dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
- bool reset_inventory_filter = !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory");
+ bool reset_inventory_filter = !floater_inventory->isInVisibleChain();
LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel();
if (!active_panel)
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index ceba4a0191..9db175ec2e 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -202,6 +202,7 @@ void LLInventoryFetchItemsObserver::changed(U32 mask)
void fetch_items_from_llsd(const LLSD& items_llsd)
{
if (!items_llsd.size() || gDisconnected) return;
+
LLSD body;
body[0]["cap_name"] = "FetchInventory2";
body[1]["cap_name"] = "FetchLib2";
@@ -212,7 +213,7 @@ void fetch_items_from_llsd(const LLSD& items_llsd)
body[0]["items"].append(items_llsd[i]);
continue;
}
- if (items_llsd[i]["owner_id"].asString() == ALEXANDRIA_LINDEN_ID.asString())
+ else if (items_llsd[i]["owner_id"].asString() == ALEXANDRIA_LINDEN_ID.asString())
{
body[1]["items"].append(items_llsd[i]);
continue;
@@ -221,19 +222,23 @@ void fetch_items_from_llsd(const LLSD& items_llsd)
for (S32 i=0; i<body.size(); i++)
{
- if(!gAgent.getRegion())
+ if (!gAgent.getRegion())
{
- llwarns<<"Agent's region is null"<<llendl;
+ llwarns << "Agent's region is null" << llendl;
break;
}
- if (0 >= body[i].size()) continue;
- std::string url = gAgent.getRegion()->getCapability(body[i]["cap_name"].asString());
+ if (0 == body[i]["items"].size()) {
+ lldebugs << "Skipping body with no items to fetch" << llendl;
+ continue;
+ }
+
+ std::string url = gAgent.getRegion()->getCapability(body[i]["cap_name"].asString());
if (!url.empty())
{
body[i]["agent_id"] = gAgent.getID();
LLHTTPClient::post(url, body[i], new LLInventoryModel::fetchInventoryResponder(body[i]));
- break;
+ continue;
}
LLMessageSystem* msg = gMessageSystem;
@@ -303,7 +308,7 @@ void LLInventoryFetchItemsObserver::startFetch()
// It's incomplete, so put it on the incomplete container, and
// pack this on the message.
mIncomplete.push_back(*it);
-
+
// Prepare the data to fetch
LLSD item_entry;
item_entry["owner_id"] = owner_id;
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 615d3aefde..18c3f76826 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -35,6 +35,7 @@
#include "llavataractions.h"
#include "llfloaterinventory.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llimfloater.h"
#include "llimview.h"
@@ -42,7 +43,6 @@
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
#include "llviewerattachmenu.h"
#include "llviewerfoldertype.h"
#include "llvoavatarself.h"
@@ -1077,10 +1077,9 @@ void LLInventoryPanel::dumpSelectionInformation(void* user_data)
BOOL is_inventorysp_active()
{
- if (!LLSideTray::getInstance()->isPanelActive("sidepanel_inventory")) return FALSE;
- LLSidepanelInventory *inventorySP = dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- if (!inventorySP) return FALSE;
- return inventorySP->isMainInventoryPanelActive();
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (!sidepanel_inventory || !sidepanel_inventory->isInVisibleChain()) return FALSE;
+ return sidepanel_inventory->isMainInventoryPanelActive();
}
// static
@@ -1090,34 +1089,24 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
LLInventoryPanel* res = NULL;
LLFloater* active_inv_floaterp = NULL;
- // A. If the inventory side panel is open, use that preferably.
- if (is_inventorysp_active())
+ LLFloater* floater_inventory = LLFloaterReg::getInstance("inventory");
+ if (!floater_inventory)
{
- LLSidepanelInventory *inventorySP = dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- if (inventorySP)
- {
- return inventorySP->getActivePanel();
- }
+ llwarns << "Could not find My Inventory floater" << llendl;
+ return FALSE;
}
- // or if it is in floater undocked from sidetray get it and remember z order of floater to later compare it
- // with other inventory floaters order.
- else if (!LLSideTray::getInstance()->isTabAttached("sidebar_inventory"))
+
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+
+ // A. If the inventory side panel floater is open, use that preferably.
+ if (is_inventorysp_active())
{
- LLSidepanelInventory *inventorySP =
- dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- LLFloater* inv_floater = LLFloaterReg::findInstance("side_bar_tab", LLSD("sidebar_inventory"));
- if (inventorySP && inv_floater)
- {
- res = inventorySP->getActivePanel();
- z_min = gFloaterView->getZOrder(inv_floater);
- active_inv_floaterp = inv_floater;
- }
- else
- {
- llwarns << "Inventory tab is detached from sidetray, but either panel or floater were not found!" << llendl;
- }
+ // Get the floater's z order to compare it to other inventory floaters' order later.
+ res = sidepanel_inventory->getActivePanel();
+ z_min = gFloaterView->getZOrder(floater_inventory);
+ active_inv_floaterp = floater_inventory;
}
-
+
// B. Iterate through the inventory floaters and return whichever is on top.
LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
@@ -1147,14 +1136,9 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
// C. If no panels are open and we don't want to force open a panel, then just abort out.
if (!auto_open) return NULL;
- // D. Open the inventory side panel and use that.
- LLSD key;
- LLSidepanelInventory *sidepanel_inventory =
- dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->showPanel("sidepanel_inventory", key));
- if (sidepanel_inventory)
- {
- return sidepanel_inventory->getActivePanel();
- }
+ // D. Open the inventory side panel floater and use that.
+ floater_inventory->openFloater();
+ return sidepanel_inventory->getActivePanel();
return NULL;
}
diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp
index f2aec20611..6625a194fb 100644
--- a/indra/newview/lllandmarkactions.cpp
+++ b/indra/newview/lllandmarkactions.cpp
@@ -413,7 +413,7 @@ void LLLandmarkActions::copySLURLtoClipboard(const LLUUID& landmarkInventoryItem
void copy_slurl_to_clipboard_callback(const std::string& slurl)
{
- gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(slurl));
+ gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(slurl));
LLSD args;
args["SLURL"] = slurl;
LLNotificationsUtil::add("CopySLURL", args);
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 1c8f6b6c98..025181ead5 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -44,11 +44,11 @@
// newview includes
#include "llagent.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryobserver.h"
#include "lllandmarkactions.h"
#include "lllandmarklist.h"
#include "llteleporthistory.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstatusbar.h" // getHealth()
#include "lltrans.h"
@@ -600,7 +600,7 @@ void LLLocationInputCtrl::reshape(S32 width, S32 height, BOOL called_from_parent
void LLLocationInputCtrl::onInfoButtonClicked()
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
}
void LLLocationInputCtrl::onForSaleButtonClicked()
@@ -618,11 +618,11 @@ void LLLocationInputCtrl::onAddLandmarkButtonClicked()
key["type"] = "landmark";
key["id"] = landmark->getUUID();
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
else
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
}
}
@@ -1087,12 +1087,12 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
if(!landmark)
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
}
else
{
- LLSideTray::getInstance()->showPanel("panel_places",
- LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+
}
}
else if (item == "cut")
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index f00d6087f9..419641d23c 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -561,15 +561,7 @@ void LLLoginInstance::constructAuthParams(LLPointer<LLCredential> user_credentia
//send this info to login.cgi for stats gathering
//since viewerstats isn't reliable enough
- if (gSavedSettings.getString("SessionSettingsFile").empty())
- {
- requested_options.append("advanced-mode");
- }
- else
- {
- requested_options.append("basic-mode");
- //requested_options.append("inventory-basic");
- }
+ requested_options.append("advanced-mode");
#endif
requested_options.append("max-agent-groups");
diff --git a/indra/newview/llmainlooprepeater.cpp b/indra/newview/llmainlooprepeater.cpp
index d73048a28b..5c020e6d98 100644
--- a/indra/newview/llmainlooprepeater.cpp
+++ b/indra/newview/llmainlooprepeater.cpp
@@ -46,7 +46,7 @@ void LLMainLoopRepeater::start(void)
{
if(mQueue != 0) return;
- mQueue = new LLThreadSafeQueue<LLSD>(1024);
+ mQueue = new LLThreadSafeQueue<LLSD>(gAPRPoolp, 1024);
mMainLoopConnection = LLEventPumps::instance().
obtain("mainloop").listen(LLEventPump::inventName(), boost::bind(&LLMainLoopRepeater::onMainLoop, this, _1));
mRepeaterConnection = LLEventPumps::instance().
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 0bdeb114f5..1f1e49726d 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -1122,16 +1122,7 @@ void LLMediaCtrl::onPopup(const LLSD& notification, const LLSD& response)
lldebugs << "No gFloaterView for onPopuup()" << llendl;
};
- // (for now) open web content floater if that's our parent, otherwise, open the current media floater
- // (this will change soon)
- if ( floater_name == "web_content" )
- {
- LLWeb::loadWebURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
- }
- else
- {
- LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
- }
+ LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
}
else
{
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index e12f140747..a97e256c89 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -447,9 +447,9 @@ LLMeshRepoThread::LLMeshRepoThread()
: LLThread("mesh repo")
{
mWaiting = false;
- mMutex = new LLMutex();
- mHeaderMutex = new LLMutex();
- mSignal = new LLCondition();
+ mMutex = new LLMutex(NULL);
+ mHeaderMutex = new LLMutex(NULL);
+ mSignal = new LLCondition(NULL);
}
LLMeshRepoThread::~LLMeshRepoThread()
@@ -1198,7 +1198,7 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data,
mUploadTextures = upload_textures;
mUploadSkin = upload_skin;
mUploadJoints = upload_joints;
- mMutex = new LLMutex();
+ mMutex = new LLMutex(NULL);
mCurlRequest = NULL;
mPendingUploads = 0;
mFinished = false;
@@ -2043,7 +2043,7 @@ LLMeshRepository::LLMeshRepository()
void LLMeshRepository::init()
{
- mMeshMutex = new LLMutex();
+ mMeshMutex = new LLMutex(NULL);
LLConvexDecomposition::getInstance()->initSystem();
@@ -2866,8 +2866,8 @@ LLPhysicsDecomp::LLPhysicsDecomp()
mQuitting = false;
mDone = false;
- mSignal = new LLCondition();
- mMutex = new LLMutex();
+ mSignal = new LLCondition(NULL);
+ mMutex = new LLMutex(NULL);
}
LLPhysicsDecomp::~LLPhysicsDecomp()
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 142ee40cc8..c3d8b91d67 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -37,7 +37,6 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llvoavatarself.h" // to check gAgentAvatarp->isSitting()
-#include "llbottomtray.h"
#include "llbutton.h"
#include "llfirstuse.h"
#include "llfloaterreg.h"
@@ -46,7 +45,8 @@
#include "lluictrlfactory.h"
#include "llviewerwindow.h"
#include "llviewercontrol.h"
-#include "llselectmgr.h"
+#include "llselectmgr.h"
+#include "lltoolbarview.h"
#include "llviewerparcelmgr.h"
#include "llviewerregion.h"
#include "lltooltip.h"
@@ -59,15 +59,13 @@ const F32 MOVE_BUTTON_DELAY = 0.0f;
const F32 YAW_NUDGE_RATE = 0.05f; // fraction of normal speed
const F32 NUDGE_TIME = 0.25f; // in seconds
-const std::string BOTTOM_TRAY_BUTTON_NAME = "movement_btn";
-
//
// Member functions
//
// protected
LLFloaterMove::LLFloaterMove(const LLSD& key)
-: LLTransientDockableFloater(NULL, true, key),
+: LLFloater(key),
mForwardButton(NULL),
mBackwardButton(NULL),
mTurnLeftButton(NULL),
@@ -92,12 +90,8 @@ LLFloaterMove::~LLFloaterMove()
// virtual
BOOL LLFloaterMove::postBuild()
{
- setIsChrome(TRUE);
- setTitleVisible(TRUE); // restore title visibility after chrome applying
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
- LLDockableFloater::postBuild();
-
// Code that implements floater buttons toggling when user moves via keyboard is located in LLAgent::propagate()
mForwardButton = getChild<LLJoystickAgentTurn>("forward btn");
@@ -155,10 +149,10 @@ BOOL LLFloaterMove::postBuild()
// virtual
void LLFloaterMove::setVisible(BOOL visible)
{
- // Do nothing with Stand/Stop Flying panel in excessive calls of this method (from LLTransientFloaterMgr?).
+ // Do nothing with Stand/Stop Flying panel in excessive calls of this method.
if (getVisible() == visible)
{
- LLTransientDockableFloater::setVisible(visible);
+ LLFloater::setVisible(visible);
return;
}
@@ -177,7 +171,7 @@ void LLFloaterMove::setVisible(BOOL visible)
LLPanelStandStopFlying::getInstance()->reparent(NULL);
}
- LLTransientDockableFloater::setVisible(visible);
+ LLFloater::setVisible(visible);
}
// static
@@ -441,30 +435,6 @@ void LLFloaterMove::setModeTitle(const EMovementMode mode)
setTitle(title);
}
-/**
- * Updates position of the floater to be center aligned with Move button.
- */
-void LLFloaterMove::updatePosition()
-{
- LLBottomTray* tray = LLBottomTray::getInstance();
- if (!tray) return;
-
- LLButton* movement_btn = tray->findChild<LLButton>(BOTTOM_TRAY_BUTTON_NAME);
-
- if (movement_btn)
- {
- //align centers of a button and a floater
- S32 x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2;
-
- S32 y = 0;
- if (!mModeActionsPanel->getVisible())
- {
- y = mModeActionsPanel->getRect().getHeight();
- }
- setOrigin(x, y);
- }
-}
-
//static
void LLFloaterMove::sUpdateFlyingStatus()
{
@@ -499,8 +469,6 @@ void LLFloaterMove::enableInstance(BOOL bEnable)
void LLFloaterMove::onOpen(const LLSD& key)
{
- LLButton *anchor_panel = LLBottomTray::getInstance()->getChild<LLButton>("movement_btn");
-
if (gAgent.getFlying())
{
setFlyingMode(TRUE);
@@ -513,19 +481,9 @@ void LLFloaterMove::onOpen(const LLSD& key)
showModeButtons(FALSE);
}
- setDockControl(new LLDockControl(
- anchor_panel, this,
- getDockTongue(), LLDockControl::TOP));
-
sUpdateFlyingStatus();
}
-//virtual
-void LLFloaterMove::setDocked(bool docked, bool pop_on_undock/* = true*/)
-{
- LLTransientDockableFloater::setDocked(docked, pop_on_undock);
-}
-
void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)
{
llassert_always(mModeControlButtonMap.end() != mModeControlButtonMap.find(mode));
@@ -736,23 +694,30 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick()
*/
void LLPanelStandStopFlying::updatePosition()
{
- LLBottomTray* tray = LLBottomTray::getInstance();
- if (!tray || mAttached) return;
+ if (mAttached) return;
- LLButton* movement_btn = tray->findChild<LLButton>(BOTTOM_TRAY_BUTTON_NAME);
+ S32 y_pos = 0;
+ S32 bottom_tb_center = 0;
+ if (LLToolBar* toolbar_bottom = gToolBarView->getChild<LLToolBar>("toolbar_bottom"))
+ {
+ y_pos = toolbar_bottom->getRect().getHeight();
+ bottom_tb_center = toolbar_bottom->getRect().getCenterX();
+ }
- S32 x = 0;
- if (movement_btn)
+ S32 left_tb_width = 0;
+ if (LLToolBar* toolbar_left = gToolBarView->getChild<LLToolBar>("toolbar_left"))
{
- // Align centers of the button and the panel.
- x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2;
+ left_tb_width = toolbar_left->getRect().getWidth();
}
- else
+
+ if(LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container"))
{
- x = tray->calcScreenRect().getCenterX() - getRect().getWidth()/2;
+ panel_ssf_container->setOrigin(0, y_pos);
}
- setOrigin(x, 0);
-}
+ S32 x_pos = bottom_tb_center-getRect().getWidth()/2 - left_tb_width;
+
+ setOrigin( x_pos, 0);
+}
// EOF
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index 1b87864651..744dd866d4 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -28,7 +28,7 @@
#define LL_LLMOVEVIEW_H
// Library includes
-#include "lltransientdockablefloater.h"
+#include "llfloater.h"
class LLButton;
class LLJoystickAgentTurn;
@@ -38,7 +38,7 @@ class LLJoystickAgentSlide;
// Classes
//
class LLFloaterMove
-: public LLTransientDockableFloater
+: public LLFloater
{
LOG_CLASS(LLFloaterMove);
friend class LLFloaterReg;
@@ -58,7 +58,6 @@ public:
static void setSittingMode(BOOL bSitting);
static void enableInstance(BOOL bEnable);
/*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
static void sUpdateFlyingStatus();
@@ -87,7 +86,6 @@ private:
void initModeButtonMap();
void setModeButtonToggleState(const EMovementMode mode);
void updateButtonsWithMovementMode(const EMovementMode newMode);
- void updatePosition();
void showModeButtons(BOOL bShow);
public:
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
index d64fdbe6a5..ca9956dc53 100644
--- a/indra/newview/llnamelistctrl.h
+++ b/indra/newview/llnamelistctrl.h
@@ -61,7 +61,7 @@ public:
{}
};
- struct NameColumn : public LLInitParam::Choice<NameColumn>
+ struct NameColumn : public LLInitParam::ChoiceBlock<NameColumn>
{
Alternative<S32> column_index;
Alternative<std::string> column_name;
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 9d54ad7463..fc264db5af 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -45,7 +45,6 @@
#include "llpaneltopinfobar.h"
#include "llteleporthistory.h"
#include "llsearchcombobox.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llurlregistry.h"
#include "llurldispatcher.h"
@@ -269,7 +268,6 @@ LLNavigationBar::LLNavigationBar()
mBtnForward(NULL),
mBtnHome(NULL),
mCmbLocation(NULL),
- mSearchComboBox(NULL),
mPurgeTPHistoryItems(false),
mSaveToLocationHistory(false)
{
@@ -291,10 +289,7 @@ BOOL LLNavigationBar::postBuild()
mBtnForward = getChild<LLPullButton>("forward_btn");
mBtnHome = getChild<LLButton>("home_btn");
- mCmbLocation= getChild<LLLocationInputCtrl>("location_combo");
- mSearchComboBox = getChild<LLSearchComboBox>("search_combo_box");
-
- fillSearchComboBox();
+ mCmbLocation= getChild<LLLocationInputCtrl>("location_combo");
mBtnBack->setEnabled(FALSE);
mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this));
@@ -309,8 +304,6 @@ BOOL LLNavigationBar::postBuild()
mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this));
mCmbLocation->setCommitCallback(boost::bind(&LLNavigationBar::onLocationSelection, this));
-
- mSearchComboBox->setCommitCallback(boost::bind(&LLNavigationBar::onSearchCommit, this));
mTeleportFinishConnection = LLViewerParcelMgr::getInstance()->
setTeleportFinishedCallback(boost::bind(&LLNavigationBar::onTeleportFinished, this, _1));
@@ -344,26 +337,6 @@ void LLNavigationBar::setVisible(BOOL visible)
}
}
-
-void LLNavigationBar::fillSearchComboBox()
-{
- if(!mSearchComboBox)
- {
- return;
- }
-
- LLSearchHistory::getInstance()->load();
-
- LLSearchHistory::search_history_list_t search_list =
- LLSearchHistory::getInstance()->getSearchHistoryList();
- LLSearchHistory::search_history_list_t::const_iterator it = search_list.begin();
- for( ; search_list.end() != it; ++it)
- {
- LLSearchHistory::LLSearchHistoryItem item = *it;
- mSearchComboBox->add(item.search_query);
- }
-}
-
void LLNavigationBar::draw()
{
if(mPurgeTPHistoryItems)
@@ -416,16 +389,6 @@ void LLNavigationBar::onHomeButtonClicked()
gAgent.teleportHome();
}
-void LLNavigationBar::onSearchCommit()
-{
- std::string search_query = mSearchComboBox->getSimple();
- if(!search_query.empty())
- {
- LLSearchHistory::getInstance()->addEntry(search_query);
- }
- invokeSearch(search_query);
-}
-
void LLNavigationBar::onTeleportHistoryMenuItemClicked(const LLSD& userdata)
{
int idx = userdata.asInteger();
@@ -736,151 +699,3 @@ int LLNavigationBar::getDefFavBarHeight()
{
return mDefaultFpRect.getHeight();
}
-
-void LLNavigationBar::showNavigationPanel(BOOL visible)
-{
- bool fpVisible = gSavedSettings.getBOOL("ShowNavbarFavoritesPanel");
-
- LLFavoritesBarCtrl* fb = getChild<LLFavoritesBarCtrl>("favorite");
- LLPanel* navPanel = getChild<LLPanel>("navigation_panel");
-
- LLRect nbRect(getRect());
- LLRect fbRect(fb->getRect());
-
- navPanel->setVisible(visible);
-
- if (visible)
- {
- if (fpVisible)
- {
- // Navigation Panel must be shown. Favorites Panel is visible.
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), mDefaultNbRect.getHeight());
- fbRect.setLeftTopAndSize(fbRect.mLeft, mDefaultFpRect.mTop, fbRect.getWidth(), fbRect.getHeight());
-
- // this is duplicated in 'else' section because it should be called BEFORE fb->reshape
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- // propagate size to parent container
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
- fb->reshape(fbRect.getWidth(), fbRect.getHeight());
- fb->setRect(fbRect);
- }
- else
- {
- // Navigation Panel must be shown. Favorites Panel is hidden.
-
- S32 height = mDefaultNbRect.getHeight() - mDefaultFpRect.getHeight() - FAVBAR_TOP_PADDING;
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), height);
-
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
- }
- }
- else
- {
- if (fpVisible)
- {
- // Navigation Panel must be hidden. Favorites Panel is visible.
-
- S32 fpHeight = mDefaultFpRect.getHeight() + FAVBAR_TOP_PADDING;
- S32 fpTop = fpHeight - (mDefaultFpRect.getHeight() / 2) + 1;
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), fpHeight);
- fbRect.setLeftTopAndSize(fbRect.mLeft, fpTop, fbRect.getWidth(), mDefaultFpRect.getHeight());
-
- // this is duplicated in 'else' section because it should be called BEFORE fb->reshape
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
- fb->reshape(fbRect.getWidth(), fbRect.getHeight());
- fb->setRect(fbRect);
- }
- else
- {
- // Navigation Panel must be hidden. Favorites Panel is hidden.
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), 0);
-
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
- }
- }
-
- getChildView("bg_icon")->setVisible( visible && fpVisible);
- getChildView("bg_icon_no_fav_bevel")->setVisible( visible && !fpVisible);
- getChildView("bg_icon_no_nav_bevel")->setVisible( !visible && fpVisible);
-}
-
-void LLNavigationBar::showFavoritesPanel(BOOL visible)
-{
- bool npVisible = gSavedSettings.getBOOL("ShowNavbarNavigationPanel");
-
- LLFavoritesBarCtrl* fb = getChild<LLFavoritesBarCtrl>("favorite");
-
- LLRect nbRect(getRect());
- LLRect fbRect(fb->getRect());
-
- if (visible)
- {
- if (npVisible)
- {
- // Favorites Panel must be shown. Navigation Panel is visible.
-
- S32 fbHeight = fbRect.getHeight();
- S32 newHeight = nbRect.getHeight() + fbHeight + FAVBAR_TOP_PADDING;
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), newHeight);
- fbRect.setLeftTopAndSize(mDefaultFpRect.mLeft, mDefaultFpRect.mTop, fbRect.getWidth(), fbRect.getHeight());
- }
- else
- {
- // Favorites Panel must be shown. Navigation Panel is hidden.
-
- S32 fpHeight = mDefaultFpRect.getHeight() + FAVBAR_TOP_PADDING;
- S32 fpTop = fpHeight - (mDefaultFpRect.getHeight() / 2) + 1;
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), fpHeight);
- fbRect.setLeftTopAndSize(fbRect.mLeft, fpTop, fbRect.getWidth(), mDefaultFpRect.getHeight());
- }
-
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
- fb->reshape(fbRect.getWidth(), fbRect.getHeight());
- fb->setRect(fbRect);
- }
- else
- {
- if (npVisible)
- {
- // Favorites Panel must be hidden. Navigation Panel is visible.
-
- S32 fbHeight = fbRect.getHeight();
- S32 newHeight = nbRect.getHeight() - fbHeight - FAVBAR_TOP_PADDING;
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), newHeight);
- }
- else
- {
- // Favorites Panel must be hidden. Navigation Panel is hidden.
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), 0);
- }
-
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
- }
-
- getChildView("bg_icon")->setVisible( npVisible && visible);
- getChildView("bg_icon_no_fav_bevel")->setVisible( npVisible && !visible);
- getChildView("bg_icon_no_nav_bevel")->setVisible( !npVisible && visible);
-
- fb->setVisible(visible);
-}
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 3c9f8a762d..e4ce9e3998 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -98,9 +98,6 @@ public:
void handleLoginComplete();
void clearHistoryCache();
- void showNavigationPanel(BOOL visible);
- void showFavoritesPanel(BOOL visible);
-
int getDefNavBarHeight();
int getDefFavBarHeight();
@@ -121,7 +118,6 @@ private:
void onHomeButtonClicked();
void onLocationSelection();
void onLocationPrearrange(const LLSD& data);
- void onSearchCommit();
void onTeleportFinished(const LLVector3d& global_agent_pos);
void onTeleportFailed();
void onRegionNameResponse(
@@ -131,8 +127,6 @@ private:
U64 region_handle, const std::string& url,
const LLUUID& snapshot_id, bool teleport);
- void fillSearchComboBox();
-
static void destroyClass()
{
if (LLNavigationBar::instanceExists())
@@ -145,7 +139,6 @@ private:
LLPullButton* mBtnBack;
LLPullButton* mBtnForward;
LLButton* mBtnHome;
- LLSearchComboBox* mSearchComboBox;
LLLocationInputCtrl* mCmbLocation;
LLRect mDefaultNbRect;
LLRect mDefaultFpRect;
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 03ebc344f1..67d745248f 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -32,8 +32,9 @@
#include "llrootview.h"
//#include "llchatitemscontainerctrl.h"
#include "lliconctrl.h"
-#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
+#include "lllogchat.h"
#include "llresizebar.h"
#include "llresizehandle.h"
#include "llmenugl.h"
@@ -50,18 +51,19 @@
#include "lldraghandle.h"
-#include "llbottomtray.h"
#include "llnearbychatbar.h"
#include "llfloaterreg.h"
#include "lltrans.h"
static const S32 RESIZE_BAR_THICKNESS = 3;
-LLNearbyChat::LLNearbyChat(const LLSD& key)
- : LLDockableFloater(NULL, false, false, key)
+
+static LLRegisterPanelClassWrapper<LLNearbyChat> t_panel_nearby_chat("panel_nearby_chat");
+
+LLNearbyChat::LLNearbyChat()
+ : LLPanel()
,mChatHistory(NULL)
{
-
}
LLNearbyChat::~LLNearbyChat()
@@ -86,54 +88,12 @@ BOOL LLNearbyChat::postBuild()
mChatHistory = getChild<LLChatHistory>("chat_history");
- if(!LLDockableFloater::postBuild())
+ if(!LLPanel::postBuild())
return false;
-
- if (getDockControl() == NULL)
- {
- setDockControl(new LLDockControl(
- LLBottomTray::getInstance()->getNearbyChatBar(), this,
- getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
- }
-
- //fix for EXT-4621
- //chrome="true" prevents floater from stilling capture
- setIsChrome(true);
- //chrome="true" hides floater caption
- if (mDragHandle)
- mDragHandle->setTitleVisible(TRUE);
-
+
return true;
}
-
-void LLNearbyChat::applySavedVariables()
-{
- if (mRectControl.size() > 1)
- {
- const LLRect& rect = LLFloater::getControlGroup()->getRect(mRectControl);
- if(!rect.isEmpty() && rect.isValid())
- {
- reshape(rect.getWidth(), rect.getHeight());
- setRect(rect);
- }
- }
-
-
- if(!LLFloater::getControlGroup()->controlExists(mDocStateControl))
- {
- setDocked(true);
- }
- else
- {
- if (mDocStateControl.size() > 1)
- {
- bool dockState = LLFloater::getControlGroup()->getBOOL(mDocStateControl);
- setDocked(dockState);
- }
- }
-}
-
std::string appendTime()
{
time_t utc_time;
@@ -203,7 +163,7 @@ void LLNearbyChat::onNearbySpeakers()
{
LLSD param;
param["people_panel_tab_name"] = "nearby_panel";
- LLSideTray::getInstance()->showPanel("panel_people",param);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", param);
}
@@ -229,18 +189,9 @@ void LLNearbyChat::setVisible(BOOL visible)
}
}
- LLDockableFloater::setVisible(visible);
+ LLPanel::setVisible(visible);
}
-void LLNearbyChat::onOpen(const LLSD& key )
-{
- LLDockableFloater::onOpen(key);
-}
-
-void LLNearbyChat::setRect (const LLRect &rect)
-{
- LLDockableFloater::setRect(rect);
-}
void LLNearbyChat::getAllowedRect(LLRect& rect)
{
@@ -263,9 +214,9 @@ void LLNearbyChat::updateChatHistoryStyle()
//static
void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
- if(nearby_chat)
- nearby_chat->updateChatHistoryStyle();
+ //LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ //if(nearby_chat)
+ // nearby_chat->updateChatHistoryStyle();
}
bool isWordsName(const std::string& name)
@@ -339,7 +290,8 @@ void LLNearbyChat::loadHistory()
//static
LLNearbyChat* LLNearbyChat::getInstance()
{
- return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+ return chat_bar->findChild<LLNearbyChat>("nearby_chat");
}
////////////////////////////////////////////////////////////////////////////////
@@ -367,7 +319,7 @@ BOOL LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)
if(mChatHistory)
mChatHistory->setFocus(TRUE);
- return LLDockableFloater::handleMouseDown(x, y, mask);
+ return LLPanel::handleMouseDown(x, y, mask);
}
void LLNearbyChat::draw()
@@ -380,5 +332,5 @@ void LLNearbyChat::draw()
setTransparencyType(hasFocus() ? TT_ACTIVE : TT_INACTIVE);
}
- LLDockableFloater::draw();
+ LLPanel::draw();
}
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 2ea79797f8..5ef584c8ff 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -1,4 +1,4 @@
-/**
+ /**
* @file llnearbychat.h
* @brief nearby chat history scrolling panel implementation
*
@@ -27,17 +27,17 @@
#ifndef LL_LLNEARBYCHAT_H_
#define LL_LLNEARBYCHAT_H_
-#include "lldockablefloater.h"
#include "llscrollbar.h"
#include "llviewerchat.h"
+#include "llfloater.h"
class LLResizeBar;
class LLChatHistory;
-class LLNearbyChat: public LLDockableFloater
+class LLNearbyChat: public LLPanel
{
public:
- LLNearbyChat(const LLSD& key);
+ LLNearbyChat();
~LLNearbyChat();
BOOL postBuild ();
@@ -54,12 +54,8 @@ public:
/*virtual*/ void onFocusLost();
/*virtual*/ void onFocusReceived();
- /*virtual*/ void onOpen (const LLSD& key);
-
/*virtual*/ void setVisible(BOOL visible);
-
- virtual void setRect (const LLRect &rect);
-
+
virtual void updateChatHistoryStyle();
static void processChatHistoryStyleUpdate(const LLSD& newvalue);
@@ -69,7 +65,6 @@ public:
static LLNearbyChat* getInstance();
private:
- virtual void applySavedVariables();
void getAllowedRect (LLRect& rect);
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 4b961db5f9..3e4228cfb6 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -34,7 +34,6 @@
#include "llfirstuse.h"
#include "llnearbychatbar.h"
-#include "llbottomtray.h"
#include "llagent.h"
#include "llgesturemgr.h"
#include "llmultigesture.h"
@@ -49,13 +48,15 @@
#include "llrootview.h"
#include "llviewerchat.h"
+#include "llresizehandle.h"
+
S32 LLNearbyChatBar::sLastSpecialChatChannel = 0;
+const S32 EXPANDED_HEIGHT = 300;
+
// legacy callback glue
void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel);
-static LLDefaultChildRegistry::Register<LLGestureComboList> r("gesture_combo_list");
-
struct LLChatTypeTrigger {
std::string name;
EChatType type;
@@ -66,355 +67,10 @@ static LLChatTypeTrigger sChatTypeTriggers[] = {
{ "/shout" , CHAT_TYPE_SHOUT}
};
-//ext-7367
-//Problem: gesture list control (actually LLScrollListCtrl) didn't actually process mouse wheel message.
-// introduce new gesture list subclass to "eat" mouse wheel messages (and probably some other messages)
-class LLGestureScrollListCtrl: public LLScrollListCtrl
-{
-protected:
- friend class LLUICtrlFactory;
- LLGestureScrollListCtrl(const LLScrollListCtrl::Params& params)
- :LLScrollListCtrl(params)
- {
- }
-public:
- BOOL handleScrollWheel(S32 x, S32 y, S32 clicks)
- {
- LLScrollListCtrl::handleScrollWheel( x, y, clicks );
- return TRUE;
- }
- //See EXT-6598
- //Mouse hover over separator will result in not processing tooltip message
- //So eat this message
- BOOL handleToolTip(S32 x, S32 y, MASK mask)
- {
- LLScrollListCtrl::handleToolTip( x, y, mask );
- return TRUE;
- }
-};
-
-LLGestureComboList::Params::Params()
-: combo_button("combo_button"),
- combo_list("combo_list"),
- get_more("get_more", true),
- view_all("view_all", true)
-{
-}
-
-LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
-: LLUICtrl(p),
- mLabel(p.label),
- mViewAllItemIndex(-1),
- mGetMoreItemIndex(-1),
- mShowViewAll(p.view_all),
- mShowGetMore(p.get_more)
-{
- LLBottomtrayButton::Params button_params = p.combo_button;
- button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM|FOLLOWS_RIGHT);
-
- mButton = LLUICtrlFactory::create<LLBottomtrayButton>(button_params);
- mButton->reshape(getRect().getWidth(),getRect().getHeight());
- mButton->setCommitCallback(boost::bind(&LLGestureComboList::onButtonCommit, this));
-
- addChild(mButton);
-
- LLGestureScrollListCtrl::Params params(p.combo_list);
-
- params.name("GestureComboList");
- params.commit_callback.function(boost::bind(&LLGestureComboList::onItemSelected, this, _2));
- params.visible(false);
- params.commit_on_keyboard_movement(false);
-
- mList = LLUICtrlFactory::create<LLGestureScrollListCtrl>(params);
- addChild(mList);
-
- //****************************Gesture Part********************************/
-
- setCommitCallback(boost::bind(&LLGestureComboList::onCommitGesture, this));
-
- // now register us as observer since we have a place to put the results
- LLGestureMgr::instance().addObserver(this);
-
- // refresh list from current active gestures
- refreshGestures();
-
- setFocusLostCallback(boost::bind(&LLGestureComboList::hideList, this));
-}
-
-BOOL LLGestureComboList::handleKeyHere(KEY key, MASK mask)
-{
- BOOL handled = FALSE;
-
- if (key == KEY_ESCAPE && mask == MASK_NONE )
- {
- hideList();
- handled = TRUE;
- }
- else
- {
- handled = mList->handleKeyHere(key, mask);
- }
-
- return handled;
-}
-
-void LLGestureComboList::draw()
-{
- LLUICtrl::draw();
-
- if(mButton->getToggleState())
- {
- showList();
- }
-}
-
-void LLGestureComboList::showList()
-{
- LLRect rect = mList->getRect();
- LLRect button_rect = mButton->getRect();
-
- // Calculating amount of space between the navigation bar and gestures combo
- LLNavigationBar* nb = LLNavigationBar::getInstance();
-
- S32 x, nb_bottom;
- nb->localPointToOtherView(0, 0, &x, &nb_bottom, this);
-
- S32 max_height = nb_bottom - button_rect.mTop;
- mList->calcColumnWidths();
- rect.setOriginAndSize(button_rect.mLeft, button_rect.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
-
- mList->setRect(rect);
- mList->fitContents( llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
-
- gFocusMgr.setKeyboardFocus(this);
-
- // Show the list and push the button down
- mButton->setToggleState(TRUE);
- mList->setVisible(TRUE);
- sendChildToFront(mList);
- LLUI::addPopup(mList);
-}
-
-void LLGestureComboList::onButtonCommit()
-{
- if (!mList->getVisible())
- {
- // highlight the last selected item from the original selection before potentially selecting a new item
- // as visual cue to original value of combo box
- LLScrollListItem* last_selected_item = mList->getLastSelectedItem();
- if (last_selected_item)
- {
- mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item));
- }
-
- if (mList->getItemCount() != 0)
- {
- showList();
- }
- }
- else
- {
- hideList();
- }
-}
-
-void LLGestureComboList::hideList()
-{
- if (mList->getVisible())
- {
- mButton->setToggleState(FALSE);
- mList->setVisible(FALSE);
- mList->mouseOverHighlightNthItem(-1);
- LLUI::removePopup(mList);
- gFocusMgr.setKeyboardFocus(NULL);
- }
-}
-
-S32 LLGestureComboList::getCurrentIndex() const
-{
- LLScrollListItem* item = mList->getFirstSelected();
- if( item )
- {
- return mList->getItemIndex( item );
- }
- return -1;
-}
-
-void LLGestureComboList::onItemSelected(const LLSD& data)
-{
- const std::string name = mList->getSelectedItemLabel();
-
- S32 cur_id = getCurrentIndex();
- mLastSelectedIndex = cur_id;
- if (cur_id != mList->getItemCount()-1 && cur_id != -1)
- {
- mButton->setLabel(name);
- }
-
- // hiding the list reasserts the old value stored in the text editor/dropdown button
- hideList();
-
- // commit does the reverse, asserting the value in the list
- onCommit();
-}
-
-void LLGestureComboList::sortByName(bool ascending)
-{
- mList->sortOnce(0, ascending);
-}
-
-LLSD LLGestureComboList::getValue() const
-{
- LLScrollListItem* item = mList->getFirstSelected();
- if( item )
- {
- return item->getValue();
- }
- else
- {
- return LLSD();
- }
-}
-
-void LLGestureComboList::refreshGestures()
-{
- //store current selection so we can maintain it
- LLSD cur_gesture = getValue();
-
- mList->selectFirstItem();
- mList->clearRows();
- mGestures.clear();
-
- LLGestureMgr::item_map_t::const_iterator it;
- const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();
- LLSD::Integer idx(0);
- for (it = active_gestures.begin(); it != active_gestures.end(); ++it)
- {
- LLMultiGesture* gesture = (*it).second;
- if (gesture)
- {
- mList->addSimpleElement(gesture->mName, ADD_BOTTOM, LLSD(idx));
- mGestures.push_back(gesture);
- idx++;
- }
- }
-
- sortByName();
-
- // store indices for Get More and View All items (idx is the index followed by the last added Gesture)
- if (mShowGetMore)
- {
- mGetMoreItemIndex = idx;
- mList->addSimpleElement(LLTrans::getString("GetMoreGestures"), ADD_BOTTOM, LLSD(mGetMoreItemIndex));
- }
- if (mShowViewAll)
- {
- mViewAllItemIndex = idx + 1;
- mList->addSimpleElement(LLTrans::getString("ViewAllGestures"), ADD_BOTTOM, LLSD(mViewAllItemIndex));
- }
-
- // Insert label after sorting, at top, with separator below it
- mList->addSeparator(ADD_TOP);
- mList->addSimpleElement(mLabel, ADD_TOP);
-
- if (cur_gesture.isDefined())
- {
- mList->selectByValue(cur_gesture);
-
- }
- else
- {
- mList->selectFirstItem();
- }
-
- LLCtrlListInterface* gestures = getListInterface();
- LLMultiGesture* gesture = NULL;
-
- if (gestures)
- {
- S32 sel_index = gestures->getFirstSelectedIndex();
- if (sel_index != 0)
- {
- S32 index = gestures->getSelectedValue().asInteger();
- if (index<0 || index >= (S32)mGestures.size())
- {
- llwarns << "out of range gesture access" << llendl;
- }
- else
- {
- gesture = mGestures.at(index);
- }
- }
- }
-
- if(gesture && LLGestureMgr::instance().isGesturePlaying(gesture))
- {
- return;
- }
-
- mButton->setLabel(mLabel);
-}
-
-void LLGestureComboList::onCommitGesture()
-{
- LLCtrlListInterface* gestures = getListInterface();
- if (gestures)
- {
- S32 sel_index = gestures->getFirstSelectedIndex();
- if (sel_index == 0)
- {
- return;
- }
-
- S32 index = gestures->getSelectedValue().asInteger();
-
- if (mViewAllItemIndex == index)
- {
- // The same behavior as Ctrl+G. EXT-823
- LLFloaterReg::toggleInstance("gestures");
- gestures->selectFirstItem();
- return;
- }
-
- if (mGetMoreItemIndex == index)
- {
- LLWeb::loadURLExternal(gSavedSettings.getString("GesturesMarketplaceURL"));
- return;
- }
-
- if (index<0 || index >= (S32)mGestures.size())
- {
- llwarns << "out of range gesture index" << llendl;
- }
- else
- {
- LLMultiGesture* gesture = mGestures.at(index);
- if(gesture)
- {
- LLGestureMgr::instance().playGesture(gesture);
- if(!gesture->mReplaceText.empty())
- {
- LLNearbyChatBar::sendChatFromViewer(gesture->mReplaceText, CHAT_TYPE_NORMAL, FALSE);
- }
- }
- }
- }
-}
-
-LLGestureComboList::~LLGestureComboList()
-{
- LLGestureMgr::instance().removeObserver(this);
-}
-
-LLCtrlListInterface* LLGestureComboList::getListInterface()
-{
- return mList;
-}
-
-LLNearbyChatBar::LLNearbyChatBar()
-: mChatBox(NULL)
-{
- mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
+LLNearbyChatBar::LLNearbyChatBar(const LLSD& key)
+ : LLFloater(key),
+ mChatBox(NULL)
+{ mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
}
//virtual
@@ -436,15 +92,37 @@ BOOL LLNearbyChatBar::postBuild()
mChatBox->setEnableLineHistory(TRUE);
mChatBox->setFont(LLViewerChat::getChatFont());
+
+ LLUICtrl* show_btn = getChild<LLUICtrl>("show_nearby_chat");
+ show_btn->setCommitCallback(boost::bind(&LLNearbyChatBar::onToggleNearbyChatPanel, this));
+
mOutputMonitor = getChild<LLOutputMonitorCtrl>("chat_zone_indicator");
mOutputMonitor->setVisible(FALSE);
// Register for font change notifications
LLViewerChat::setFontChangedCallback(boost::bind(&LLNearbyChatBar::onChatFontChange, this, _1));
+ mExpandedHeight = getMinHeight() + EXPANDED_HEIGHT;
+
+ enableResizeCtrls(true, true, false);
+
return TRUE;
}
+bool LLNearbyChatBar::applyRectControl()
+{
+ bool rect_controlled = LLFloater::applyRectControl();
+
+ if (getRect().getHeight() > getMinHeight())
+ {
+ getChildView("nearby_chat")->setVisible(true);
+ mExpandedHeight = getRect().getHeight();
+ enableResizeCtrls(true);
+ }
+
+ return rect_controlled;
+}
+
void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
{
// Update things with the new font whohoo
@@ -457,19 +135,23 @@ void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
//static
LLNearbyChatBar* LLNearbyChatBar::getInstance()
{
- return LLBottomTray::getInstance() ? LLBottomTray::getInstance()->getNearbyChatBar() : NULL;
+ return LLFloaterReg::getTypedInstance<LLNearbyChatBar>("chat_bar");
}
-//static
-bool LLNearbyChatBar::instanceExists()
+void LLNearbyChatBar::showHistory()
{
- return LLBottomTray::instanceExists() && LLBottomTray::getInstance()->getNearbyChatBar() != NULL;
+ if (!getChildView("nearby_chat")->getVisible())
+ {
+ onToggleNearbyChatPanel();
+ }
+
+ openFloater();
}
void LLNearbyChatBar::draw()
{
displaySpeakingIndicator();
- LLPanel::draw();
+ LLFloater::draw();
}
std::string LLNearbyChatBar::getCurrentChat()
@@ -683,6 +365,26 @@ void LLNearbyChatBar::sendChat( EChatType type )
}
}
+
+void LLNearbyChatBar::onToggleNearbyChatPanel()
+{
+ LLView* nearby_chat = getChildView("nearby_chat");
+
+ if (nearby_chat->getVisible())
+ {
+ mExpandedHeight = getRect().getHeight();
+ nearby_chat->setVisible(FALSE);
+ reshape(getRect().getWidth(), getMinHeight());
+ enableResizeCtrls(true, true, false);
+ }
+ else
+ {
+ nearby_chat->setVisible(TRUE);
+ reshape(getRect().getWidth(), mExpandedHeight);
+ enableResizeCtrls(true);
+ }
+}
+
void LLNearbyChatBar::onChatBoxCommit()
{
if (mChatBox->getText().length() > 0)
@@ -780,17 +482,13 @@ void LLNearbyChatBar::sendChatFromViewer(const LLWString &wtext, EChatType type,
// static
void LLNearbyChatBar::startChat(const char* line)
{
- LLBottomTray *bt = LLBottomTray::getInstance();
-
- if (!bt)
- return;
-
- LLNearbyChatBar* cb = bt->getNearbyChatBar();
+ LLNearbyChatBar* cb = LLNearbyChatBar::getInstance();
if (!cb )
return;
- bt->setVisible(TRUE);
+ cb->setVisible(TRUE);
+ cb->setFocus(TRUE);
cb->mChatBox->setFocus(TRUE);
if (line)
@@ -806,12 +504,7 @@ void LLNearbyChatBar::startChat(const char* line)
// static
void LLNearbyChatBar::stopChat()
{
- LLBottomTray *bt = LLBottomTray::getInstance();
-
- if (!bt)
- return;
-
- LLNearbyChatBar* cb = bt->getNearbyChatBar();
+ LLNearbyChatBar* cb = LLNearbyChatBar::getInstance();
if (!cb)
return;
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index efddec942f..bc00c1b9fc 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -27,85 +27,25 @@
#ifndef LL_LLNEARBYCHATBAR_H
#define LL_LLNEARBYCHATBAR_H
-#include "llpanel.h"
+#include "llfloater.h"
#include "llcombobox.h"
#include "llgesturemgr.h"
#include "llchat.h"
#include "llvoiceclient.h"
#include "lloutputmonitorctrl.h"
#include "llspeakers.h"
-#include "llbottomtray.h"
-
-class LLGestureComboList
- : public LLGestureManagerObserver
- , public LLUICtrl
-{
-public:
- struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
- {
- Optional<LLBottomtrayButton::Params> combo_button;
- Optional<LLScrollListCtrl::Params> combo_list;
- Optional<bool> get_more,
- view_all;
-
- Params();
- };
-
-protected:
-
- friend class LLUICtrlFactory;
- LLGestureComboList(const Params&);
- std::vector<LLMultiGesture*> mGestures;
- std::string mLabel;
- bool mShowViewAll;
- bool mShowGetMore;
- LLSD::Integer mViewAllItemIndex;
- LLSD::Integer mGetMoreItemIndex;
-
-public:
-
- ~LLGestureComboList();
-
- LLCtrlListInterface* getListInterface();
- virtual void showList();
- virtual void hideList();
- virtual BOOL handleKeyHere(KEY key, MASK mask);
-
- virtual void draw();
-
- S32 getCurrentIndex() const;
- void onItemSelected(const LLSD& data);
- void sortByName(bool ascending = true);
- void refreshGestures();
- void onCommitGesture();
- void onButtonCommit();
- virtual LLSD getValue() const;
-
- // LLGestureManagerObserver trigger
- virtual void changed() { refreshGestures(); }
-
-private:
-
- LLButton* mButton;
- LLScrollListCtrl* mList;
- S32 mLastSelectedIndex;
-};
-
-class LLNearbyChatBar
-: public LLPanel
+class LLNearbyChatBar : public LLFloater
{
public:
// constructor for inline chat-bars (e.g. hosted in chat history window)
- LLNearbyChatBar();
+ LLNearbyChatBar(const LLSD& key);
~LLNearbyChatBar() {}
virtual BOOL postBuild();
static LLNearbyChatBar* getInstance();
- static bool instanceExists();
-
LLLineEditor* getChatBox() { return mChatBox; }
virtual void draw();
@@ -119,6 +59,8 @@ public:
static void sendChatFromViewer(const std::string &utf8text, EChatType type, BOOL animate);
static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate);
+ void showHistory();
+
protected:
static BOOL matchChatTypeTrigger(const std::string& in_str, std::string* out_str);
static void onChatBoxKeystroke(LLLineEditor* caller, void* userdata);
@@ -129,6 +71,10 @@ protected:
void onChatBoxCommit();
void onChatFontChange(LLFontGL* fontp);
+ /* virtual */ bool applyRectControl();
+
+ void onToggleNearbyChatPanel();
+
static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
EChatType processChatTypeTriggers(EChatType type, std::string &str);
@@ -140,6 +86,8 @@ protected:
LLLineEditor* mChatBox;
LLOutputMonitorCtrl* mOutputMonitor;
LLLocalSpeakerMgr* mSpeakerMgr;
+
+ S32 mExpandedHeight;
};
#endif
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 957b6d5f94..330a21ef65 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -29,7 +29,6 @@
#include "llagentdata.h" // for gAgentID
#include "llnearbychathandler.h"
-#include "llbottomtray.h"
#include "llchatitemscontainerctrl.h"
#include "llfirstuse.h"
#include "llfloaterscriptdebug.h"
@@ -41,6 +40,9 @@
#include "llfloaterreg.h"//for LLFloaterReg::getTypedInstance
#include "llviewerwindow.h"//for screen channel position
+#include "llnearbychatbar.h"
+#include "llrootview.h"
+#include "lllayoutstack.h"
//add LLNearbyChatHandler to LLNotificationsUI namespace
using namespace LLNotificationsUI;
@@ -61,7 +63,7 @@ public:
typedef std::vector<LLHandle<LLToast> > toast_vec_t;
typedef std::list<LLHandle<LLToast> > toast_list_t;
- LLNearbyChatScreenChannel(const LLUUID& id):LLScreenChannelBase(id)
+ LLNearbyChatScreenChannel(const Params& p):LLScreenChannelBase(p)
{
mStopProcessing = false;
@@ -80,7 +82,6 @@ public:
void addNotification (LLSD& notification);
void arrangeToasts ();
- void showToastsBottom ();
typedef boost::function<LLToastPanelBase* (void )> create_toast_panel_callback_t;
void setCreatePanelCallback(create_toast_panel_callback_t value) { m_create_toast_panel_callback_t = value;}
@@ -88,8 +89,6 @@ public:
void onToastDestroyed (LLToast* toast, bool app_quitting);
void onToastFade (LLToast* toast);
- void reshape (S32 width, S32 height, BOOL called_from_parent);
-
void redrawToasts()
{
arrangeToasts();
@@ -149,6 +148,7 @@ protected:
toast_list_t m_toast_pool;
bool mStopProcessing;
+ bool mChannelRect;
};
//-----------------------------------------------------------------------------------------------
@@ -351,27 +351,6 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification)
arrangeToasts();
}
-void LLNearbyChatScreenChannel::arrangeToasts()
-{
- if(!isHovering())
- {
- showToastsBottom();
- }
-
- if (m_active_toasts.empty())
- {
- LLHints::registerHintTarget("incoming_chat", LLHandle<LLView>());
- }
- else
- {
- LLToast* toast = m_active_toasts.front().get();
- if (toast)
- {
- LLHints::registerHintTarget("incoming_chat", m_active_toasts.front().get()->LLView::getHandle());
- }
- }
-}
-
static bool sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> second)
{
if (!first.get() || !second.get()) return false; // STORM-1352
@@ -381,16 +360,31 @@ static bool sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> sec
return v1 > v2;
}
-void LLNearbyChatScreenChannel::showToastsBottom()
+void LLNearbyChatScreenChannel::arrangeToasts()
{
- if(mStopProcessing)
+ if(mStopProcessing || isHovering())
return;
+ LLView* floater_snap_region = gViewerWindow->getRootView()->getChildView("floater_snap_region");
+
+ if (!getParent())
+ {
+ // connect to floater snap region just to get resize events, we don't care about being a proper widget
+ floater_snap_region->addChild(this);
+ setFollows(FOLLOWS_ALL);
+ }
+
LLRect toast_rect;
- updateBottom();
- S32 channel_bottom = getRect().mBottom;
+ updateRect();
+
+ LLRect channel_rect;
+ floater_snap_region->localRectToOtherView(floater_snap_region->getLocalRect(), &channel_rect, gFloaterView);
+ channel_rect.mLeft += 10;
+ channel_rect.mRight = channel_rect.mLeft + 300;
+
+ S32 channel_bottom = channel_rect.mBottom;
- S32 bottom = channel_bottom;
+ S32 bottom = channel_bottom + 10;
S32 margin = gSavedSettings.getS32("ToastGap");
//sort active toasts
@@ -409,7 +403,7 @@ void LLNearbyChatScreenChannel::showToastsBottom()
S32 toast_top = bottom + toast->getRect().getHeight() + margin;
- if(toast_top > gFloaterView->getRect().getHeight())
+ if(toast_top > channel_rect.getHeight())
{
while(it!=m_active_toasts.end())
{
@@ -420,7 +414,7 @@ void LLNearbyChatScreenChannel::showToastsBottom()
}
toast_rect = toast->getRect();
- toast_rect.setLeftTopAndSize(getRect().mLeft , bottom + toast_rect.getHeight(), toast_rect.getWidth() ,toast_rect.getHeight());
+ toast_rect.setLeftTopAndSize(channel_rect.mLeft , bottom + toast_rect.getHeight(), toast_rect.getWidth() ,toast_rect.getHeight());
toast->setRect(toast_rect);
bottom += toast_rect.getHeight() - toast->getTopPad() + margin;
@@ -438,15 +432,10 @@ void LLNearbyChatScreenChannel::showToastsBottom()
}
}
- }
-
-void LLNearbyChatScreenChannel::reshape (S32 width, S32 height, BOOL called_from_parent)
-{
- LLScreenChannelBase::reshape(width, height, called_from_parent);
- arrangeToasts();
}
+
//-----------------------------------------------------------------------------------------------
//LLNearbyChatHandler
//-----------------------------------------------------------------------------------------------
@@ -457,7 +446,9 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i
mType = type;
// Getting a Channel for our notifications
- LLNearbyChatScreenChannel* channel = new LLNearbyChatScreenChannel(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
+ LLNearbyChatScreenChannel::Params p;
+ p.id = LLUUID(gSavedSettings.getString("NearByChatChannelUUID"));
+ LLNearbyChatScreenChannel* channel = new LLNearbyChatScreenChannel(p);
LLNearbyChatScreenChannel::create_toast_panel_callback_t callback = createToastPanel;
@@ -473,10 +464,8 @@ LLNearbyChatHandler::~LLNearbyChatHandler()
void LLNearbyChatHandler::initChannel()
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
- LLView* chat_box = LLBottomTray::getInstance()->getChildView("chat_box");
- S32 channel_right_bound = nearby_chat->getRect().mRight;
- mChannel->init(chat_box->getRect().mLeft, channel_right_bound);
+ //LLRect snap_rect = gFloaterView->getSnapRect();
+ //mChannel->init(snap_rect.mLeft, snap_rect.mLeft + 200);
}
@@ -502,7 +491,10 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not
tmp_chat.mText = tmp_chat.mText.substr(3);
}
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+
+ LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
+
{
//sometimes its usefull to have no name at all...
//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null)
@@ -576,7 +568,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not
sChatWatcher->post(notification);
- if( nearby_chat->getVisible()
+ if( chat_bar->getVisible() && nearby_chat->getVisible()
|| ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
&& gSavedSettings.getBOOL("UseChatBubbles") )
|| !mChannel->getShowToasts() ) // to prevent toasts in Busy mode
diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp
index 9d824dcd59..cae7d02fed 100644
--- a/indra/newview/llnotificationalerthandler.cpp
+++ b/indra/newview/llnotificationalerthandler.cpp
@@ -44,7 +44,7 @@ LLAlertHandler::LLAlertHandler(e_notification_type type, const LLSD& id) : mIsMo
{
mType = type;
- LLChannelManager::Params p;
+ LLScreenChannelBase::Params p;
p.id = LLUUID(gSavedSettings.getString("AlertChannelUUID"));
p.display_toasts_always = true;
p.toast_align = NA_CENTRE;
@@ -114,7 +114,7 @@ bool LLAlertHandler::processNotification(const LLSD& notify)
// Show alert in middle of progress view (during teleport) (EXT-1093)
LLProgressView* progress = gViewerWindow->getProgressView();
LLRect rc = progress && progress->getVisible() ? progress->getRect() : gViewerWindow->getWorldViewRectScaled();
- mChannel->updatePositionAndSize(rc, rc);
+ mChannel->updatePositionAndSize(rc);
LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel);
if(channel)
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index de90023f3b..1b767e80d4 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -385,7 +385,7 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
// static
void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChatSourceType type)
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
{
LLChat chat_msg(notification->getMessage());
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 02b217fc94..2a08a29842 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -92,8 +92,7 @@ bool LLTipHandler::processNotification(const LLSD& notify)
LLHandlerUtil::logToNearbyChat(notification, CHAT_SOURCE_SYSTEM);
// don't show toast if Nearby Chat is opened
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<
- LLNearbyChat>("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if (nearby_chat->getVisible())
{
return false;
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 10887aa53a..1dc4d796ab 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -35,13 +35,13 @@
#include "llaccordionctrltab.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "lllistcontextmenu.h"
#include "llmenubutton.h"
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "lltransutil.h"
#include "llviewermenu.h"
@@ -327,7 +327,7 @@ protected:
static void editOutfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
static void renameOutfit(const LLUUID& outfit_cat_id)
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 81e199d85b..5c85ec438c 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -37,7 +37,7 @@
// project include
#include "llfloateravatarpicker.h"
-#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
#include "llsidetraypanelcontainer.h"
static LLRegisterPanelClassWrapper<LLPanelBlockedList> t_panel_blocked_list("panel_block_list_sidetray");
@@ -99,7 +99,7 @@ void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
void LLPanelBlockedList::showPanelAndSelect(const LLUUID& idToSelect)
{
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
}
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 76b85d5bec..ae217958f0 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -29,6 +29,7 @@
// Library includes
#include "llbutton.h"
+#include "llfloatersidepanelcontainer.h"
#include "lltabcontainer.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
@@ -49,7 +50,6 @@
#include "llpanelgroupnotices.h"
#include "llpanelgroupgeneral.h"
-#include "llsidetray.h"
#include "llaccordionctrltab.h"
#include "llaccordionctrl.h"
@@ -597,7 +597,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
//static
void LLPanelGroup::refreshCreatedGroup(const LLUUID& group_id)
{
- LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
+ LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel<LLPanelGroup>("people", "panel_group_info_sidetray");
if(!panel)
return;
panel->setGroupID(group_id);
@@ -612,7 +612,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
const std::string& inventory_name,
LLOfferInfo* inventory_offer)
{
- LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
+ LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel<LLPanelGroup>("people", "panel_group_info_sidetray");
if(!panel)
return;
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index eddd6e554d..8477219f87 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -1435,6 +1435,7 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
LLStringUtil::format (time_str, substitution);
text.append(time_str);
+ text.append(". ");
if (current_interval == 0)
{
@@ -1445,8 +1446,8 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
LLStringUtil::format (time_str, substitution);
text.append(time_str);
- text.append("\n\n");
- text.append(llformat("%-24sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
+ text.append(".\n\n");
+ text.append(llformat("%-23sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
text.append(1, '\n');
}
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index e370f2f622..0295ad151f 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -40,7 +40,6 @@
#include "llparticipantlist.h"
#include "llimview.h"
#include "llvoicechannel.h"
-#include "llsidetray.h"
#include "llspeakers.h"
#include "lltrans.h"
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index a9cc247d1b..a65631b8d8 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -42,6 +42,7 @@
#include "llagentui.h"
#include "llcallbacklist.h"
#include "lldndbutton.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llfolderviewitem.h"
#include "llinventorymodelbackgroundfetch.h"
@@ -51,7 +52,6 @@
#include "llmenubutton.h"
#include "llplacesinventorybridge.h"
#include "llplacesinventorypanel.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "llviewermenu.h"
#include "llviewerregion.h"
@@ -367,7 +367,7 @@ void LLLandmarksPanel::onSelectorButtonClicked()
key["type"] = "landmark";
key["id"] = listenerp->getUUID();
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
}
@@ -786,7 +786,7 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const
}
else
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
}
}
else if ("category" == command_name)
@@ -1309,7 +1309,13 @@ void LLLandmarksPanel::doProcessParcelInfo(LLLandmark* landmark,
landmark->getGlobalPos(landmark_global_pos);
// let's toggle pick panel into panel places
- LLPanel* panel_places = LLSideTray::getInstance()->getPanel("panel_places");//-> sidebar_places
+ LLPanel* panel_places = NULL;
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>("places");
+ if (floaterp)
+ {
+ panel_places = floaterp->findChild<LLPanel>("main_panel");
+ }
+
if (!panel_places)
{
llassert(NULL != panel_places);
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index db7d836799..bef809f3a7 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -154,10 +154,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
}
updateLocationCombo(false);
- LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo");
- mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
- mode_combo.setCommitCallback(boost::bind(&LLPanelLogin::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2));
-
LLComboBox* server_choice_combo = sInstance->getChild<LLComboBox>("server_combo");
server_choice_combo->setCommitCallback(onSelectServer, NULL);
server_choice_combo->setFocusLostCallback(boost::bind(onServerComboLostFocus, _1));
@@ -1025,32 +1021,6 @@ void LLPanelLogin::updateLoginPanelLinks()
sInstance->getChildView("forgot_password_text")->setVisible( system_grid);
}
-void LLPanelLogin::onModeChange(const LLSD& original_value, const LLSD& new_value)
-{
- if (original_value.asString() != new_value.asString())
- {
- LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLPanelLogin::onModeChangeConfirm, this, original_value, new_value, _1, _2));
- }
-}
-
-void LLPanelLogin::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- switch (option)
- {
- case 0:
- gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
- LLAppViewer::instance()->requestQuit();
- break;
- case 1:
- // revert to original value
- getChild<LLUICtrl>("mode_combo")->setValue(original_value);
- break;
- default:
- break;
- }
-}
-
std::string canonicalize_username(const std::string& name)
{
std::string cname = name;
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index be9de884d1..a439c4ff6b 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -87,8 +87,6 @@ private:
void reshapeBrowser();
void addFavoritesToStartLocation();
void addUsersWithFavoritesToUsername();
- void onModeChange(const LLSD& original_value, const LLSD& new_value);
- void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
static void onClickConnect(void*);
static void onClickNewAccount(void*);
static void onClickVersion(void*);
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 858f5cf575..d6c407d548 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -38,6 +38,7 @@
#include "llinventorymodelbackgroundfetch.h"
#include "llinventorypanel.h"
#include "llfiltereditor.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterreg.h"
#include "llmenubutton.h"
#include "lloutfitobserver.h"
@@ -51,7 +52,6 @@
#include "llviewermenu.h"
#include "llviewertexturelist.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
const std::string FILTERS_FILENAME("filters.xml");
@@ -579,8 +579,13 @@ void LLPanelMainInventory::updateItemcountText()
void LLPanelMainInventory::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (!sidepanel_inventory)
+ {
+ llwarns << "Could not find Inventory Panel in My Inventory floater" << llendl;
+ return;
+ }
+
sidepanel_inventory->clearSelections(false, true, true);
}
@@ -1164,7 +1169,7 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
if (command_name == "share")
{
- LLSidepanelInventory* parent = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory* parent = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
return parent ? parent->canShare() : FALSE;
}
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index 0579ecbb90..ac528947a4 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -32,6 +32,7 @@
#include "llappviewer.h"
#include "llbutton.h"
#include "llinventorypanel.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llsidepanelinventory.h"
#include "llviewercontrol.h"
@@ -58,8 +59,6 @@ LLPanelMarketplaceInbox::~LLPanelMarketplaceInbox()
// virtual
BOOL LLPanelMarketplaceInbox::postBuild()
{
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLPanelMarketplaceInbox::handleLoginComplete, this));
-
LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMarketplaceInbox::onFocusReceived, this));
return TRUE;
@@ -67,18 +66,12 @@ BOOL LLPanelMarketplaceInbox::postBuild()
void LLPanelMarketplaceInbox::onSelectionChange()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
sidepanel_inventory->updateVerbs();
}
-void LLPanelMarketplaceInbox::handleLoginComplete()
-{
- // Set us up as the class to drive the badge value for the sidebar_inventory button
- LLSideTray::getInstance()->setTabButtonBadgeDriver("sidebar_inventory", this);
-}
-
LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
{
LLView * inbox_inventory_placeholder = getChild<LLView>("inbox_inventory_placeholder");
@@ -113,9 +106,11 @@ LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
void LLPanelMarketplaceInbox::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
- sidepanel_inventory->clearSelections(true, false, true);
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->clearSelections(true, false, true);
+ }
gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());
}
@@ -186,9 +181,10 @@ std::string LLPanelMarketplaceInbox::getBadgeString() const
{
std::string item_count_str("");
+ LLPanel *inventory_panel = LLFloaterSidePanelContainer::getPanel("inventory");
+
// If the inbox is visible, and the side panel is collapsed or expanded and not the inventory panel
- if (getParent()->getVisible() &&
- (LLSideTray::getInstance()->getCollapsed() || !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory")))
+ if (getParent()->getVisible() && inventory_panel && !inventory_panel->isInVisibleChain())
{
U32 item_count = getFreshItemCount();
diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h
index 705a095cf0..3531518e51 100644
--- a/indra/newview/llpanelmarketplaceinbox.h
+++ b/indra/newview/llpanelmarketplaceinbox.h
@@ -28,11 +28,10 @@
#define LL_LLPANELMARKETPLACEINBOX_H
#include "llpanel.h"
-#include "llsidetray.h"
class LLInventoryPanel;
-class LLPanelMarketplaceInbox : public LLPanel, public LLSideTrayTabBadgeDriver
+class LLPanelMarketplaceInbox : public LLPanel
{
public:
@@ -61,7 +60,6 @@ public:
std::string getBadgeString() const;
private:
- void handleLoginComplete();
void onSelectionChange();
diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp
index 73fb92ff72..12960fd0d6 100644
--- a/indra/newview/llpanelmarketplaceoutbox.cpp
+++ b/indra/newview/llpanelmarketplaceoutbox.cpp
@@ -33,13 +33,13 @@
#include "llbutton.h"
#include "llcoros.h"
#include "lleventcoro.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventorypanel.h"
#include "llloadingindicator.h"
#include "llnotificationsutil.h"
#include "llpanelmarketplaceinbox.h"
#include "llsdutil.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
#include "lltimer.h"
#include "llviewernetwork.h"
#include "llagent.h"
@@ -89,16 +89,20 @@ void LLPanelMarketplaceOutbox::handleLoginComplete()
void LLPanelMarketplaceOutbox::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
- sidepanel_inventory->clearSelections(true, true, false);
+ LLSidepanelInventory * sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->clearSelections(true, true, false);
+ }
}
void LLPanelMarketplaceOutbox::onSelectionChange()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->updateVerbs();
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->updateVerbs();
+ }
}
LLInventoryPanel * LLPanelMarketplaceOutbox::setupInventoryPanel()
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 1347a02a52..7e47a96f44 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -37,7 +37,6 @@
#include "llfirstuse.h"
#include "llfloaterreg.h"
#include "llhints.h"
-#include "llsidetray.h"
#include "llviewercontrol.h"
#include "llviewerdisplayname.h"
@@ -73,59 +72,6 @@ BOOL LLPanelMe::postBuild()
void LLPanelMe::onOpen(const LLSD& key)
{
LLPanelProfile::onOpen(key);
-
- // Removed this action as per SOCIAL-431 The first time a new resident opens the profile tab
- // in the sidebar, they see the old profile editing panel
- //
- //// Force Edit My Profile if this is the first time when user is opening Me Panel (EXT-5068)
- //bool opened = gSavedSettings.getBOOL("MePanelOpened");
- //// In some cases Side Tray my call onOpen() twice, check getCollapsed() to be sure this
- //// is the last time onOpen() is called
- //if( !opened && !LLSideTray::getInstance()->getCollapsed() )
- //{
- // buildEditPanel();
- // openPanel(mEditPanel, getAvatarId());
- // gSavedSettings.setBOOL("MePanelOpened", true);
- //}
-}
-
-bool LLPanelMe::notifyChildren(const LLSD& info)
-{
- if (info.has("task-panel-action") && info["task-panel-action"].asString() == "handle-tri-state")
- {
- // Implement task panel tri-state behavior.
- //
- // When the button of an active open task panel is clicked, side tray
- // calls notifyChildren() on the panel, passing task-panel-action=>handle-tri-state as an argument.
- // The task panel is supposed to handle this by reverting to the default view,
- // i.e. closing any dependent panels like "pick info" or "profile edit".
-
- bool on_default_view = true;
-
- const LLRect& task_panel_rect = getRect();
- for (LLView* child = getFirstChild(); child; child = findNextSibling(child))
- {
- LLPanel* panel = dynamic_cast<LLPanel*>(child);
- if (!panel)
- continue;
-
- // *HACK: implement panel stack instead (e.g. me->pick_info->pick_edit).
- if (panel->getRect().getWidth() == task_panel_rect.getWidth() &&
- panel->getRect().getHeight() == task_panel_rect.getHeight() &&
- panel->getVisible())
- {
- panel->setVisible(FALSE);
- on_default_view = false;
- }
- }
-
- if (on_default_view)
- LLSideTray::getInstance()->collapseSideBar();
-
- return true; // this notification is only supposed to be handled by task panels
- }
-
- return LLPanel::notifyChildren(info);
}
void LLPanelMe::buildEditPanel()
@@ -138,7 +84,7 @@ void LLPanelMe::buildEditPanel()
// All profile editing should go through the web.
//mEditPanel->childSetAction("save_btn", boost::bind(&LLPanelMe::onSaveChangesClicked, this), this);
- mEditPanel->childSetAction("cancel_btn", boost::bind(&LLPanelMe::onCancelClicked, this), this);
+ //mEditPanel->childSetAction("cancel_btn", boost::bind(&LLPanelMe::onCancelClicked, this), this);
}
}
@@ -146,12 +92,6 @@ void LLPanelMe::buildEditPanel()
void LLPanelMe::onEditProfileClicked()
{
buildEditPanel();
- togglePanel(mEditPanel, getAvatarId()); // open
-}
-
-void LLPanelMe::onCancelClicked()
-{
- togglePanel(mEditPanel); // close
}
//////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h
index f27f5a268e..b0f5d184cc 100644
--- a/indra/newview/llpanelme.h
+++ b/indra/newview/llpanelme.h
@@ -49,7 +49,6 @@ public:
LLPanelMe();
/*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ bool notifyChildren(const LLSD& info);
/*virtual*/ BOOL postBuild();
@@ -58,7 +57,6 @@ private:
void buildEditPanel();
void onEditProfileClicked();
- void onCancelClicked();
LLPanelMyProfileEdit * mEditPanel;
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 44364b5831..98ea680504 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -57,7 +57,6 @@
#include "llpreviewtexture.h"
#include "llscrollcontainer.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltooldraganddrop.h"
#include "lltrans.h"
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index a90f864ae2..f90236f6f2 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -31,6 +31,7 @@
#include "llnotificationsutil.h"
#include "lltabcontainer.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llagentwearables.h"
@@ -40,7 +41,6 @@
#include "llpanelwearing.h"
#include "llsaveoutfitcombobtn.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "llviewerfoldertype.h"
static const std::string OUTFITS_TAB_NAME = "outfitslist_tab";
@@ -222,7 +222,7 @@ void LLPanelOutfitsInventory::onSave()
//static
LLPanelOutfitsInventory* LLPanelOutfitsInventory::findInstance()
{
- return dynamic_cast<LLPanelOutfitsInventory*>(LLSideTray::getInstance()->getPanel("panel_outfits_inventory"));
+ return dynamic_cast<LLPanelOutfitsInventory*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfits_inventory"));
}
//////////////////////////////////////////////////////////////////////////////////
@@ -319,8 +319,7 @@ void LLPanelOutfitsInventory::onWearablesLoading()
// static
LLSidepanelAppearance* LLPanelOutfitsInventory::getAppearanceSP()
{
- static LLSidepanelAppearance* panel_appearance =
- dynamic_cast<LLSidepanelAppearance*>
- (LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance* panel_appearance =
+ dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
return panel_appearance;
}
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index e3a7b749ea..d5e289e6e6 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -29,6 +29,7 @@
// libs
#include "llavatarname.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmenubutton.h"
#include "llmenugl.h"
#include "llnotificationsutil.h"
@@ -56,7 +57,6 @@
#include "llinventoryobserver.h"
#include "llnetmap.h"
#include "llpanelpeoplemenus.h"
-#include "llsidetray.h"
#include "llsidetraypanelcontainer.h"
#include "llrecentpeople.h"
#include "llviewercontrol.h" // for gSavedSettings
@@ -526,11 +526,11 @@ LLPanelPeople::~LLPanelPeople()
LLVoiceClient::getInstance()->removeObserver(this);
}
- LLView::deleteViewByHandle(mGroupPlusMenuHandle);
- LLView::deleteViewByHandle(mNearbyViewSortMenuHandle);
- LLView::deleteViewByHandle(mFriendsViewSortMenuHandle);
- LLView::deleteViewByHandle(mGroupsViewSortMenuHandle);
- LLView::deleteViewByHandle(mRecentViewSortMenuHandle);
+ delete mGroupPlusMenuHandle.get();
+ delete mNearbyViewSortMenuHandle.get();
+ delete mFriendsViewSortMenuHandle.get();
+ delete mGroupsViewSortMenuHandle.get();
+ delete mRecentViewSortMenuHandle.get();
}
@@ -1283,6 +1283,10 @@ void LLPanelPeople::onFriendsViewSortMenuItemClicked(const LLSD& userdata)
mAllFriendList->showPermissions(show_permissions);
mOnlineFriendList->showPermissions(show_permissions);
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
void LLPanelPeople::onGroupsViewSortMenuItemClicked(const LLSD& userdata)
@@ -1315,6 +1319,10 @@ void LLPanelPeople::onNearbyViewSortMenuItemClicked(const LLSD& userdata)
{
setSortOrder(mNearbyList, E_SORT_BY_DISTANCE);
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
bool LLPanelPeople::onNearbyViewSortMenuItemCheck(const LLSD& userdata)
@@ -1348,6 +1356,10 @@ void LLPanelPeople::onRecentViewSortMenuItemClicked(const LLSD& userdata)
{
mRecentList->toggleIcons();
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
bool LLPanelPeople::onFriendsViewSortMenuItemCheck(const LLSD& userdata)
@@ -1439,7 +1451,7 @@ bool LLPanelPeople::notifyChildren(const LLSD& info)
container->onOpen(LLSD().with(LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME, getName()));
}
else
- LLSideTray::getInstance()->collapseSideBar();
+ LLFloaterReg::hideInstance("people");
return true; // this notification is only supposed to be handled by task panels
}
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index ddce83c616..72c6be4c79 100755
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -35,6 +35,7 @@
#include "lldispatcher.h"
#include "llflatlistview.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llnotificationsutil.h"
#include "lltexturectrl.h"
@@ -48,11 +49,11 @@
#include "llaccordionctrl.h"
#include "llaccordionctrltab.h"
#include "llavatarpropertiesprocessor.h"
+#include "llfloatersidepanelcontainer.h"
#include "llpanelavatar.h"
#include "llpanelprofile.h"
#include "llpanelpick.h"
#include "llpanelclassified.h"
-#include "llsidetray.h"
static const std::string XML_BTN_NEW = "new_btn";
static const std::string XML_BTN_DELETE = "trash_btn";
@@ -133,7 +134,7 @@ public:
params["id"] = gAgent.getID();
params["open_tab_name"] = "panel_picks";
params["show_tab_panel"] = "create_pick";
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
void editPick(LLPickData* pick_info)
@@ -146,8 +147,7 @@ public:
params["snapshot_id"] = pick_info->snapshot_id;
params["pick_name"] = pick_info->name;
params["pick_desc"] = pick_info->desc;
-
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type)
@@ -252,7 +252,7 @@ public:
params["id"] = gAgent.getID();
params["open_tab_name"] = "panel_picks";
params["show_tab_panel"] = "create_classified";
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
void openClassified(LLAvatarClassifiedInfo* c_info)
@@ -270,7 +270,7 @@ public:
params["classified_name"] = c_info->name;
params["classified_desc"] = c_info->description;
params["from_search"] = true;
- LLSideTray::getInstance()->showPanel("panel_profile_view", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_profile_view", params);
}
else if (mRequestVerb == "edit")
{
@@ -283,7 +283,7 @@ public:
params["open_tab_name"] = "panel_picks";
params["show_tab_panel"] = "edit_classified";
params["classified_id"] = c_info->classified_id;
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
else
{
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 1e510a2d7b..7f8f9b29af 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -39,6 +39,7 @@
#include "llfiltereditor.h"
#include "llfirstuse.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmenubutton.h"
#include "llnotificationsutil.h"
#include "lltabcontainer.h"
@@ -64,7 +65,6 @@
#include "llpanelplaceprofile.h"
#include "llpanelteleporthistory.h"
#include "llremoteparcelrequest.h"
-#include "llsidetray.h"
#include "llteleporthistorystorage.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
@@ -115,7 +115,7 @@ public:
LLSD key;
key["type"] = "remote_place";
key["id"] = parcel_id;
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
return true;
}
}
@@ -151,18 +151,16 @@ class LLPlacesInventoryObserver : public LLInventoryAddedObserver
{
public:
LLPlacesInventoryObserver(LLPanelPlaces* places_panel) :
- mPlaces(places_panel),
- mTabsCreated(false)
+ mPlaces(places_panel)
{}
/*virtual*/ void changed(U32 mask)
{
LLInventoryAddedObserver::changed(mask);
- if (!mTabsCreated && mPlaces)
+ if (mPlaces && !mPlaces->tabsCreated())
{
mPlaces->createTabs();
- mTabsCreated = true;
}
}
@@ -175,7 +173,6 @@ protected:
private:
LLPanelPlaces* mPlaces;
- bool mTabsCreated;
};
class LLPlacesRemoteParcelInfoObserver : public LLRemoteParcelInfoObserver
@@ -244,7 +241,8 @@ LLPanelPlaces::LLPanelPlaces()
mPlaceMenu(NULL),
mLandmarkMenu(NULL),
mPosGlobal(),
- isLandmarkEditModeOn(false)
+ isLandmarkEditModeOn(false),
+ mTabsCreated(false)
{
mParcelObserver = new LLPlacesParcelObserver(this);
mInventoryObserver = new LLPlacesInventoryObserver(this);
@@ -252,7 +250,7 @@ LLPanelPlaces::LLPanelPlaces()
gInventory.addObserver(mInventoryObserver);
- LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
+ mAgentParcelChangedConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
boost::bind(&LLPanelPlaces::updateVerbs, this));
//buildFromFile( "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
@@ -268,6 +266,11 @@ LLPanelPlaces::~LLPanelPlaces()
delete mInventoryObserver;
delete mParcelObserver;
delete mRemoteParcelObserver;
+
+ if (mAgentParcelChangedConnection.connected())
+ {
+ mAgentParcelChangedConnection.disconnect();
+ }
}
BOOL LLPanelPlaces::postBuild()
@@ -349,6 +352,9 @@ BOOL LLPanelPlaces::postBuild()
LLComboBox* folder_combo = mLandmarkInfo->getChild<LLComboBox>("folder_combo");
folder_combo->setCommitCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this));
+ createTabs();
+ updateVerbs();
+
return TRUE;
}
@@ -1025,7 +1031,7 @@ void LLPanelPlaces::changedParcelSelection()
void LLPanelPlaces::createTabs()
{
- if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance()))
+ if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance() && !mTabsCreated))
return;
LLLandmarksPanel* landmarks_panel = new LLLandmarksPanel();
@@ -1059,6 +1065,8 @@ void LLPanelPlaces::createTabs()
// Filter applied to show all items.
if (mActivePanel)
mActivePanel->onSearchEdit(mActivePanel->getFilterSubString());
+
+ mTabsCreated = true;
}
void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index b335f88a48..85bdc2c4e1 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -77,6 +77,8 @@ public:
std::string getPlaceInfoType() { return mPlaceInfoType; }
+ bool tabsCreated() { return mTabsCreated;}
+
/*virtual*/ S32 notifyParent(const LLSD& info);
private:
@@ -146,7 +148,12 @@ private:
bool isLandmarkEditModeOn;
+ // Holds info whether "My Landmarks" and "Teleport History" tabs have been created.
+ bool mTabsCreated;
+
LLSafeHandle<LLParcelSelection> mParcel;
+
+ boost::signals2::connection mAgentParcelChangedConnection;
};
#endif //LL_LLPANELPLACES_H
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index fd5c3362bb..5ce59d8959 100755
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -72,7 +72,7 @@ public:
std::string agent_name = params[0];
llinfos << "Profile, agent_name " << agent_name << llendl;
std::string url = getProfileURL(agent_name);
- LLWeb::loadWebURLInternal(url);
+ LLWeb::loadURLInternal(url);
return true;
}
@@ -261,7 +261,6 @@ void LLPanelProfile::ChildStack::dump()
LLPanelProfile::LLPanelProfile()
: LLPanel()
- , mTabCtrl(NULL)
, mAvatarId(LLUUID::null)
{
mChildStack.setParent(this);
@@ -269,10 +268,6 @@ LLPanelProfile::LLPanelProfile()
BOOL LLPanelProfile::postBuild()
{
- mTabCtrl = getChild<LLTabContainer>("tabs");
-
- getTabCtrl()->setCommitCallback(boost::bind(&LLPanelProfile::onTabSelected, this, _2));
-
LLPanelPicks* panel_picks = findChild<LLPanelPicks>(PANEL_PICKS);
panel_picks->setProfilePanel(this);
@@ -293,18 +288,7 @@ void LLPanelProfile::reshape(S32 width, S32 height, BOOL called_from_parent)
void LLPanelProfile::onOpen(const LLSD& key)
{
- // open the desired panel
- if (key.has("open_tab_name"))
- {
- getTabContainer()[PANEL_PICKS]->onClosePanel();
-
- // onOpen from selected panel will be called from onTabSelected callback
- getTabCtrl()->selectTabByName(key["open_tab_name"]);
- }
- else
- {
- getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
- }
+ getTabContainer()[PANEL_PICKS]->onOpen(getAvatarId());
// support commands to open further pieces of UI
if (key.has("show_tab_panel"))
@@ -362,23 +346,6 @@ void LLPanelProfile::onOpen(const LLSD& key)
}
}
-void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
-{
- // TRUE - we need to open/expand "panel"
- bool expand = getChildList()->front() != panel; // mTabCtrl->getVisible();
-
- if (expand)
- {
- openPanel(panel, key);
- }
- else
- {
- closePanel(panel);
-
- getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
- }
-}
-
void LLPanelProfile::onTabSelected(const LLSD& param)
{
std::string tab_name = param.asString();
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index fca359f51e..bd4457c240 100755
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -46,8 +46,6 @@ public:
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
/*virtual*/ void onOpen(const LLSD& key);
- virtual void togglePanel(LLPanel*, const LLSD& key = LLSD());
-
virtual void openPanel(LLPanel* panel, const LLSD& params);
virtual void closePanel(LLPanel* panel);
@@ -60,8 +58,6 @@ protected:
virtual void onTabSelected(const LLSD& param);
- LLTabContainer* getTabCtrl() { return mTabCtrl; }
-
const LLUUID& getAvatarId() { return mAvatarId; }
void setAvatarId(const LLUUID& avatar_id) { mAvatarId = avatar_id; }
@@ -97,7 +93,6 @@ private:
};
//-- ChildStack ends ------------------------------------------------------
- LLTabContainer* mTabCtrl;
profile_tabs_t mTabContainer;
ChildStack mChildStack;
LLUUID mAvatarId;
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 9b35e78134..79171dbcb9 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -31,7 +31,6 @@
#include "llfloaterworldmap.h"
#include "llpanelteleporthistory.h"
-#include "llsidetray.h"
#include "llworldmap.h"
#include "llteleporthistorystorage.h"
#include "lltextutil.h"
@@ -39,6 +38,7 @@
#include "llaccordionctrl.h"
#include "llaccordionctrltab.h"
#include "llflatlistview.h"
+#include "llfloatersidepanelcontainer.h"
#include "llnotificationsutil.h"
#include "lltextbox.h"
#include "lltoggleablemenu.h"
@@ -221,7 +221,7 @@ void LLTeleportHistoryFlatItem::showPlaceInfoPanel(S32 index)
params["id"] = index;
params["type"] = "teleport_history";
- LLSideTray::getInstance()->showPanel("panel_places", params);
+ LLFloaterSidePanelContainer::showPanel("places", params);
}
void LLTeleportHistoryFlatItem::onProfileBtnClick()
@@ -388,7 +388,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel()
LLTeleportHistoryPanel::~LLTeleportHistoryPanel()
{
LLTeleportHistoryFlatItemStorage::instance().purge();
- LLView::deleteViewByHandle(mGearMenuHandle);
+ delete mGearMenuHandle.get();
}
BOOL LLTeleportHistoryPanel::postBuild()
@@ -396,7 +396,7 @@ BOOL LLTeleportHistoryPanel::postBuild()
mTeleportHistory = LLTeleportHistoryStorage::getInstance();
if (mTeleportHistory)
{
- mTeleportHistory->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryPanel::onTeleportHistoryChange, this, _1));
+ mTeleportHistoryChangedConnection = mTeleportHistory->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryPanel::onTeleportHistoryChange, this, _1));
}
mHistoryAccordion = getChild<LLAccordionCtrl>("history_accordion");
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 3d29454d15..47b607a2f4 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -119,6 +119,8 @@ private:
LLContextMenu* mAccordionTabMenu;
LLHandle<LLView> mGearMenuHandle;
LLMenuButton* mMenuGearButton;
+
+ boost::signals2::connection mTeleportHistoryChangedConnection;
};
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 7087541fc8..5ed23d2f42 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -31,11 +31,11 @@
#include "llagent.h"
#include "llagentui.h"
#include "llclipboard.h"
+#include "llfloatersidepanelcontainer.h"
#include "lllandmarkactions.h"
#include "lllocationinputctrl.h"
#include "llnotificationsutil.h"
#include "llparcel.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstatusbar.h"
#include "lltrans.h"
@@ -436,12 +436,11 @@ void LLPanelTopInfoBar::onContextMenuItemClicked(const LLSD::String& item)
if(landmark == NULL)
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
}
else
{
- LLSideTray::getInstance()->showPanel("panel_places",
- LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id",landmark->getUUID()));
}
}
else if (item == "copy")
@@ -456,5 +455,5 @@ void LLPanelTopInfoBar::onContextMenuItemClicked(const LLSD::String& item)
void LLPanelTopInfoBar::onInfoButtonClicked()
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
}
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index 583e91d15e..e934b522be 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -148,7 +148,7 @@ private:
void setParcelInfoText(const std::string& new_text);
/**
- * Implementation of LLDestroyClass<LLSideTray>
+ * Implementation of LLDestroyClass<T>
*/
static void destroyClass()
{
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index f19b54c1d4..e2801c09bd 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -31,11 +31,11 @@
#include "lltoggleablemenu.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "llmenubutton.h"
-#include "llsidetray.h"
#include "llviewermenu.h"
#include "llwearableitemslist.h"
#include "llsdserialize.h"
@@ -44,7 +44,7 @@
// Context menu and Gear menu helper.
static void edit_outfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
//////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index e3bc67a414..45cf81751b 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -41,7 +41,7 @@
#include "llsyswellwindow.h"
#include "llimfloater.h"
#include "llscriptfloater.h"
-#include "llsidetray.h"
+#include "llrootview.h"
#include <algorithm>
@@ -49,28 +49,49 @@ using namespace LLNotificationsUI;
bool LLScreenChannel::mWasStartUpToastShown = false;
+LLFastTimer::DeclareTimer FTM_GET_CHANNEL_RECT("Calculate Notification Channel Region");
+LLRect LLScreenChannelBase::getChannelRect()
+{
+ LLFastTimer _(FTM_GET_CHANNEL_RECT);
+ LLRect channel_rect;
+ LLRect chiclet_rect;
+ LLView* floater_snap_region = gViewerWindow->getRootView()->getChildView("floater_snap_region");
+ floater_snap_region->localRectToScreen(floater_snap_region->getLocalRect(), &channel_rect);
+
+ LLView* chiclet_region = gViewerWindow->getRootView()->getChildView("chiclet_container");
+ chiclet_region->localRectToScreen(chiclet_region->getLocalRect(), &chiclet_rect);
+
+ channel_rect.mTop = chiclet_rect.mBottom;
+ return channel_rect;
+}
+
+
//--------------------------------------------------------------------------
//////////////////////
// LLScreenChannelBase
//////////////////////
-LLScreenChannelBase::LLScreenChannelBase(const LLUUID& id) :
- mToastAlignment(NA_BOTTOM)
- ,mCanStoreToasts(true)
- ,mHiddenToastsNum(0)
- ,mHoveredToast(NULL)
- ,mControlHovering(false)
- ,mShowToasts(true)
+LLScreenChannelBase::LLScreenChannelBase(const Params& p)
+: LLUICtrl(p),
+ mToastAlignment(p.toast_align),
+ mCanStoreToasts(true),
+ mHiddenToastsNum(0),
+ mHoveredToast(NULL),
+ mControlHovering(false),
+ mShowToasts(true),
+ mID(p.id),
+ mDisplayToastsAlways(p.display_toasts_always),
+ mChannelAlignment(p.channel_align)
{
- mID = id;
- mWorldViewRectConnection = gViewerWindow->setOnWorldViewRectUpdated(boost::bind(&LLScreenChannelBase::updatePositionAndSize, this, _1, _2));
+ mID = p.id;
setMouseOpaque( false );
setVisible(FALSE);
}
-LLScreenChannelBase::~LLScreenChannelBase()
+
+void LLScreenChannelBase::reshape(S32 width, S32 height, BOOL called_from_parent)
{
- mWorldViewRectConnection.disconnect();
+ redrawToasts();
}
bool LLScreenChannelBase::isHovering()
@@ -83,38 +104,20 @@ bool LLScreenChannelBase::isHovering()
return mHoveredToast->isHovered();
}
-void LLScreenChannelBase::resetPositionAndSize()
-{
- LLRect rc = gViewerWindow->getWorldViewRectScaled();
- updatePositionAndSize(rc, rc);
-}
-
-void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
+void LLScreenChannelBase::updatePositionAndSize(LLRect rect)
{
- /*
- take sidetray into account - screenchannel should not overlap sidetray
- */
- S32 world_rect_padding = 0;
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
- && LLSideTray::instanceCreated ())
- {
- world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
- }
-
-
- S32 top_delta = old_world_rect.mTop - new_world_rect.mTop;
LLRect this_rect = getRect();
- this_rect.mTop -= top_delta;
+ this_rect.mTop = rect.mTop;
switch(mChannelAlignment)
{
case CA_LEFT :
break;
case CA_CENTRE :
- this_rect.setCenterAndSize( (new_world_rect.getWidth() - world_rect_padding) / 2, new_world_rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
+ this_rect.setCenterAndSize( (rect.getWidth()) / 2, rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
break;
case CA_RIGHT :
- this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+ this_rect.setLeftTopAndSize(rect.mRight - this_rect.getWidth(),
this_rect.mTop,
this_rect.getWidth(),
this_rect.getHeight());
@@ -126,45 +129,38 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
void LLScreenChannelBase::init(S32 channel_left, S32 channel_right)
{
- if(LLSideTray::instanceCreated())
- {
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this));
- }
-
- // top and bottom set by updateBottom()
+ // top and bottom set by updateRect()
setRect(LLRect(channel_left, 0, channel_right, 0));
- updateBottom();
+ updateRect();
setVisible(TRUE);
}
-void LLScreenChannelBase::updateBottom()
+void LLScreenChannelBase::updateRect()
{
- S32 channel_top = gViewerWindow->getWorldViewRectScaled().getHeight();
- S32 channel_bottom = gSavedSettings.getS32("ChannelBottomPanelMargin");
+ S32 channel_top = getChannelRect().mTop;
+ S32 channel_bottom = getChannelRect().mBottom + gSavedSettings.getS32("ChannelBottomPanelMargin");
S32 channel_left = getRect().mLeft;
S32 channel_right = getRect().mRight;
setRect(LLRect(channel_left, channel_top, channel_right, channel_bottom));
}
-
//--------------------------------------------------------------------------
//////////////////////
// LLScreenChannel
//////////////////////
//--------------------------------------------------------------------------
-LLScreenChannel::LLScreenChannel(LLUUID& id):
-LLScreenChannelBase(id)
-,mStartUpToastPanel(NULL)
-{
+LLScreenChannel::LLScreenChannel(const Params& p)
+: LLScreenChannelBase(p),
+ mStartUpToastPanel(NULL)
+{
}
//--------------------------------------------------------------------------
void LLScreenChannel::init(S32 channel_left, S32 channel_right)
{
LLScreenChannelBase::init(channel_left, channel_right);
- LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
- updatePositionAndSize(world_rect, world_rect);
+ LLRect channel_rect = getChannelRect();
+ updatePositionAndSize(channel_rect);
}
//--------------------------------------------------------------------------
@@ -201,19 +197,8 @@ std::list<LLToast*> LLScreenChannel::findToasts(const Matcher& matcher)
}
//--------------------------------------------------------------------------
-void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
+void LLScreenChannel::updatePositionAndSize(LLRect new_world_rect)
{
- /*
- take sidetray into account - screenchannel should not overlap sidetray
- */
- S32 world_rect_padding = 0;
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
- && LLSideTray::instanceCreated ())
- {
- world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
- }
-
-
LLRect this_rect = getRect();
switch(mChannelAlignment)
@@ -222,11 +207,11 @@ void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_wo
this_rect.mTop = (S32) (new_world_rect.getHeight() * getHeightRatio());
break;
case CA_CENTRE :
- LLScreenChannelBase::updatePositionAndSize(old_world_rect, new_world_rect);
+ LLScreenChannelBase::updatePositionAndSize(new_world_rect);
return;
case CA_RIGHT :
this_rect.mTop = (S32) (new_world_rect.getHeight() * getHeightRatio());
- this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+ this_rect.setLeftTopAndSize(new_world_rect.mRight - this_rect.getWidth(),
this_rect.mTop,
this_rect.getWidth(),
this_rect.getHeight());
@@ -488,6 +473,15 @@ void LLScreenChannel::modifyToastByNotificationID(LLUUID id, LLPanel* panel)
//--------------------------------------------------------------------------
void LLScreenChannel::redrawToasts()
{
+ LLView* floater_snap_region = gViewerWindow->getRootView()->getChildView("floater_snap_region");
+
+ if (!getParent())
+ {
+ // connect to floater snap region just to get resize events, we don't care about being a proper widget
+ floater_snap_region->addChild(this);
+ setFollows(FOLLOWS_ALL);
+ }
+
if(mToastList.size() == 0)
return;
@@ -514,7 +508,7 @@ void LLScreenChannel::showToastsBottom()
S32 toast_margin = 0;
std::vector<ToastElem>::reverse_iterator it;
- updateBottom();
+ updateRect();
LLDockableFloater* floater = dynamic_cast<LLDockableFloater*>(LLDockableFloater::getInstanceHandle().get());
@@ -546,9 +540,9 @@ void LLScreenChannel::showToastsBottom()
(*it).toast->translate(0, shift);
}
- LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
+ LLRect channel_rect = getChannelRect();
// don't show toasts if there is not enough space
- if(toast_rect.mTop > world_rect.mTop)
+ if(toast_rect.mTop > channel_rect.mTop)
{
break;
}
@@ -619,6 +613,96 @@ void LLScreenChannel::showToastsCentre()
//--------------------------------------------------------------------------
void LLScreenChannel::showToastsTop()
{
+ LLRect channel_rect = getChannelRect();
+
+ LLRect toast_rect;
+ S32 top = channel_rect.mTop;
+ S32 toast_margin = 0;
+ std::vector<ToastElem>::reverse_iterator it;
+
+ updateRect();
+
+ LLDockableFloater* floater = dynamic_cast<LLDockableFloater*>(LLDockableFloater::getInstanceHandle().get());
+
+ for(it = mToastList.rbegin(); it != mToastList.rend(); ++it)
+ {
+ if(it != mToastList.rbegin())
+ {
+ LLToast* toast = (*(it-1)).toast;
+ top = toast->getRect().mBottom - toast->getTopPad();
+ toast_margin = gSavedSettings.getS32("ToastGap");
+ }
+
+ toast_rect = (*it).toast->getRect();
+ toast_rect.setLeftTopAndSize(channel_rect.mRight - toast_rect.getWidth(),
+ top, toast_rect.getWidth(),
+ toast_rect.getHeight());
+ (*it).toast->setRect(toast_rect);
+
+ if(floater && floater->overlapsScreenChannel())
+ {
+ if(it == mToastList.rbegin())
+ {
+ // move first toast above docked floater
+ S32 shift = -floater->getRect().getHeight();
+ if(floater->getDockControl())
+ {
+ shift -= floater->getDockControl()->getTongueHeight();
+ }
+ (*it).toast->translate(0, shift);
+ }
+
+ LLRect channel_rect = getChannelRect();
+ // don't show toasts if there is not enough space
+ if(toast_rect.mBottom < channel_rect.mBottom)
+ {
+ break;
+ }
+ }
+
+ bool stop_showing_toasts = (*it).toast->getRect().mBottom < channel_rect.mBottom;
+
+ if(!stop_showing_toasts)
+ {
+ if( it != mToastList.rend()-1)
+ {
+ S32 toast_bottom = (*it).toast->getRect().mBottom - gSavedSettings.getS32("ToastGap");
+ stop_showing_toasts = toast_bottom < channel_rect.mBottom;
+ }
+ }
+
+ // at least one toast should be visible
+ if(it == mToastList.rbegin())
+ {
+ stop_showing_toasts = false;
+ }
+
+ if(stop_showing_toasts)
+ break;
+
+ if( !(*it).toast->getVisible() )
+ {
+ // HACK
+ // EXT-2653: it is necessary to prevent overlapping for secondary showed toasts
+ (*it).toast->setVisible(TRUE);
+ }
+ if(!(*it).toast->hasFocus())
+ {
+ // Fixing Z-order of toasts (EXT-4862)
+ // Next toast will be positioned under this one.
+ gFloaterView->sendChildToBack((*it).toast);
+ }
+ }
+
+ // Dismiss toasts we don't have space for (STORM-391).
+ if(it != mToastList.rend())
+ {
+ mHiddenToastsNum = 0;
+ for(; it != mToastList.rend(); it++)
+ {
+ (*it).toast->hide();
+ }
+ }
}
//--------------------------------------------------------------------------
@@ -848,7 +932,7 @@ void LLScreenChannel::updateShowToastsState()
return;
}
- updateBottom();
+ updateRect();
}
//--------------------------------------------------------------------------
diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h
index d207d13981..2f23552828 100644
--- a/indra/newview/llscreenchannel.h
+++ b/indra/newview/llscreenchannel.h
@@ -53,22 +53,32 @@ class LLScreenChannelBase : public LLUICtrl
{
friend class LLChannelManager;
public:
- LLScreenChannelBase(const LLUUID& id);
- ~LLScreenChannelBase();
+ struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
+ {
+ Mandatory<LLUUID> id;
+ Optional<bool> display_toasts_always;
+ Optional<EToastAlignment> toast_align;
+ Optional<EChannelAlignment> channel_align;
+
+ Params()
+ : id("id", LLUUID("")),
+ display_toasts_always("display_toasts_always", false),
+ toast_align("toast_align", NA_BOTTOM),
+ channel_align("channel_align", CA_LEFT)
+ {}
+ };
+
+ LLScreenChannelBase(const Params&);
+
+ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
// Channel's outfit-functions
// update channel's size and position in the World View
- virtual void updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect);
- void resetPositionAndSize();
+ virtual void updatePositionAndSize(LLRect rect);
// initialization of channel's shape and position
virtual void init(S32 channel_left, S32 channel_right);
-
- virtual void setToastAlignment(EToastAlignment align) {mToastAlignment = align;}
-
- virtual void setChannelAlignment(EChannelAlignment align) {mChannelAlignment = align;}
-
// kill or modify a toast by its ID
virtual void killToastByNotificationID(LLUUID id) {};
virtual void modifyToastNotificationByID(LLUUID id, LLSD data) {};
@@ -91,7 +101,6 @@ public:
void setCanStoreToasts(bool store) { mCanStoreToasts = store; }
- void setDisplayToastsAlways(bool display_toasts) { mDisplayToastsAlways = display_toasts; }
bool getDisplayToastsAlways() { return mDisplayToastsAlways; }
// get number of hidden notifications from a channel
@@ -106,9 +115,11 @@ public:
// get ID of a channel
LLUUID getChannelID() { return mID; }
+ LLHandle<LLScreenChannelBase> getHandle() { mRootHandle.bind(this); return mRootHandle; }
protected:
- void updateBottom();
+ void updateRect();
+ LLRect getChannelRect();
// Channel's flags
bool mControlHovering;
@@ -117,6 +128,7 @@ protected:
bool mDisplayToastsAlways;
// controls whether a channel shows toasts or not
bool mShowToasts;
+ LLRootHandle<LLScreenChannelBase> mRootHandle;
//
EToastAlignment mToastAlignment;
EChannelAlignment mChannelAlignment;
@@ -125,9 +137,6 @@ protected:
// channel's ID
LLUUID mID;
-
- // store a connection to prevent futher crash that is caused by sending a signal to a destroyed channel
- boost::signals2::connection mWorldViewRectConnection;
};
@@ -138,7 +147,7 @@ class LLScreenChannel : public LLScreenChannelBase
{
friend class LLChannelManager;
public:
- LLScreenChannel(LLUUID& id);
+ LLScreenChannel(const Params&);
virtual ~LLScreenChannel();
class Matcher
@@ -153,7 +162,7 @@ public:
// Channel's outfit-functions
// update channel's size and position in the World View
- void updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect);
+ void updatePositionAndSize(LLRect new_rect);
// initialization of channel's shape and position
void init(S32 channel_left, S32 channel_right);
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 170e23e4c5..85a7e75271 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -28,9 +28,9 @@
#include "llscriptfloater.h"
#include "llagentcamera.h"
-#include "llbottomtray.h"
#include "llchannelmanager.h"
#include "llchiclet.h"
+#include "llchicletbar.h"
#include "llfloaterreg.h"
#include "lllslconstants.h"
#include "llnotifications.h"
@@ -95,7 +95,7 @@ bool LLScriptFloater::toggle(const LLUUID& notification_id)
show(notification_id);
}
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true);
return true;
}
@@ -131,11 +131,6 @@ void LLScriptFloater::setNotificationId(const LLUUID& id)
mObjectId = notification_id_to_object_id(id);
}
-void LLScriptFloater::getAllowedRect(LLRect& rect)
-{
- rect = gViewerWindow->getWorldViewRectScaled();
-}
-
void LLScriptFloater::createForm(const LLUUID& notification_id)
{
// delete old form
@@ -211,7 +206,7 @@ void LLScriptFloater::setVisible(BOOL visible)
if(!visible)
{
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
+ LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
if(chiclet)
{
chiclet->setToggleState(false);
@@ -224,7 +219,7 @@ void LLScriptFloater::onMouseDown()
if(getNotificationId().notNull())
{
// Remove new message icon
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
+ LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
if (chiclet == NULL)
{
llerror("Dock chiclet for LLScriptFloater doesn't exist", 0);
@@ -267,7 +262,7 @@ void LLScriptFloater::onFocusLost()
{
if(getNotificationId().notNull())
{
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false);
}
}
@@ -276,7 +271,7 @@ void LLScriptFloater::onFocusReceived()
// first focus will be received before setObjectId() call - don't toggle chiclet
if(getNotificationId().notNull())
{
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true);
}
}
@@ -284,7 +279,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
{
if (getDockControl() == NULL)
{
- LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(getNotificationId());
+ LLChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(getNotificationId());
if (chiclet == NULL)
{
llwarns << "Dock chiclet for LLScriptFloater doesn't exist" << llendl;
@@ -292,7 +287,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
}
else
{
- LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
+ LLChicletBar::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
}
// Stop saving position while we dock floater
@@ -300,7 +295,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
setSavePosition(false);
setDockControl(new LLDockControl(chiclet, this, getDockTongue(),
- LLDockControl::TOP, boost::bind(&LLScriptFloater::getAllowedRect, this, _1)));
+ LLDockControl::BOTTOM));
setDocked(dock);
@@ -352,7 +347,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
if(it != mNotifications.end())
{
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first);
+ LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first);
if(chiclet)
{
// Pass the new_message icon state further.
@@ -375,11 +370,11 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
// Create inventory offer chiclet for offer type notifications
if( OBJ_GIVE_INVENTORY == obj_type )
{
- LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id);
+ LLChicletBar::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id);
}
else
{
- LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id);
+ LLChicletBar::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id);
}
LLIMWellWindow::getInstance()->addObjectRow(notification_id, set_new_message);
@@ -413,7 +408,7 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
}
// remove related chiclet
- LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(notification_id);
+ LLChicletBar::getInstance()->getChicletPanel()->removeChiclet(notification_id);
LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index 8e959a3d0e..70451194b3 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -185,8 +185,6 @@ protected:
*/
void createForm(const LLUUID& object_id);
- /*virtual*/ void getAllowedRect(LLRect& rect);
-
/**
* Hide all notification toasts.
*/
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 28ec11d1c7..853656905c 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -32,6 +32,7 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llinventorypanel.h"
#include "llfiltereditor.h"
@@ -41,7 +42,6 @@
#include "lloutfitobserver.h"
#include "llpaneleditwearable.h"
#include "llpaneloutfitsinventory.h"
-#include "llsidetray.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
@@ -163,7 +163,6 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
else
{
// Switch to the requested panel.
- // *TODO: replace this crap with LLSideTrayPanelContainer
std::string type = key["type"].asString();
if (type == "my_outfits")
{
@@ -456,7 +455,7 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
//static
void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data, BOOL disable_camera_switch)
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance");
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
if (panel)
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index bd62b5c101..a24f6b24f0 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -34,6 +34,7 @@
#include "llbutton.h"
#include "lldate.h"
#include "llfirstuse.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfoldertype.h"
#include "llhttpclient.h"
#include "llinventorybridge.h"
@@ -172,16 +173,20 @@ LLSidepanelInventory::~LLSidepanelInventory()
void handleInventoryDisplayInboxChanged()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
+ }
}
void handleInventoryDisplayOutboxChanged()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
+ }
}
BOOL LLSidepanelInventory::postBuild()
@@ -277,16 +282,20 @@ BOOL LLSidepanelInventory::postBuild()
enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
// Trigger callback for after login so we can setup to track inbox and outbox changes after initial inventory load
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::handleLoginComplete, this));
+ LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::updateInboxOutbox, this));
}
gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged));
gSavedSettings.getControl("InventoryDisplayOutbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayOutboxChanged));
+ updateInboxOutbox();
+ // Update the verbs buttons state.
+ updateVerbs();
+
return TRUE;
}
-void LLSidepanelInventory::handleLoginComplete()
+void LLSidepanelInventory::updateInboxOutbox()
{
//
// Track inbox and outbox folder changes
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index b7d11f7f9b..4e34926a4b 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -47,7 +47,7 @@ public:
virtual ~LLSidepanelInventory();
private:
- void handleLoginComplete();
+ void updateInboxOutbox();
public:
void observeInboxOutboxCreation();
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
deleted file mode 100644
index 50ecad92dd..0000000000
--- a/indra/newview/llsidetray.cpp
+++ /dev/null
@@ -1,1488 +0,0 @@
-/**
- * @file llsidetray.cpp
- * @brief SideBar implementation
- *
- * $LicenseInfo:firstyear=2009&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 "lltextbox.h"
-
-#include "llagentcamera.h"
-#include "llappviewer.h"
-#include "llbadge.h"
-#include "llbottomtray.h"
-#include "llfloaterreg.h"
-#include "llfirstuse.h"
-#include "llhints.h"
-#include "llsidetray.h"
-#include "llviewerwindow.h"
-#include "llaccordionctrl.h"
-#include "llfocusmgr.h"
-#include "llrootview.h"
-#include "llnavigationbar.h"
-#include "llpanelmarketplaceinbox.h"
-
-#include "llaccordionctrltab.h"
-
-#include "llfloater.h" //for gFloaterView
-#include "lliconctrl.h"//for OpenClose tab icon
-#include "llsidetraypanelcontainer.h"
-#include "llscreenchannel.h"
-#include "llchannelmanager.h"
-#include "llwindow.h"//for SetCursor
-#include "lltransientfloatermgr.h"
-
-#include "llsidepanelappearance.h"
-
-#include "llsidetraylistener.h"
-
-//#include "llscrollcontainer.h"
-
-using namespace std;
-using namespace LLNotificationsUI;
-
-class LLSideTrayButton;
-
-static LLRootViewRegistry::Register<LLSideTray> t1("side_tray");
-static LLDefaultChildRegistry::Register<LLSideTrayTab> t2("sidetray_tab");
-
-static const S32 BOTTOM_BAR_PAD = 5;
-
-static const std::string COLLAPSED_NAME = "<<";
-static const std::string EXPANDED_NAME = ">>";
-
-static const std::string TAB_PANEL_CAPTION_NAME = "sidetray_tab_panel";
-static const std::string TAB_PANEL_CAPTION_TITLE_BOX = "sidetray_tab_title";
-
-LLSideTray* LLSideTray::sInstance = 0;
-
-static LLSideTrayListener sSideTrayListener(LLSideTray::getInstance);
-
-// static
-LLSideTray* LLSideTray::getInstance()
-{
- if (!sInstance)
- {
- sInstance = LLUICtrlFactory::createFromFile<LLSideTray>("panel_side_tray.xml",NULL, LLRootView::child_registry_t::instance());
- sInstance->setXMLFilename("panel_side_tray.xml");
- }
-
- return sInstance;
-}
-
-// static
-bool LLSideTray::instanceCreated ()
-{
- return sInstance!=0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayTab
-// Represents a single tab in the side tray, only used by LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayTab: public LLPanel
-{
- LOG_CLASS(LLSideTrayTab);
- friend class LLUICtrlFactory;
- friend class LLSideTray;
-public:
-
- struct Params
- : public LLInitParam::Block<Params, LLPanel::Params>
- {
- // image name
- Optional<std::string> image;
- Optional<std::string> image_selected;
- Optional<std::string> tab_title;
- Optional<std::string> description;
- Optional<LLBadge::Params> badge;
-
- Params()
- : image("image"),
- image_selected("image_selected"),
- tab_title("tab_title","no title"),
- description("description","no description"),
- badge("badge")
- {};
- };
-protected:
- LLSideTrayTab(const Params& params);
-
- void dock(LLFloater* floater_tab);
- void undock(LLFloater* floater_tab);
-
- LLSideTray* getSideTray();
-
-public:
- virtual ~LLSideTrayTab();
-
- /*virtual*/ BOOL postBuild ();
- /*virtual*/ bool addChild (LLView* view, S32 tab_group);
-
-
- void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
-
- static LLSideTrayTab* createInstance ();
-
- const std::string& getDescription () const { return mDescription;}
-
- void onOpen (const LLSD& key);
-
- void toggleTabDocked(bool toggle_floater = true);
- void setDocked(bool dock);
- bool isDocked() const;
-
- BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
-
- LLPanel* getPanel();
-
- LLButton* createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback);
-
-private:
- std::string mTabTitle;
- std::string mImage;
- std::string mImageSelected;
- std::string mDescription;
-
- LLView* mMainPanel;
-
- bool mHasBadge;
- LLBadge::Params mBadgeParams;
- LLSideTrayButton* mSideTrayButton;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayButton
-// Side Tray tab button with "tear off" handling.
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayButton : public LLButton
-{
-public:
- /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask)
- {
- // Route future Mouse messages here preemptively. (Release on mouse up.)
- // No handler needed for focus lost since this class has no state that depends on it.
- gFocusMgr.setMouseCapture(this);
-
- localPointToScreen(x, y, &mDragLastScreenX, &mDragLastScreenY);
-
- // Note: don't pass on to children
- return TRUE;
- }
-
- /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask)
- {
- // We only handle the click if the click both started and ended within us
- if( !hasMouseCapture() ) return FALSE;
-
- S32 screen_x;
- S32 screen_y;
- localPointToScreen(x, y, &screen_x, &screen_y);
-
- S32 delta_x = screen_x - mDragLastScreenX;
- S32 delta_y = screen_y - mDragLastScreenY;
-
- LLSideTray* side_tray = LLSideTray::getInstance();
-
- // Check if the tab we are dragging is docked.
- if (!side_tray->isTabAttached(mTabName)) return FALSE;
-
- // Same value is hardcoded in LLDragHandle::handleHover().
- const S32 undock_threshold = 12;
-
- // Detach a tab if it has been pulled further than undock_threshold.
- if (delta_x <= -undock_threshold || delta_x >= undock_threshold ||
- delta_y <= -undock_threshold || delta_y >= undock_threshold)
- {
- LLSideTrayTab* tab = side_tray->getTab(mTabName);
- if (!tab) return FALSE;
-
- tab->setDocked(false);
-
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab->getName());
- if (!floater_tab) return FALSE;
-
- LLRect original_rect = floater_tab->getRect();
- S32 header_snap_y = floater_tab->getHeaderHeight() / 2;
- S32 snap_x = screen_x - original_rect.mLeft - original_rect.getWidth() / 2;
- S32 snap_y = screen_y - original_rect.mTop + header_snap_y;
-
- // Move the floater to appear "under" the mouse pointer.
- floater_tab->setRect(original_rect.translate(snap_x, snap_y));
-
- // Snap the mouse pointer to the center of the floater header
- // and call 'mouse down' event handler to begin dragging.
- floater_tab->handleMouseDown(original_rect.getWidth() / 2,
- original_rect.getHeight() - header_snap_y,
- mask);
-
- return TRUE;
- }
-
- return FALSE;
- }
-
- void setBadgeDriver(LLSideTrayTabBadgeDriver* driver)
- {
- mBadgeDriver = driver;
- }
-
- void setVisible(BOOL visible)
- {
- setBadgeVisibility(visible);
-
- LLButton::setVisible(visible);
- }
-
-protected:
- LLSideTrayButton(const LLButton::Params& p)
- : LLButton(p)
- , mDragLastScreenX(0)
- , mDragLastScreenY(0)
- , mBadgeDriver(NULL)
- {
- // Find out the tab name to use in handleHover().
- size_t pos = getName().find("_button");
- llassert(pos != std::string::npos);
- mTabName = getName().substr(0, pos);
- }
-
- friend class LLUICtrlFactory;
-
- void draw()
- {
- if (mBadgeDriver)
- {
- setBadgeLabel(mBadgeDriver->getBadgeString());
- }
-
- LLButton::draw();
- }
-
-private:
- S32 mDragLastScreenX;
- S32 mDragLastScreenY;
-
- std::string mTabName;
- LLSideTrayTabBadgeDriver* mBadgeDriver;
-};
-
-
-////////////////////////////////////////////////////
-// LLSideTrayTab implementation
-////////////////////////////////////////////////////
-
-LLSideTrayTab::LLSideTrayTab(const Params& p)
-: LLPanel(),
- mTabTitle(p.tab_title),
- mImage(p.image),
- mImageSelected(p.image_selected),
- mDescription(p.description),
- mMainPanel(NULL),
- mBadgeParams(p.badge),
- mSideTrayButton(NULL)
-{
- mHasBadge = p.badge.isProvided();
-}
-
-LLSideTrayTab::~LLSideTrayTab()
-{
-}
-
-bool LLSideTrayTab::addChild(LLView* view, S32 tab_group)
-{
- if(mMainPanel == 0 && TAB_PANEL_CAPTION_NAME != view->getName())//skip our caption panel
- mMainPanel = view;
- return LLPanel::addChild(view,tab_group);
- //return res;
-}
-
-//virtual
-BOOL LLSideTrayTab::postBuild()
-{
- LLPanel* title_panel = LLUICtrlFactory::getInstance()->createFromFile<LLPanel>("panel_side_tray_tab_caption.xml",this, child_registry_t::instance());
- string name = title_panel->getName();
- LLPanel::addChild(title_panel);
-
- title_panel->getChild<LLTextBox>(TAB_PANEL_CAPTION_TITLE_BOX)->setValue(mTabTitle);
-
- getChild<LLButton>("undock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, false));
- getChild<LLButton>("dock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, true));
-
- return LLPanel::postBuild();
-}
-
-static const S32 splitter_margin = 1;
-
-void LLSideTrayTab::reshape (S32 width, S32 height, BOOL called_from_parent )
-{
- LLPanel::reshape(width, height, called_from_parent);
- LLView* title_panel = findChildView(TAB_PANEL_CAPTION_NAME, true);
- if (!title_panel)
- {
- // not fully constructed yet
- return;
- }
-
- S32 title_height = title_panel->getRect().getHeight();
- title_panel->setOrigin( 0, height - title_height );
- title_panel->reshape(width,title_height);
-
- LLRect sRect;
- sRect.setLeftTopAndSize( splitter_margin, height - title_height - splitter_margin,
- width - 2*splitter_margin, height - title_height - 2*splitter_margin);
- mMainPanel->setShape(sRect);
-}
-
-void LLSideTrayTab::onOpen (const LLSD& key)
-{
- LLPanel *panel = getPanel();
- if(panel)
- panel->onOpen(key);
-}
-
-// Attempts to get the existing side tray instance.
-// Needed to avoid recursive calls of LLSideTray::getInstance().
-LLSideTray* LLSideTrayTab::getSideTray()
-{
- // First, check if the side tray is our parent (i.e. we're attached).
- LLSideTray* side_tray = dynamic_cast<LLSideTray*>(getParent());
- if (!side_tray)
- {
- // Detached? Ok, check if the instance exists at all/
- if (LLSideTray::instanceCreated())
- {
- side_tray = LLSideTray::getInstance();
- }
- else
- {
- llerrs << "No safe way to get the side tray instance" << llendl;
- }
- }
-
- return side_tray;
-}
-
-void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)
-{
- // *FIX: Calling this method twice per frame would crash the viewer.
-
- std::string tab_name = getName();
-
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
- if (!floater_tab) return;
-
- bool docking = !isDocked();
-
- if (mSideTrayButton)
- {
- mSideTrayButton->setVisible(docking);
- }
-
- // Hide the "Tear Off" button when a tab gets undocked
- // and show "Dock" button instead.
- getChild<LLButton>("undock")->setVisible(docking);
- getChild<LLButton>("dock")->setVisible(!docking);
-
- if (docking)
- {
- dock(floater_tab);
- }
- else
- {
- undock(floater_tab);
- }
-
- // Open/close the floater *after* we reparent the tab panel,
- // so that it doesn't receive redundant visibility change notifications.
- if (toggle_floater)
- {
- LLFloaterReg::toggleInstance("side_bar_tab", tab_name);
- }
-}
-
-// Same as toggleTabDocked() apart from making sure that we do exactly what we want.
-void LLSideTrayTab::setDocked(bool dock)
-{
- if (isDocked() == dock)
- {
- llwarns << "Tab " << getName() << " is already " << (dock ? "docked" : "undocked") << llendl;
- return;
- }
-
- toggleTabDocked();
-}
-
-bool LLSideTrayTab::isDocked() const
-{
- return dynamic_cast<LLSideTray*>(getParent()) != NULL;
-}
-
-BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks)
-{
- // Let children handle the event
- LLUICtrl::handleScrollWheel(x, y, clicks);
-
- // and then eat it to prevent in-world scrolling (STORM-351).
- return TRUE;
-}
-
-void LLSideTrayTab::dock(LLFloater* floater_tab)
-{
- LLSideTray* side_tray = getSideTray();
- if (!side_tray) return;
-
- // Before docking the tab, reset its (and its children's) transparency to default (STORM-688).
- floater_tab->updateTransparency(TT_DEFAULT);
-
- if (!side_tray->addTab(this))
- {
- llwarns << "Failed to add tab " << getName() << " to side tray" << llendl;
- return;
- }
-
- setRect(side_tray->getLocalRect());
- reshape(getRect().getWidth(), getRect().getHeight());
-
- // Select the re-docked tab.
- side_tray->selectTabByName(getName());
-
- if (side_tray->getCollapsed())
- {
- side_tray->expandSideBar(false);
- }
-}
-
-static void on_minimize(LLSidepanelAppearance* panel, LLSD minimized)
-{
- if (!panel) return;
- bool visible = !minimized.asBoolean();
- LLSD visibility;
- visibility["visible"] = visible;
- // Do not reset accordion state on minimize (STORM-375)
- visibility["reset_accordion"] = false;
- panel->updateToVisibility(visibility);
-}
-
-void LLSideTrayTab::undock(LLFloater* floater_tab)
-{
- LLSideTray* side_tray = getSideTray();
- if (!side_tray) return;
-
- // Remember whether the tab have been active before detaching
- // because removeTab() will change active tab.
- bool was_active = side_tray->getActiveTab() == this;
-
- // Remove the tab from Side Tray's tabs list.
- // We have to do it despite removing the tab from Side Tray's child view tree
- // by addChild(). Otherwise the tab could be accessed by the pointer in LLSideTray::mTabs.
- if (!side_tray->removeTab(this))
- {
- llwarns << "Failed to remove tab " << getName() << " from side tray" << llendl;
- return;
- }
-
- // If we're undocking while side tray is collapsed we need to explicitly show the panel.
- if (!getVisible())
- {
- setVisible(true);
- }
-
- floater_tab->addChild(this);
- floater_tab->setTitle(mTabTitle);
- floater_tab->setName(getName());
-
- // Resize handles get obscured by added panel so move them to front.
- floater_tab->moveResizeHandlesToFront();
-
- // Reshape the floater if needed.
- LLRect floater_rect;
- if (floater_tab->hasSavedRect())
- {
- // We've got saved rect for the floater, hence no need to reshape it.
- floater_rect = floater_tab->getLocalRect();
- }
- else
- {
- // Detaching for the first time. Reshape the floater.
- floater_rect = side_tray->getLocalRect();
-
- // Reduce detached floater height by small BOTTOM_BAR_PAD not to make it flush with the bottom bar.
- floater_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight() + BOTTOM_BAR_PAD;
- floater_rect.makeValid();
- floater_tab->reshape(floater_rect.getWidth(), floater_rect.getHeight());
- }
-
- // Reshape the panel.
- {
- LLRect panel_rect = floater_tab->getLocalRect();
- panel_rect.mTop -= floater_tab->getHeaderHeight();
- panel_rect.makeValid();
- setRect(panel_rect);
- reshape(panel_rect.getWidth(), panel_rect.getHeight());
- }
-
- // Set FOLLOWS_ALL flag for the tab to follow floater dimensions upon resizing.
- setFollowsAll();
-
- // Camera view may need to be changed for appearance panel(STORM-301) on minimize of floater,
- // so setting callback here.
- if (getName() == "sidebar_appearance")
- {
- LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel());
- if(panel_appearance)
- {
- floater_tab->setMinimizeCallback(boost::bind(&on_minimize, panel_appearance, _2));
- }
- }
-
- if (!side_tray->getCollapsed())
- {
- side_tray->collapseSideBar();
- }
-
- if (!was_active)
- {
- // When a tab other then current active tab is detached from Side Tray
- // onOpen() should be called as tab visibility is changed.
- onOpen(LLSD());
- }
-}
-
-LLPanel* LLSideTrayTab::getPanel()
-{
- LLPanel* panel = dynamic_cast<LLPanel*>(mMainPanel);
- return panel;
-}
-
-LLSideTrayTab* LLSideTrayTab::createInstance ()
-{
- LLSideTrayTab::Params tab_params;
- tab_params.tab_title("openclose");
-
- LLSideTrayTab* tab = LLUICtrlFactory::create<LLSideTrayTab>(tab_params);
- return tab;
-}
-
-// Now that we know the definition of LLSideTrayTab, we can implement
-// tab_cast.
-template <>
-LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab) { return tab; }
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-LLSideTray::Params::Params()
-: collapsed("collapsed",false),
- tab_btn_image_normal("tab_btn_image",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Off.png")),
- tab_btn_image_selected("tab_btn_image_selected",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Selected.png")),
- default_button_width("tab_btn_width",32),
- default_button_height("tab_btn_height",32),
- default_button_margin("tab_btn_margin",0)
-{}
-
-//virtual
-LLSideTray::LLSideTray(const Params& params)
- : LLPanel(params)
- ,mActiveTab(0)
- ,mCollapsed(false)
- ,mCollapseButton(0)
-{
- mCollapsed=params.collapsed;
-
- LLUICtrl::CommitCallbackRegistry::Registrar& commit = LLUICtrl::CommitCallbackRegistry::currentRegistrar();
-
- // register handler function to process data from the xml.
- // panel_name should be specified via "parameter" attribute.
- commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null));
- commit.add("SideTray.Toggle", boost::bind(&LLSideTray::onToggleCollapse, this));
- commit.add("SideTray.Collapse", boost::bind(&LLSideTray::collapseSideBar, this));
- LLTransientFloaterMgr::getInstance()->addControlView(this);
- LLView* side_bar_tabs = gViewerWindow->getRootView()->getChildView("side_bar_tabs");
- if (side_bar_tabs != NULL)
- {
- LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
- }
-
- LLPanel::Params p;
- p.name = "buttons_panel";
- p.mouse_opaque = false;
- mButtonsPanel = LLUICtrlFactory::create<LLPanel>(p);
-}
-
-
-BOOL LLSideTray::postBuild()
-{
- createButtons();
-
- arrange();
- selectTabByName("sidebar_home");
-
- if(mCollapsed)
- collapseSideBar();
-
- setMouseOpaque(false);
-
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSideTray::handleLoginComplete, this));
-
- // Remember original tabs order, so that we can restore it if user detaches and then re-attaches a tab.
- for (child_vector_const_iter_t it = mTabs.begin(); it != mTabs.end(); ++it)
- {
- std::string tab_name = (*it)->getName();
- mOriginalTabOrder.push_back(tab_name);
- }
-
- //EXT-8045
- //connect all already created channels to reflect sidetray collapse/expand
- std::vector<LLChannelManager::ChannelElem>& channels = LLChannelManager::getInstance()->getChannelList();
- for(std::vector<LLChannelManager::ChannelElem>::iterator it = channels.begin();it!=channels.end();++it)
- {
- if ((*it).channel)
- {
- setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, (*it).channel));
- }
- }
-
- return true;
-}
-
-void LLSideTray::setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver)
-{
- mTabButtonBadgeDrivers[tabName] = driver;
-}
-
-void LLSideTray::handleLoginComplete()
-{
- //reset tab to "home" tab if it was changesd during login process
- selectTabByName("sidebar_home");
-
- for (badge_map_t::iterator it = mTabButtonBadgeDrivers.begin(); it != mTabButtonBadgeDrivers.end(); ++it)
- {
- LLButton* button = mTabButtons[it->first];
- LLSideTrayButton* side_button = dynamic_cast<LLSideTrayButton*>(button);
-
- if (side_button)
- {
- side_button->setBadgeDriver(it->second);
- }
- else
- {
- llwarns << "Unable to find button " << it->first << " to set the badge driver. " << llendl;
- }
- }
-
- detachTabs();
-}
-
-LLSideTrayTab* LLSideTray::getTab(const std::string& name)
-{
- return findChild<LLSideTrayTab>(name,false);
-}
-
-bool LLSideTray::isTabAttached(const std::string& name)
-{
- LLSideTrayTab* tab = getTab(name);
- if (!tab) return false;
-
- return std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end();
-}
-
-bool LLSideTray::hasTabs()
-{
- // The open/close tab doesn't count.
- return mTabs.size() > 1;
-}
-
-void LLSideTray::toggleTabButton(LLSideTrayTab* tab)
-{
- if(tab == NULL)
- return;
- std::string name = tab->getName();
- std::map<std::string,LLButton*>::iterator it = mTabButtons.find(name);
- if(it != mTabButtons.end())
- {
- LLButton* btn = it->second;
- bool new_state = !btn->getToggleState();
- btn->setToggleState(new_state);
- // Only highlight the tab if side tray is expanded (STORM-157).
- btn->setImageOverlay( new_state && !getCollapsed() ? tab->mImageSelected : tab->mImage );
- }
-}
-
-LLPanel* LLSideTray::openChildPanel(LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params)
-{
- LLView* view = tab->findChildView(panel_name, true);
- if (!view) return NULL;
-
- std::string tab_name = tab->getName();
-
- bool tab_attached = isTabAttached(tab_name);
-
- if (tab_attached && LLUI::sSettingGroups["config"]->getBOOL("OpenSidePanelsInFloaters"))
- {
- tab->setDocked(false);
- tab_attached = false;
- }
-
- // Select tab and expand Side Tray only when a tab is attached.
- if (tab_attached)
- {
- selectTabByName(tab_name);
- if (mCollapsed)
- expandSideBar();
- }
- else
- {
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
- if (!floater_tab) return NULL;
-
- floater_tab->openFloater(tab_name);
- }
-
- LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(view->getParent());
- if (container)
- {
- LLSD new_params = params;
- new_params[LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME] = panel_name;
- container->onOpen(new_params);
-
- return container->getCurrentPanel();
- }
-
- LLPanel* panel = dynamic_cast<LLPanel*>(view);
- if (panel)
- {
- panel->onOpen(params);
- }
-
- return panel;
-}
-
-bool LLSideTray::selectTabByIndex(size_t index)
-{
- if(index>=mTabs.size())
- return false;
-
- LLSideTrayTab* sidebar_tab = mTabs[index];
- return selectTabByName(sidebar_tab->getName());
-}
-
-bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible)
-{
- LLSideTrayTab* tab_to_keep_visible = NULL;
- LLSideTrayTab* new_tab = getTab(name);
- if (!new_tab) return false;
-
- // Bail out if already selected.
- if (new_tab == mActiveTab)
- return false;
-
- //deselect old tab
- if (mActiveTab)
- {
- // Keep previously active tab visible if requested.
- if (keep_prev_visible) tab_to_keep_visible = mActiveTab;
- toggleTabButton(mActiveTab);
- }
-
- //select new tab
- mActiveTab = new_tab;
-
- if (mActiveTab)
- {
- toggleTabButton(mActiveTab);
- LLSD key;//empty
- mActiveTab->onOpen(key);
- }
-
- //arrange();
-
- //hide all tabs - show active tab
- child_vector_const_iter_t child_it;
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- bool vis = sidebar_tab == mActiveTab;
-
- // Force keeping the tab visible if requested.
- vis |= sidebar_tab == tab_to_keep_visible;
-
- // When the last tab gets detached, for a short moment the "Toggle Sidebar" pseudo-tab
- // is shown. So, to avoid the flicker we make sure it never gets visible.
- vis &= (*child_it)->getName() != "sidebar_openclose";
-
- sidebar_tab->setVisible(vis);
- }
- return true;
-}
-
-bool LLSideTray::addChild(LLView* view, S32 tab_group)
-{
- LLSideTrayTab* tab_panel = dynamic_cast<LLSideTrayTab*>(view);
-
- if (tab_panel)
- {
- mTabs.push_back(tab_panel);
- }
-
- return LLUICtrl::addChild(view, tab_group);
-}
-
-bool LLSideTray::removeTab(LLSideTrayTab* tab)
-{
- if (!tab) return false;
- std::string tab_name = tab->getName();
-
- // Look up the tab in the list of known tabs.
- child_vector_iter_t tab_it = std::find(mTabs.begin(), mTabs.end(), tab);
- if (tab_it == mTabs.end())
- {
- llwarns << "Cannot find tab named " << tab_name << llendl;
- return false;
- }
-
- // Find the button corresponding to the tab.
- button_map_t::iterator btn_it = mTabButtons.find(tab_name);
- if (btn_it == mTabButtons.end())
- {
- llwarns << "Cannot find button for tab named " << tab_name << llendl;
- return false;
- }
- LLButton* btn = btn_it->second;
-
- // Deselect the tab.
- if (mActiveTab == tab)
- {
- // Select the next tab (or first one, if we're removing the last tab),
- // skipping the fake open/close tab (STORM-155).
- child_vector_iter_t next_tab_it = tab_it;
- do
- {
- next_tab_it = (next_tab_it < (mTabs.end() - 1)) ? next_tab_it + 1 : mTabs.begin();
- }
- while ((*next_tab_it)->getName() == "sidebar_openclose");
-
- selectTabByName((*next_tab_it)->getName(), true); // Don't hide the tab being removed.
- }
-
- // Remove the tab.
- removeChild(tab);
- mTabs.erase(tab_it);
-
- // Add the tab to detached tabs list.
- mDetachedTabs.push_back(tab);
-
- // Remove the button from the buttons panel so that it isn't drawn anymore.
- mButtonsPanel->removeChild(btn);
-
- // Re-arrange remaining tabs.
- arrange();
-
- return true;
-}
-
-bool LLSideTray::addTab(LLSideTrayTab* tab)
-{
- if (tab == NULL) return false;
-
- std::string tab_name = tab->getName();
-
- // Make sure the tab isn't already in the list.
- if (std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end())
- {
- llwarns << "Attempt to re-add existing tab " << tab_name << llendl;
- return false;
- }
-
- // Look up the corresponding button.
- button_map_t::const_iterator btn_it = mTabButtons.find(tab_name);
- if (btn_it == mTabButtons.end())
- {
- llwarns << "Tab " << tab_name << " has no associated button" << llendl;
- return false;
- }
- LLButton* btn = btn_it->second;
-
- // Insert the tab at its original position.
- LLUICtrl::addChild(tab);
- {
- tab_order_vector_const_iter_t new_tab_orig_pos =
- std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), tab_name);
- llassert(new_tab_orig_pos != mOriginalTabOrder.end());
- child_vector_iter_t insert_pos = mTabs.end();
-
- for (child_vector_iter_t tab_it = mTabs.begin(); tab_it != mTabs.end(); ++tab_it)
- {
- tab_order_vector_const_iter_t cur_tab_orig_pos =
- std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), (*tab_it)->getName());
- llassert(cur_tab_orig_pos != mOriginalTabOrder.end());
-
- if (new_tab_orig_pos < cur_tab_orig_pos)
- {
- insert_pos = tab_it;
- break;
- }
- }
-
- mTabs.insert(insert_pos, tab);
- }
-
- // Add the button to the buttons panel so that it's drawn again.
- mButtonsPanel->addChildInBack(btn);
-
- // Arrange tabs after inserting a new one.
- arrange();
-
- // Remove the tab from the list of detached tabs.
- child_vector_iter_t tab_it = std::find(mDetachedTabs.begin(), mDetachedTabs.end(), tab);
- if (tab_it != mDetachedTabs.end())
- {
- mDetachedTabs.erase(tab_it);
- }
-
- return true;
-}
-
-LLButton* LLSideTrayTab::createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback)
-{
- static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());
-
- LLRect rect;
- rect.setOriginAndSize(0, 0, sidetray_params.default_button_width, sidetray_params.default_button_height);
-
- LLButton::Params bparams;
-
- // Append "_button" to the side tray tab name
- std::string button_name = getName() + "_button";
- bparams.name(button_name);
- bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP);
- bparams.rect (rect);
- bparams.tab_stop(false);
- bparams.image_unselected(sidetray_params.tab_btn_image_normal);
- bparams.image_selected(sidetray_params.tab_btn_image_selected);
- bparams.image_disabled(sidetray_params.tab_btn_image_normal);
- bparams.image_disabled_selected(sidetray_params.tab_btn_image_selected);
-
- if (mHasBadge)
- {
- bparams.badge = mBadgeParams;
- }
-
- LLButton* button;
- if (allowTearOff)
- {
- mSideTrayButton = LLUICtrlFactory::create<LLSideTrayButton>(bparams);
-
- button = mSideTrayButton;
- }
- else
- {
- // "Open/Close" button shouldn't allow "tear off"
- // hence it is created as LLButton instance.
- button = LLUICtrlFactory::create<LLButton>(bparams);
- }
-
- button->setClickedCallback(callback);
-
- button->setToolTip(mTabTitle);
-
- if(mImage.length())
- {
- button->setImageOverlay(mImage);
- }
-
- return button;
-}
-
-void LLSideTray::createButtons()
-{
- //create buttons for tabs
- child_vector_const_iter_t child_it = mTabs.begin();
- for ( ; child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- std::string name = sidebar_tab->getName();
-
- // The "OpenClose" button will open/close the whole panel
- if (name == "sidebar_openclose")
- {
- mCollapseButton = sidebar_tab->createButton(false, boost::bind(&LLSideTray::onToggleCollapse, this));
-
- mButtonsPanel->addChildInBack(mCollapseButton);
-
- LLHints::registerHintTarget("side_panel_btn", mCollapseButton->getHandle());
- }
- else
- {
- LLButton* button = sidebar_tab->createButton(true, boost::bind(&LLSideTray::onTabButtonClick, this, name));
-
- mButtonsPanel->addChildInBack(button);
-
- mTabButtons[name] = button;
- }
- }
-
- LLHints::registerHintTarget("inventory_btn", mTabButtons["sidebar_inventory"]->getHandle());
-}
-
-void LLSideTray::processTriState ()
-{
- if(mCollapsed)
- expandSideBar();
- else
- {
-#if 0 // *TODO: EXT-2092
-
- // Tell the active task panel to switch to its default view
- // or collapse side tray if already on the default view.
- LLSD info;
- info["task-panel-action"] = "handle-tri-state";
- mActiveTab->notifyChildren(info);
-#else
- collapseSideBar();
-#endif
- }
-}
-
-void LLSideTray::onTabButtonClick(string name)
-{
- LLSideTrayTab* tab = getTab(name);
- if (!tab) return;
-
- if(tab == mActiveTab)
- {
- processTriState ();
- return;
- }
- selectTabByName (name);
- if(mCollapsed)
- expandSideBar();
-}
-
-void LLSideTray::onToggleCollapse()
-{
- LLFirstUse::notUsingSidePanel(false);
- if(mCollapsed)
- {
- expandSideBar();
- //selectTabByName("sidebar_openclose");
- }
- else
- collapseSideBar();
-}
-
-
-void LLSideTray::reflectCollapseChange()
-{
- updateSidetrayVisibility();
-
- setFocus(!mCollapsed);
-
- gFloaterView->refresh();
-}
-
-void LLSideTray::arrange()
-{
- static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());
-
- updateSidetrayVisibility();
-
- LLRect ctrl_rect;
- ctrl_rect.setLeftTopAndSize(0,
- mButtonsPanel->getRect().getHeight() - sidetray_params.default_button_width,
- sidetray_params.default_button_width,
- sidetray_params.default_button_height);
-
- mCollapseButton->setRect(ctrl_rect);
-
- //arrange tab buttons
- //arrange tab buttons
- child_vector_const_iter_t child_it;
- int offset = (sidetray_params.default_button_height+sidetray_params.default_button_margin)*2;
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- ctrl_rect.setLeftTopAndSize(0,
- mButtonsPanel->getRect().getHeight()-offset,
- sidetray_params.default_button_width,
- sidetray_params.default_button_height);
-
- if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end())
- continue;
-
- LLButton* btn = mTabButtons[sidebar_tab->getName()];
-
- btn->setRect(ctrl_rect);
- offset+=sidetray_params.default_button_height;
- offset+=sidetray_params.default_button_margin;
-
- btn->setVisible(ctrl_rect.mBottom > 0);
- }
-
- //arrange tabs
- for ( child_vector_t::iterator child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
- sidebar_tab->setShape(getLocalRect());
- }
-
- // The tab buttons should be shown only if there is at least one non-detached tab.
- // Also hide them in mouse-look mode.
- mButtonsPanel->setVisible(hasTabs() && !gAgentCamera.cameraMouselook());
-}
-
-// Detach those tabs that were detached when the viewer exited last time.
-void LLSideTray::detachTabs()
-{
- // copy mTabs because LLSideTray::toggleTabDocked() modifies it.
- child_vector_t tabs = mTabs;
-
- for (child_vector_const_iter_t it = tabs.begin(); it != tabs.end(); ++it)
- {
- LLSideTrayTab* tab = *it;
-
- std::string floater_ctrl_name = LLFloater::getControlName("side_bar_tab", LLSD(tab->getName()));
- std::string vis_ctrl_name = LLFloaterReg::getVisibilityControlName(floater_ctrl_name);
- if (!LLFloater::getControlGroup()->controlExists(vis_ctrl_name)) continue;
-
- bool is_visible = LLFloater::getControlGroup()->getBOOL(vis_ctrl_name);
- if (!is_visible) continue;
-
- llassert(isTabAttached(tab->getName()));
- tab->setDocked(false);
- }
-}
-
-void LLSideTray::collapseSideBar()
-{
- mCollapsed = true;
- // Reset all overlay images, because there is no "selected" tab when the
- // whole side tray is hidden.
- child_vector_const_iter_t it = mTabs.begin();
- for ( ; it != mTabs.end(); ++it )
- {
- LLSideTrayTab* tab = *it;
- std::string name = tab->getName();
- std::map<std::string,LLButton*>::const_iterator btn_it =
- mTabButtons.find(name);
- if (btn_it != mTabButtons.end())
- {
- LLButton* btn = btn_it->second;
- btn->setImageOverlay( tab->mImage );
- }
- }
-
- // OpenClose tab doesn't put its button in mTabButtons
- LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
- if (openclose_tab)
- {
- mCollapseButton->setImageOverlay( openclose_tab->mImage );
- }
- //mActiveTab->setVisible(FALSE);
- reflectCollapseChange();
- setFocus( FALSE );
-}
-
-void LLSideTray::expandSideBar(bool open_active)
-{
- mCollapsed = false;
- LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
- if (openclose_tab)
- {
- mCollapseButton->setImageOverlay( openclose_tab->mImageSelected );
- }
-
- if (open_active)
- {
- mActiveTab->onOpen(LLSD());
- }
-
- reflectCollapseChange();
-
-
- std::string name = mActiveTab->getName();
- std::map<std::string,LLButton*>::const_iterator btn_it =
- mTabButtons.find(name);
- if (btn_it != mTabButtons.end())
- {
- LLButton* btn = btn_it->second;
- btn->setImageOverlay( mActiveTab->mImageSelected );
- }
-}
-
-void LLSideTray::highlightFocused()
-{
- /* uncomment in case something change
- if(!mActiveTab)
- return;
- BOOL dependent_has_focus = gFocusMgr.childHasKeyboardFocus(this);
- setBackgroundOpaque( dependent_has_focus );
- mActiveTab->setBackgroundOpaque( dependent_has_focus );
- */
-}
-
-//virtual
-BOOL LLSideTray::handleMouseDown (S32 x, S32 y, MASK mask)
-{
- BOOL ret = LLPanel::handleMouseDown(x,y,mask);
- if(ret)
- setFocus(true);
- return ret;
-}
-
-void LLSideTray::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- LLPanel::reshape(width, height, called_from_parent);
- if(!mActiveTab)
- return;
-
- arrange();
-}
-
-// This is just LLView::findChildView specialized to restrict the search to LLPanels.
-// Optimization for EXT-4068 to avoid searching down to the individual item level
-// when inventories are large.
-LLPanel *findChildPanel(LLPanel *panel, const std::string& name, bool recurse)
-{
- for (LLView::child_list_const_iter_t child_it = panel->beginChild();
- child_it != panel->endChild(); ++child_it)
- {
- LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it);
- if (!child_panel)
- continue;
- if (child_panel->getName() == name)
- return child_panel;
- }
- if (recurse)
- {
- for (LLView::child_list_const_iter_t child_it = panel->beginChild();
- child_it != panel->endChild(); ++child_it)
- {
- LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it);
- if (!child_panel)
- continue;
- LLPanel *found_panel = findChildPanel(child_panel,name,recurse);
- if (found_panel)
- {
- return found_panel;
- }
- }
- }
- return NULL;
-}
-
-/**
- * Activate tab with "panel_name" panel
- * if no such tab - return false, otherwise true.
- * TODO* In some cases a pointer to a panel of
- * a specific class may be needed so this method
- * would need to use templates.
- */
-LLPanel* LLSideTray::showPanel (const std::string& panel_name, const LLSD& params)
-{
- LLPanel* new_panel = NULL;
-
- // Look up the tab in the list of detached tabs.
- child_vector_const_iter_t child_it;
- for ( child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- new_panel = openChildPanel(*child_it, panel_name, params);
- if (new_panel) break;
- }
-
- // Look up the tab in the list of attached tabs.
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- new_panel = openChildPanel(*child_it, panel_name, params);
- if (new_panel) break;
- }
-
- return new_panel;
-}
-
-bool LLSideTray::hidePanel(const std::string& panel_name)
-{
- bool panelHidden = false;
-
- LLPanel* panelp = getPanel(panel_name);
-
- if (panelp)
- {
- LLView* parentp = panelp->getParent();
-
- // Collapse the side bar if the panel or the panel's parent is an attached tab
- if (isTabAttached(panel_name) || (parentp && isTabAttached(parentp->getName())))
- {
- collapseSideBar();
- panelHidden = true;
- }
- else
- {
- panelHidden = LLFloaterReg::hideInstance("side_bar_tab", panel_name);
-
- if (!panelHidden)
- {
- // Look up the panel in the list of detached tabs.
- for (child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- LLPanel *detached_panel = dynamic_cast<LLPanel*>(*child_it);
-
- if (detached_panel)
- {
- // Hide this detached panel if it is a parent of our panel
- if (findChildPanel(detached_panel, panel_name, true) != NULL)
- {
- panelHidden = LLFloaterReg::hideInstance("side_bar_tab", detached_panel->getName());
- break;
- }
- }
- }
- }
- }
- }
-
- return panelHidden;
-}
-
-void LLSideTray::togglePanel(LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params)
-{
- if(!sub_panel)
- return;
-
- // If a panel is visible and attached to Side Tray (has LLSideTray among its ancestors)
- // it should be toggled off by collapsing Side Tray.
- if (sub_panel->isInVisibleChain() && sub_panel->hasAncestor(this))
- {
- LLSideTray::getInstance()->collapseSideBar();
- }
- else
- {
- LLSideTray::getInstance()->showPanel(panel_name, params);
- }
-}
-
-LLPanel* LLSideTray::getPanel(const std::string& panel_name)
-{
- // Look up the panel in the list of detached tabs.
- for ( child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- LLPanel *panel = findChildPanel(*child_it,panel_name,true);
- if(panel)
- {
- return panel;
- }
- }
-
- // Look up the panel in the list of attached tabs.
- for ( child_vector_const_iter_t child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLPanel *panel = findChildPanel(*child_it,panel_name,true);
- if(panel)
- {
- return panel;
- }
- }
- return NULL;
-}
-
-LLPanel* LLSideTray::getActivePanel()
-{
- if (mActiveTab && !mCollapsed)
- {
- return mActiveTab->getPanel();
- }
- return NULL;
-}
-
-bool LLSideTray::isPanelActive(const std::string& panel_name)
-{
- LLPanel *panel = getActivePanel();
- if (!panel) return false;
- return (panel->getName() == panel_name);
-}
-
-void LLSideTray::setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater /* = true*/)
-{
- // Lookup tab by name.
- LLSideTrayTab* tab = getTab(tab_name);
- if (!tab)
- { // not a docked tab, look through detached tabs
- for(child_vector_iter_t tab_it = mDetachedTabs.begin(), tab_end_it = mDetachedTabs.end();
- tab_it != tab_end_it;
- ++tab_it)
- {
- if ((*tab_it)->getName() == tab_name)
- {
- tab = *tab_it;
- break;
- }
- }
-
- }
-
- llassert(tab != NULL);
-
- // Toggle its dock state.
- if (tab && tab->isDocked() != dock)
- {
- tab->toggleTabDocked(toggle_floater);
- }
-}
-
-
-void LLSideTray::updateSidetrayVisibility()
-{
- // set visibility of parent container based on collapsed state
- LLView* parent = getParent();
- if (parent)
- {
- bool old_visibility = parent->getVisible();
- bool new_visibility = !mCollapsed && !gAgentCamera.cameraMouselook();
-
- if (old_visibility != new_visibility)
- {
- parent->setVisible(new_visibility);
-
- // Signal change of visible width.
- //llinfos << "Visible: " << new_visibility << llendl;
- mVisibleWidthChangeSignal(this, new_visibility);
- }
- }
-}
-
-S32 LLSideTray::getVisibleWidth()
-{
- return (isInVisibleChain() && !mCollapsed) ? getRect().getWidth() : 0;
-}
-
-void LLSideTray::setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb)
-{
- mVisibleWidthChangeSignal.connect(cb);
-}
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
deleted file mode 100644
index 17158329dc..0000000000
--- a/indra/newview/llsidetray.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * @file LLSideTray.h
- * @brief SideBar 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_LLSIDETRAY_H_
-#define LL_LLSIDETRAY_H_
-
-#include "llpanel.h"
-#include "string"
-
-class LLAccordionCtrl;
-class LLSideTrayTab;
-
-// Define an interface for side tab button badge values
-class LLSideTrayTabBadgeDriver
-{
-public:
- virtual std::string getBadgeString() const = 0;
-};
-
-// Deal with LLSideTrayTab being opaque. Generic do-nothing cast...
-template <class T>
-T tab_cast(LLSideTrayTab* tab) { return tab; }
-// specialized for implementation in presence of LLSideTrayTab definition
-template <>
-LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab);
-
-// added inheritance from LLDestroyClass<LLSideTray> to enable Side Tray perform necessary actions
-// while disconnecting viewer in LLAppViewer::disconnectViewer().
-// LLDestroyClassList::instance().fireCallbacks() calls destroyClass method. See EXT-245.
-class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray>
-{
- friend class LLUICtrlFactory;
- friend class LLDestroyClass<LLSideTray>;
- friend class LLSideTrayTab;
- friend class LLSideTrayButton;
-public:
-
- LOG_CLASS(LLSideTray);
-
- struct Params
- : public LLInitParam::Block<Params, LLPanel::Params>
- {
- // initial state
- Optional<bool> collapsed;
- Optional<LLUIImage*> tab_btn_image_normal,
- tab_btn_image_selected;
-
- Optional<S32> default_button_width,
- default_button_height,
- default_button_margin;
-
- Params();
- };
-
- static LLSideTray* getInstance ();
- static bool instanceCreated ();
-protected:
- LLSideTray(const Params& params);
- typedef std::vector<LLSideTrayTab*> child_vector_t;
- typedef child_vector_t::iterator child_vector_iter_t;
- typedef child_vector_t::const_iterator child_vector_const_iter_t;
- typedef child_vector_t::reverse_iterator child_vector_reverse_iter_t;
- typedef child_vector_t::const_reverse_iterator child_vector_const_reverse_iter_t;
- typedef std::vector<std::string> tab_order_vector_t;
- typedef tab_order_vector_t::const_iterator tab_order_vector_const_iter_t;
-
-public:
-
- // interface functions
-
- /**
- * Select tab with specific name and set it active
- *
- * @param name Tab to switch to.
- * @param keep_prev_visible Whether to keep the previously selected tab visible.
- */
- bool selectTabByName (const std::string& name, bool keep_prev_visible = false);
-
- /**
- * Select tab with specific index and set it active
- */
- bool selectTabByIndex(size_t index);
-
- /**
- * Activate tab with "panel_name" panel
- * if no such tab - return NULL, otherwise a pointer to the panel
- * Pass params as array, or they may be overwritten(example - params["name"]="nearby")
- */
- LLPanel* showPanel (const std::string& panel_name, const LLSD& params = LLSD());
-
- bool hidePanel (const std::string& panel_name);
-
- /**
- * Toggling Side Tray tab which contains "sub_panel" child of "panel_name" panel.
- * If "sub_panel" is not visible Side Tray is opened to display it,
- * otherwise Side Tray is collapsed.
- * params are passed to "panel_name" panel onOpen().
- */
- void togglePanel (LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params = LLSD());
-
- /*
- * get the panel (don't show it or do anything else with it)
- */
- LLPanel* getPanel (const std::string& panel_name);
- LLPanel* getActivePanel ();
- bool isPanelActive (const std::string& panel_name);
-
- void setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater = true);
-
- /*
- * get the panel of given type T (don't show it or do anything else with it)
- */
- template <typename T>
- T* getPanel(const std::string& panel_name)
- {
- T* panel = dynamic_cast<T*>(getPanel(panel_name));
- if (!panel)
- {
- llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
- return NULL;
- }
- return panel;
- }
-
- /*
- * collapse SideBar, hiding visible tab and moving tab buttons
- * to the right corner of the screen
- */
- void collapseSideBar ();
-
- /*
- * expand SideBar
- *
- * @param open_active Whether to call onOpen() for the active tab.
- */
- void expandSideBar(bool open_active = true);
-
-
- /**
- *hightlight if focused. manly copypaste from highlightFocusedFloater
- */
- void highlightFocused();
-
- void setVisible(BOOL visible)
- {
- if (getParent()) getParent()->setVisible(visible);
- }
-
- LLPanel* getButtonsPanel() { return mButtonsPanel; }
-
- bool getCollapsed() { return mCollapsed; }
-
- void setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver);
-
-public:
- virtual ~LLSideTray(){};
-
- virtual BOOL postBuild();
-
- BOOL handleMouseDown (S32 x, S32 y, MASK mask);
-
- void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
-
-
- /**
- * @return side tray width if it's visible and expanded, 0 otherwise.
- *
- * Not that width of the tab buttons is not included.
- *
- * @see setVisibleWidthChangeCallback()
- */
- S32 getVisibleWidth();
-
- void setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb);
-
- void updateSidetrayVisibility();
-
- void handleLoginComplete();
-
- bool isTabAttached (const std::string& name);
-
-protected:
- bool addChild (LLView* view, S32 tab_group);
- bool removeTab (LLSideTrayTab* tab); // Used to detach tabs temporarily
- bool addTab (LLSideTrayTab* tab); // Used to re-attach tabs
- bool hasTabs ();
-
- const LLSideTrayTab* getActiveTab() const { return mActiveTab; }
- LLSideTrayTab* getTab(const std::string& name);
-
- void createButtons ();
-
- void arrange ();
- void detachTabs ();
- void reflectCollapseChange();
- void processTriState ();
-
- void toggleTabButton (LLSideTrayTab* tab);
-
- LLPanel* openChildPanel (LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params);
-
- void onTabButtonClick(std::string name);
- void onToggleCollapse();
-
-private:
- // Implementation of LLDestroyClass<LLSideTray>
- static void destroyClass()
- {
- // Disable SideTray to avoid crashes. EXT-245
- if (LLSideTray::instanceCreated())
- LLSideTray::getInstance()->setEnabled(FALSE);
- }
-
-private:
- // Since we provide no public way to query mTabs and mDetachedTabs, give
- // LLSideTrayListener friend access.
- friend class LLSideTrayListener;
- LLPanel* mButtonsPanel;
- typedef std::map<std::string,LLButton*> button_map_t;
- button_map_t mTabButtons;
- typedef std::map<std::string,LLSideTrayTabBadgeDriver*> badge_map_t;
- badge_map_t mTabButtonBadgeDrivers;
- child_vector_t mTabs;
- child_vector_t mDetachedTabs;
- tab_order_vector_t mOriginalTabOrder;
- LLSideTrayTab* mActiveTab;
-
- commit_signal_t mVisibleWidthChangeSignal;
-
- LLButton* mCollapseButton;
- bool mCollapsed;
-
- static LLSideTray* sInstance;
-};
-
-#endif
-
diff --git a/indra/newview/llsidetraylistener.cpp b/indra/newview/llsidetraylistener.cpp
deleted file mode 100644
index cd6fa28948..0000000000
--- a/indra/newview/llsidetraylistener.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * @file llsidetraylistener.cpp
- * @author Nat Goodspeed
- * @date 2011-02-15
- * @brief Implementation for llsidetraylistener.
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-// Precompiled header
-#include "llviewerprecompiledheaders.h"
-// associated header
-#include "llsidetraylistener.h"
-// STL headers
-// std headers
-// external library headers
-// other Linden headers
-#include "llsidetray.h"
-#include "llsdutil.h"
-
-LLSideTrayListener::LLSideTrayListener(const Getter& getter):
- LLEventAPI("LLSideTray",
- "Operations on side tray (e.g. query state, query tabs)"),
- mGetter(getter)
-{
- add("getCollapsed", "Send on [\"reply\"] an [\"open\"] Boolean",
- &LLSideTrayListener::getCollapsed, LLSDMap("reply", LLSD()));
- add("getTabs",
- "Send on [\"reply\"] a map of tab names and info about them",
- &LLSideTrayListener::getTabs, LLSDMap("reply", LLSD()));
- add("getPanels",
- "Send on [\"reply\"] data about panels available with SideTray.ShowPanel",
- &LLSideTrayListener::getPanels, LLSDMap("reply", LLSD()));
-}
-
-void LLSideTrayListener::getCollapsed(const LLSD& event) const
-{
- sendReply(LLSDMap("open", ! mGetter()->getCollapsed()), event);
-}
-
-void LLSideTrayListener::getTabs(const LLSD& event) const
-{
- LLSD reply;
-
- LLSideTray* tray = mGetter();
- LLSD::Integer ord(0);
- for (LLSideTray::child_list_const_iter_t chi(tray->beginChild()), chend(tray->endChild());
- chi != chend; ++chi, ++ord)
- {
- LLView* child = *chi;
- // How much info is important? Toss in as much as seems reasonable for
- // each tab. But to me, at least for the moment, the most important
- // item is the tab name.
- LLSD info;
- // I like the idea of returning a map keyed by tab name. But as
- // compared to an array of maps, that loses sequence information.
- // Address that by indicating the original order in each map entry.
- info["ord"] = ord;
- info["visible"] = bool(child->getVisible());
- info["enabled"] = bool(child->getEnabled());
- info["available"] = child->isAvailable();
- reply[child->getName()] = info;
- }
-
- sendReply(reply, event);
-}
-
-static LLSD getTabInfo(LLPanel* tab)
-{
- LLSD panels;
- for (LLPanel::tree_iterator_t ti(tab->beginTreeDFS()), tend(tab->endTreeDFS());
- ti != tend; ++ti)
- {
- // *ti is actually an LLView*, which had better not be NULL
- LLView* view(*ti);
- if (! view)
- {
- LL_ERRS("LLSideTrayListener") << "LLSideTrayTab '" << tab->getName()
- << "' has a NULL child LLView*" << LL_ENDL;
- }
-
- // The logic we use to decide what "panel" names to return is heavily
- // based on LLSideTray::showPanel(): the function that actually
- // implements the "SideTray.ShowPanel" operation. showPanel(), in
- // turn, depends on LLSideTray::openChildPanel(): when
- // openChildPanel() returns non-NULL, showPanel() stops searching
- // attached and detached LLSideTrayTab tabs.
-
- // For each LLSideTrayTab, openChildPanel() first calls
- // findChildView(panel_name, true). In other words, panel_name need
- // not be a direct LLSideTrayTab child, it's sought recursively.
- // That's why we use (begin|end)TreeDFS() in this loop.
-
- // But this tree_iterator_t loop will actually traverse every widget
- // in every panel. Returning all those names will not help our caller:
- // passing most such names to openChildPanel() would not do what we
- // want. Even though the code suggests that passing ANY valid
- // side-panel widget name to openChildPanel() will open the tab
- // containing that widget, results could get confusing since followup
- // (onOpen()) logic wouldn't be invoked, and showPanel() wouldn't stop
- // searching because openChildPanel() would return NULL.
-
- // We must filter these LLView items, using logic that (sigh!) mirrors
- // openChildPanel()'s own.
-
- // openChildPanel() returns a non-NULL LLPanel* when either:
- // - the LLView is a direct child of an LLSideTrayPanelContainer
- // - the LLView is itself an LLPanel.
- // But as LLSideTrayPanelContainer can directly contain LLView items
- // that are NOT themselves LLPanels (e.g. "sidebar_me" contains an
- // LLButton called "Jump Right Arrow"), we'd better focus only on
- // LLSideTrayPanelContainer children that are themselves LLPanel
- // items. Which means that the second test completely subsumes the
- // first.
- LLPanel* panel(dynamic_cast<LLPanel*>(view));
- if (panel)
- {
- // Maybe it's overkill to construct an LLSD::Map for each panel, but
- // the possibility remains that we might want to deliver more info
- // about each panel than just its name.
- panels.append(LLSDMap("name", panel->getName()));
- }
- }
-
- return LLSDMap("panels", panels);
-}
-
-void LLSideTrayListener::getPanels(const LLSD& event) const
-{
- LLSD reply;
-
- LLSideTray* tray = mGetter();
- // Iterate through the attached tabs.
- LLSD::Integer ord(0);
- for (LLSideTray::child_vector_t::const_iterator
- ati(tray->mTabs.begin()), atend(tray->mTabs.end());
- ati != atend; ++ati)
- {
- // We don't have access to LLSideTrayTab: the class definition is
- // hidden in llsidetray.cpp. But as LLSideTrayTab isa LLPanel, use the
- // LLPanel API. Unfortunately, without the LLSideTrayTab definition,
- // the compiler doesn't even know this LLSideTrayTab* is an LLPanel*.
- // Persuade it.
- LLPanel* tab(tab_cast<LLPanel*>(*ati));
- reply[tab->getName()] = getTabInfo(tab).with("attached", true).with("ord", ord);
- }
-
- // Now iterate over the detached tabs. These can also be opened via
- // SideTray.ShowPanel.
- ord = 0;
- for (LLSideTray::child_vector_t::const_iterator
- dti(tray->mDetachedTabs.begin()), dtend(tray->mDetachedTabs.end());
- dti != dtend; ++dti)
- {
- LLPanel* tab(tab_cast<LLPanel*>(*dti));
- reply[tab->getName()] = getTabInfo(tab).with("attached", false).with("ord", ord);
- }
-
- sendReply(reply, event);
-}
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
deleted file mode 100644
index bbe573c546..0000000000
--- a/indra/newview/llspeakbutton.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
-* @file llspeakbutton.cpp
-* @brief LLSpeakButton class implementation
-*
-* $LicenseInfo:firstyear=2002&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#include "llviewerprecompiledheaders.h" // must be first include
-
-#include "llbutton.h"
-#include "llfloaterreg.h"
-
-#include "llagent.h"
-#include "llbottomtray.h"
-#include "llcallfloater.h"
-#include "lloutputmonitorctrl.h"
-#include "lltransientfloatermgr.h"
-
-#include "llspeakbutton.h"
-
-#include "llbottomtray.h"
-#include "llfirstuse.h"
-
-static LLDefaultChildRegistry::Register<LLSpeakButton> t1("talk_button");
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-LLSpeakButton::Params::Params()
-: speak_button("speak_button"),
- show_button("show_button"),
- monitor("monitor")
-{}
-
-LLSpeakButton::LLSpeakButton(const Params& p)
-: LLUICtrl(p)
-, mOutputMonitor(NULL)
-, mSpeakBtn(NULL)
-, mShowBtn(NULL)
-{
- LLRect rect = p.rect();
- LLRect speak_rect(0, rect.getHeight(), rect.getWidth(), 0);
- LLRect show_rect = p.show_button.rect();
- show_rect.set(0, rect.getHeight(), show_rect.getWidth(), 0);
-
- speak_rect.mRight -= show_rect.getWidth();
- show_rect.mLeft = speak_rect.getWidth();
- show_rect.mRight = rect.getWidth();
-
- LLButton::Params speak_params = p.speak_button;
- speak_params.rect(speak_rect);
- mSpeakBtn = LLUICtrlFactory::create<LLButton>(speak_params);
- addChild(mSpeakBtn);
- LLTransientFloaterMgr::getInstance()->addControlView(mSpeakBtn);
-
- mSpeakBtn->setMouseDownCallback(boost::bind(&LLSpeakButton::onMouseDown_SpeakBtn, this));
- mSpeakBtn->setMouseUpCallback(boost::bind(&LLSpeakButton::onMouseUp_SpeakBtn, this));
- mSpeakBtn->setToggleState(FALSE);
-
- LLBottomtrayButton::Params show_params = p.show_button;
- show_params.rect(show_rect);
- mShowBtn = LLUICtrlFactory::create<LLBottomtrayButton>(show_params);
- addChild(mShowBtn);
- LLTransientFloaterMgr::getInstance()->addControlView(mShowBtn);
-
-// mShowBtn->setClickedCallback(boost::bind(&LLSpeakButton::onClick_ShowBtn, this));
-// mShowBtn->setToggleState(FALSE);
-
- static const S32 MONITOR_RIGHT_PAD = 2;
-
- LLRect monitor_rect = p.monitor.rect();
- S32 monitor_height = monitor_rect.getHeight();
- monitor_rect.mLeft = speak_rect.getWidth() - monitor_rect.getWidth() - MONITOR_RIGHT_PAD;
- monitor_rect.mRight = speak_rect.getWidth() - MONITOR_RIGHT_PAD;
- monitor_rect.mBottom = (rect.getHeight() / 2) - (monitor_height / 2);
- monitor_rect.mTop = monitor_rect.mBottom + monitor_height;
-
- LLOutputMonitorCtrl::Params monitor_params = p.monitor;
- monitor_params.draw_border(false);
- monitor_params.rect(monitor_rect);
- monitor_params.auto_update(true);
- monitor_params.speaker_id(gAgentID);
- mOutputMonitor = LLUICtrlFactory::create<LLOutputMonitorCtrl>(monitor_params);
- mSpeakBtn->addChild(mOutputMonitor);
-
- // never show "muted" because you can't mute yourself
- mOutputMonitor->setIsMuted(false);
- mOutputMonitor->setIsAgentControl(true);
-
- //*TODO find a better place to do that
- LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true);
-}
-
-LLSpeakButton::~LLSpeakButton()
-{
- if(LLTransientFloaterMgr::instanceExists())
- {
- LLTransientFloaterMgr::getInstance()->removeControlView(mSpeakBtn);
- LLTransientFloaterMgr::getInstance()->removeControlView(mShowBtn);
- }
-}
-
-void LLSpeakButton::setSpeakToolTip(const std::string& msg)
-{
- mSpeakBtn->setToolTip(msg);
-}
-
-void LLSpeakButton::setShowToolTip(const std::string& msg)
-{
- mShowBtn->setToolTip(msg);
-}
-
-void LLSpeakButton::setLabelVisible(bool visible)
-{
- static std::string label_selected = mSpeakBtn->getLabelSelected();
- static std::string label_unselected = mSpeakBtn->getLabelUnselected();
-
- if (visible)
- {
- mSpeakBtn->setLabelSelected(label_selected);
- mSpeakBtn->setLabelUnselected(label_unselected);
- }
- else
- {
- static LLStringExplicit empty_string("");
- mSpeakBtn->setLabelSelected(empty_string);
- mSpeakBtn->setLabelUnselected(empty_string);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-/// PROTECTED SECTION
-//////////////////////////////////////////////////////////////////////////
-void LLSpeakButton::onMouseDown_SpeakBtn()
-{
- bool down = true;
- LLVoiceClient::getInstance()->inputUserControlState(down); // this method knows/care about whether this translates into a toggle-to-talk or down-to-talk
- LLFirstUse::speak(false);
-}
-void LLSpeakButton::onMouseUp_SpeakBtn()
-{
- bool down = false;
- LLVoiceClient::getInstance()->inputUserControlState(down);
-}
-
diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h
deleted file mode 100644
index 7db01112ef..0000000000
--- a/indra/newview/llspeakbutton.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
-* @file llspeakbutton.h
-* @brief LLSpeakButton class header file
-*
-* $LicenseInfo:firstyear=2002&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_LLSPEAKBUTTON_H
-#define LL_LLSPEAKBUTTON_H
-
-#include "llinitparam.h"
-#include "lluictrl.h"
-
-class LLCallFloater;
-class LLButton;
-class LLOutputMonitorCtrl;
-class LLBottomtrayButton;
-
-/*
- * Button displaying voice chat status. Displays voice chat options when
- * clicked.
-*/
-class LLSpeakButton : public LLUICtrl
-{
-public:
-
- struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
- {
- Optional<LLButton::Params> speak_button;
- Optional<LLBottomtrayButton::Params> show_button;
- Optional<LLOutputMonitorCtrl::Params> monitor;
-
- Params();
- };
-
- /*virtual*/ ~LLSpeakButton();
-
- // *HACK: Need to put tooltips in a translatable location,
- // the panel that contains this button.
- void setSpeakToolTip(const std::string& msg);
- void setShowToolTip(const std::string& msg);
-
- /**
- * Sets visibility of speak button's label according to passed parameter.
- *
- * It removes label/selected label if "visible" is false and restores otherwise.
- *
- * @param visible if true - show label and selected label.
- *
- * @see mSpeakBtn
- * @see LLBottomTray::processShrinkButtons()
- */
- void setLabelVisible(bool visible);
-
-protected:
- friend class LLUICtrlFactory;
- LLSpeakButton(const Params& p);
-
- void onMouseDown_SpeakBtn();
- void onMouseUp_SpeakBtn();
-
-private:
- LLButton* mSpeakBtn;
- LLBottomtrayButton* mShowBtn;
- LLHandle<LLFloater> mPrivateCallPanel;
- LLOutputMonitorCtrl* mOutputMonitor;
-};
-
-#endif // LL_LLSPEAKBUTTON_H
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 749acea6c1..e62227fa3c 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -131,7 +131,6 @@
#include "llsecondlifeurls.h"
#include "llselectmgr.h"
#include "llsky.h"
-#include "llsidetray.h"
#include "llstatview.h"
#include "llstatusbar.h" // sendMoneyBalanceRequest(), owns L$ balance
#include "llsurface.h"
@@ -367,7 +366,9 @@ bool idle_startup()
//
// Initialize stuff that doesn't need data from simulators
//
-
+ std::string lastGPU = gSavedSettings.getString("LastGPUString");
+ std::string thisGPU = LLFeatureManager::getInstance()->getGPUString();
+
if (LLFeatureManager::getInstance()->isSafe())
{
LLNotificationsUtil::add("DisplaySetToSafe");
@@ -375,12 +376,14 @@ bool idle_startup()
else if ((gSavedSettings.getS32("LastFeatureVersion") < LLFeatureManager::getInstance()->getVersion()) &&
(gSavedSettings.getS32("LastFeatureVersion") != 0))
{
- LLNotificationsUtil::add("DisplaySetToRecommended");
+ LLNotificationsUtil::add("DisplaySetToRecommendedFeatureChange");
}
- else if ((gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass()) &&
- (gSavedSettings.getS32("LastGPUClass") != -1))
+ else if ( ! lastGPU.empty() && (lastGPU != thisGPU))
{
- LLNotificationsUtil::add("DisplaySetToRecommended");
+ LLSD subs;
+ subs["LAST_GPU"] = lastGPU;
+ subs["THIS_GPU"] = thisGPU;
+ LLNotificationsUtil::add("DisplaySetToRecommendedGPUChange", subs);
}
else if (!gViewerWindow->getInitAlert().empty())
{
@@ -396,7 +399,7 @@ bool idle_startup()
LLStartUp::startLLProxy();
gSavedSettings.setS32("LastFeatureVersion", LLFeatureManager::getInstance()->getVersion());
- gSavedSettings.setS32("LastGPUClass", LLFeatureManager::getInstance()->getGPUClass());
+ gSavedSettings.setString("LastGPUString", thisGPU);
// load dynamic GPU/feature tables from website (S3)
LLFeatureManager::getInstance()->fetchHTTPTables();
@@ -2387,13 +2390,6 @@ void asset_callback_nothing(LLVFS*, const LLUUID&, LLAssetType::EType, void*, S3
// nothing
}
-// *HACK: Must match name in Library or agent inventory
-const std::string ROOT_GESTURES_FOLDER = "Gestures";
-const std::string COMMON_GESTURES_FOLDER = "Common Gestures";
-const std::string MALE_GESTURES_FOLDER = "Male Gestures";
-const std::string FEMALE_GESTURES_FOLDER = "Female Gestures";
-const std::string SPEECH_GESTURES_FOLDER = "Speech Gestures";
-const std::string OTHER_GESTURES_FOLDER = "Other Gestures";
const S32 OPT_CLOSED_WINDOW = -1;
const S32 OPT_MALE = 0;
const S32 OPT_FEMALE = 1;
@@ -2422,84 +2418,30 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response)
return false;
}
-void LLStartUp::copyLibraryGestures(const std::string& same_gender_gestures)
-{
- llinfos << "Copying library gestures" << llendl;
-
- // Copy gestures
- LLUUID lib_gesture_cat_id =
- gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE,false,true);
- if (lib_gesture_cat_id.isNull())
- {
- llwarns << "Unable to copy gestures, source category not found" << llendl;
- }
- LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
-
- std::vector<std::string> gesture_folders_to_copy;
- gesture_folders_to_copy.push_back(MALE_GESTURES_FOLDER);
- gesture_folders_to_copy.push_back(FEMALE_GESTURES_FOLDER);
- gesture_folders_to_copy.push_back(COMMON_GESTURES_FOLDER);
- gesture_folders_to_copy.push_back(SPEECH_GESTURES_FOLDER);
- gesture_folders_to_copy.push_back(OTHER_GESTURES_FOLDER);
-
- for(std::vector<std::string>::iterator it = gesture_folders_to_copy.begin();
- it != gesture_folders_to_copy.end();
- ++it)
- {
- std::string& folder_name = *it;
-
- LLPointer<LLInventoryCallback> cb(NULL);
-
- if (folder_name == same_gender_gestures ||
- folder_name == COMMON_GESTURES_FOLDER ||
- folder_name == OTHER_GESTURES_FOLDER)
- {
- cb = new ActivateGestureCallback;
- }
-
-
- LLUUID cat_id = findDescendentCategoryIDByName(lib_gesture_cat_id,folder_name);
- if (cat_id.isNull())
- {
- llwarns << "failed to find gesture folder for " << folder_name << llendl;
- }
- else
- {
- llinfos << "initiating fetch and copy for " << folder_name << " cat_id " << cat_id << llendl;
- LLAppearanceMgr* app_mgr = LLAppearanceMgr::getInstance();
- callAfterCategoryFetch(cat_id,
- boost::bind(&LLAppearanceMgr::shallowCopyCategory,
- app_mgr,
- cat_id,
- dst_id,
- cb));
- }
- }
-}
-
void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
const std::string& gender_name )
{
- llinfos << "starting" << llendl;
+ lldebugs << "starting" << llendl;
// Not going through the processAgentInitialWearables path, so need to set this here.
LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);
// Initiate creation of COF, since we're also bypassing that.
gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
- S32 gender = 0;
- std::string same_gender_gestures;
+ ESex gender;
if (gender_name == "male")
{
- gender = OPT_MALE;
- same_gender_gestures = MALE_GESTURES_FOLDER;
+ lldebugs << "male" << llendl;
+ gender = SEX_MALE;
}
else
{
- gender = OPT_FEMALE;
- same_gender_gestures = FEMALE_GESTURES_FOLDER;
+ lldebugs << "female" << llendl;
+ gender = SEX_FEMALE;
}
+ gAgentAvatarp->setSex(gender);
+
// try to find the outfit - if not there, create some default
// wearables.
LLUUID cat_id = findDescendentCategoryIDByName(
@@ -2507,7 +2449,8 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
outfit_folder_name);
if (cat_id.isNull())
{
- gAgentWearables.createStandardWearables(gender);
+ lldebugs << "standard wearables" << llendl;
+ gAgentWearables.createStandardWearables();
}
else
{
@@ -2517,26 +2460,28 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
bool do_append = false;
LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
LLAppearanceMgr::instance().wearInventoryCategory(cat, do_copy, do_append);
+ lldebugs << "initial outfit category id: " << cat_id << llendl;
}
- // Copy gestures
- copyLibraryGestures(same_gender_gestures);
-
// This is really misnamed -- it means we have started loading
// an outfit/shape that will give the avatar a gender eventually. JC
gAgent.setGenderChosen(TRUE);
-
}
//static
void LLStartUp::saveInitialOutfit()
{
- if (sInitialOutfit.empty()) return;
+ if (sInitialOutfit.empty()) {
+ lldebugs << "sInitialOutfit is empty" << llendl;
+ return;
+ }
if (sWearablesLoadedCon.connected())
{
+ lldebugs << "sWearablesLoadedCon is connected, disconnecting" << llendl;
sWearablesLoadedCon.disconnect();
}
+ lldebugs << "calling makeNewOutfitLinks( \"" << sInitialOutfit << "\" )" << llendl;
LLAppearanceMgr::getInstance()->makeNewOutfitLinks(sInitialOutfit,false);
}
@@ -3340,8 +3285,6 @@ bool process_login_success_response()
}
// Initial outfit for the user.
- // QUESTION: Why can't we simply simply set the users outfit directly
- // from a web page into the user info on the server? - Roxie
LLSD initial_outfit = response["initial-outfit"][0];
if(initial_outfit.size())
{
diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h
index 99a644eb9c..0a18ef1b2d 100644
--- a/indra/newview/llstartup.h
+++ b/indra/newview/llstartup.h
@@ -90,8 +90,6 @@ public:
static void initNameCache();
- static void copyLibraryGestures(const std::string& same_gender_gestures);
-
static void cleanupNameCache();
// outfit_folder_name can be a folder anywhere in your inventory,
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 0a00885843..75db269bde 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -162,8 +162,6 @@ BOOL LLStatusBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
BOOL LLStatusBar::postBuild()
{
- LLControlVariablePtr mode_control = gSavedSettings.getControl("SessionSettingsFile");
-
gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3));
mTextTime = getChild<LLTextBox>("TimeText" );
@@ -171,6 +169,8 @@ BOOL LLStatusBar::postBuild()
getChild<LLUICtrl>("buyL")->setCommitCallback(
boost::bind(&LLStatusBar::onClickBuyCurrency, this));
+ getChild<LLUICtrl>("goShop")->setCommitCallback(boost::bind(&LLWeb::loadURLExternal, gSavedSettings.getString("MarketplaceURL")));
+
mBoxBalance = getChild<LLTextBox>("balance");
mBoxBalance->setClickedCallback( &LLStatusBar::onClickBalance, this );
@@ -235,40 +235,9 @@ BOOL LLStatusBar::postBuild()
mScriptOut = getChildView("scriptout");
- LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo");
- mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
- mode_combo.setCommitCallback(boost::bind(&LLStatusBar::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2));
-
-
return TRUE;
}
-void LLStatusBar::onModeChange(const LLSD& original_value, const LLSD& new_value)
-{
- if (original_value.asString() != new_value.asString())
- {
- LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLStatusBar::onModeChangeConfirm, this, original_value, new_value, _1, _2));
- }
-}
-
-void LLStatusBar::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- switch (option)
- {
- case 0:
- gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
- LLAppViewer::instance()->requestQuit();
- break;
- case 1:
- // revert to original value
- getChild<LLUICtrl>("mode_combo")->setValue(original_value);
- break;
- default:
- break;
- }
-}
-
// Per-frame updates of visibility
void LLStatusBar::refresh()
{
@@ -378,9 +347,10 @@ void LLStatusBar::setBalance(S32 balance)
const S32 HPAD = 24;
LLRect balance_rect = mBoxBalance->getTextBoundingRect();
LLRect buy_rect = getChildView("buyL")->getRect();
+ LLRect shop_rect = getChildView("goShop")->getRect();
LLView* balance_bg_view = getChildView("balance_bg");
LLRect balance_bg_rect = balance_bg_view->getRect();
- balance_bg_rect.mLeft = balance_bg_rect.mRight - (buy_rect.getWidth() + balance_rect.getWidth() + HPAD);
+ balance_bg_rect.mLeft = balance_bg_rect.mRight - (buy_rect.getWidth() + shop_rect.getWidth() + balance_rect.getWidth() + HPAD);
balance_bg_view->setShape(balance_bg_rect);
}
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 6feeab393b..4ea3183d18 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -92,8 +92,6 @@ private:
void onMouseEnterVolume();
void onMouseEnterNearbyMedia();
void onClickScreen(S32 x, S32 y);
- void onModeChange(const LLSD& original_value, const LLSD& new_value);
- void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
static void onClickMediaToggle(void* data);
static void onClickBalance(void* data);
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index cb49976e5f..ffe864e220 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -35,16 +35,17 @@
#include "llfloaterreg.h"
#include "llnotifications.h"
-#include "llbottomtray.h"
#include "llscriptfloater.h"
#include "llviewercontrol.h"
#include "llviewerwindow.h"
#include "llchiclet.h"
+#include "llchicletbar.h"
#include "lltoastpanel.h"
#include "llnotificationmanager.h"
#include "llnotificationsutil.h"
#include "llspeakers.h"
+#include "lltoolbarview.h"
//---------------------------------------------------------------------------------
LLSysWellWindow::LLSysWellWindow(const LLSD& key) : LLTransientDockableFloater(NULL, true, key),
@@ -140,15 +141,6 @@ void LLSysWellWindow::initChannel()
}
//---------------------------------------------------------------------------------
-void LLSysWellWindow::getAllowedRect(LLRect& rect)
-{
- rect = gViewerWindow->getWorldViewRectScaled();
-}
-
-//---------------------------------------------------------------------------------
-
-
-//---------------------------------------------------------------------------------
void LLSysWellWindow::setVisible(BOOL visible)
{
if (visible)
@@ -156,8 +148,8 @@ void LLSysWellWindow::setVisible(BOOL visible)
if (NULL == getDockControl() && getDockTongue().notNull())
{
setDockControl(new LLDockControl(
- LLBottomTray::getInstance()->getChild<LLView>(getAnchorViewName()), this,
- getDockTongue(), LLDockControl::TOP, boost::bind(&LLSysWellWindow::getAllowedRect, this, _1)));
+ LLChicletBar::getInstance()->getChild<LLView>(getAnchorViewName()), this,
+ getDockTongue(), LLDockControl::BOTTOM));
}
}
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 9f8ab01810..52e5370505 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -76,11 +76,6 @@ public:
static const S32 MIN_WINDOW_WIDTH = 318;
protected:
-
- // gets a rect that bounds possible positions for the SysWellWindow on a screen (EXT-1111)
- void getAllowedRect(LLRect& rect);
-
-
// init Window's channel
virtual void initChannel();
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 87b6304f9d..70b0a31308 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -36,6 +36,7 @@
// Included to allow LLTextureCache::purgeTextures() to pause watchdog timeout
#include "llappviewer.h"
+#include "llmemory.h"
// Cache organization:
// cache/texture.entries
@@ -176,7 +177,7 @@ private:
bool LLTextureCacheLocalFileWorker::doRead()
{
- S32 local_size = LLAPRFile::size(mFileName);
+ S32 local_size = LLAPRFile::size(mFileName, mCache->getLocalAPRFilePool());
if (local_size > 0 && mFileName.size() > 4)
{
@@ -250,7 +251,7 @@ bool LLTextureCacheLocalFileWorker::doRead()
}
mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), mDataSize);
- S32 bytes_read = LLAPRFile::readEx(mFileName, mReadData, mOffset, mDataSize);
+ S32 bytes_read = LLAPRFile::readEx(mFileName, mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
if (bytes_read != mDataSize)
{
@@ -331,7 +332,7 @@ bool LLTextureCacheRemoteWorker::doRead()
// Is it a JPEG2000 file?
{
local_filename = filename + ".j2c";
- local_size = LLAPRFile::size(local_filename);
+ local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
if (local_size > 0)
{
mImageFormat = IMG_CODEC_J2C;
@@ -341,7 +342,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (local_size == 0)
{
local_filename = filename + ".jpg";
- local_size = LLAPRFile::size(local_filename);
+ local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
if (local_size > 0)
{
mImageFormat = IMG_CODEC_JPEG;
@@ -352,7 +353,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (local_size == 0)
{
local_filename = filename + ".tga";
- local_size = LLAPRFile::size(local_filename);
+ local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
if (local_size > 0)
{
mImageFormat = IMG_CODEC_TGA;
@@ -378,7 +379,8 @@ bool LLTextureCacheRemoteWorker::doRead()
}
// Allocate read buffer
mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), mDataSize);
- S32 bytes_read = LLAPRFile::readEx(local_filename, mReadData, mOffset, mDataSize);
+ S32 bytes_read = LLAPRFile::readEx(local_filename,
+ mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
if (bytes_read != mDataSize)
{
llwarns << "Error reading file from local cache: " << local_filename
@@ -429,7 +431,8 @@ bool LLTextureCacheRemoteWorker::doRead()
size = llmin(size, mDataSize);
// Allocate the read buffer
mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), size);
- S32 bytes_read = LLAPRFile::readEx(mCache->mHeaderDataFileName, mReadData, offset, size);
+ S32 bytes_read = LLAPRFile::readEx(mCache->mHeaderDataFileName,
+ mReadData, offset, size, mCache->getLocalAPRFilePool());
if (bytes_read != size)
{
llwarns << "LLTextureCacheWorker: " << mID
@@ -455,7 +458,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (!done && (mState == BODY))
{
std::string filename = mCache->getTextureFileName(mID);
- S32 filesize = LLAPRFile::size(filename);
+ S32 filesize = LLAPRFile::size(filename, mCache->getLocalAPRFilePool());
if (filesize && (filesize + TEXTURE_CACHE_ENTRY_SIZE) > mOffset)
{
@@ -497,7 +500,8 @@ bool LLTextureCacheRemoteWorker::doRead()
// Read the data at last
S32 bytes_read = LLAPRFile::readEx(filename,
mReadData + data_offset,
- file_offset, file_size);
+ file_offset, file_size,
+ mCache->getLocalAPRFilePool());
if (bytes_read != file_size)
{
llwarns << "LLTextureCacheWorker: " << mID
@@ -598,13 +602,13 @@ bool LLTextureCacheRemoteWorker::doWrite()
U8* padBuffer = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), TEXTURE_CACHE_ENTRY_SIZE);
memset(padBuffer, 0, TEXTURE_CACHE_ENTRY_SIZE); // Init with zeros
memcpy(padBuffer, mWriteData, mDataSize); // Copy the write buffer
- bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size);
+ bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size, mCache->getLocalAPRFilePool());
FREE_MEM(LLImageBase::getPrivatePool(), padBuffer);
}
else
{
// Write the header record (== first TEXTURE_CACHE_ENTRY_SIZE bytes of the raw file) in the header file
- bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size);
+ bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size, mCache->getLocalAPRFilePool());
}
if (bytes_written <= 0)
@@ -639,7 +643,8 @@ bool LLTextureCacheRemoteWorker::doWrite()
// llinfos << "Writing Body: " << filename << " Bytes: " << file_offset+file_size << llendl;
S32 bytes_written = LLAPRFile::writeEx( filename,
mWriteData + TEXTURE_CACHE_ENTRY_SIZE,
- 0, file_size);
+ 0, file_size,
+ mCache->getLocalAPRFilePool());
if (bytes_written <= 0)
{
llwarns << "LLTextureCacheWorker: " << mID
@@ -736,6 +741,9 @@ void LLTextureCacheWorker::endWork(S32 param, bool aborted)
LLTextureCache::LLTextureCache(bool threaded)
: LLWorkerThread("TextureCache", threaded),
+ mWorkersMutex(NULL),
+ mHeaderMutex(NULL),
+ mListMutex(NULL),
mHeaderAPRFile(NULL),
mReadOnly(TRUE), //do not allow to change the texture cache until setReadOnly() is called.
mTexturesSizeTotal(0),
@@ -839,7 +847,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
// Is it a JPEG2000 file?
{
local_filename = filename + ".j2c";
- local_size = LLAPRFile::size(local_filename);
+ local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
if (local_size > 0)
{
return TRUE ;
@@ -849,7 +857,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
// If not, is it a jpeg file?
{
local_filename = filename + ".jpg";
- local_size = LLAPRFile::size(local_filename);
+ local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
if (local_size > 0)
{
return TRUE ;
@@ -859,7 +867,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
// Hmm... What about a targa file? (used for UI texture mostly)
{
local_filename = filename + ".tga";
- local_size = LLAPRFile::size(local_filename);
+ local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
if (local_size > 0)
{
return TRUE ;
@@ -905,10 +913,10 @@ void LLTextureCache::purgeCache(ELLPath location)
if(LLFile::isdir(mTexturesDirName))
{
std::string file_name = gDirUtilp->getExpandedFilename(location, entries_filename);
- LLAPRFile::remove(file_name);
+ LLAPRFile::remove(file_name, getLocalAPRFilePool());
file_name = gDirUtilp->getExpandedFilename(location, cache_filename);
- LLAPRFile::remove(file_name);
+ LLAPRFile::remove(file_name, getLocalAPRFilePool());
purgeAllTextures(true);
}
@@ -984,9 +992,7 @@ LLAPRFile* LLTextureCache::openHeaderEntriesFile(bool readonly, S32 offset)
{
llassert_always(mHeaderAPRFile == NULL);
apr_int32_t flags = readonly ? APR_READ|APR_BINARY : APR_READ|APR_WRITE|APR_BINARY;
- // All code calling openHeaderEntriesFile, immediately calls closeHeaderEntriesFile,
- // so this file is very short-lived.
- mHeaderAPRFile = new LLAPRFile(mHeaderEntriesFileName, flags);
+ mHeaderAPRFile = new LLAPRFile(mHeaderEntriesFileName, flags, getLocalAPRFilePool());
if(offset > 0)
{
mHeaderAPRFile->seek(APR_SET, offset);
@@ -1009,9 +1015,10 @@ void LLTextureCache::readEntriesHeader()
{
// mHeaderEntriesInfo initializes to default values so safe not to read it
llassert_always(mHeaderAPRFile == NULL);
- if (LLAPRFile::isExist(mHeaderEntriesFileName))
+ if (LLAPRFile::isExist(mHeaderEntriesFileName, getLocalAPRFilePool()))
{
- LLAPRFile::readEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo));
+ LLAPRFile::readEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
+ getLocalAPRFilePool());
}
else //create an empty entries header.
{
@@ -1026,7 +1033,8 @@ void LLTextureCache::writeEntriesHeader()
llassert_always(mHeaderAPRFile == NULL);
if (!mReadOnly)
{
- LLAPRFile::writeEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo));
+ LLAPRFile::writeEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
+ getLocalAPRFilePool());
}
}
@@ -1615,7 +1623,7 @@ void LLTextureCache::purgeTextures(bool validate)
if (uuididx == validate_idx)
{
LL_DEBUGS("TextureCache") << "Validating: " << filename << "Size: " << entries[idx].mBodySize << LL_ENDL;
- S32 bodysize = LLAPRFile::size(filename);
+ S32 bodysize = LLAPRFile::size(filename, getLocalAPRFilePool());
if (bodysize != entries[idx].mBodySize)
{
LL_WARNS("TextureCache") << "TEXTURE CACHE BODY HAS BAD SIZE: " << bodysize << " != " << entries[idx].mBodySize
@@ -1850,7 +1858,7 @@ void LLTextureCache::removeCachedTexture(const LLUUID& id)
mTexturesSizeMap.erase(id);
}
mHeaderIDMap.erase(id);
- LLAPRFile::remove(getTextureFileName(id));
+ LLAPRFile::remove(getTextureFileName(id), getLocalAPRFilePool());
}
//called after mHeaderMutex is locked.
@@ -1862,7 +1870,7 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
{
if (entry.mBodySize == 0) // Always attempt to remove when mBodySize > 0.
{
- if (LLAPRFile::isExist(filename)) // Sanity check. Shouldn't exist when body size is 0.
+ if (LLAPRFile::isExist(filename, getLocalAPRFilePool())) // Sanity check. Shouldn't exist when body size is 0.
{
LL_WARNS("TextureCache") << "Entry has body size of zero but file " << filename << " exists. Deleting this file, too." << LL_ENDL;
}
@@ -1883,7 +1891,7 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
if (file_maybe_exists)
{
- LLAPRFile::remove(filename);
+ LLAPRFile::remove(filename, getLocalAPRFilePool());
}
}
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index 79f5ba5835..64e3a2658c 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -142,6 +142,9 @@ protected:
std::string getTextureFileName(const LLUUID& id);
void addCompleted(Responder* responder, bool success);
+protected:
+ //void setFileAPRPool(apr_pool_t* pool) { mFileAPRPool = pool ; }
+
private:
void setDirNames(ELLPath location);
void readHeaderCache();
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index e9be45ffd0..56dfb61c4f 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -674,6 +674,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
mRetryAttempt(0),
mActiveCount(0),
mGetStatus(0),
+ mWorkMutex(NULL),
mFirstPacket(0),
mLastPacket(-1),
mTotalPackets(0),
@@ -1810,11 +1811,13 @@ bool LLTextureFetchWorker::writeToCacheComplete()
// public
LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* imagedecodethread, bool threaded, bool qa_mode)
- : LLWorkerThread("TextureFetch", threaded),
+ : LLWorkerThread("TextureFetch", threaded, true),
mDebugCount(0),
mDebugPause(FALSE),
mPacketCount(0),
mBadPacketCount(0),
+ mQueueMutex(getAPRPool()),
+ mNetworkQueueMutex(getAPRPool()),
mTextureCache(cache),
mImageDecodeThread(imagedecodethread),
mTextureBandwidth(0),
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
deleted file mode 100644
index c4f599561d..0000000000
--- a/indra/newview/lltoolbar.cpp
+++ /dev/null
@@ -1,365 +0,0 @@
-/**
- * @file lltoolbar.cpp
- * @author James Cook, Richard Nelson
- * @brief Large friendly buttons at bottom of screen.
- *
- * $LicenseInfo:firstyear=2002&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 "lltoolbar.h"
-
-#include "imageids.h"
-#include "llfloaterreg.h"
-#include "llfontgl.h"
-#include "llflyoutbutton.h"
-#include "llrect.h"
-#include "llparcel.h"
-
-#include "llagent.h"
-#include "llagentwearables.h"
-#include "llbutton.h"
-#include "llfocusmgr.h"
-#include "llviewercontrol.h"
-#include "llmenucommands.h"
-#include "llimview.h"
-#include "lluiconstants.h"
-#include "llvoavatarself.h"
-#include "lltooldraganddrop.h"
-#include "llfloaterinventory.h"
-#include "llfloaterchatterbox.h"
-#include "llfloatersnapshot.h"
-#include "llinventorypanel.h"
-#include "lltoolmgr.h"
-#include "llui.h"
-#include "llviewermenu.h"
-//#include "llfirstuse.h"
-#include "llpanelblockedlist.h"
-#include "llscrolllistctrl.h"
-#include "llscrolllistitem.h"
-#include "llscrolllistcell.h"
-#include "llviewerparcelmgr.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
-#include "lltoolgrab.h"
-#include "llcombobox.h"
-#include "lllayoutstack.h"
-
-#if LL_DARWIN
-
- #include "llresizehandle.h"
-
-#endif // LL_DARWIN
-
-//
-// Globals
-//
-
-LLToolBar *gToolBar = NULL;
-
-//
-// Statics
-//
-F32 LLToolBar::sInventoryAutoOpenTime = 1.f;
-
-//
-// Functions
-//
-
-LLToolBar::LLToolBar()
- : LLPanel(),
-
- mInventoryAutoOpen(FALSE),
- mNumUnreadIMs(0)
-#if LL_DARWIN
- , mResizeHandle(NULL)
-#endif // LL_DARWIN
-{
- setIsChrome(TRUE);
- setFocusRoot(TRUE);
-
- mCommitCallbackRegistrar.add("HandleCommunicate", &LLToolBar::onClickCommunicate);
-}
-
-
-BOOL LLToolBar::postBuild()
-{
- for (child_list_const_iter_t child_iter = getChildList()->begin();
- child_iter != getChildList()->end(); ++child_iter)
- {
- LLView *view = *child_iter;
- LLButton* buttonp = dynamic_cast<LLButton*>(view);
- if(buttonp)
- {
- buttonp->setSoundFlags(LLView::SILENT);
- }
- }
-
-#if LL_DARWIN
- if(mResizeHandle == NULL)
- {
- LLRect rect(0, 0, RESIZE_HANDLE_WIDTH, RESIZE_HANDLE_HEIGHT);
- LLResizeHandle::Params p;
- p.name("");
- p.rect(rect);
- p.min_width(RESIZE_HANDLE_WIDTH);
- p.min_height(RESIZE_HANDLE_HEIGHT);
- p.enabled(false);
- mResizeHandle = LLUICtrlFactory::create<LLResizeHandle>(p);
- addChildInBack(mResizeHandle);
- LLLayoutStack* toolbar_stack = getChild<LLLayoutStack>("toolbar_stack");
- toolbar_stack->reshape(toolbar_stack->getRect().getWidth() - RESIZE_HANDLE_WIDTH, toolbar_stack->getRect().getHeight());
- }
-#endif // LL_DARWIN
-
- layoutButtons();
-
- return TRUE;
-}
-
-LLToolBar::~LLToolBar()
-{
- // LLView destructor cleans up children
-}
-
-
-BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg)
-{
- LLButton* inventory_btn = getChild<LLButton>("inventory_btn");
- if (!inventory_btn) return FALSE;
-
- LLRect button_screen_rect;
- inventory_btn->localRectToScreen(inventory_btn->getRect(),&button_screen_rect);
-
- const LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel();
- if(active_panel)
- {
- mInventoryAutoOpen = FALSE;
- }
- else if (button_screen_rect.pointInRect(x, y))
- {
- if (mInventoryAutoOpen)
- {
- if (!active_panel &&
- mInventoryAutoOpenTimer.getElapsedTimeF32() > sInventoryAutoOpenTime)
- {
- LLFloaterInventory::showAgentInventory();
- }
- }
- else
- {
- mInventoryAutoOpen = TRUE;
- mInventoryAutoOpenTimer.reset();
- }
- }
-
- return LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
-}
-
-// static
-void LLToolBar::toggle(void*)
-{
- BOOL show = gSavedSettings.getBOOL("ShowToolBar");
- gSavedSettings.setBOOL("ShowToolBar", !show);
- gToolBar->setVisible(!show);
-}
-
-
-// static
-BOOL LLToolBar::visible(void*)
-{
- return gToolBar->getVisible();
-}
-
-
-void LLToolBar::layoutButtons()
-{
-#if LL_DARWIN
- const S32 FUDGE_WIDTH_OF_SCREEN = 4;
- S32 width = gViewerWindow->getWindowWidthScaled() + FUDGE_WIDTH_OF_SCREEN;
- S32 pad = 2;
-
- // this function may be called before postBuild(), in which case mResizeHandle won't have been set up yet.
- if(mResizeHandle != NULL)
- {
- // Only when running in windowed mode on the Mac, leave room for a resize widget on the right edge of the bar.
- width -= RESIZE_HANDLE_WIDTH;
-
- LLRect r;
- r.mLeft = width - pad;
- r.mBottom = 0;
- r.mRight = r.mLeft + RESIZE_HANDLE_WIDTH;
- r.mTop = r.mBottom + RESIZE_HANDLE_HEIGHT;
- mResizeHandle->setRect(r);
- mResizeHandle->setVisible(TRUE);
- }
-#endif // LL_DARWIN
-}
-
-
-// virtual
-void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- LLPanel::reshape(width, height, called_from_parent);
-
- layoutButtons();
-}
-
-
-// Per-frame updates of visibility
-void LLToolBar::refresh()
-{
- BOOL show = gSavedSettings.getBOOL("ShowToolBar");
- BOOL mouselook = gAgent.cameraMouselook();
- setVisible(show && !mouselook);
-
- if (isInVisibleChain())
- {
- updateCommunicateList();
- }
-}
-
-void LLToolBar::updateCommunicateList()
-{
- LLFlyoutButton* communicate_button = getChild<LLFlyoutButton>("communicate_btn");
- LLSD selected = communicate_button->getValue();
-
- communicate_button->removeall();
-
- //LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater();
- LLScrollListItem* itemp = NULL;
-
- LLSD contact_sd;
- contact_sd["value"] = "contacts";
- /*contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle();
- if (LLFloaterMyFriends::getInstance() == frontmost_floater)
- {
- contact_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
- contact_sd["columns"][0]["font"]["style"] = "BOLD";
- // make sure current tab is selected in list
- if (selected.isUndefined())
- {
- selected = "contacts";
- }
- }*/
- itemp = communicate_button->addElement(contact_sd, ADD_TOP);
-
- communicate_button->addSeparator(ADD_TOP);
- communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP);
- communicate_button->addSeparator(ADD_TOP);
- communicate_button->add(getString("Blocked List"), LLSD("mute list"), ADD_TOP);
-
- std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it;
-
- /*if (gIMMgr->getIMFloaterHandles().size() > 0)
- {
- communicate_button->addSeparator(ADD_TOP);
- }
-
- for(floater_handle_it = gIMMgr->getIMFloaterHandles().begin(); floater_handle_it != gIMMgr->getIMFloaterHandles().end(); ++floater_handle_it)
- {
- LLFloaterIMPanel* im_floaterp = (LLFloaterIMPanel*)floater_handle_it->get();
- if (im_floaterp)
- {
- std::string floater_title = im_floaterp->getNumUnreadMessages() > 0 ? "*" : "";
- floater_title.append(im_floaterp->getShortTitle());
- LLSD im_sd;
- im_sd["value"] = im_floaterp->getSessionID();
- im_sd["columns"][0]["value"] = floater_title;
- if (im_floaterp == frontmost_floater)
- {
- im_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
- im_sd["columns"][0]["font"]["style"] = "BOLD";
- if (selected.isUndefined())
- {
- selected = im_floaterp->getSessionID();
- }
- }
- itemp = communicate_button->addElement(im_sd, ADD_TOP);
- }
- }*/
-
- communicate_button->setValue(selected);
-}
-
-
-// static
-void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)
-{
- LLFlyoutButton* communicate_button = dynamic_cast<LLFlyoutButton*>(ctrl);
- llassert_always(communicate_button);
-
- LLSD selected_option = communicate_button->getValue();
-
- if (selected_option.asString() == "contacts")
- {
- LLFloaterReg::showInstance("contacts", "friends");
- }
- else if (selected_option.asString() == "local chat")
- {
- LLFloaterReg::showInstance("communicate", "local");
- }
- else if (selected_option.asString() == "redock")
- {
- /*LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance();
- if(chatterbox_instance)
- {
- chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE);
-
- LLUUID session_to_show;
-
- std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it;
- for(floater_handle_it = gIMMgr->getIMFloaterHandles().begin(); floater_handle_it != gIMMgr->getIMFloaterHandles().end(); ++floater_handle_it)
- {
- LLFloater* im_floaterp = floater_handle_it->get();
- if (im_floaterp)
- {
- if (im_floaterp->isFrontmost())
- {
- session_to_show = ((LLFloaterIMPanel*)im_floaterp)->getSessionID();
- }
- chatterbox_instance->addFloater(im_floaterp, FALSE);
- }
- }
- LLFloaterReg::showInstance("communicate", session_to_show);
- }*/
- }
- else if (selected_option.asString() == "mute list")
- {
- LLPanelBlockedList::showPanelAndSelect(LLUUID::null);
- }
- else if (selected_option.isUndefined()) // user just clicked the communicate button, treat as toggle
- {
- /*LLFloaterReg::toggleInstance("communicate");*/
- }
- else // otherwise selection_option is undifined or a specific IM session id
- {
- /*LLFloaterReg::showInstance("communicate", selected_option);*/
- }
-}
-
-
diff --git a/indra/newview/lltoolbar.h b/indra/newview/lltoolbar.h
deleted file mode 100644
index 217b3c0ac8..0000000000
--- a/indra/newview/lltoolbar.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * @file lltoolbar.h
- * @brief Large friendly buttons at bottom of screen.
- *
- * $LicenseInfo:firstyear=2002&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_LLTOOLBAR_H
-#define LL_LLTOOLBAR_H
-
-#include "llpanel.h"
-
-#include "llframetimer.h"
-
-class LLResizeHandle;
-
-class LLToolBar
-: public LLPanel
-{
-public:
- LLToolBar();
- ~LLToolBar();
-
- /*virtual*/ BOOL postBuild();
-
- /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg);
-
- /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
-
- static void toggle(void*);
- static BOOL visible(void*);
-
- // Move buttons to appropriate locations based on rect.
- void layoutButtons();
-
- // Per-frame refresh call
- void refresh();
-
- // callbacks
- static void onClickCommunicate(LLUICtrl*, const LLSD&);
-
- static F32 sInventoryAutoOpenTime;
-
-private:
- void updateCommunicateList();
-
-
-private:
- BOOL mInventoryAutoOpen;
- LLFrameTimer mInventoryAutoOpenTimer;
- S32 mNumUnreadIMs;
-#if LL_DARWIN
- LLResizeHandle *mResizeHandle;
-#endif // LL_DARWIN
-};
-
-extern LLToolBar *gToolBar;
-
-#endif
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
new file mode 100644
index 0000000000..21e682f072
--- /dev/null
+++ b/indra/newview/lltoolbarview.cpp
@@ -0,0 +1,492 @@
+/**
+ * @file lltoolbarview.cpp
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "lltoolbarview.h"
+
+#include "lldir.h"
+#include "llxmlnode.h"
+#include "lltoolbar.h"
+#include "llbutton.h"
+#include "lltooldraganddrop.h"
+#include "llclipboard.h"
+
+#include <boost/foreach.hpp>
+
+LLToolBarView* gToolBarView = NULL;
+
+static LLDefaultChildRegistry::Register<LLToolBarView> r("toolbar_view");
+
+bool isToolDragged()
+{
+ return (LLToolDragAndDrop::getInstance()->getSource() == LLToolDragAndDrop::SOURCE_VIEWER);
+}
+
+LLToolBarView::Toolbar::Toolbar()
+: button_display_mode("button_display_mode"),
+ commands("command")
+{}
+
+LLToolBarView::ToolbarSet::ToolbarSet()
+: left_toolbar("left_toolbar"),
+ right_toolbar("right_toolbar"),
+ bottom_toolbar("bottom_toolbar")
+{}
+
+
+LLToolBarView::LLToolBarView(const LLToolBarView::Params& p)
+: LLUICtrl(p),
+ mToolbarLeft(NULL),
+ mToolbarRight(NULL),
+ mToolbarBottom(NULL)
+{
+}
+
+void LLToolBarView::initFromParams(const LLToolBarView::Params& p)
+{
+ // Initialize the base object
+ LLUICtrl::initFromParams(p);
+}
+
+LLToolBarView::~LLToolBarView()
+{
+ saveToolbars();
+}
+
+BOOL LLToolBarView::postBuild()
+{
+ mToolbarLeft = getChild<LLToolBar>("toolbar_left");
+ mToolbarRight = getChild<LLToolBar>("toolbar_right");
+ mToolbarBottom = getChild<LLToolBar>("toolbar_bottom");
+
+ mToolbarLeft->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+ mToolbarLeft->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+ mToolbarLeft->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+
+ mToolbarRight->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+ mToolbarRight->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+ mToolbarRight->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+
+ mToolbarBottom->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+ mToolbarBottom->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+ mToolbarBottom->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+
+ return TRUE;
+}
+
+bool LLToolBarView::hasCommand(const LLCommandId& commandId) const
+{
+ bool has_command = false;
+ if (mToolbarLeft && !has_command)
+ {
+ has_command = mToolbarLeft->hasCommand(commandId);
+ }
+ if (mToolbarRight && !has_command)
+ {
+ has_command = mToolbarRight->hasCommand(commandId);
+ }
+ if (mToolbarBottom && !has_command)
+ {
+ has_command = mToolbarBottom->hasCommand(commandId);
+ }
+ return has_command;
+}
+
+bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar)
+{
+ LLCommandManager& mgr = LLCommandManager::instance();
+ if (mgr.getCommand(command))
+ {
+ toolbar->addCommand(command);
+ }
+ else
+ {
+ llwarns << "Toolbars creation : the command " << command.name() << " cannot be found in the command manager" << llendl;
+ return false;
+ }
+ return true;
+}
+
+bool LLToolBarView::loadToolbars(bool force_default)
+{
+ LLToolBarView::ToolbarSet toolbar_set;
+
+ // Load the toolbars.xml file
+ std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
+ if (force_default)
+ {
+ toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ }
+ else if (!gDirUtilp->fileExists(toolbar_file))
+ {
+ llwarns << "User toolbars def not found -> use default" << llendl;
+ toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ }
+
+ LLXMLNodePtr root;
+ if(!LLXMLNode::parseFile(toolbar_file, root, NULL))
+ {
+ llwarns << "Unable to load toolbars from file: " << toolbar_file << llendl;
+ return false;
+ }
+ if(!root->hasName("toolbars"))
+ {
+ llwarns << toolbar_file << " is not a valid toolbars definition file" << llendl;
+ return false;
+ }
+
+ // Parse the toolbar settings
+ LLXUIParser parser;
+ parser.readXUI(root, toolbar_set, toolbar_file);
+ if (!toolbar_set.validateBlock())
+ {
+ llerrs << "Unable to validate toolbars from file: " << toolbar_file << llendl;
+ return false;
+ }
+
+ // Clear the toolbars now before adding the loaded commands and settings
+ if (mToolbarLeft)
+ {
+ mToolbarLeft->clearCommandsList();
+ }
+ if (mToolbarRight)
+ {
+ mToolbarRight->clearCommandsList();
+ }
+ if (mToolbarBottom)
+ {
+ mToolbarBottom->clearCommandsList();
+ }
+
+ // Add commands to each toolbar
+ if (toolbar_set.left_toolbar.isProvided() && mToolbarLeft)
+ {
+ if (toolbar_set.left_toolbar.button_display_mode.isProvided())
+ {
+ LLToolBarEnums::ButtonType button_type = toolbar_set.left_toolbar.button_display_mode;
+ mToolbarLeft->setButtonType(button_type);
+ }
+ BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.left_toolbar.commands)
+ {
+ addCommand(LLCommandId(command),mToolbarLeft);
+ }
+ }
+ if (toolbar_set.right_toolbar.isProvided() && mToolbarRight)
+ {
+ if (toolbar_set.right_toolbar.button_display_mode.isProvided())
+ {
+ LLToolBarEnums::ButtonType button_type = toolbar_set.right_toolbar.button_display_mode;
+ mToolbarRight->setButtonType(button_type);
+ }
+ BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.right_toolbar.commands)
+ {
+ addCommand(LLCommandId(command),mToolbarRight);
+ }
+ }
+ if (toolbar_set.bottom_toolbar.isProvided() && mToolbarBottom)
+ {
+ if (toolbar_set.bottom_toolbar.button_display_mode.isProvided())
+ {
+ LLToolBarEnums::ButtonType button_type = toolbar_set.bottom_toolbar.button_display_mode;
+ mToolbarBottom->setButtonType(button_type);
+ }
+ BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.bottom_toolbar.commands)
+ {
+ addCommand(LLCommandId(command),mToolbarBottom);
+ }
+ }
+ return true;
+}
+
+//static
+bool LLToolBarView::loadDefaultToolbars()
+{
+ bool retval = false;
+
+ if (gToolBarView)
+ {
+ retval = gToolBarView->loadToolbars(true);
+ }
+
+ return retval;
+}
+
+void LLToolBarView::saveToolbars() const
+{
+ // Build the parameter tree from the toolbar data
+ LLToolBarView::ToolbarSet toolbar_set;
+ if (mToolbarLeft)
+ {
+ toolbar_set.left_toolbar.button_display_mode = mToolbarLeft->getButtonType();
+ addToToolset(mToolbarLeft->getCommandsList(),toolbar_set.left_toolbar);
+ }
+ if (mToolbarRight)
+ {
+ toolbar_set.right_toolbar.button_display_mode = mToolbarRight->getButtonType();
+ addToToolset(mToolbarRight->getCommandsList(),toolbar_set.right_toolbar);
+ }
+ if (mToolbarBottom)
+ {
+ toolbar_set.bottom_toolbar.button_display_mode = mToolbarBottom->getButtonType();
+ addToToolset(mToolbarBottom->getCommandsList(),toolbar_set.bottom_toolbar);
+ }
+
+ // Serialize the parameter tree
+ LLXMLNodePtr output_node = new LLXMLNode("toolbars", false);
+ LLXUIParser parser;
+ parser.writeXUI(output_node, toolbar_set);
+
+ // Write the resulting XML to file
+ if(!output_node->isNull())
+ {
+ const std::string& filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
+ LLFILE *fp = LLFile::fopen(filename, "w");
+ if (fp != NULL)
+ {
+ LLXMLNode::writeHeaderToFile(fp);
+ output_node->writeToFile(fp);
+ fclose(fp);
+ }
+ }
+}
+
+// Enumerate the commands in command_list and add them as Params to the toolbar
+void LLToolBarView::addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const
+{
+ for (command_id_list_t::const_iterator it = command_list.begin();
+ it != command_list.end();
+ ++it)
+ {
+ LLCommandId::Params command;
+ command.name = it->name();
+ toolbar.commands.add(command);
+ }
+}
+
+void LLToolBarView::draw()
+{
+ //LLPanel* sizer_left = getChild<LLPanel>("sizer_left");
+
+ LLRect bottom_rect, left_rect, right_rect;
+
+ if (mToolbarBottom)
+ {
+ mToolbarBottom->getParent()->reshape(mToolbarBottom->getParent()->getRect().getWidth(), mToolbarBottom->getRect().getHeight());
+ mToolbarBottom->localRectToOtherView(mToolbarBottom->getLocalRect(), &bottom_rect, this);
+ }
+ if (mToolbarLeft)
+ {
+ mToolbarLeft->getParent()->reshape(mToolbarLeft->getRect().getWidth(), mToolbarLeft->getParent()->getRect().getHeight());
+ mToolbarLeft->localRectToOtherView(mToolbarLeft->getLocalRect(), &left_rect, this);
+ }
+ if (mToolbarRight)
+ {
+ mToolbarRight->getParent()->reshape(mToolbarRight->getRect().getWidth(), mToolbarRight->getParent()->getRect().getHeight());
+ mToolbarRight->localRectToOtherView(mToolbarRight->getLocalRect(), &right_rect, this);
+ }
+
+ // Draw drop zones if drop of a tool is active
+ if (isToolDragged())
+ {
+ LLColor4 drop_color = LLUIColorTable::instance().getColor( "ToolbarDropZoneColor" );
+ gl_rect_2d(bottom_rect, drop_color, TRUE);
+ gl_rect_2d(left_rect, drop_color, TRUE);
+ gl_rect_2d(right_rect, drop_color, TRUE);
+ }
+
+ LLUICtrl::draw();
+}
+
+
+// ----------------------------------------
+// Drag and Drop Handling
+// ----------------------------------------
+
+
+void LLToolBarView::startDragTool( S32 x, S32 y, const LLUUID& uuid)
+{
+ // Flag the tool dragging but don't start it yet
+ gToolBarView->mDragStarted = false;
+ gToolBarView->mDragCommand = LLCommandId::null;
+ gToolBarView->mDragRank = LLToolBar::RANK_NONE;
+ gToolBarView->mDragToolbar = NULL;
+ LLToolDragAndDrop::getInstance()->setDragStart( x, y );
+}
+
+BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type)
+{
+ if (LLToolDragAndDrop::getInstance()->isOverThreshold( x, y ))
+ {
+ if (!gToolBarView->mDragStarted)
+ {
+ // Start the tool dragging:
+
+ // First, create the global drag and drop object
+ std::vector<EDragAndDropType> types;
+ uuid_vec_t cargo_ids;
+ types.push_back(DAD_WIDGET);
+ cargo_ids.push_back(uuid);
+ gClipboard.setSourceObject(uuid,LLAssetType::AT_WIDGET);
+ LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_VIEWER;
+ LLUUID srcID;
+ LLToolDragAndDrop::getInstance()->beginMultiDrag(types, cargo_ids, src, srcID);
+
+ // Second, check if the command is present in one of the 3 toolbars
+ // If it is, store the command, the toolbar and the rank in the toolbar and
+ // set a callback on end drag so that we reinsert the command if no drop happened
+ /*
+ gToolBarView->mDragCommand = LLCommandId(uuid);
+ if ((gToolBarView->mDragRank = gToolBarView->mToolbarLeft->removeCommand(gToolBarView->mDragCommand)) != LLToolBar::RANK_NONE)
+ {
+ gToolBarView->mDragToolbar = gToolBarView->mToolbarLeft;
+ }
+ else if ((gToolBarView->mDragRank = gToolBarView->mToolbarRight->removeCommand(gToolBarView->mDragCommand)) != LLToolBar::RANK_NONE)
+ {
+ gToolBarView->mDragToolbar = gToolBarView->mToolbarRight;
+ }
+ else if ((gToolBarView->mDragRank = gToolBarView->mToolbarBottom->removeCommand(gToolBarView->mDragCommand)) != LLToolBar::RANK_NONE)
+ {
+ gToolBarView->mDragToolbar = gToolBarView->mToolbarBottom;
+ }
+ if (gToolBarView->mDragRank != LLToolBar::RANK_NONE)
+ {
+ llinfos << "Merov debug: rank of dragged tool = " << gToolBarView->mDragRank << llendl;
+ LLToolDragAndDrop::getInstance()->setEndDragCallback(boost::bind(&LLToolBarView::onEndDrag, gToolBarView));
+ }
+ */
+
+ gToolBarView->mDragStarted = true;
+ return TRUE;
+ }
+ else
+ {
+ MASK mask = 0;
+ return LLToolDragAndDrop::getInstance()->handleHover( x, y, mask );
+ }
+ }
+ return FALSE;
+}
+
+BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* toolbar)
+{
+ BOOL handled = FALSE;
+ LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
+
+ LLAssetType::EType type = inv_item->getType();
+ if (type == LLAssetType::AT_WIDGET)
+ {
+ handled = TRUE;
+ // Get the command from its uuid
+ LLCommandManager& mgr = LLCommandManager::instance();
+ LLCommandId command_id(inv_item->getUUID());
+ LLCommand* command = mgr.getCommand(command_id);
+ if (command)
+ {
+ // Convert the (x,y) position in rank in toolbar
+ int new_rank = LLToolBar::RANK_NONE;
+ if (!toolbar->isReadOnly())
+ {
+ new_rank = toolbar->getRankFromPosition(x,y);
+ }
+ // Suppress the command from the toolbars (including the one it's dropped in,
+ // this will handle move position).
+ int old_rank = LLToolBar::RANK_NONE;
+ LLToolBar* old_toolbar = NULL;
+ int rank;
+ if ((rank = gToolBarView->mToolbarLeft->removeCommand(command_id)) != LLToolBar::RANK_NONE)
+ {
+ old_rank = rank;
+ old_toolbar = gToolBarView->mToolbarLeft;
+ }
+ if ((rank = gToolBarView->mToolbarRight->removeCommand(command_id)) != LLToolBar::RANK_NONE)
+ {
+ old_rank = rank;
+ old_toolbar = gToolBarView->mToolbarRight;
+ }
+ if ((rank = gToolBarView->mToolbarBottom->removeCommand(command_id)) != LLToolBar::RANK_NONE)
+ {
+ old_rank = rank;
+ old_toolbar = gToolBarView->mToolbarBottom;
+ }
+ // Now insert it in the toolbar at the detected rank
+ if (!toolbar->isReadOnly())
+ {
+ if ((old_toolbar == toolbar) && (old_rank != LLToolBar::RANK_NONE) && (old_rank < new_rank))
+ {
+ // If we just removed the command from the same toolbar, we need to consider that it might
+ // change the target rank.
+ new_rank -= 1;
+ }
+ toolbar->addCommand(command->id(),new_rank);
+ }
+ }
+ else
+ {
+ llwarns << "Command couldn't be found in command manager" << llendl;
+ }
+ }
+ stopDragTool();
+ return handled;
+}
+
+void LLToolBarView::stopDragTool()
+{
+ // Clear the saved command, toolbar and rank
+ gToolBarView->mDragStarted = false;
+ gToolBarView->mDragCommand = LLCommandId::null;
+ gToolBarView->mDragRank = LLToolBar::RANK_NONE;
+ gToolBarView->mDragToolbar = NULL;
+}
+
+void LLToolBarView::onEndDrag()
+{
+ // If there's a saved command, reinsert it in the saved toolbar
+ if (gToolBarView->mDragRank != LLToolBar::RANK_NONE)
+ {
+ gToolBarView->mDragToolbar->addCommand(gToolBarView->mDragCommand,gToolBarView->mDragRank);
+ }
+ stopDragTool();
+}
+
+void LLToolBarView::setToolBarsVisible(bool visible)
+{
+ mToolbarBottom->getParent()->setVisible(visible);
+ mToolbarLeft->getParent()->setVisible(visible);
+ mToolbarRight->getParent()->setVisible(visible);
+}
+
+bool LLToolBarView::isModified() const
+{
+ bool modified = false;
+
+ modified |= mToolbarBottom->isModified();
+ modified |= mToolbarLeft->isModified();
+ modified |= mToolbarRight->isModified();
+
+ return modified;
+}
diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h
new file mode 100644
index 0000000000..8b3af43875
--- /dev/null
+++ b/indra/newview/lltoolbarview.h
@@ -0,0 +1,111 @@
+/**
+ * @file lltoolbarview.h
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLTOOLBARVIEW_H
+#define LL_LLTOOLBARVIEW_H
+
+#include "lluictrl.h"
+#include "lltoolbar.h"
+#include "llcommandmanager.h"
+
+class LLUICtrlFactory;
+
+// Parent of all LLToolBar
+
+class LLToolBarView : public LLUICtrl
+{
+public:
+ // Xui structure of the toolbar panel
+ struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> {};
+
+ // Note: valid children for LLToolBarView are stored in this registry
+ typedef LLDefaultChildRegistry child_registry_t;
+
+ // Xml structure of the toolbars.xml setting
+ // Those live in a toolbars.xml found in app_settings (for the default) and in
+ // the user folder for the user specific (saved) settings
+ struct Toolbar : public LLInitParam::Block<Toolbar>
+ {
+ Mandatory<LLToolBarEnums::ButtonType> button_display_mode;
+ Multiple<LLCommandId::Params> commands;
+ Toolbar();
+ };
+ struct ToolbarSet : public LLInitParam::Block<ToolbarSet>
+ {
+ Optional<Toolbar> left_toolbar,
+ right_toolbar,
+ bottom_toolbar;
+ ToolbarSet();
+ };
+
+ // Derived methods
+ virtual ~LLToolBarView();
+ virtual BOOL postBuild();
+ virtual void draw();
+ // Toolbar view interface with the rest of the world
+ // Checks if the commandId is being used somewhere in one of the toolbars
+ bool hasCommand(const LLCommandId& commandId) const;
+ // Loads the toolbars from the existing user or default settings
+ bool loadToolbars(bool force_default = false); // return false if load fails
+
+ void setToolBarsVisible(bool visible);
+
+ static bool loadDefaultToolbars();
+
+ static void startDragTool( S32 x, S32 y, const LLUUID& uuid);
+ static BOOL handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type);
+ static BOOL handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* toolbar);
+ static void stopDragTool();
+ void onEndDrag();
+
+ bool isModified() const;
+
+protected:
+ friend class LLUICtrlFactory;
+ LLToolBarView(const Params&);
+
+ void initFromParams(const Params&);
+
+private:
+ void saveToolbars() const;
+ bool addCommand(const LLCommandId& commandId, LLToolBar* toolbar);
+ void addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const;
+
+ // Pointers to the toolbars handled by the toolbar view
+ LLToolBar* mToolbarLeft;
+ LLToolBar* mToolbarRight;
+ LLToolBar* mToolbarBottom;
+
+ LLCommandId mDragCommand;
+ int mDragRank;
+ LLToolBar* mDragToolbar;
+ bool mDragStarted;
+};
+
+extern LLToolBarView* gToolBarView;
+
+#endif // LL_LLTOOLBARVIEW_H
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 3e5ce427a8..6910b8eced 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -57,6 +57,7 @@
#include "llviewerwindow.h"
#include "llvoavatarself.h"
#include "llworld.h"
+#include "llclipboard.h"
// syntactic sugar
#define callMemberFunction(object,ptrToMember) ((object).*(ptrToMember))
@@ -802,7 +803,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
LLViewerObject* hit_obj = pick_info.getObject();
LLSelectMgr::getInstance()->unhighlightAll();
-
+ bool highlight_object = false;
// Treat attachments as part of the avatar they are attached to.
if (hit_obj != NULL)
{
@@ -844,16 +845,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
{
target = DT_OBJECT;
hit_face = pick_info.mObjectFace;
- // if any item being dragged will be applied to the object under our cursor
- // highlight that object
- for (S32 i = 0; i < (S32)mCargoIDs.size(); i++)
- {
- if (mCargoTypes[i] != DAD_OBJECT || (pick_info.mKeyMask & MASK_CONTROL))
- {
- LLSelectMgr::getInstance()->highlightObjectAndFamily(hit_obj);
- break;
- }
- }
+ highlight_object = true;
}
}
else if (pick_info.mPickType == LLPickInfo::PICK_LAND)
@@ -899,6 +891,19 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
}
}
+ if (highlight_object && mLastAccept > ACCEPT_NO_LOCKED)
+ {
+ // if any item being dragged will be applied to the object under our cursor
+ // highlight that object
+ for (S32 i = 0; i < (S32)mCargoIDs.size(); i++)
+ {
+ if (mCargoTypes[i] != DAD_OBJECT || (pick_info.mKeyMask & MASK_CONTROL))
+ {
+ LLSelectMgr::getInstance()->highlightObjectAndFamily(hit_obj);
+ break;
+ }
+ }
+ }
ECursorType cursor = acceptanceToCursor( mLastAccept );
gViewerWindow->getWindow()->setCursor( cursor );
@@ -2495,6 +2500,10 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
item = (LLViewerInventoryItem*)preview->getDragItem();
}
}
+ else if(mSource == SOURCE_VIEWER)
+ {
+ item = (LLViewerInventoryItem*)gClipboard.getSourceObject();
+ }
if(item) return item;
if(cat) return cat;
return NULL;
diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h
index 7b8cce3dc7..92f007a251 100644
--- a/indra/newview/lltooldraganddrop.h
+++ b/indra/newview/lltooldraganddrop.h
@@ -66,7 +66,8 @@ public:
SOURCE_AGENT,
SOURCE_WORLD,
SOURCE_NOTECARD,
- SOURCE_LIBRARY
+ SOURCE_LIBRARY,
+ SOURCE_VIEWER
};
void beginDrag(EDragAndDropType type,
diff --git a/indra/newview/lltoolgun.cpp b/indra/newview/lltoolgun.cpp
index 68af3d73d2..857d105361 100644
--- a/indra/newview/lltoolgun.cpp
+++ b/indra/newview/lltoolgun.cpp
@@ -56,7 +56,7 @@ void LLToolGun::handleSelect()
{
gViewerWindow->hideCursor();
gViewerWindow->moveCursorToCenter();
- gViewerWindow->mWindow->setMouseClipping(TRUE);
+ gViewerWindow->getWindow()->setMouseClipping(TRUE);
mIsSelected = TRUE;
}
@@ -64,7 +64,7 @@ void LLToolGun::handleDeselect()
{
gViewerWindow->moveCursorToCenter();
gViewerWindow->showCursor();
- gViewerWindow->mWindow->setMouseClipping(FALSE);
+ gViewerWindow->getWindow()->setMouseClipping(FALSE);
mIsSelected = FALSE;
}
diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
index ed4d278e90..f6d7ceeec3 100644
--- a/indra/newview/llurldispatcher.cpp
+++ b/indra/newview/llurldispatcher.cpp
@@ -32,10 +32,10 @@
#include "llcommandhandler.h"
#include "llfloaterhelpbrowser.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llpanellogin.h"
#include "llregionhandle.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstartup.h" // gStartupState
#include "llweb.h"
@@ -246,7 +246,7 @@ void LLURLDispatcherImpl::regionHandleCallback(U64 region_handle, const LLSLURL&
key["y"] = global_pos.mdV[VY];
key["z"] = global_pos.mdV[VZ];
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
}
diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp
index b103f11597..a4b1c2155f 100644
--- a/indra/newview/llviewerassettype.cpp
+++ b/indra/newview/llviewerassettype.cpp
@@ -80,7 +80,9 @@ LLViewerAssetDictionary::LLViewerAssetDictionary()
addEntry(LLViewerAssetType::AT_LINK_FOLDER, new ViewerAssetEntry(DAD_LINK));
addEntry(LLViewerAssetType::AT_MESH, new ViewerAssetEntry(DAD_MESH));
-
+
+ addEntry(LLViewerAssetType::AT_WIDGET, new ViewerAssetEntry(DAD_WIDGET));
+
addEntry(LLViewerAssetType::AT_NONE, new ViewerAssetEntry(DAD_NONE));
};
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 0f0b7d7e78..967e26be0c 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -541,18 +541,12 @@ bool toggle_show_navigation_panel(const LLSD& newvalue)
{
bool value = newvalue.asBoolean();
- LLNavigationBar::getInstance()->showNavigationPanel(value);
+ LLNavigationBar::getInstance()->setVisible(value);
gSavedSettings.setBOOL("ShowMiniLocationPanel", !value);
return true;
}
-bool toggle_show_favorites_panel(const LLSD& newvalue)
-{
- LLNavigationBar::getInstance()->showFavoritesPanel(newvalue.asBoolean());
- return true;
-}
-
bool toggle_show_mini_location_panel(const LLSD& newvalue)
{
bool value = newvalue.asBoolean();
@@ -736,7 +730,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("UseDebugMenus")->getSignal()->connect(boost::bind(&show_debug_menus));
gSavedSettings.getControl("AgentPause")->getSignal()->connect(boost::bind(&toggle_agent_pause, _2));
gSavedSettings.getControl("ShowNavbarNavigationPanel")->getSignal()->connect(boost::bind(&toggle_show_navigation_panel, _2));
- gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
gSavedSettings.getControl("ShowMiniLocationPanel")->getSignal()->connect(boost::bind(&toggle_show_mini_location_panel, _2));
gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
gSavedSettings.getControl("UpdaterServiceSetting")->getSignal()->connect(boost::bind(&toggle_updater_service_active, _2));
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 19326c4e30..d6512207ae 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -114,8 +114,8 @@ void render_disconnected_background();
void display_startup()
{
if ( !gViewerWindow->getActive()
- || !gViewerWindow->mWindow->getVisible()
- || gViewerWindow->mWindow->getMinimized() )
+ || !gViewerWindow->getWindow()->getVisible()
+ || gViewerWindow->getWindow()->getMinimized() )
{
return;
}
@@ -157,7 +157,7 @@ void display_startup()
LLGLState::checkStates();
LLGLState::checkTextureChannels();
- gViewerWindow->mWindow->swapBuffers();
+ gViewerWindow->getWindow()->swapBuffers();
glClear(GL_DEPTH_BUFFER_BIT);
}
@@ -223,7 +223,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
{ //skip render on frames where window has been resized
gGL.flush();
glClear(GL_COLOR_BUFFER_BIT);
- gViewerWindow->mWindow->swapBuffers();
+ gViewerWindow->getWindow()->swapBuffers();
gPipeline.resizeScreenTexture();
gResizeScreenTexture = FALSE;
gWindowResized = FALSE;
@@ -260,8 +260,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
// In fact, must explicitly check the minimized state before drawing.
// Attempting to draw into a minimized window causes a GL error. JC
if ( !gViewerWindow->getActive()
- || !gViewerWindow->mWindow->getVisible()
- || gViewerWindow->mWindow->getMinimized() )
+ || !gViewerWindow->getWindow()->getVisible()
+ || gViewerWindow->getWindow()->getMinimized() )
{
// Clean up memory the pools may have allocated
if (rebuild)
@@ -1237,7 +1237,7 @@ void render_ui(F32 zoom_factor, int subfield)
if (gDisplaySwapBuffers)
{
LLFastTimer t(FTM_SWAP);
- gViewerWindow->mWindow->swapBuffers();
+ gViewerWindow->getWindow()->swapBuffers();
}
gDisplaySwapBuffers = TRUE;
}
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 8e2240981b..ba53540374 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -37,6 +37,7 @@
#include "llfloaterabout.h"
#include "llfloateranimpreview.h"
#include "llfloaterauction.h"
+#include "llfloateravatar.h"
#include "llfloateravatarpicker.h"
#include "llfloateravatartextures.h"
#include "llfloaterbeacons.h"
@@ -56,7 +57,7 @@
#include "llfloatereditwater.h"
#include "llfloaterenvironmentsettings.h"
#include "llfloaterevent.h"
-#include "llfloatersearch.h"
+#include "llfloaterdestinations.h"
#include "llfloaterfonttest.h"
#include "llfloatergesture.h"
#include "llfloatergodtools.h"
@@ -93,9 +94,10 @@
#include "llfloaterreporter.h"
#include "llfloaterscriptdebug.h"
#include "llfloaterscriptlimits.h"
+#include "llfloatersearch.h"
#include "llfloatersellland.h"
#include "llfloatersettingsdebug.h"
-#include "llfloatersidetraytab.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloatersnapshot.h"
#include "llfloatersounddevices.h"
#include "llfloatertelehub.h"
@@ -104,6 +106,7 @@
#include "llfloatertools.h"
#include "llfloatertos.h"
#include "llfloatertopobjects.h"
+#include "llfloatertoybox.h"
#include "llfloateruipreview.h"
#include "llfloatervoiceeffect.h"
#include "llfloaterwhitelistentry.h"
@@ -129,6 +132,7 @@
#include "llscriptfloater.h"
#include "llfloatermodelpreview.h"
#include "llcommandhandler.h"
+#include "llnearbychatbar.h"
// *NOTE: Please add files in alphabetical order to keep merges easy.
@@ -163,7 +167,9 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterAboutUtil::registerFloater();
LLFloaterReg::add("fast_timers", "floater_fast_timers.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFastTimerView>);
LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLand>);
+ LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>);
+ LLFloaterReg::add("avatar", "floater_avatar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatar>);
LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarPicker>);
LLFloaterReg::add("avatar_textures", "floater_avatar_textures.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarTextures>);
@@ -179,10 +185,12 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);
LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
- LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);
+ LLFloaterReg::add("chat_bar", "floater_chat_bar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChatBar>);
LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
+ LLFloaterReg::add("destinations", "floater_destinations.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDestinations>);
+
LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>);
LLFloaterReg::add("env_settings", "floater_environment_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEnvironmentSettings>);
LLFloaterReg::add("env_delete_preset", "floater_delete_env_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDeleteEnvPreset>);
@@ -205,7 +213,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("im_container", "floater_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloaterContainer>);
LLFloaterReg::add("im_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMWellWindow>);
LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>);
- LLFloaterReg::add("inventory", "floater_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInventory>);
+ LLFloaterReg::add("inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInspect>);
LLInspectAvatarUtil::registerFloater();
LLInspectGroupUtil::registerFloater();
@@ -234,11 +242,14 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>);
LLFloaterPayUtil::registerFloater();
+ LLFloaterReg::add("people", "floater_people.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
+ LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("postcard", "floater_postcard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostcard>);
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceProxy>);
LLFloaterReg::add("prefs_hardware_settings", "floater_hardware_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHardwareSettings>);
LLFloaterReg::add("perm_prefs", "floater_perm_prefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPerms>);
+ LLFloaterReg::add("picks", "floater_picks.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("pref_joystick", "floater_joystick.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterJoystick>);
LLFloaterReg::add("preview_anim", "floater_preview_animation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewAnim>, "preview");
LLFloaterReg::add("preview_gesture", "floater_preview_gesture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewGesture>, "preview");
@@ -257,6 +268,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("test_text_editor", "floater_test_text_editor.xml", &LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("test_widgets", "floater_test_widgets.xml", &LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("top_objects", "floater_top_objects.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTopObjects>);
+ LLFloaterReg::add("toybox", "floater_toybox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterToybox>);
LLFloaterReg::add("reporter", "floater_report_abuse.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterReporter>);
LLFloaterReg::add("reset_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterResetQueue>);
@@ -269,14 +281,14 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("script_limits", "floater_script_limits.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptLimits>);
LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
- LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>);
LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>);
LLFloaterReg::add("snapshot", "floater_snapshot.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSnapshot>);
LLFloaterReg::add("search", "floater_search.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSearch>);
- LLFloaterReg::add("profile", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWebContent>);
+ LLFloaterReg::add("profile", "floater_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);
+ LLFloaterReg::add("how_to", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);
LLFloaterUIPreviewUtil::registerFloater();
@@ -289,7 +301,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>);
LLFloaterReg::add("voice_effect", "floater_voice_effect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceEffect>);
- LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWebContent>);
+ LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);
LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>);
LLFloaterWindowSizeUtil::registerFloater();
LLFloaterReg::add("world_map", "floater_world_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWorldMap>);
diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp
index 3a3d4f3881..a8a918f259 100644
--- a/indra/newview/llviewerhelp.cpp
+++ b/indra/newview/llviewerhelp.cpp
@@ -69,15 +69,12 @@ LLHelpHandler gHelpHandler;
//////////////////////////////
// implement LLHelp interface
-void LLViewerHelp::showTopic(const std::string &topic)
+std::string LLViewerHelp::getURL(const std::string &topic)
{
// allow overriding the help server with a local help file
if( gSavedSettings.getBOOL("HelpUseLocal") )
{
- showHelp();
- LLFloaterHelpBrowser* helpbrowser = dynamic_cast<LLFloaterHelpBrowser*>(LLFloaterReg::getInstance("help_browser"));
- helpbrowser->navigateToLocalPage( "help-offline" , "index.html" );
- return;
+ return "__local";
}
// if the help topic is empty, use the default topic
@@ -99,11 +96,12 @@ void LLViewerHelp::showTopic(const std::string &topic)
}
}
- // work out the URL for this topic and display it
- showHelp();
-
- std::string helpURL = LLViewerHelpUtil::buildHelpURL( help_topic );
- setRawURL(helpURL);
+ return LLViewerHelpUtil::buildHelpURL( help_topic );
+}
+
+void LLViewerHelp::showTopic(const std::string& topic)
+{
+ LLFloaterReg::showInstance("help_browser", topic);
}
std::string LLViewerHelp::defaultTopic()
@@ -146,23 +144,3 @@ std::string LLViewerHelp::getTopicFromFocus()
return defaultTopic();
}
-// static
-void LLViewerHelp::showHelp()
-{
- LLFloaterReg::showInstance("help_browser");
-}
-
-// static
-void LLViewerHelp::setRawURL(std::string url)
-{
- LLFloaterHelpBrowser* helpbrowser = dynamic_cast<LLFloaterHelpBrowser*>(LLFloaterReg::getInstance("help_browser"));
- if (helpbrowser)
- {
- helpbrowser->openMedia(url);
- }
- else
- {
- llwarns << "Eep, help_browser floater not found" << llendl;
- }
-}
-
diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h
index 7612986227..a983012e2e 100644
--- a/indra/newview/llviewerhelp.h
+++ b/indra/newview/llviewerhelp.h
@@ -45,6 +45,8 @@ class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
/// display the specified help topic in the help viewer
/*virtual*/ void showTopic(const std::string &topic);
+ std::string getURL(const std::string& topic);
+
// return topic derived from viewer UI focus, else default topic
std::string getTopicFromFocus();
@@ -56,10 +58,6 @@ class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
// return topic to use for the top-level help, invoked by F1
/*virtual*/ std::string f1HelpTopic();
-
- private:
- static void showHelp(); // make sure help UI is visible & raised
- static void setRawURL(std::string url); // send URL to help UI
};
#endif // header guard
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index b22c6d2fd4..519d4fe7f8 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -34,7 +34,9 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llagentwearables.h"
+#include "llfloatersidepanelcontainer.h"
#include "llviewerfoldertype.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llviewercontrol.h"
#include "llconsole.h"
@@ -43,7 +45,6 @@
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llgesturemgr.h"
-#include "llsidetray.h"
#include "llinventorybridge.h"
#include "llinventorypanel.h"
@@ -220,7 +221,7 @@ public:
// support secondlife:///app/inventory/show
if (params[0].asString() == "show")
{
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD());
+ LLFloaterSidePanelContainer::showPanel("inventory", LLSD());
return true;
}
@@ -976,7 +977,7 @@ void ModifiedCOFCallback::fire(const LLUUID& inv_item)
if( gAgentCamera.cameraCustomizeAvatar() )
{
// If we're in appearance editing mode, the current tab may need to be refreshed
- LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
if (panel)
{
panel->showDefaultSubpart();
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 13dbc5e386..41b4dc01e8 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1488,7 +1488,8 @@ void LLViewerMedia::setOpenIDCookie()
new LLViewerMediaWebProfileResponder(raw_profile_url.getAuthority()),
headers);
- doOnetimeEarlyHTTPRequests();
+ // FUI: No longer perform the user_status query
+ //doOnetimeEarlyHTTPRequests();
}
}
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 754731b290..2345fbfd6a 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -30,6 +30,7 @@
// linden library includes
#include "llavatarnamecache.h" // IDEVO
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llcombobox.h"
#include "llinventorypanel.h"
#include "llnotifications.h"
@@ -41,7 +42,6 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "llagentpilot.h"
-#include "llbottomtray.h"
#include "llcompilequeue.h"
#include "llconsole.h"
#include "lldaycyclemanager.h"
@@ -82,7 +82,6 @@
#include "llrootview.h"
#include "llsceneview.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltextureview.h"
#include "lltoolcomp.h"
@@ -373,8 +372,6 @@ void set_underclothes_menu_options()
void init_menus()
{
- S32 top = gViewerWindow->getRootView()->getRect().getHeight();
-
// Initialize actions
initialize_menus();
@@ -446,11 +443,13 @@ void init_menus()
{
color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" );
}
+
+ LLView* menu_bar_holder = gViewerWindow->getRootView()->getChildView("menu_bar_holder");
+
gMenuBarView = LLUICtrlFactory::getInstance()->createFromFile<LLMenuBarGL>("menu_viewer.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
- gMenuBarView->setRect(LLRect(0, top, 0, top - MENU_BAR_HEIGHT));
+ gMenuBarView->setRect(LLRect(0, menu_bar_holder->getRect().mTop, 0, menu_bar_holder->getRect().mTop - MENU_BAR_HEIGHT));
gMenuBarView->setBackgroundColor( color );
- LLView* menu_bar_holder = gViewerWindow->getRootView()->getChildView("menu_bar_holder");
menu_bar_holder->addChild(gMenuBarView);
gViewerWindow->setMenuBackgroundColor(false,
@@ -863,51 +862,6 @@ class LLAdvancedCheckFeature : public view_listener_t
}
};
-void toggle_destination_and_avatar_picker(const LLSD& show)
-{
- S32 panel_idx = show.isDefined() ? show.asInteger() : -1;
- LLView* container = gViewerWindow->getRootView()->findChildView("avatar_picker_and_destination_guide_container");
- if (!container) return;
-
- LLMediaCtrl* destinations = container->findChild<LLMediaCtrl>("destination_guide_contents");
- LLMediaCtrl* avatar_picker = container->findChild<LLMediaCtrl>("avatar_picker_contents");
- if (!destinations || !avatar_picker) return;
-
- LLButton* avatar_btn = gViewerWindow->getRootView()->getChildView("bottom_tray")->getChild<LLButton>("avatar_btn");
- LLButton* destination_btn = gViewerWindow->getRootView()->getChildView("bottom_tray")->getChild<LLButton>("destination_btn");
-
- if (panel_idx == 0
- && !destinations->getVisible())
- { // opening destinations guide
- container->setVisible(true);
- destinations->setVisible(true);
- avatar_picker->setVisible(false);
- LLFirstUse::notUsingDestinationGuide(false);
- avatar_btn->setToggleState(false);
- destination_btn->setToggleState(true);
- gSavedSettings.setS32("DestinationsAndAvatarsVisibility", 0);
- }
- else if (panel_idx == 1
- && !avatar_picker->getVisible())
- { // opening avatar picker
- container->setVisible(true);
- destinations->setVisible(false);
- avatar_picker->setVisible(true);
- avatar_btn->setToggleState(true);
- destination_btn->setToggleState(false);
- gSavedSettings.setS32("DestinationsAndAvatarsVisibility", 1);
- }
- else
- { // toggling off dest guide or avatar picker
- container->setVisible(false);
- destinations->setVisible(false);
- avatar_picker->setVisible(false);
- avatar_btn->setToggleState(false);
- destination_btn->setToggleState(false);
- gSavedSettings.setS32("DestinationsAndAvatarsVisibility", -1);
- }
-};
-
//////////////////
// INFO DISPLAY //
@@ -2633,7 +2587,7 @@ void handle_object_inspect()
{
LLSD key;
key["task"] = "task";
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("inventory", key);
}
/*
@@ -3158,6 +3112,12 @@ void handle_avatar_eject(const LLSD& avatar_id)
}
}
+bool my_profile_visible()
+{
+ LLFloater* floaterp = LLFloaterReg::findInstance("profile", LLSD().with("id", gAgent.getID()));
+ return floaterp && floaterp->isInVisibleChain();
+}
+
bool enable_freeze_eject(const LLSD& avatar_id)
{
// Use avatar_id if available, otherwise default to right-click avatar
@@ -3392,15 +3352,6 @@ bool enable_sitdown_self()
return isAgentAvatarValid() && !gAgentAvatarp->isSitting() && !gAgent.getFlying();
}
-// Used from the login screen to aid in UI work on side tray
-void handle_show_side_tray()
-{
- LLSideTray* side_tray = LLSideTray::getInstance();
- LLView* root = gViewerWindow->getRootView();
- // automatically removes and re-adds if there already
- root->addChild(side_tray);
-}
-
// Toggle one of "People" panel tabs in side tray.
class LLTogglePanelPeopleTab : public view_listener_t
{
@@ -3411,21 +3362,11 @@ class LLTogglePanelPeopleTab : public view_listener_t
LLSD param;
param["people_panel_tab_name"] = panel_name;
- static LLPanel* friends_panel = NULL;
- static LLPanel* groups_panel = NULL;
- static LLPanel* nearby_panel = NULL;
-
- if (panel_name == "friends_panel")
- {
- return togglePeoplePanel(friends_panel, panel_name, param);
- }
- else if (panel_name == "groups_panel")
+ if ( panel_name == "friends_panel"
+ || panel_name == "groups_panel"
+ || panel_name == "nearby_panel")
{
- return togglePeoplePanel(groups_panel, panel_name, param);
- }
- else if (panel_name == "nearby_panel")
- {
- return togglePeoplePanel(nearby_panel, panel_name, param);
+ return togglePeoplePanel(panel_name, param);
}
else
{
@@ -3433,16 +3374,20 @@ class LLTogglePanelPeopleTab : public view_listener_t
}
}
- static bool togglePeoplePanel(LLPanel* &panel, const std::string& panel_name, const LLSD& param)
+ static bool togglePeoplePanel(const std::string& panel_name, const LLSD& param)
{
+ LLPanel *panel = LLFloaterSidePanelContainer::getPanel("people", panel_name);
if(!panel)
+ return false;
+
+ if (panel->isInVisibleChain())
{
- panel = LLSideTray::getInstance()->getPanel(panel_name);
- if(!panel)
- return false;
+ LLFloaterReg::hideInstance("people");
+ }
+ else
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", param) ;
}
-
- LLSideTray::getInstance()->togglePanel(panel, "panel_people", param);
return true;
}
@@ -3757,7 +3702,7 @@ void handle_reset_view()
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit selector should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
}
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
@@ -3822,6 +3767,43 @@ class LLViewDefaultUISize : public view_listener_t
}
};
+class LLViewToggleUI : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLNotification::Params params("ConfirmHideUI");
+ params.functor.function(boost::bind(&LLViewToggleUI::confirm, this, _1, _2));
+ LLSD substitutions;
+#if LL_DARWIN
+ substitutions["SHORTCUT"] = "Cmd+Shift+U";
+#else
+ substitutions["SHORTCUT"] = "Ctrl+Shift+U";
+#endif
+ params.substitutions = substitutions;
+ if (gViewerWindow->getUIVisibility())
+ {
+ // hiding, so show notification
+ LLNotifications::instance().add(params);
+ }
+ else
+ {
+ LLNotifications::instance().forceResponse(params, 0);
+ }
+
+ return true;
+ }
+
+ void confirm(const LLSD& notification, const LLSD& response)
+ {
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+ if (option == 0) // OK
+ {
+ gViewerWindow->setUIVisibility(!gViewerWindow->getUIVisibility());
+ }
+ }
+};
+
class LLEditDuplicate : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -4539,6 +4521,13 @@ bool tools_visible_take_object()
return !is_selection_buy_not_take();
}
+bool enable_how_to_visible(const LLSD& param)
+{
+ LLFloaterWebContent::Params p;
+ p.target = "__help_how_to";
+ return LLFloaterReg::instanceVisible("how_to", p);
+}
+
class LLToolsEnableBuyOrTake : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -5324,7 +5313,7 @@ class LLWorldCreateLandmark : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
return true;
}
@@ -5334,7 +5323,7 @@ class LLWorldPlaceProfile : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
return true;
}
@@ -5430,6 +5419,34 @@ class LLAvatarAddFriend : public view_listener_t
}
};
+
+class LLAvatarToggleMyProfile : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLFloater* instance = LLAvatarActions::getProfileFloater(gAgent.getID());
+ if (LLFloater::isMinimized(instance))
+ {
+ instance->setMinimized(FALSE);
+ instance->setFocus(TRUE);
+ }
+ else if (!LLFloater::isShown(instance))
+ {
+ LLAvatarActions::showProfile(gAgent.getID());
+ }
+ else if (!instance->hasFocus() && !instance->getIsChrome())
+ {
+ instance->setFocus(TRUE);
+ }
+ else
+ {
+ instance->closeFloater();
+ }
+ return true;
+ }
+};
+
+
class LLAvatarAddContact : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -5575,22 +5592,22 @@ void handle_viewer_disable_message_log(void*)
void handle_customize_avatar()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
}
void handle_edit_outfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
void handle_edit_shape()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_shape"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_shape"));
}
void handle_edit_physics()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_physics"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_physics"));
}
void handle_report_abuse()
@@ -5660,18 +5677,18 @@ class LLShowSidetrayPanel : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- std::string panel_name = userdata.asString();
+ std::string floater_name = userdata.asString();
- LLPanel* panel = LLSideTray::getInstance()->getPanel(panel_name);
+ LLPanel* panel = LLFloaterSidePanelContainer::getPanel(floater_name);
if (panel)
{
if (panel->isInVisibleChain())
{
- LLSideTray::getInstance()->hidePanel(panel_name);
+ LLFloaterReg::getInstance(floater_name)->closeFloater();
}
else
{
- LLSideTray::getInstance()->showPanel(panel_name);
+ LLFloaterReg::getInstance(floater_name)->openFloater();
}
}
return true;
@@ -5682,9 +5699,9 @@ class LLSidetrayPanelVisible : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- std::string panel_name = userdata.asString();
+ std::string floater_name = userdata.asString();
// Toggle the panel
- if (LLSideTray::getInstance()->isPanelActive(panel_name))
+ if (LLFloaterReg::getInstance(floater_name)->isInVisibleChain())
{
return true;
}
@@ -6870,6 +6887,22 @@ class LLToolsEnableSaveToObjectInventory : public view_listener_t
}
};
+class LLToggleHowTo : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLFloaterWebContent::Params p;
+ std::string url = gSavedSettings.getString("HowToHelpURL");
+ p.url = LLWeb::expandURLSubstitutions(url, LLSD());
+ p.show_chrome = false;
+ p.target = "__help_how_to";
+ p.show_page_title = false;
+ p.preferred_media_size = LLRect(0, 460, 335, 0);
+
+ LLFloaterReg::toggleInstanceOrBringToFront("how_to", p);
+ return true;
+ }
+};
class LLViewEnableMouselook : public view_listener_t
{
@@ -7289,7 +7322,7 @@ void handle_web_browser_test(const LLSD& param)
void handle_web_content_test(const LLSD& param)
{
std::string url = param.asString();
- LLWeb::loadWebURLInternal(url);
+ LLWeb::loadURLInternal(url);
}
void handle_buy_currency_test(void*)
@@ -7766,7 +7799,7 @@ class LLWorldToggleMovementControls : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- LLBottomTray::getInstance()->toggleMovementControls();
+ LLFloaterReg::toggleInstanceOrBringToFront("moveview");
return true;
}
};
@@ -7775,7 +7808,7 @@ class LLWorldToggleCameraControls : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- LLBottomTray::getInstance()->toggleCameraControls();
+ LLFloaterReg::toggleInstanceOrBringToFront("camera");
return true;
}
};
@@ -7823,55 +7856,6 @@ class LLToggleUIHints : public view_listener_t
}
};
-class LLCheckSessionsSettings : public view_listener_t
-{
- bool handleEvent(const LLSD& userdata)
- {
- std::string expected = userdata.asString();
- return gSavedSettings.getString("SessionSettingsFile") == expected;
- }
-};
-
-class LLChangeMode : public view_listener_t
-{
- bool handleEvent(const LLSD& userdata)
- {
- std::string mode = userdata.asString();
- if (mode == "basic")
- {
- if (gSavedSettings.getString("SessionSettingsFile") != "settings_minimal.xml")
- {
- LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "settings_minimal.xml", _1, _2));
- }
- return true;
- }
- else if (mode == "advanced")
- {
- if (gSavedSettings.getString("SessionSettingsFile") != "")
- {
- LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "", _1, _2));
- }
- return true;
- }
- return false;
- }
-
- static void onModeChangeConfirm(const std::string& new_session_settings_file, const LLSD& notification, const LLSD& response)
- {
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- switch (option)
- {
- case 0:
- gSavedSettings.getControl("SessionSettingsFile")->set(new_session_settings_file);
- LLAppViewer::instance()->requestQuit();
- break;
- case 1:
- default:
- break;
- }
- }
-};
-
void LLUploadCostCalculator::calculateCost()
{
S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
@@ -8007,6 +7991,7 @@ void initialize_menus()
view_listener_t::addMenu(new LLZoomer(1/1.2f), "View.ZoomIn");
view_listener_t::addMenu(new LLZoomer(DEFAULT_FIELD_OF_VIEW, false), "View.ZoomDefault");
view_listener_t::addMenu(new LLViewDefaultUISize(), "View.DefaultUISize");
+ view_listener_t::addMenu(new LLViewToggleUI(), "View.ToggleUI");
view_listener_t::addMenu(new LLViewEnableMouselook(), "View.EnableMouselook");
view_listener_t::addMenu(new LLViewEnableJoystickFlycam(), "View.EnableJoystickFlycam");
@@ -8082,6 +8067,8 @@ void initialize_menus()
// Help menu
// most items use the ShowFloater method
+ view_listener_t::addMenu(new LLToggleHowTo(), "Help.ToggleHowTo");
+ enable.add("Help.HowToVisible", boost::bind(&enable_how_to_visible, _2));
// Advanced menu
view_listener_t::addMenu(new LLAdvancedToggleConsole(), "Advanced.ToggleConsole");
@@ -8160,7 +8147,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedCheckDebugKeys(), "Advanced.CheckDebugKeys");
view_listener_t::addMenu(new LLAdvancedToggleDebugWindowProc(), "Advanced.ToggleDebugWindowProc");
view_listener_t::addMenu(new LLAdvancedCheckDebugWindowProc(), "Advanced.CheckDebugWindowProc");
- commit.add("Advanced.ShowSideTray", boost::bind(&handle_show_side_tray));
// Advanced > XUI
commit.add("Advanced.ReloadColorSettings", boost::bind(&LLUIColorTable::loadFromSettings, LLUIColorTable::getInstance()));
@@ -8275,6 +8261,10 @@ void initialize_menus()
view_listener_t::addMenu(new LLAvatarCall(), "Avatar.Call");
enable.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall));
view_listener_t::addMenu(new LLAvatarReportAbuse(), "Avatar.ReportAbuse");
+ view_listener_t::addMenu(new LLAvatarToggleMyProfile(), "Avatar.ToggleMyProfile");
+ enable.add("Avatar.IsMyProfileOpen", boost::bind(&my_profile_visible));
+
+ commit.add("Avatar.OpenMarketplace", boost::bind(&LLWeb::loadURLExternal, gSavedSettings.getString("MarketplaceURL")));
view_listener_t::addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend");
enable.add("Avatar.EnableFreezeEject", boost::bind(&enable_freeze_eject, _2));
@@ -8359,11 +8349,5 @@ void initialize_menus()
view_listener_t::addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD");
view_listener_t::addMenu(new LLEditableSelected(), "EditableSelected");
view_listener_t::addMenu(new LLEditableSelectedMono(), "EditableSelectedMono");
-
view_listener_t::addMenu(new LLToggleUIHints(), "ToggleUIHints");
- view_listener_t::addMenu(new LLCheckSessionsSettings(), "CheckSessionSettings");
- view_listener_t::addMenu(new LLChangeMode(), "ChangeMode");
-
- commit.add("Destination.show", boost::bind(&toggle_destination_and_avatar_picker, 0));
- commit.add("Avatar.show", boost::bind(&toggle_destination_and_avatar_picker, 1));
}
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index b4e239b0cd..87cb4efbc4 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -126,8 +126,6 @@ bool enable_pay_object();
bool enable_buy_object();
bool handle_go_to();
-void toggle_destination_and_avatar_picker(const LLSD& show);
-
// Export to XML or Collada
void handle_export_selected( void * );
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 8139f7deda..b9293b3b31 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -149,7 +149,7 @@ void LLFilePickerThread::run()
//static
void LLFilePickerThread::initClass()
{
- sMutex = new LLMutex();
+ sMutex = new LLMutex(NULL);
}
//static
@@ -816,7 +816,8 @@ LLUUID upload_new_resource(
uuid = tid.makeAssetID(gAgent.getSecureSessionID());
// copy this file into the vfs for upload
S32 file_size;
- LLAPRFile infile(filename, LL_APR_RB, &file_size);
+ LLAPRFile infile ;
+ infile.open(filename, LL_APR_RB, NULL, &file_size);
if (infile.getFileHandle())
{
LLVFile file(gVFS, uuid, asset_type, LLVFile::WRITE);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 74ee918bfe..f0d53668d4 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -61,6 +61,7 @@
#include "llfloaterlandholdings.h"
#include "llfloaterpostcard.h"
#include "llfloaterpreference.h"
+#include "llfloatersidepanelcontainer.h"
#include "llhudeffecttrail.h"
#include "llhudmanager.h"
#include "llinventoryfunctions.h"
@@ -73,7 +74,6 @@
#include "llrecentpeople.h"
#include "llscriptfloater.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstartup.h"
#include "llsky.h"
#include "llslurl.h"
@@ -1192,9 +1192,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
LLInventoryCategory* parent_folder = gInventory.getCategory(item->getParentUUID());
if ("inventory_handler" == from_name)
{
- //we have to filter inventory_handler messages to avoid notification displaying
- LLSideTray::getInstance()->showPanel("panel_places",
- LLSD().with("type", "landmark").with("id", item->getUUID()));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id", item->getUUID()));
}
else if("group_offer" == from_name)
{
@@ -1203,7 +1201,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
LLSD args;
args["type"] = "landmark";
args["id"] = obj_id;
- LLSideTray::getInstance()->showPanel("panel_places", args);
+ LLFloaterSidePanelContainer::showPanel("places", args);
continue;
}
@@ -1809,8 +1807,11 @@ void LLOfferInfo::initRespondFunctionMap()
void inventory_offer_handler(LLOfferInfo* info)
{
- //If muted, don't even go through the messaging stuff. Just curtail the offer here.
- if (LLMuteList::getInstance()->isMuted(info->mFromID, info->mFromName))
+ // If muted, don't even go through the messaging stuff. Just curtail the offer here.
+ // Passing in a null UUID handles the case of where you have muted one of your own objects by_name.
+ // The solution for STORM-1297 seems to handle the cases where the object is owned by someone else.
+ if (LLMuteList::getInstance()->isMuted(info->mFromID, info->mFromName) ||
+ LLMuteList::getInstance()->isMuted(LLUUID::null, info->mFromName))
{
info->forceResponse(IOR_MUTE);
return;
@@ -2190,7 +2191,7 @@ void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::string m
// Treat like a system message and put in chat history.
chat.mText = av_name.getCompleteName() + ": " + message;
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
{
nearby_chat->addMessage(chat);
@@ -2752,7 +2753,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// Note: lie to Nearby Chat, pretending that this is NOT an IM, because
// IMs from obejcts don't open IM sessions.
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(SYSTEM_FROM != name && nearby_chat)
{
chat.mOwnerID = from_id;
@@ -6801,7 +6802,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
LLPanelLandCovenant::updateEstateOwnerName(owner_name);
LLFloaterBuyLand::updateEstateOwnerName(owner_name);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
+ LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel<LLPanelPlaceProfile>("places", "panel_place_profile");
if (panel)
{
panel->updateEstateName(estate_name);
@@ -6935,7 +6936,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
LLPanelLandCovenant::updateCovenantText(covenant_text);
LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
+ LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel<LLPanelPlaceProfile>("places", "panel_place_profile");
if (panel)
{
panel->updateCovenantText(covenant_text);
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index d81e67bfe2..d81e67bfe2 100755..100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 0fb94bc44b..c88122f22c 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -854,7 +854,7 @@ void send_stats()
body["DisplayNamesEnabled"] = gSavedSettings.getBOOL("UseDisplayNames");
body["DisplayNamesShowUsername"] = gSavedSettings.getBOOL("NameTagShowUsernames");
- body["MinimalSkin"] = !gSavedSettings.getString("SessionSettingsFile").empty();
+ body["MinimalSkin"] = false;
LLViewerStats::getInstance()->addToMessage(body);
LLHTTPClient::post(url, body, new ViewerStatsResponder());
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 4798bb536f..0a9fae68a6 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -32,6 +32,7 @@
#include "llaudioengine.h"
#include "llavataractions.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llfocusmgr.h"
#include "llinventorybridge.h"
@@ -50,7 +51,6 @@
#include "llpreviewtexture.h"
#include "llscrollbar.h"
#include "llscrollcontainer.h"
-#include "llsidetray.h"
#include "lltooldraganddrop.h"
#include "lltooltip.h"
#include "lltrans.h"
@@ -80,7 +80,7 @@ public:
LLSD key;
key["type"] = "landmark";
key["id"] = landmark_inv_id;
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
static void processForeignLandmark(LLLandmark* landmark,
const LLUUID& object_id, const LLUUID& notecard_inventory_id,
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 30ef8b8a29..c64488251a 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1342,7 +1342,8 @@ LLUIImagePtr LLUIImageList::getUIImageByID(const LLUUID& image_id, S32 priority)
const BOOL use_mips = FALSE;
const LLRect scale_rect = LLRect::null;
- return loadUIImageByID(image_id, use_mips, scale_rect, (LLViewerTexture::EBoostLevel)priority);
+ const LLRect clip_rect = LLRect::null;
+ return loadUIImageByID(image_id, use_mips, scale_rect, clip_rect, (LLViewerTexture::EBoostLevel)priority);
}
LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priority)
@@ -1356,32 +1357,33 @@ LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priori
const BOOL use_mips = FALSE;
const LLRect scale_rect = LLRect::null;
- return loadUIImageByName(image_name, image_name, use_mips, scale_rect, (LLViewerTexture::EBoostLevel)priority);
+ const LLRect clip_rect = LLRect::null;
+ return loadUIImageByName(image_name, image_name, use_mips, scale_rect, clip_rect, (LLViewerTexture::EBoostLevel)priority);
}
LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std::string& filename,
- BOOL use_mips, const LLRect& scale_rect, LLViewerTexture::EBoostLevel boost_priority )
+ BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority )
{
if (boost_priority == LLViewerTexture::BOOST_NONE)
{
boost_priority = LLViewerTexture::BOOST_UI;
}
LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, MIPMAP_NO, boost_priority);
- return loadUIImage(imagep, name, use_mips, scale_rect);
+ return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect);
}
LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id,
- BOOL use_mips, const LLRect& scale_rect, LLViewerTexture::EBoostLevel boost_priority)
+ BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority)
{
if (boost_priority == LLViewerTexture::BOOST_NONE)
{
boost_priority = LLViewerTexture::BOOST_UI;
}
LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, MIPMAP_NO, boost_priority);
- return loadUIImage(imagep, id.asString(), use_mips, scale_rect);
+ return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect);
}
-LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect)
+LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect)
{
if (!imagep) return NULL;
@@ -1402,13 +1404,14 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st
LLUIImageLoadData* datap = new LLUIImageLoadData;
datap->mImageName = name;
datap->mImageScaleRegion = scale_rect;
+ datap->mImageClipRegion = clip_rect;
imagep->setLoadedCallback(onUIImageLoaded, 0, FALSE, FALSE, datap, NULL);
}
return new_imagep;
}
-LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect)
+LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect)
{
// look for existing image
uuid_ui_image_map_t::iterator found_it = mUIImages.find(name);
@@ -1418,7 +1421,7 @@ LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::s
llerrs << "UI Image " << name << " already loaded." << llendl;
}
- return loadUIImageByName(name, filename, use_mips, scale_rect);
+ return loadUIImageByName(name, filename, use_mips, scale_rect, clip_rect);
}
//static
@@ -1432,6 +1435,7 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v
LLUIImageLoadData* image_datap = (LLUIImageLoadData*)user_data;
std::string ui_image_name = image_datap->mImageName;
LLRect scale_rect = image_datap->mImageScaleRegion;
+ LLRect clip_rect = image_datap->mImageClipRegion;
if (final)
{
delete image_datap;
@@ -1448,9 +1452,21 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v
// from power-of-2 gl image
if (success && imagep.notNull() && src_vi && (src_vi->getUrl().compare(0, 7, "file://")==0))
{
- F32 clip_x = (F32)src_vi->getOriginalWidth() / (F32)src_vi->getFullWidth();
- F32 clip_y = (F32)src_vi->getOriginalHeight() / (F32)src_vi->getFullHeight();
- imagep->setClipRegion(LLRectf(0.f, clip_y, clip_x, 0.f));
+ F32 full_width = (F32)src_vi->getFullWidth();
+ F32 full_height = (F32)src_vi->getFullHeight();
+ F32 clip_x = (F32)src_vi->getOriginalWidth() / full_width;
+ F32 clip_y = (F32)src_vi->getOriginalHeight() / full_height;
+ if (clip_rect != LLRect::null)
+ {
+ imagep->setClipRegion(LLRectf(llclamp((F32)clip_rect.mLeft / full_width, 0.f, 1.f),
+ llclamp((F32)clip_rect.mTop / full_height, 0.f, 1.f),
+ llclamp((F32)clip_rect.mRight / full_width, 0.f, 1.f),
+ llclamp((F32)clip_rect.mBottom / full_height, 0.f, 1.f)));
+ }
+ else
+ {
+ imagep->setClipRegion(LLRectf(0.f, clip_y, clip_x, 0.f));
+ }
if (scale_rect != LLRect::null)
{
imagep->setScaleRegion(
@@ -1471,6 +1487,7 @@ struct UIImageDeclaration : public LLInitParam::Block<UIImageDeclaration>
Optional<std::string> file_name;
Optional<bool> preload;
Optional<LLRect> scale;
+ Optional<LLRect> clip;
Optional<bool> use_mips;
UIImageDeclaration()
@@ -1478,6 +1495,7 @@ struct UIImageDeclaration : public LLInitParam::Block<UIImageDeclaration>
file_name("file_name"),
preload("preload", false),
scale("scale"),
+ clip("clip"),
use_mips("use_mips", false)
{}
};
@@ -1572,7 +1590,7 @@ bool LLUIImageList::initFromFile()
{
continue;
}
- preloadUIImage(image.name, file_name, image.use_mips, image.scale);
+ preloadUIImage(image.name, file_name, image.use_mips, image.scale, image.clip);
}
if (cur_pass == PASS_DECODE_NOW && !gSavedSettings.getBOOL("NoPreload"))
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
index 7f4dd0ae88..e0a362596d 100644
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -220,24 +220,27 @@ public:
bool initFromFile();
- LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect);
+ LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect);
static void onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );
private:
LLPointer<LLUIImage> loadUIImageByName(const std::string& name, const std::string& filename,
BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,
+ const LLRect& clip_rect = LLRect::null,
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
LLPointer<LLUIImage> loadUIImageByID(const LLUUID& id,
BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,
+ const LLRect& clip_rect = LLRect::null,
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
- LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null);
+ LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null);
struct LLUIImageLoadData
{
std::string mImageName;
LLRect mImageScaleRegion;
+ LLRect mImageClipRegion;
};
typedef std::map< std::string, LLPointer<LLUIImage> > uuid_ui_image_map_t;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 98ae746ca7..8576d81196 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -85,6 +85,7 @@
// newview includes
#include "llagent.h"
#include "llbox.h"
+#include "llchicletbar.h"
#include "llconsole.h"
#include "llviewercontrol.h"
#include "llcylinder.h"
@@ -133,7 +134,6 @@
#include "llpreviewtexture.h"
#include "llprogressview.h"
#include "llresmgr.h"
-#include "llsidetray.h"
#include "llselectmgr.h"
#include "llrootview.h"
#include "llrendersphere.h"
@@ -148,6 +148,7 @@
#include "lltexturefetch.h"
#include "lltextureview.h"
#include "lltool.h"
+#include "lltoolbarview.h"
#include "lltoolcomp.h"
#include "lltooldraganddrop.h"
#include "lltoolface.h"
@@ -187,7 +188,6 @@
#include "llviewerjoystick.h"
#include "llviewernetwork.h"
#include "llpostprocess.h"
-#include "llbottomtray.h"
#include "llnearbychatbar.h"
#include "llagentui.h"
#include "llwearablelist.h"
@@ -940,6 +940,11 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK
// }
//}
+ // Mark the click as handled and return if we aren't within the root view to avoid spurious bugs
+ if( !mRootView->pointInView(x, y) )
+ {
+ return TRUE;
+ }
// Give the UI views a chance to process the click
if( mRootView->handleAnyMouseClick(x, y, mask, clicktype, down) )
{
@@ -1341,7 +1346,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated)
{
if (activated)
{
- mActive = TRUE;
+ mActive = true;
send_agent_resume();
gAgent.clearAFK();
@@ -1350,7 +1355,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated)
}
else
{
- mActive = FALSE;
+ mActive = false;
// if the user has chosen to go Away automatically after some time, then go Away when minimizing
if (gSavedSettings.getS32("AFKTimeout"))
@@ -1533,7 +1538,8 @@ LLViewerWindow::LLViewerWindow(
BOOL fullscreen, BOOL ignore_pixel_depth) // fullscreen is no longer used
:
mWindow(NULL),
- mActive(TRUE),
+ mActive(true),
+ mUIVisible(true),
mWindowRectRaw(0, height, width, 0),
mWindowRectScaled(0, height, width, 0),
mWorldViewRectRaw(0, height, width, 0),
@@ -1651,7 +1657,7 @@ LLViewerWindow::LLViewerWindow(
if (LLFeatureManager::getInstance()->isSafe()
|| (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion())
- || (gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass())
+ || (gSavedSettings.getString("LastGPUString") != LLFeatureManager::getInstance()->getGPUString())
|| (gSavedSettings.getBOOL("ProbeHardwareOnStartup")))
{
LLFeatureManager::getInstance()->applyRecommendedSettings();
@@ -1778,12 +1784,23 @@ void LLViewerWindow::initBase()
// placeholder widget that controls where "world" is rendered
mWorldViewPlaceholder = main_view->getChildView("world_view_rect")->getHandle();
- mNonSideTrayView = main_view->getChildView("non_side_tray_view")->getHandle();
- mFloaterViewHolder = main_view->getChildView("floater_view_holder")->getHandle();
mPopupView = main_view->getChild<LLPopupView>("popup_holder");
mHintHolder = main_view->getChild<LLView>("hint_holder")->getHandle();
mLoginPanelHolder = main_view->getChild<LLView>("login_panel_holder")->getHandle();
+ // Create the toolbar view
+ // *TODO: Eventually, suppress the existence of this debug setting and turn toolbar FUI on permanently
+ if (gSavedSettings.getBOOL("DebugToolbarFUI"))
+ {
+ // Get a pointer to the toolbar view holder
+ LLPanel* panel_holder = main_view->getChild<LLPanel>("toolbar_view_holder");
+ // Load the toolbar view from file
+ gToolBarView = LLUICtrlFactory::getInstance()->createFromFile<LLToolBarView>("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
+ gToolBarView->setShape(panel_holder->getLocalRect());
+ // Hide the toolbars for the moment: we'll make them visible after logging in world (see LLViewerWindow::initWorldUI())
+ gToolBarView->setVisible(FALSE);
+ }
+
// Constrain floaters to inside the menu and status bar regions.
gFloaterView = main_view->getChild<LLFloaterView>("Floater View");
gFloaterView->setFloaterSnapView(main_view->getChild<LLView>("floater_snap_region")->getHandle());
@@ -1843,13 +1860,12 @@ void LLViewerWindow::initWorldUI()
//getRootView()->sendChildToFront(gFloaterView);
//getRootView()->sendChildToFront(gSnapshotFloaterView);
- // new bottom panel
- LLPanel* bottom_tray_container = getRootView()->getChild<LLPanel>("bottom_tray_container");
- LLBottomTray* bottom_tray = LLBottomTray::getInstance();
- bottom_tray->setShape(bottom_tray_container->getLocalRect());
- bottom_tray->setFollowsAll();
- bottom_tray_container->addChild(bottom_tray);
- bottom_tray_container->setVisible(TRUE);
+ LLPanel* chiclet_container = getRootView()->getChild<LLPanel>("chiclet_container");
+ LLChicletBar* chiclet_bar = LLChicletBar::getInstance();
+ chiclet_bar->setShape(chiclet_container->getLocalRect());
+ chiclet_bar->setFollowsAll();
+ chiclet_container->addChild(chiclet_bar);
+ chiclet_container->setVisible(TRUE);
LLRect morph_view_rect = full_window;
morph_view_rect.stretch( -STATUS_BAR_HEIGHT );
@@ -1877,7 +1893,7 @@ void LLViewerWindow::initWorldUI()
gStatusBar->setShape(status_bar_container->getLocalRect());
// sync bg color with menu bar
gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor().get() );
- status_bar_container->addChild(gStatusBar);
+ status_bar_container->addChildInBack(gStatusBar);
status_bar_container->setVisible(TRUE);
// Navigation bar
@@ -1891,12 +1907,7 @@ void LLViewerWindow::initWorldUI()
if (!gSavedSettings.getBOOL("ShowNavbarNavigationPanel"))
{
- navbar->showNavigationPanel(FALSE);
- }
-
- if (!gSavedSettings.getBOOL("ShowNavbarFavoritesPanel"))
- {
- navbar->showFavoritesPanel(FALSE);
+ navbar->setVisible(FALSE);
}
// Top Info bar
@@ -1922,8 +1933,7 @@ void LLViewerWindow::initWorldUI()
hud_rect.mTop -= gMenuBarView->getRect().getHeight();
}
gHUDView = new LLHUDView(hud_rect);
- // put behind everything else in the UI
- getRootView()->addChildInBack(gHUDView);
+ getRootView()->addChild(gHUDView);
}
LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container");
@@ -1931,40 +1941,30 @@ void LLViewerWindow::initWorldUI()
panel_ssf_container->addChild(panel_stand_stop_flying);
panel_ssf_container->setVisible(TRUE);
- // put sidetray in container
- LLPanel* side_tray_container = getRootView()->getChild<LLPanel>("side_tray_container");
- LLSideTray* sidetrayp = LLSideTray::getInstance();
- sidetrayp->setShape(side_tray_container->getLocalRect());
- // don't follow right edge to avoid spurious resizes, since we are using a fixed width layout
- sidetrayp->setFollows(FOLLOWS_LEFT|FOLLOWS_TOP|FOLLOWS_BOTTOM);
- side_tray_container->addChild(sidetrayp);
- side_tray_container->setVisible(FALSE);
-
- // put sidetray buttons in their own panel
- LLPanel* buttons_panel = sidetrayp->getButtonsPanel();
- LLPanel* buttons_panel_container = getRootView()->getChild<LLPanel>("side_bar_tabs");
- buttons_panel->setShape(buttons_panel_container->getLocalRect());
- buttons_panel->setFollowsAll();
- buttons_panel_container->addChild(buttons_panel);
-
- LLView* avatar_picker_destination_guide_container = gViewerWindow->getRootView()->getChild<LLView>("avatar_picker_and_destination_guide_container");
- avatar_picker_destination_guide_container->getChild<LLButton>("close")->setCommitCallback(boost::bind(toggle_destination_and_avatar_picker, LLSD()));
- LLMediaCtrl* destinations = avatar_picker_destination_guide_container->findChild<LLMediaCtrl>("destination_guide_contents");
- LLMediaCtrl* avatar_picker = avatar_picker_destination_guide_container->findChild<LLMediaCtrl>("avatar_picker_contents");
+ // Load and make the toolbars visible
+ // Note: we need to load the toolbars only *after* the user is logged in and IW
+ if (gToolBarView)
+ {
+ gToolBarView->loadToolbars();
+ gToolBarView->setVisible(TRUE);
+ }
+
+ LLMediaCtrl* destinations = LLFloaterReg::getInstance("destinations")->getChild<LLMediaCtrl>("destination_guide_contents");
if (destinations)
{
destinations->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
- destinations->navigateTo(gSavedSettings.getString("DestinationGuideURL"), "text/html");
+ std::string url = gSavedSettings.getString("DestinationGuideURL");
+ url = LLWeb::expandURLSubstitutions(url, LLSD());
+ destinations->navigateTo(url, "text/html");
}
-
+ LLMediaCtrl* avatar_picker = LLFloaterReg::getInstance("avatar")->findChild<LLMediaCtrl>("avatar_picker_contents");
if (avatar_picker)
{
avatar_picker->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
- avatar_picker->navigateTo(gSavedSettings.getString("AvatarPickerURL"), "text/html");
+ std::string url = gSavedSettings.getString("AvatarPickerURL");
+ url = LLWeb::expandURLSubstitutions(url, LLSD());
+ avatar_picker->navigateTo(url, "text/html");
}
-
- // show destinations by default
- toggle_destination_and_avatar_picker(gSavedSettings.getS32("DestinationsAndAvatarsVisibility"));
}
// Destroy the UI
@@ -1990,7 +1990,7 @@ void LLViewerWindow::shutdownViews()
// *TODO: Make LLNavigationBar part of gViewerWindow
if (LLNavigationBar::instanceExists())
{
- delete LLNavigationBar::getInstance();
+ delete LLNavigationBar::getInstance();
}
// destroy menus after instantiating navbar above, as it needs
@@ -2006,6 +2006,7 @@ void LLViewerWindow::shutdownViews()
gIMMgr = NULL;
gToolTipView = NULL;
+ gToolBarView = NULL;
gFloaterView = NULL;
gMorphView = NULL;
@@ -2177,10 +2178,10 @@ void LLViewerWindow::reshape(S32 width, S32 height)
// Hide normal UI when a logon fails
void LLViewerWindow::setNormalControlsVisible( BOOL visible )
{
- if(LLBottomTray::instanceExists())
+ if(LLChicletBar::instanceExists())
{
- LLBottomTray::getInstance()->setVisible(visible);
- LLBottomTray::getInstance()->setEnabled(visible);
+ LLChicletBar::getInstance()->setVisible(visible);
+ LLChicletBar::getInstance()->setEnabled(visible);
}
if ( gMenuBarView )
@@ -2202,7 +2203,9 @@ void LLViewerWindow::setNormalControlsVisible( BOOL visible )
LLNavigationBar* navbarp = LLUI::getRootView()->findChild<LLNavigationBar>("navigation_bar");
if (navbarp)
{
- navbarp->setVisible( visible );
+ // when it's time to show navigation bar we need to ensure that the user wants to see it
+ // i.e. ShowNavbarNavigationPanel option is true
+ navbarp->setVisible( visible && gSavedSettings.getBOOL("ShowNavbarNavigationPanel") );
}
}
@@ -2473,7 +2476,12 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
// Traverses up the hierarchy
if( keyboard_focus )
{
- LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
+ LLNearbyChatBar* nearby_chat = LLFloaterReg::findTypedInstance<LLNearbyChatBar>("chat_bar");
+
+ if (nearby_chat)
+ {
+ LLLineEditor* chat_editor = nearby_chat->getChatBox();
+
// arrow keys move avatar while chatting hack
if (chat_editor && chat_editor->hasFocus())
{
@@ -2504,7 +2512,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
}
}
}
-
+ }
if (keyboard_focus->handleKey(key, mask, FALSE))
{
return TRUE;
@@ -2535,11 +2543,11 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
if ( gSavedSettings.getS32("LetterKeysFocusChatBar") && !gAgentCamera.cameraMouselook() &&
!keyboard_focus && key < 0x80 && (mask == MASK_NONE || mask == MASK_SHIFT) )
{
- LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
+ LLLineEditor* chat_editor = LLFloaterReg::getTypedInstance<LLNearbyChatBar>("chat_bar")->getChatBox();
if (chat_editor)
{
// passing NULL here, character will be added later when it is handled by character handler.
- LLBottomTray::getInstance()->getNearbyChatBar()->startChat(NULL);
+ LLNearbyChatBar::getInstance()->startChat(NULL);
return TRUE;
}
}
@@ -3310,9 +3318,6 @@ void LLViewerWindow::updateKeyboardFocus()
// make sure floater visible order is in sync with tab order
gFloaterView->syncFloaterTabOrder();
}
-
- if(LLSideTray::instanceCreated())//just getInstance will create sidetray. we don't want this
- LLSideTray::getInstance()->highlightFocused();
}
static LLFastTimer::DeclareTimer FTM_UPDATE_WORLD_VIEW("Update World View");
@@ -3336,12 +3341,6 @@ void LLViewerWindow::updateWorldViewRect(bool use_full_window)
new_world_rect.mTop = llround((F32)new_world_rect.mTop * mDisplayScale.mV[VY]);
}
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
- {
- // use right edge of window, ignoring sidebar
- new_world_rect.mRight = mWindowRectRaw.mRight;
- }
-
if (mWorldViewRectRaw != new_world_rect)
{
mWorldViewRectRaw = new_world_rect;
@@ -4099,7 +4098,7 @@ static S32 BORDERWIDTH = 0;
void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
{
LLCoordScreen size;
- gViewerWindow->mWindow->getSize(&size);
+ gViewerWindow->getWindow()->getSize(&size);
if ( (size.mX != new_width + BORDERWIDTH)
||(size.mY != new_height + BORDERHEIGHT))
{
@@ -4110,7 +4109,7 @@ void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
BORDERHEIGHT = size.mY- y;
LLCoordScreen new_size(new_width + BORDERWIDTH,
new_height + BORDERHEIGHT);
- gViewerWindow->mWindow->setSize(new_size);
+ gViewerWindow->getWindow()->setSize(new_size);
}
}
@@ -4937,8 +4936,8 @@ S32 LLViewerWindow::getChatConsoleBottomPad()
{
S32 offset = 0;
- if(LLBottomTray::instanceExists())
- offset += LLBottomTray::getInstance()->getRect().getHeight();
+ if(gToolBarView)
+ offset += gToolBarView->getChild<LLView>("bottom_toolbar_panel")->getRect().getHeight();
return offset;
}
@@ -4994,6 +4993,35 @@ bool LLViewerWindow::onAlert(const LLSD& notify)
return false;
}
+void LLViewerWindow::setUIVisibility(bool visible)
+{
+ mUIVisible = visible;
+
+ if (!visible)
+ {
+ gAgentCamera.changeCameraToThirdPerson(FALSE);
+ gFloaterView->hideAllFloaters();
+ }
+ else
+ {
+ gFloaterView->showHiddenFloaters();
+ }
+
+ if (gToolBarView)
+ {
+ gToolBarView->setToolBarsVisible(visible);
+ }
+
+ mRootView->getChildView("topinfo_bar_container")->setVisible(visible);
+ mRootView->getChildView("nav_bar_container")->setVisible(visible);
+ mRootView->getChildView("status_bar_container")->setVisible(visible);
+}
+
+bool LLViewerWindow::getUIVisibility()
+{
+ return mUIVisible;
+}
+
////////////////////////////////////////////////////////////////////////////
//
// LLPickInfo
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index d35feb4667..d10b06f121 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -144,6 +144,8 @@ public:
void adjustRectanglesForFirstUse(const LLRect& window);
void adjustControlRectanglesForFirstUse(const LLRect& window);
void initWorldUI();
+ void setUIVisibility(bool);
+ bool getUIVisibility();
BOOL handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down);
@@ -283,8 +285,7 @@ public:
void updateKeyboardFocus();
void updateWorldViewRect(bool use_full_window=false);
- LLView* getNonSideTrayView() { return mNonSideTrayView.get(); }
- LLView* getFloaterViewHolder() { return mFloaterViewHolder.get(); }
+ LLView* getToolBarHolder() { return mToolBarHolder.get(); }
LLView* getHintHolder() { return mHintHolder.get(); }
LLView* getLoginPanelHolder() { return mLoginPanelHolder.get(); }
BOOL handleKey(KEY key, MASK mask);
@@ -395,11 +396,10 @@ private:
S32 getChatConsoleBottomPad(); // Vertical padding for child console rect, varied by bottom clutter
LLRect getChatConsoleRect(); // Get optimal cosole rect.
-public:
+private:
LLWindow* mWindow; // graphical window object
-
-protected:
- BOOL mActive;
+ bool mActive;
+ bool mUIVisible;
LLRect mWindowRectRaw; // whole window, including UI
LLRect mWindowRectScaled; // whole window, scaled by UI size
@@ -445,8 +445,7 @@ protected:
std::string mInitAlert; // Window / GL initialization requires an alert
LLHandle<LLView> mWorldViewPlaceholder; // widget that spans the portion of screen dedicated to rendering the 3d world
- LLHandle<LLView> mNonSideTrayView; // parent of world view + bottom bar, etc...everything but the side tray
- LLHandle<LLView> mFloaterViewHolder; // container for floater_view
+ LLHandle<LLView> mToolBarHolder; // container for toolbars
LLHandle<LLView> mHintHolder; // container for hints
LLHandle<LLView> mLoginPanelHolder; // container for login panel
LLPopupView* mPopupView; // container for transient popups
@@ -460,13 +459,11 @@ protected:
boost::scoped_ptr<LLWindowListener> mWindowListener;
boost::scoped_ptr<LLViewerWindowListener> mViewerWindowListener;
-protected:
static std::string sSnapshotBaseName;
static std::string sSnapshotDir;
static std::string sMovieBaseName;
-private:
// Object temporarily hovered over while dragging
LLPointer<LLViewerObject> mDragHoveredObject;
};
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e457cc3e70..bdab250b49 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7524,7 +7524,8 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
// static
void LLVOAvatar::dumpArchetypeXML( void* )
{
- LLAPRFile outfile(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER, "new archetype.xml"), LL_APR_WB);
+ LLAPRFile outfile;
+ outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"new archetype.xml"), LL_APR_WB );
apr_file_t* file = outfile.getFileHandle() ;
if (!file)
{
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index baf01ec066..7db19c5c1b 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -268,6 +268,7 @@ LLVOCache::LLVOCache():
mCacheSize(1)
{
mEnabled = gSavedSettings.getBOOL("ObjectCacheEnabled");
+ mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
}
LLVOCache::~LLVOCache()
@@ -277,6 +278,7 @@ LLVOCache::~LLVOCache()
writeCacheHeader();
clearCacheInMemory();
}
+ delete mLocalAPRFilePoolp;
}
void LLVOCache::setDirNames(ELLPath location)
@@ -433,7 +435,7 @@ void LLVOCache::removeFromCache(HeaderEntryInfo* entry)
std::string filename;
getObjectCacheFilename(entry->mHandle, filename);
- LLAPRFile::remove(filename);
+ LLAPRFile::remove(filename, mLocalAPRFilePoolp);
entry->mTime = INVALID_TIME ;
updateEntry(entry) ; //update the head file.
}
@@ -450,9 +452,9 @@ void LLVOCache::readCacheHeader()
clearCacheInMemory();
bool success = true ;
- if (LLAPRFile::isExist(mHeaderFileName))
+ if (LLAPRFile::isExist(mHeaderFileName, mLocalAPRFilePoolp))
{
- LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY);
+ LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY, mLocalAPRFilePoolp);
//read the meta element
success = check_read(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ;
@@ -537,7 +539,7 @@ void LLVOCache::writeCacheHeader()
bool success = true ;
{
- LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY);
+ LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
//write the meta element
success = check_write(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ;
@@ -575,7 +577,7 @@ void LLVOCache::writeCacheHeader()
BOOL LLVOCache::updateEntry(const HeaderEntryInfo* entry)
{
- LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY);
+ LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
apr_file.seek(APR_SET, entry->mIndex * sizeof(HeaderEntryInfo) + sizeof(HeaderMetaInfo)) ;
return check_write(&apr_file, (void*)entry, sizeof(HeaderEntryInfo)) ;
@@ -601,7 +603,7 @@ void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::voca
{
std::string filename;
getObjectCacheFilename(handle, filename);
- LLAPRFile apr_file(filename, APR_READ|APR_BINARY);
+ LLAPRFile apr_file(filename, APR_READ|APR_BINARY, mLocalAPRFilePoolp);
LLUUID cache_id ;
success = check_read(&apr_file, cache_id.mData, UUID_BYTES) ;
@@ -724,7 +726,7 @@ void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry:
{
std::string filename;
getObjectCacheFilename(handle, filename);
- LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY);
+ LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
success = check_write(&apr_file, (void*)id.mData, UUID_BYTES) ;
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
index 13651c6779..14e3b4c793 100644
--- a/indra/newview/llvocache.h
+++ b/indra/newview/llvocache.h
@@ -142,6 +142,7 @@ private:
U32 mNumEntries;
std::string mHeaderFileName ;
std::string mObjectCacheDirName;
+ LLVolatileAPRPool* mLocalAPRFilePoolp ;
header_entry_queue_t mHeaderEntryQueue;
handle_entry_map_t mHandleEntryMap;
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 90a05cd9e5..8ecf4a80b7 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -55,7 +55,7 @@
#include "llimview.h" // for LLIMMgr
#include "llparcel.h"
#include "llviewerparcelmgr.h"
-//#include "llfirstuse.h"
+#include "llfirstuse.h"
#include "llspeakers.h"
#include "lltrans.h"
#include "llviewerwindow.h"
@@ -942,7 +942,7 @@ void LLVivoxVoiceClient::stateMachine()
if(!mSocket)
{
- mSocket = LLSocket::create(LLSocket::STREAM_TCP);
+ mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
}
mConnected = mSocket->blockingConnect(mDaemonHost);
@@ -6258,6 +6258,19 @@ void LLVivoxVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::ESta
it = mStatusObservers.upper_bound(observer);
}
+ // skipped to avoid speak button blinking
+ if ( status != LLVoiceClientStatusObserver::STATUS_JOINING
+ && status != LLVoiceClientStatusObserver::STATUS_LEFT_CHANNEL)
+ {
+ bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
+
+ gAgent.setVoiceConnected(voice_status);
+
+ if (voice_status)
+ {
+ LLFirstUse::speak(true);
+ }
+ }
}
void LLVivoxVoiceClient::addObserver(LLFriendObserver* observer)
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 380d63c77b..380d63c77b 100755..100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp
index 64ca94b567..4f582fc2db 100644
--- a/indra/newview/llwatchdog.cpp
+++ b/indra/newview/llwatchdog.cpp
@@ -178,8 +178,8 @@ void LLWatchdog::init(killer_event_callback func)
mKillerCallback = func;
if(!mSuspectsAccessMutex && !mTimer)
{
- mSuspectsAccessMutex = new LLMutex;
- mTimer = new LLWatchdogTimerThread;
+ mSuspectsAccessMutex = new LLMutex(NULL);
+ mTimer = new LLWatchdogTimerThread();
mTimer->setSleepTime(WATCHDOG_SLEEP_TIME_USEC / 1000);
mLastClockCount = LLTimer::getTotalTime();
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index d1c0990f90..d8aa0b7d5c 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -30,13 +30,13 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "lldictionary.h"
+#include "llfloatersidepanelcontainer.h"
#include "lllocaltextureobject.h"
#include "llnotificationsutil.h"
#include "llviewertexturelist.h"
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltexlayer.h"
#include "lltexglobalcolor.h"
#include "lltrans.h"
@@ -697,7 +697,7 @@ void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake
if(gAgentCamera.cameraCustomizeAvatar())
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
gAgentAvatarp->updateVisualParams();
@@ -967,7 +967,7 @@ void LLWearable::revertValues()
syncImages(mSavedTEMap, mTEMap);
- LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
if( panel )
{
panel->updateScrollingPanelList();
@@ -1008,7 +1008,7 @@ void LLWearable::saveValues()
syncImages(mTEMap, mSavedTEMap);
- LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
if( panel )
{
panel->updateScrollingPanelList();
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp
index 6f7115ff6d..b2f35892d0 100644
--- a/indra/newview/llweb.cpp
+++ b/indra/newview/llweb.cpp
@@ -125,7 +125,9 @@ void LLWeb::loadURLInternal(const std::string &url, const std::string& target, c
// Explicitly open a Web URL using the Web content floater
void LLWeb::loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid)
{
- LLFloaterWebContent::create(LLFloaterWebContent::Params().url(url).target(target).id(uuid));
+ LLFloaterWebContent::Params p;
+ p.url(url).target(target).id(uuid);
+ LLFloaterReg::showInstance("web_content", p);
}
// static
@@ -208,6 +210,7 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url,
substitution["VERSION_BUILD"] = LLVersionInfo::getBuild();
substitution["CHANNEL"] = LLVersionInfo::getChannel();
substitution["GRID"] = LLGridManager::getInstance()->getGridLabel();
+ substitution["GRID_LOWERCASE"] = utf8str_tolower(LLGridManager::getInstance()->getGridLabel());
substitution["OS"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple();
substitution["SESSION_ID"] = gAgent.getSessionID();
substitution["FIRST_LOGIN"] = gAgent.isFirstLogin();
diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h
index dc5958e57f..376abc0ece 100644
--- a/indra/newview/llweb.h
+++ b/indra/newview/llweb.h
@@ -46,21 +46,19 @@ public:
static void loadURL(const std::string& url, const std::string& target, const std::string& uuid = LLStringUtil::null);
static void loadURL(const std::string& url) { loadURL(url, LLStringUtil::null); }
/// Load the given url in the user's preferred web browser
- static void loadURL(const char* url, const std::string& target) { loadURL( ll_safe_string(url), target); }
- static void loadURL(const char* url) { loadURL( ll_safe_string(url), LLStringUtil::null ); }
+ static void loadURL(const char* url, const std::string& target = LLStringUtil::null) { loadURL( ll_safe_string(url), target); }
/// Load the given url in the Second Life internal web browser
static void loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null);
- static void loadURLInternal(const std::string &url) { loadURLInternal(url, LLStringUtil::null); }
+ static void loadURLInternal(const std::string &url) { loadURLInternal(url, LLStringUtil::null, LLStringUtil::null);}
/// Load the given url in the operating system's web browser, async if we want to return immediately
/// before browser has spawned
- static void loadURLExternal(const std::string& url) { loadURLExternal(url, LLStringUtil::null); };
+ static void loadURLExternal(const std::string& url) {loadURLExternal(url, LLStringUtil::null);}
static void loadURLExternal(const std::string& url, const std::string& uuid);
static void loadURLExternal(const std::string& url, bool async, const std::string& uuid = LLStringUtil::null);
// Explicitly open a Web URL using the Web content floater vs. the more general media browser
static void loadWebURL(const std::string& url, const std::string& target, const std::string& uuid);
- static void loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid);
- static void loadWebURLInternal(const std::string &url) { loadWebURLInternal(url, LLStringUtil::null, LLStringUtil::null); }
+ static void loadWebURLInternal(const std::string &url, const std::string& target = LLStringUtil::null, const std::string& uuid = LLStringUtil::null);
/// Returns escaped url (eg, " " to "%20") - used by all loadURL methods
static std::string escapeURL(const std::string& url);
diff --git a/indra/newview/llworldview.cpp b/indra/newview/llworldview.cpp
deleted file mode 100644
index f5dc2a5290..0000000000
--- a/indra/newview/llworldview.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @file llworldview.cpp
- * @brief LLWorldView class implementation
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llworldview.h"
-
-#include "llviewercontrol.h"
-#include "llsidetray.h"
-/////////////////////////////////////////////////////
-// LLFloaterView
-
-static LLDefaultChildRegistry::Register<LLWorldView> r("world_view");
-
-LLWorldView::LLWorldView(const Params& p)
-: LLUICtrl (p)
-{
- gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLWorldView::toggleSidebarCameraMovement, this, _2));
-}
-
-void LLWorldView::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- //if (FALSE == gSavedSettings.getBOOL("SidebarCameraMovement") )
- //{
- // LLView* main_view = LLUI::getRootView()->findChild<LLView>("main_view");
- // if(main_view)
- // {
- // width = main_view->getRect().getWidth();
- // }
- //}
-
- LLUICtrl::reshape(width, height, called_from_parent);
-}
-void LLWorldView::toggleSidebarCameraMovement(const LLSD::Boolean& new_visibility)
-{
- reshape(getParent()->getRect().getWidth(),getRect().getHeight());
-}
-
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index b5cc949ebf..8baaa14595 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -795,6 +795,10 @@
<color
name="DirectChatColor"
reference="LtOrange" />
+
+ <color
+ name="ToolbarDropZoneColor"
+ value=".48 .69 1 .5" />
<!-- Generic color names (legacy) -->
<color
diff --git a/indra/newview/skins/default/textures/navbar/separator.png b/indra/newview/skins/default/textures/navbar/separator.png
new file mode 100644
index 0000000000..b93e5791a7
--- /dev/null
+++ b/indra/newview/skins/default/textures/navbar/separator.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 68f456bec3..bb91d32c6c 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -125,6 +125,35 @@ with the same filename but different name
<texture name="Checkbox_Press" file_name="widgets/Checkbox_Press.png" preload="true" />
<texture name="Check_Mark" file_name="icons/check_mark.png" preload="true" />
+ <texture name="Command_AboutLand_Icon" file_name="toolbar_icons/land.png" preload="true" />
+ <texture name="Command_Appearance_Icon" file_name="toolbar_icons/appearance.png" preload="true" />
+ <texture name="Command_Avatar_Icon" file_name="toolbar_icons/avatars.png" preload="true" />
+ <texture name="Command_Build_Icon" file_name="toolbar_icons/build.png" preload="true" />
+ <texture name="Command_Chat_Icon" file_name="toolbar_icons/chat.png" preload="true" />
+ <texture name="Command_Compass_Icon" file_name="toolbar_icons/land.png" preload="true" />
+ <texture name="Command_Destinations_Icon" file_name="toolbar_icons/destinations.png" preload="true" />
+ <texture name="Command_Gestures_Icon" file_name="toolbar_icons/gestures.png" preload="true" />
+ <texture name="Command_HowTo_Icon" file_name="toolbar_icons/howto.png" preload="true" />
+ <texture name="Command_Inventory_Icon" file_name="toolbar_icons/inventory.png" preload="true" />
+ <texture name="Command_Map_Icon" file_name="toolbar_icons/map.png" preload="true" />
+ <texture name="Command_Marketplace_Icon" file_name="toolbar_icons/marketplace.png" preload="true" />
+ <texture name="Command_MiniCart_Icon" file_name="toolbar_icons/mini_cart.png" preload="true" />
+ <texture name="Command_MiniMap_Icon" file_name="toolbar_icons/mini_map.png" preload="true" />
+ <texture name="Command_Move_Icon" file_name="toolbar_icons/move.png" preload="true" />
+ <texture name="Command_People_Icon" file_name="toolbar_icons/people.png" preload="true" />
+ <texture name="Command_Picks_Icon" file_name="toolbar_icons/picks.png" preload="true" />
+ <texture name="Command_Places_Icon" file_name="toolbar_icons/places.png" preload="true" />
+ <texture name="Command_Preferences_Icon" file_name="toolbar_icons/preferences.png" preload="true" />
+ <texture name="Command_Profile_Icon" file_name="toolbar_icons/profile.png" preload="true" />
+ <texture name="Command_Search_Icon" file_name="toolbar_icons/search.png" preload="true" />
+ <texture name="Command_Snapshot_Icon" file_name="toolbar_icons/snapshot.png" preload="true" />
+ <texture name="Command_Speak_Icon" file_name="toolbar_icons/speak.png" preload="true" />
+ <texture name="Command_View_Icon" file_name="toolbar_icons/view.png" preload="true" />
+ <texture name="Command_Voice_Icon" file_name="toolbar_icons/nearbyvoice.png" preload="true" />
+ <texture name="Caret_Bottom_Icon" file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />
+ <texture name="Caret_Right_Icon" file_name="toolbar_icons/caret_right.png" preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />
+ <texture name="Caret_Left_Icon" file_name="toolbar_icons/caret_left.png" preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" />
+
<texture name="ComboButton_Disabled" file_name="widgets/ComboButton_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
@@ -432,6 +461,7 @@ with the same filename but different name
<texture name="PushButton_Off" file_name="widgets/PushButton_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_On" file_name="widgets/PushButton_On.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_On_Selected" file_name="widgets/PushButton_On_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+ <texture name="PushButton_Over" file_name="widgets/PushButton_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Press" file_name="widgets/PushButton_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Selected" file_name="widgets/PushButton_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Selected_Press" file_name="widgets/PushButton_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
@@ -449,7 +479,11 @@ with the same filename but different name
<texture name="Resize_Corner" file_name="windows/Resize_Corner.png" preload="true" />
- <texture name="Rounded_Rect" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="24" scale.right="58" scale.bottom="6" />
+ <texture name="Rounded_Rect" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="26" scale.right="58" scale.bottom="6" />
+ <texture name="Rounded_Rect_Top" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="8" scale.right="58" scale.bottom="0" clip.left="0" clip.right="64" clip.bottom="16" clip.top="32" />
+ <texture name="Rounded_Rect_Bottom" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="16" scale.right="58" scale.bottom="8" clip.left="0" clip.right="64" clip.bottom="0" clip.top="16" />
+ <texture name="Rounded_Rect_Left" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="26" scale.right="32" scale.bottom="6" clip.left="0" clip.right="32" clip.bottom="0" clip.top="32" />
+ <texture name="Rounded_Rect_Right" file_name="Rounded_Rect.png" preload="true" scale.left="0" scale.top="26" scale.right="26" scale.bottom="6" clip.left="32" clip.right="64" clip.bottom="0" clip.top="32" />
<texture name="Rounded_Square" file_name="rounded_square.j2c" preload="true" scale.left="16" scale.top="16" scale.right="112" scale.bottom="16" />
<texture name="Row_Selection" file_name="navbar/Row_Selection.png" preload="false" />
@@ -737,4 +771,5 @@ with the same filename but different name
<texture name="Yellow_Gradient" file_name="windows/yellow_gradient.png"/>
<texture name="Popup_Caution" file_name="icons/pop_up_caution.png"/>
<texture name="Camera_Drag_Dot" file_name="world/CameraDragDot.png"/>
+ <texture name="NavBar Separator" file_name="navbar/separator.png"/>
</textures>
diff --git a/indra/newview/skins/default/textures/toolbar_icons/appearance.png b/indra/newview/skins/default/textures/toolbar_icons/appearance.png
new file mode 100644
index 0000000000..e6b1365388
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/appearance.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/avatars.png b/indra/newview/skins/default/textures/toolbar_icons/avatars.png
new file mode 100644
index 0000000000..8fa0600cee
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/avatars.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/build.png b/indra/newview/skins/default/textures/toolbar_icons/build.png
new file mode 100644
index 0000000000..e21ab3f0e4
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/build.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
new file mode 100644
index 0000000000..5f6a01eaa1
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_left.png b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
new file mode 100644
index 0000000000..0b8090314c
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_right.png b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
new file mode 100644
index 0000000000..044751560f
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/chat.png b/indra/newview/skins/default/textures/toolbar_icons/chat.png
new file mode 100644
index 0000000000..e0dbac495f
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/chat.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/destinations.png b/indra/newview/skins/default/textures/toolbar_icons/destinations.png
new file mode 100644
index 0000000000..e2325f083a
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/destinations.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/gestures.png b/indra/newview/skins/default/textures/toolbar_icons/gestures.png
new file mode 100644
index 0000000000..2404bb4e25
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/gestures.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/howto.png b/indra/newview/skins/default/textures/toolbar_icons/howto.png
new file mode 100644
index 0000000000..8594d71113
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/howto.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/inventory.png b/indra/newview/skins/default/textures/toolbar_icons/inventory.png
new file mode 100644
index 0000000000..ab3191255e
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/inventory.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/land.png b/indra/newview/skins/default/textures/toolbar_icons/land.png
new file mode 100644
index 0000000000..89ea7604a4
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/land.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/map.png b/indra/newview/skins/default/textures/toolbar_icons/map.png
new file mode 100644
index 0000000000..ed1049b7db
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/map.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/marketplace.png b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png
new file mode 100644
index 0000000000..62bad20be6
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_over.png b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png
index 4630cb6dd6..9fcf46794d 100644
--- a/indra/newview/skins/minimal/textures/bottomtray/close_over.png
+++ b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_map.png b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png
new file mode 100644
index 0000000000..ab0a654056
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/move.png b/indra/newview/skins/default/textures/toolbar_icons/move.png
new file mode 100644
index 0000000000..5c2ced7375
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/move.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png
new file mode 100644
index 0000000000..77a7cd5f44
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/people.png b/indra/newview/skins/default/textures/toolbar_icons/people.png
new file mode 100644
index 0000000000..7228ae8e2f
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/people.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/picks.png b/indra/newview/skins/default/textures/toolbar_icons/picks.png
new file mode 100644
index 0000000000..befda04b42
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/picks.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/places.png b/indra/newview/skins/default/textures/toolbar_icons/places.png
new file mode 100644
index 0000000000..97d9fa066c
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/places.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/preferences.png b/indra/newview/skins/default/textures/toolbar_icons/preferences.png
new file mode 100644
index 0000000000..4ccd7b8ae1
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/preferences.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/profile.png b/indra/newview/skins/default/textures/toolbar_icons/profile.png
new file mode 100644
index 0000000000..32fe2bf8ac
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/profile.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/search.png b/indra/newview/skins/default/textures/toolbar_icons/search.png
new file mode 100644
index 0000000000..bcb11e950d
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/search.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/snapshot.png b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png
new file mode 100644
index 0000000000..d26da9b1d2
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/speak.png b/indra/newview/skins/default/textures/toolbar_icons/speak.png
new file mode 100644
index 0000000000..10cd354c5c
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/speak.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/view.png b/indra/newview/skins/default/textures/toolbar_icons/view.png
new file mode 100644
index 0000000000..ddf0df7c26
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/view.png
Binary files differ
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 2580c06344..36af475824 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="centered"
legacy_header_height="18"
height="440"
layout="topleft"
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 e5dcc9bcb5..eaffbf5fa6 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
can_tear_off="false"
height="420"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_activeim.xml b/indra/newview/skins/default/xui/en/floater_activeim.xml
index 96fe0aa70c..670c528f08 100644
--- a/indra/newview/skins/default/xui/en/floater_activeim.xml
+++ b/indra/newview/skins/default/xui/en/floater_activeim.xml
@@ -4,8 +4,6 @@
name="floater_activeim"
help_topic="floater_activeim"
title="ACTIVE IM"
- top="26"
- left="0"
height="22"
width="320"
follows="right|bottom"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
new file mode 100644
index 0000000000..3c7de6f334
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_avatar.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="225"
+ can_minimize="true"
+ can_close="true"
+ can_resize="true"
+ min_height="230"
+ min_width="450"
+ height="230"
+ layout="topleft"
+ name="Avatar"
+ single_instance="true"
+ help_topic="avatar"
+ save_rect="true"
+ title="AVATAR PICKER"
+ width="635">
+ <web_browser
+ top="25"
+ height="200"
+ width="635"
+ follows="all"
+ name="avatar_picker_contents"
+ trusted_content="true"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
index a11946d352..cbbbeb6094 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
can_resize="true"
height="350"
diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml
index c247a12e7a..afb7917043 100644
--- a/indra/newview/skins/default/xui/en/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/en/floater_build_options.xml
@@ -37,7 +37,7 @@
layout="topleft"
left="10"
tool_tip="Grid opacity"
- name="grid_opacity_label"
+ name="grid_mode_label"
top_pad="30"
width="123">
Mode
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index da2be18db6..afe8584a2d 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -1,18 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="specified"
+ specified_left="320"
+ specified_bottom="80"
legacy_header_height="18"
- can_dock="true"
can_minimize="true"
- can_close="false"
+ can_close="true"
follows="bottom"
height="164"
layout="topleft"
name="camera_floater"
help_topic="camera_floater"
- save_rect="true"
save_visibility="true"
- save_dock_state="true"
single_instance="true"
+ title="VIEW"
+ save_rect="true"
width="228">
<floater.string
name="rotate_tooltip">
diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
new file mode 100644
index 0000000000..989b4a0580
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ open_positioning="specified"
+ specified_left="320"
+ specified_bottom="10"
+ height="60"
+ layout="topleft"
+ legacy_header_height="25"
+ single_instance="true"
+ title="NEARBY CHAT"
+ save_rect="true"
+ can_close="true"
+ can_minimize="true"
+ help_topic="chat_bar"
+ min_height="60"
+ min_width="150"
+ can_resize="true"
+ name="chat_bar"
+ width="380">
+ <panel
+ top="20"
+ class="panel_nearby_chat"
+ follow="all"
+ width="380"
+ height="0"
+ visible="false"
+ filename="panel_nearby_chat.xml"
+ name="nearby_chat" />
+ <panel width="380" height="31" left="0" bottom="-1" follows="left|right|bottom">
+ <line_editor
+ border_style="line"
+ border_thickness="1"
+ follows="left|right"
+ height="23"
+ label="Click here to chat."
+ layout="topleft"
+ left_delta="7"
+ left="0"
+ max_length_bytes="1023"
+ name="chat_box"
+ text_pad_left="5"
+ text_pad_right="25"
+ tool_tip="Press Enter to say, Ctrl+Enter to shout"
+ top="2"
+ width="335" />
+ <output_monitor
+ auto_update="true"
+ follows="right"
+ draw_border="false"
+ height="16"
+ layout="topleft"
+ left_pad="-24"
+ mouse_opaque="true"
+ name="chat_zone_indicator"
+ top="6"
+ visible="true"
+ width="20" />
+ <button
+ follows="right"
+ is_toggle="true"
+ width="20"
+ top="2"
+ layout="topleft"
+ left_pad="12"
+ image_disabled="ComboButton_UpOff"
+ image_unselected="ComboButton_UpOff"
+ image_selected="ComboButton_On"
+ image_pressed="ComboButton_UpSelected"
+ image_pressed_selected="ComboButton_Selected"
+ height="23"
+ name="show_nearby_chat"
+ tool_tip="Shows/hides nearby chat log">
+ </button>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml
index 05c958e051..13b15bf724 100644
--- a/indra/newview/skins/default/xui/en/floater_critical.xml
+++ b/indra/newview/skins/default/xui/en/floater_critical.xml
@@ -6,7 +6,7 @@
height="500"
layout="topleft"
name="modal container"
- open_centered="true"
+ open_positioning="centered"
width="600">
<button
height="20"
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
new file mode 100644
index 0000000000..e63dc02a57
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ open_positioning="cascading"
+ legacy_header_height="225"
+ can_minimize="true"
+ can_close="true"
+ user_resize="true"
+ can_resize="true"
+ min_height="230"
+ min_width="350"
+ height="230"
+ layout="topleft"
+ name="Destinations"
+ single_instance="true"
+ help_topic="destinations"
+ save_rect="true"
+ title="DESTINATIONS"
+ width="840">
+ <web_browser
+ top="25"
+ height="200"
+ width="840"
+ follows="all"
+ name="destination_guide_contents"
+ trusted_content="true"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml
index 9f5e6828d2..a941734358 100644
--- a/indra/newview/skins/default/xui/en/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_gesture.xml
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
+ save_rect="true"
legacy_header_height="18"
can_resize="true"
height="465"
diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml
index de6d586f72..d101bca694 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
can_resize="true"
- left="10000"
- bottom="10000"
height="600"
layout="topleft"
min_height="150"
diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml
new file mode 100644
index 0000000000..0369ecbeff
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_how_to.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ can_minimize="true"
+ height="775"
+ layout="topleft"
+ min_height="360"
+ left="10000"
+ top="10"
+ min_width="335"
+ name="floater_how_to"
+ single_instance="true"
+ save_rect="true"
+ title="HOW TO"
+ width="780"
+ filename="floater_web_content.xml"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index a371e98322..cb7d91abb8 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -6,9 +6,7 @@
follows="all"
height="350"
layout="topleft"
- left="0"
name="panel_im"
- top="0"
can_dock="false"
can_minimize="true"
can_close="true"
diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml
deleted file mode 100644
index ba2e0d3277..0000000000
--- a/indra/newview/skins/default/xui/en/floater_inventory.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- auto_tile="true"
- can_resize="true"
- height="563"
- layout="topleft"
- min_height="150"
- min_width="240"
- name="Inventory"
- help_topic="inventory"
- save_rect="true"
- save_visibility="true"
- single_instance="false"
- title="MY INVENTORY"
- width="467">
- <panel
- bottom="560"
- class="panel_main_inventory"
- filename="panel_main_inventory.xml"
- follows="all"
- layout="topleft"
- left="0"
- label="Inventory Panel"
- name="Inventory Panel"
- top="15"
- width="467" />
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
index 0cf07926c2..adef066aef 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
height="340"
layout="topleft"
name="item properties"
diff --git a/indra/newview/skins/default/xui/en/floater_land_holdings.xml b/indra/newview/skins/default/xui/en/floater_land_holdings.xml
index 0b9ae3c9f3..3737294ebe 100644
--- a/indra/newview/skins/default/xui/en/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/en/floater_land_holdings.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="centered"
legacy_header_height="18"
height="430"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index ae99fa8dd5..58d67c8221 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,22 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
- bg_alpha_image_overlay="DkGray_66"
- legacy_header_height="0"
+ open_positioning="cascading"
can_minimize="true"
can_resize="true"
follows="top|right"
- height="174"
+ height="200"
layout="topleft"
min_height="128"
min_width="128"
name="Map"
- title=""
+ title="MINI-MAP"
help_topic="map"
save_rect="true"
save_visibility="true"
- single_instance="true"
- left="0"
- top="0"
width="200">
<floater.string
name="ToolTipMsg">
@@ -27,17 +23,16 @@
[REGION](Double-click to teleport, shift-drag to pan)
</floater.string>
<floater.string name="mini_map_caption">
- MINIMAP
+ Mini-map
</floater.string>
<net_map
- bg_color="NetMapBackgroundColor"
follows="top|left|bottom|right"
layout="topleft"
left="0"
mouse_opaque="false"
name="Net Map"
width="200"
- height="218"
+ height="200"
top="0"/>
<text
type="string"
@@ -49,7 +44,7 @@
name="floater_map_north"
right="10"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
N
</text>
<text
@@ -62,7 +57,7 @@
name="floater_map_east"
right="10"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
E
</text>
<text
@@ -75,7 +70,7 @@
name="floater_map_west"
right="11"
text_color="1 1 1 0.7"
- top="195">
+ top="175">
W
</text>
<text
@@ -88,7 +83,7 @@
name="floater_map_south"
right="10"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
S
</text>
<text
@@ -101,7 +96,7 @@
name="floater_map_southeast"
right="20"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
SE
</text>
<text
@@ -114,7 +109,7 @@
name="floater_map_northeast"
right="20"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
NE
</text>
<text
@@ -127,7 +122,7 @@
name="floater_map_southwest"
right="20"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
SW
</text>
<text
@@ -140,7 +135,7 @@
name="floater_map_northwest"
right="20"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
NW
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml
index 5a1f920398..c3324a6aa4 100644
--- a/indra/newview/skins/default/xui/en/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml
@@ -9,7 +9,6 @@
name="floater_about"
help_topic="floater_about"
save_rect="true"
- auto_tile="true"
title="MEDIA BROWSER"
width="820">
<floater.string
diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml
index 681731b0da..0e03c0ab6d 100644
--- a/indra/newview/skins/default/xui/en/floater_media_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml
@@ -10,7 +10,6 @@
enabled="true"
width="365"
height="535"
- left="330"
min_height="535"
min_width="365"
mouse_opaque="true"
diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml
index 2eea286c8b..fbaf4f0a8a 100755..100644
--- a/indra/newview/skins/default/xui/en/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater can_close="true" can_drag_on_left="false" can_minimize="false"
can_resize="false" height="480" min_height="480" min_width="940"
- name="Model Preview" title="Upload Model" width="940"
+ name="Model Preview" title="UPLOAD MODEL" width="940"
help_topic="upload_model" >
<string name="status_idle"></string>
diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
index b5a5ff5342..9c0af7d9ba 100644
--- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
@@ -199,7 +199,7 @@
height="10"
layout="topleft"
left="10"
- name="Cache location"
+ name="Model types"
width="320">
Second Life supports COLLADA (.dae) files
</text>
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 6f29255a6b..b7370580af 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -1,9 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="specified"
+ specified_left="558"
+ specified_bottom="80"
legacy_header_height="18"
- can_dock="true"
+ can_dock="false"
can_minimize="true"
- can_close="false"
+ can_close="true"
follows="bottom"
height="110"
layout="topleft"
@@ -12,6 +15,7 @@
save_rect="true"
save_visibility="true"
save_dock_state="true"
+ title="MOVE"
width="133">
<string
name="walk_forward_tooltip">
diff --git a/indra/newview/skins/default/xui/en/floater_my_appearance.xml b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
new file mode 100644
index 0000000000..d9f3f1e13f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<floater
+ open_positioning="cascading"
+ legacy_header_height="18"
+ can_resize="true"
+ height="588"
+ layout="topleft"
+ name="floater_my_appearance"
+ help_topic="appearance"
+ save_rect="true"
+ single_instance="true"
+ title="APPEARANCE"
+ min_height="260"
+ min_width="333"
+ width="333">
+ <panel
+ top="18"
+ class="sidepanel_appearance"
+ name="main_panel"
+ filename="sidepanel_appearance.xml"
+ label="Edit Appearance"
+ font="SansSerifBold"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
new file mode 100644
index 0000000000..44491c671f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<floater
+ open_positioning="cascading"
+ can_close="true"
+ can_resize="true"
+ height="570"
+ help_topic="sidebar_inventory"
+ min_width="333"
+ min_height="440"
+ name="floater_my_inventory"
+ save_rect="true"
+ save_visibility="true"
+ title="INVENTORY"
+ width="333" >
+ <panel
+ class="sidepanel_inventory"
+ name="main_panel"
+ filename="sidepanel_inventory.xml"
+ follows="all"
+ top="0"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
index 068737494f..bbe280582b 100644
--- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
@@ -4,7 +4,7 @@
can_minimize="false"
height="100"
layout="topleft"
- title="Save Outfit"
+ title="SAVE OUTFIT"
name="modal container"
width="240">
<button
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
new file mode 100644
index 0000000000..9c1d121433
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_people.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+
+<floater
+ open_positioning="cascading"
+ can_close="true"
+ can_resize="true"
+ height="570"
+ help_topic="sidebar_people"
+ min_height="440"
+ min_width="333"
+ layout="topleft"
+ name="floater_people"
+ save_rect="true"
+ single_instance="true"
+ title="PEOPLE"
+ width="333">
+ <panel_container
+ default_panel_name="panel_people"
+ follows="all"
+ height="570"
+ name="main_panel"
+ width="333">
+ <panel
+ class="panel_people"
+ name="panel_people"
+ filename="panel_people.xml"/>
+ <panel
+ class="panel_profile_view"
+ name="panel_profile_view"
+ filename="panel_profile_view.xml"/>
+ <panel
+ class="panel_group_info_sidetray"
+ name="panel_group_info_sidetray"
+ filename="panel_group_info_sidetray.xml"
+ label="Group Profile"
+ font="SansSerifBold"/>
+ <panel
+ class="panel_block_list_sidetray"
+ name="panel_block_list_sidetray"
+ filename="panel_block_list_sidetray.xml"
+ label="Blocked Residents &amp; Objects"
+ font="SansSerifBold"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_picks.xml b/indra/newview/skins/default/xui/en/floater_picks.xml
new file mode 100644
index 0000000000..2d307028e4
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_picks.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<floater
+ open_positioning="cascading"
+ can_close="true"
+ can_resize="true"
+ height="572"
+ help_topic="sidebar_me"
+ min_width="333"
+ min_height="440"
+ name="floater_picks"
+ save_rect="true"
+ save_visibility="true"
+ title="Picks"
+ width="333" >
+ <panel
+ class="panel_me"
+ name="main_panel"
+ filename="panel_me.xml"
+ follows="all"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_places.xml b/indra/newview/skins/default/xui/en/floater_places.xml
new file mode 100644
index 0000000000..b7cb86b468
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_places.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<floater
+ open_positioning="cascading"
+ legacy_header_height="18"
+ can_resize="true"
+ height="588"
+ layout="topleft"
+ name="floater_places"
+ help_topic="floater_places"
+ save_rect="true"
+ title="PLACES"
+ min_height="230"
+ min_width="333"
+ width="333">
+ <panel
+ top="18"
+ class="panel_places"
+ name="main_panel"
+ filename="panel_places.xml"
+ label="Places"
+ font="SansSerifBold"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_postcard.xml b/indra/newview/skins/default/xui/en/floater_postcard.xml
index c756661ffc..adc2433105 100644
--- a/indra/newview/skins/default/xui/en/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/en/floater_postcard.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_minimize="false"
can_resize="true"
height="380"
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
index dcfa8bc060..402868bb97 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences.xml
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- open_centered="true"
+ open_positioning="centered"
default_tab_group="1"
height="460"
layout="topleft"
name="Preferences"
help_topic="preferences"
+ save_rect="true"
single_instance="true"
title="PREFERENCES"
width="658">
diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
index 65efc46c71..8427c7b06f 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
height="85"
layout="topleft"
name="preview_anim"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index 478ae5f53f..8baa0a56f7 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
height="460"
layout="topleft"
name="gesture_preview"
@@ -362,4 +361,4 @@
name="save_btn"
top_delta="0"
width="80" />
-</floater> \ No newline at end of file
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
index 8c9e1d52b3..f35628f8e5 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_resize="true"
default_tab_group="1"
follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
index 62ef4c3097..83a1f5a96f 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
height="85"
layout="topleft"
name="preview_sound"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
index a79d2f63cb..92d3a6702c 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_resize="true"
follows="left|top"
height="350"
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
index 12ade86b5f..73e6d6147a 100644
--- a/indra/newview/skins/default/xui/en/floater_script.xml
+++ b/indra/newview/skins/default/xui/en/floater_script.xml
@@ -5,9 +5,7 @@
follows="left|top|right|bottom"
height="250"
layout="topleft"
- left="0"
name="script_floater"
- top="0"
can_dock="true"
can_minimize="true"
visible="false"
diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml
index 8c03b56040..91a9e67e4c 100644
--- a/indra/newview/skins/default/xui/en/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_resize="true"
height="570"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml
index 60a26fcf1d..f4aca7bb3d 100644
--- a/indra/newview/skins/default/xui/en/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_resize="true"
height="400"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index eaf575fc08..dd818e2e06 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
- can_resize="true"
+ can_resize="true"
height="775"
- layout="topleft"
- min_height="400"
+ layout="topleft"
+ min_height="400"
min_width="500"
- name="floater_web_content"
- help_topic="floater_web_content"
- save_rect="true"
- auto_tile="true"
- save_visibility="true"
+ name="floater_search"
+ help_topic="floater_search"
+ save_rect="true"
+ save_visibility="true"
title=""
initial_mime_type="text/html"
width="780"
- tab_stop="true"
+ tab_stop="true"
filename="floater_web_content.xml"/>
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index 89a0c4c287..91b4ed6954 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
- can_minimize="false"
+ can_minimize="true"
can_close="true"
follows="left|top"
height="520"
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
index 74e01f359c..3dbe4adf28 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -14,7 +14,7 @@
height="164"
layout="topleft"
name="floater_sound_devices"
- title="Sound Devices"
+ title="SOUND DEVICES"
width="490">
<panel
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml
index 005952f3f2..9b96a5badc 100644
--- a/indra/newview/skins/default/xui/en/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/en/floater_sys_well.xml
@@ -2,8 +2,6 @@
<floater
legacy_header_height="18"
bevel_style="in"
- left="0"
- top="0"
follows="right|bottom"
layout="topleft"
name="sys_well_window"
@@ -18,6 +16,7 @@
can_resize="true"
can_drag_on_left="false"
can_dock="true"
+ save_dock_state="true"
save_visibility="true"
single_instance="true"
>
diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml
index da412ed8a0..547613fb67 100644
--- a/indra/newview/skins/default/xui/en/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/en/floater_telehub.xml
@@ -4,7 +4,6 @@
legacy_header_height="18"
height="250"
layout="topleft"
- left="300"
name="telehub"
help_topic="telehub"
title="TELEHUB"
diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml
index bf0a774e76..9bc05107a2 100644
--- a/indra/newview/skins/default/xui/en/floater_test_button.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_button.xml
@@ -78,7 +78,6 @@
<button
bottom_delta="30"
height="23"
- highlight_color="EmphasisColor"
label="Highlight"
layout="topleft"
name="highlight_color_button" />
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
new file mode 100644
index 0000000000..067c1fed82
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="500"
+ layout="topleft"
+ name="floater_test_toolbar"
+ translate="false"
+ width="500">
+ <toolbar name="test_toolbar_top"
+ button_display_mode="icons_with_text"
+ follows="left|right|top"
+ height="50"
+ width="500"
+ left="0"
+ top="20"
+ min_button_width="0"
+ max_button_width="100"
+ side="top">
+ <command name="avatar"/>
+ <command name="build"/>
+ <command name="chat"/>
+ </toolbar>
+ <toolbar name="test_toolbar_left"
+ button_display_mode="icons_with_text"
+ follows="left|bottom|top"
+ height="380"
+ width="200"
+ left="0"
+ top="70"
+ min_button_width="100"
+ side="left">
+ <command name="avatar"/>
+ <command name="build"/>
+ <command name="chat"/>
+ </toolbar>
+ <toolbar name="test_toolbar_right"
+ button_display_mode="icons_with_text"
+ follows="right|bottom|top"
+ height="380"
+ width="200"
+ right="500"
+ top="70"
+ side="right">
+ <command name="avatar"/>
+ <command name="build"/>
+ <command name="chat"/>
+ </toolbar>
+ <toolbar name="test_toolbar_bottom"
+ button_display_mode="icons_with_text"
+ follows="left|right|bottom"
+ height="50"
+ width="500"
+ left="0"
+ bottom="500"
+ min_button_width="100"
+ side="bottom">
+ <command name="avatar"/>
+ <command name="build"/>
+ <command name="chat"/>
+ </toolbar>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 9b02f7d273..1808cab2a5 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
follows="left|top|right"
height="580"
@@ -515,7 +516,8 @@
image_disabled_selected="Object_Grass"
image_selected="Object_Grass_Selected"
image_unselected="Object_Grass"
- image_overlay_color="Red"
+ image_overlay_color="1 0 0 .75"
+ image_overlay_selected_color="1 0 0 1"
layout="topleft"
left_delta="29"
name="ToolGrass"
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
new file mode 100644
index 0000000000..c7e09bf45e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ can_close="true"
+ can_dock="false"
+ can_minimize="false"
+ can_resize="false"
+ default_tab_group="1"
+ height="460"
+ help_topic="toybox"
+ layout="topleft"
+ legacy_header_height="18"
+ name="Toybox"
+ open_positioning="centered"
+ save_rect="true"
+ single_instance="true"
+ title="CUSTOMIZE TOOLBARS"
+ width="650">
+ <text
+ follows="left|top"
+ font="SansSerifMedium"
+ valign="bottom"
+ halign="left"
+ height="20"
+ layout="topleft"
+ left="20"
+ length="1"
+ name="toybox label 1"
+ right="-20"
+ top="35"
+ type="string">
+ Add or remove buttons by dragging them to or from the toolbars.
+ </text>
+ <text
+ follows="left|top"
+ font="SansSerifMedium"
+ valign="bottom"
+ halign="left"
+ height="20"
+ layout="topleft"
+ left="20"
+ length="1"
+ name="toybox label 2"
+ right="-20"
+ top="55"
+ type="string">
+ Buttons will appear as shown or as icon-only depending on each toolbar's settings.
+ </text>
+ <toolbar
+ bottom="395"
+ button_display_mode="icons_with_text"
+ follows="all"
+ left="20"
+ button_icon_and_text.button_width.max="140"
+ button_icon_and_text.button_width.min="70"
+ name="toybox_toolbar"
+ pad_left="5"
+ pad_right="5"
+ pad_top="5"
+ pad_bottom="5"
+ pad_between="15"
+ read_only="true"
+ right="-20"
+ side="top"
+ top="85">
+ <button_panel background_visible="false" />
+ <button_icon_and_text image_unselected="PushButton_Off"
+ image_selected="PushButton_Off"
+ image_disabled_selected="PushButton_Disabled"
+ image_disabled="PushButton_Disabled"
+ label_color="ButtonLabelColor"
+ label_color_selected="ButtonLabelColor"
+ label_color_disabled="ButtonLabelDisabledColor"
+ label_color_disabled_selected="ButtonLabelDisabledColor"
+ image_color="ButtonImageColor"
+ image_color_disabled="ButtonImageColor"
+ flash_color="ButtonUnselectedFgColor"
+ halign="left"
+ hover_glow_amount="0.15"
+ sound_flags="0"
+ display_pressed_state="false" />
+ </toolbar>
+ <panel
+ bevel_style="none"
+ border="true"
+ bottom="396"
+ follows="left|bottom|right"
+ left="20"
+ right="-20"
+ top="396" />
+ <button
+ follows="left|bottom|right"
+ height="23"
+ label="Restore defaults"
+ label_selected="Restore defaults"
+ layout="topleft"
+ left="260"
+ name="btn_restore_defaults"
+ top="415"
+ width="130">
+ <button.commit_callback function="Toybox.RestoreDefaults" />
+ </button>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
index f017a7ace6..3f5768bc0b 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
can_resize="true"
can_minimize="true"
- can_close="false"
+ can_close="true"
height="205"
layout="topleft"
min_height="124"
min_width="190"
name="floater_voice_controls"
help_topic="floater_voice_controls"
- title="Voice Controls"
+ title="VOICE CONTROLS"
save_dock_state="true"
save_visibility="true"
save_rect="true"
@@ -17,15 +18,15 @@
width="282">
<string
name="title_nearby">
- NEARBY VOICE
+ Nearby voice
</string>
<string
name="title_group">
- Group Call with [GROUP]
+ Group call with [GROUP]
</string>
<string
name="title_adhoc">
- Conference Call
+ Conference call
</string>
<string
name="title_peer_2_peer">
diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml
index 0eda9ae62a..57d1c92acb 100644
--- a/indra/newview/skins/default/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/default/xui/en/floater_web_content.xml
@@ -9,7 +9,6 @@
name="floater_web_content"
help_topic="floater_web_content"
save_rect="true"
- auto_tile="true"
title=""
initial_mime_type="text/html"
width="780">
diff --git a/indra/newview/skins/default/xui/en/floater_web_profile.xml b/indra/newview/skins/default/xui/en/floater_web_profile.xml
new file mode 100644
index 0000000000..d0225f78a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_web_profile.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_web_profile"
+ help_topic="web_profile"
+ width="780"
+ height="775"
+ filename="floater_web_content.xml"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
index 019e7cd032..4314c8a9e2 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -2,7 +2,7 @@
<floater
legacy_header_height="18"
can_resize="true"
- open_centered="true"
+ open_positioning="centered"
height="600"
layout="topleft"
min_height="520"
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index a7d1aa963c..b4be17e677 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -11,130 +11,68 @@
<layout_stack border_size="0"
follows="all"
mouse_opaque="false"
- height="749"
+ height="768"
name="menu_stack"
orientation="vertical"
- top="19">
+ top="0">
+ <layout_panel mouse_opaque="true"
+ follows="left|right|top"
+ name="status_bar_container"
+ tab_stop="false"
+ height="19"
+ left="0"
+ top="0"
+ width="1024"
+ user_resize="false"
+ auto_resize="false"
+ visible="true">
+ <view mouse_opaque="false"
+ follows="all"
+ name="menu_bar_holder"
+ left="0"
+ top="0"
+ width="1024"
+ height="19"/>
+ </layout_panel>
<layout_panel auto_resize="false"
- height="60"
+ height="34"
mouse_opaque="false"
name="nav_bar_container"
tab_stop="false"
width="1024"
- user_resize="false"
- visible="false">
- </layout_panel>
- <layout_panel auto_resize="true"
+ user_resize="false"
+ visible="false"/>
+ <layout_panel auto_resize="true"
follows="all"
height="500"
layout="topleft"
mouse_opaque="false"
tab_stop="false"
- name="hud"
+ name="world_panel"
width="1024">
- <layout_stack border_size="0"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="hud_stack"
- orientation="horizontal"
- top="0"
- width="1024">
- <layout_panel auto_resize="true"
- follows="all"
- height="500"
- layout="topleft"
- mouse_opaque="false"
- tab_stop="false"
- name="non_side_tray_view"
- user_resize="false"
- width="500">
- <view bottom="500"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="world_view_rect"
- width="500"/>
- <layout_stack border_size="0"
- bottom="500"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="world_stack"
- orientation="vertical">
- <layout_panel auto_resize="true"
- follows="all"
- height="500"
- layout="topleft"
- tab_stop="false"
- mouse_opaque="false"
- user_resize="false"
- name="hud container"
- width="500">
- <view top="0"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="floater_snap_region"
- width="500"/>
- <panel follows="left|top"
- height="19"
- left="0"
- mouse_opaque="false"
- name="topinfo_bar_container"
- tab_stop="false"
- top="0"
- visible="false"
- width="1024"/>
- <panel follows="right|top|bottom"
- height="500"
- mouse_opaque="false"
- name="side_bar_tabs"
- right="500"
- tab_stop="false"
- top="0"
- width="32"/>
- <panel bottom="500"
- follows="left|right|bottom"
- height="25"
- left="0"
- mouse_opaque="false"
- tab_stop="false"
- name="stand_stop_flying_container"
- visible="false"
- width="500"/>
- </layout_panel>
- <layout_panel auto_resize="false"
- min_height="33"
- height="33"
- mouse_opaque="false"
- name="bottom_tray_container"
- visible="false"/>
- </layout_stack>
- </layout_panel>
- <!-- side tray -->
- <layout_panel auto_resize="false"
- follows="top|bottom"
- height="500"
- min_width="333"
- mouse_opaque="false"
- tab_stop="false"
- name="side_tray_container"
- user_resize="false"
- visible="false"
- width="333"/>
- </layout_stack>
+ <view top="0"
+ follows="all"
+ height="500"
+ left="0"
+ mouse_opaque="false"
+ name="world_view_rect"
+ width="1024"/>
+ <panel follows="left|top|right"
+ height="19"
+ left="0"
+ mouse_opaque="false"
+ name="topinfo_bar_container"
+ tab_stop="false"
+ top="0"
+ visible="false"
+ width="1024"/>
<panel top="0"
- follows="all"
- height="500"
- mouse_opaque="false"
- name="login_panel_holder"
- width="1024"/>
-
+ left="0"
+ follows="all"
+ height="500"
+ mouse_opaque="false"
+ name="login_panel_holder"
+ width="1024"/>
<debug_view follows="all"
left="0"
top="0"
@@ -142,45 +80,27 @@
height="500"
name="DebugView"
width="1024"/>
-
- <panel follows="all"
+ <floater_view follows="all"
height="500"
left="0"
mouse_opaque="false"
- name="floater_view_holder"
+ name="Floater View"
tab_group="-1"
tab_stop="false"
top="0"
- width="1024">
- <floater_view follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="Floater View"
- tab_group="-1"
- tab_stop="false"
- top="0"
- width="1024"/>
- </panel>
+ width="1024"/>
+ <panel name="toolbar_view_holder"
+ follows="all"
+ layout="topleft"
+ height="500"
+ width="1024"
+ top="0"
+ left="0"
+ mouse_opaque="false"
+ tab_stop="false"/>
</layout_panel>
</layout_stack>
- <panel mouse_opaque="false"
- follows="left|right|top"
- name="status_bar_container"
- tab_stop="false"
- height="19"
- left="0"
- top="0"
- width="1024"
- visible="false"/>
-
- <view mouse_opaque="false"
- follows="all"
- name="menu_bar_holder"
- left="0"
- top="0"
- width="1024"
- height="768"/>
+
<panel top="0"
follows="all"
mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/menu_bottomtray.xml b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
index 07dabe1909..1a102c21bb 100644
--- a/indra/newview/skins/default/xui/en/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
@@ -97,7 +97,7 @@
parameter="ShowWorldMapButton" />
</menu_item_check>
<menu_item_check
- label="Mini-Map button"
+ label="Mini-map button"
layout="topleft"
name="ShowMiniMapButton">
<menu_item_check.on_click
diff --git a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
index 3f38d734b9..b517fd7957 100644
--- a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
@@ -9,7 +9,7 @@
visible="false"
width="128">
<menu_item_check
- label="Show Navigation Bar"
+ label="Show Navigation &amp; Favorites Bar"
layout="topleft"
name="ShowNavbarNavigationPanel">
<on_click
@@ -20,17 +20,6 @@
parameter="ShowNavbarNavigationPanel" />
</menu_item_check>
<menu_item_check
- label="Show Favorites Bar"
- layout="topleft"
- name="ShowNavbarFavoritesPanel">
- <on_click
- function="ToggleControl"
- parameter="ShowNavbarFavoritesPanel" />
- <on_check
- function="CheckControl"
- parameter="ShowNavbarFavoritesPanel" />
- </menu_item_check>
- <menu_item_check
label="Show Mini-Location Bar"
layout="topleft"
name="ShowMiniLocationPanel">
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 4c4ff3e5c4..80e310a873 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -13,7 +13,7 @@
tear_off="true"
name="File">
<menu_item_call
- label="Preferences"
+ label="Preferences..."
name="Preferences..."
shortcut="control|P">
<menu_item_call.on_click
@@ -93,14 +93,6 @@
parameter="ui_preview" />
</menu_item_call>
<menu_item_separator />
- <!-- Broken
- <menu_item_call
- label="Show Side Tray"
- name="Show Side Tray">
- <menu_item_call.on_click
- function="Advanced.ShowSideTray" />
- </menu_item_call>
- -->
<menu
create_jump_keys="true"
label="UI Tests"
diff --git a/indra/newview/skins/default/xui/en/menu_mode_change.xml b/indra/newview/skins/default/xui/en/menu_mode_change.xml
deleted file mode 100644
index 87d1a0a7a2..0000000000
--- a/indra/newview/skins/default/xui/en/menu_mode_change.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu
- name="Mode Change">
- <menu_item_check
- label="Basic"
- name="BasicMode">
- <on_check
- function="CheckSessionSettings"
- parameter="settings_minimal.xml" />
- <on_click
- function="ChangeMode"
- parameter="basic"/>
- </menu_item_check>
- <menu_item_check
- label="Advanced"
- name="AdvancedMode">
- <on_check
- function="CheckSessionSettings"
- parameter="" />
- <on_click
- function="ChangeMode"
- parameter="advanced"/>
- </menu_item_check>
- </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
index 29eeb93ac1..b452f96e7a 100644
--- a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
@@ -42,6 +42,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" parameter="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Friends.ViewSort.Action" parameter="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
index 65bd2793b6..614dd693c5 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
@@ -52,6 +52,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" userdata="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Nearby.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
index 0634e3bd3b..485a5a658c 100644
--- a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
@@ -34,6 +34,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" userdata="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Recent.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
new file mode 100644
index 0000000000..59912b5503
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<context_menu
+ layout="topleft"
+ name="Toolbars Popup"
+ visible="false">
+ <menu_item_call label="Choose buttons..."
+ layout="topleft"
+ name="Chose Buttons">
+ <menu_item_call.on_click function="Floater.Show"
+ parameter="toybox" />
+ </menu_item_call>
+ <menu_item_separator layout="topleft" />
+ <menu_item_check label="Icons and labels"
+ layout="topleft"
+ name="icons_with_text">
+ <on_click function="Toolbars.EnableSetting"
+ parameter="icons_with_text" />
+ <on_check function="Toolbars.CheckSetting"
+ parameter="icons_with_text" />
+ </menu_item_check>
+ <menu_item_check label="Icons only"
+ layout="topleft"
+ name="icons_only">
+ <on_click function="Toolbars.EnableSetting"
+ parameter="icons_only" />
+ <on_check function="Toolbars.CheckSetting"
+ parameter="icons_only" />
+ </menu_item_check>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 16f48f3a4e..63e50b0b9f 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -8,169 +8,178 @@
label="Me"
name="Me"
tear_off="true">
- <menu_item_call
- label="Preferences"
- name="Preferences"
- shortcut="control|P">
- <menu_item_call.on_click
- function="Floater.Show"
- parameter="preferences" />
- </menu_item_call>
- <menu_item_call
- label="My Dashboard"
- name="Manage My Account">
- <menu_item_call.on_click
- function="PromptShowURL"
- name="ManageMyAccount_url"
- parameter="WebLaunchJoinNow,http://secondlife.com/account/" />
+ <menu_item_call
+ label="Dashboard..."
+ name="Manage My Account">
+ <menu_item_call.on_click
+ function="PromptShowURL"
+ name="ManageMyAccount_url"
+ parameter="WebLaunchJoinNow,http://secondlife.com/account/" />
</menu_item_call>
- <menu_item_call
- label="Buy L$"
- name="Buy and Sell L$">
- <menu_item_call.on_click
- function="BuyCurrency" />
- </menu_item_call>
-
- <menu_item_separator/>
+ <menu_item_call
+ label="Profile..."
+ name="Profile">
+ <menu_item_call.on_click
+ function="ShowAgentProfile"
+ parameter="agent" />
+ </menu_item_call>
+ <menu_item_call
+ label="Appearance..."
+ name="ChangeOutfit">
+ <menu_item_call.on_click
+ function="CustomizeAvatar" />
+ <menu_item_call.on_enable
+ function="Edit.EnableCustomizeAvatar" />
+ </menu_item_call>
+ <menu_item_check
+ label="Inventory..."
+ name="Inventory"
+ shortcut="control|I"
+ visible="true">
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ parameter="inventory" />
+ <menu_item_check.on_click
+ function="Floater.Toggle"
+ parameter="inventory" />
+ </menu_item_check>
+ <menu_item_check
+ label="Gestures..."
+ name="Gestures"
+ shortcut="control|G">
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ parameter="gestures" />
+ <menu_item_check.on_click
+ function="Floater.Toggle"
+ parameter="gestures" />
+ </menu_item_check>
+ <menu_item_check
+ label="Voice..."
+ name="ShowVoice"
+ visibility_control="VoiceMorphingEnabled">
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ Parameter="voice_effect" />
+ <menu_item_check.on_click
+ function="Floater.Toggle"
+ parameter="voice_effect" />
+ </menu_item_check>
+ <menu
+ create_jump_keys="true"
+ label="Movement"
+ name="Movement"
+ tear_off="true">
<menu_item_call
- label="My Profile"
- name="Profile">
- <menu_item_call.on_click
- function="ShowAgentProfile"
- parameter="agent" />
- </menu_item_call>
- <menu_item_call
- label="My Appearance"
- name="ChangeOutfit">
- <menu_item_call.on_click
- function="CustomizeAvatar" />
- <menu_item_call.on_enable
- function="Edit.EnableCustomizeAvatar" />
+ label="Sit Down"
+ layout="topleft"
+ shortcut="alt|shift|S"
+ name="Sit Down Here">
+ <menu_item_call.on_click
+ function="Self.SitDown"
+ parameter="" />
+ <menu_item_call.on_enable
+ function="Self.EnableSitDown" />
</menu_item_call>
<menu_item_check
- label="My Inventory"
- name="Inventory"
- shortcut="control|shift|I"
- visible="false">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="inventory" />
- <menu_item_check.on_click
- function="Floater.Toggle"
- parameter="inventory" />
- </menu_item_check>
- <menu_item_check
- label="My Inventory"
- name="ShowSidetrayInventory"
- shortcut="control|I"
- visible="true">
- <menu_item_check.on_check
- function="SidetrayPanelVisible"
- parameter="sidepanel_inventory" />
- <menu_item_check.on_click
- function="ShowSidetrayPanel"
- parameter="sidepanel_inventory" />
- </menu_item_check>
- <menu_item_check
- label="My Gestures"
- name="Gestures"
- shortcut="control|G">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="gestures" />
- <menu_item_check.on_click
- function="Floater.Toggle"
- parameter="gestures" />
+ label="Fly"
+ name="Fly"
+ shortcut="Home">
+ <menu_item_check.on_check
+ function="Agent.getFlying" />
+ <menu_item_check.on_click
+ function="Agent.toggleFlying" />
+ <menu_item_check.on_enable
+ function="Agent.enableFlying" />
</menu_item_check>
<menu_item_check
- label="My Voice"
- name="ShowVoice"
- visibility_control="VoiceMorphingEnabled">
- <menu_item_check.on_check
- function="Floater.Visible"
- Parameter="voice_effect" />
- <menu_item_check.on_click
- function="Floater.Toggle"
- parameter="voice_effect" />
+ label="Always Run"
+ name="Always Run"
+ shortcut="control|R">
+ <menu_item_check.on_check
+ function="World.CheckAlwaysRun" />
+ <menu_item_check.on_click
+ function="World.AlwaysRun" />
</menu_item_check>
- <menu
- create_jump_keys="true"
- label="Movement"
- name="Movement"
- tear_off="true">
- <menu_item_call
- label="Sit Down"
- layout="topleft"
- shortcut="alt|shift|S"
- name="Sit Down Here">
- <menu_item_call.on_click
- function="Self.SitDown"
- parameter="" />
- <menu_item_call.on_enable
- function="Self.EnableSitDown" />
- </menu_item_call>
- <menu_item_check
- label="Fly"
- name="Fly"
- shortcut="Home">
- <menu_item_check.on_check
- function="Agent.getFlying" />
- <menu_item_check.on_click
- function="Agent.toggleFlying" />
- <menu_item_check.on_enable
- function="Agent.enableFlying" />
- </menu_item_check>
- <menu_item_check
- label="Always Run"
- name="Always Run"
- shortcut="control|R">
- <menu_item_check.on_check
- function="World.CheckAlwaysRun" />
- <menu_item_check.on_click
- function="World.AlwaysRun" />
- </menu_item_check>
- <menu_item_call
- label="Stop Animating Me"
- name="Stop Animating My Avatar">
- <menu_item_call.on_click
- function="Tools.StopAllAnimations" />
- </menu_item_call>
- </menu>
- <menu
- create_jump_keys="true"
- label="My Status"
- name="Status"
- tear_off="true">
- <menu_item_call
- label="Away"
- name="Set Away">
- <menu_item_call.on_click
- function="World.SetAway" />
- </menu_item_call>
- <menu_item_call
- label="Busy"
- name="Set Busy">
- <menu_item_call.on_click
- function="World.SetBusy"/>
- </menu_item_call>
- </menu>
<menu_item_call
- label="Request Admin Status"
- name="Request Admin Options"
- shortcut="control|alt|G"
- visible="false">
- <menu_item_call.on_click
- function="Advanced.RequestAdminStatus" />
+ label="Stop Animating Me"
+ name="Stop Animating My Avatar">
+ <menu_item_call.on_click
+ function="Tools.StopAllAnimations" />
</menu_item_call>
+ </menu>
+
+ <menu
+ create_jump_keys="true"
+ label="Status"
+ name="Status"
+ tear_off="true">
<menu_item_call
- label="Leave Admin Status"
- name="Leave Admin Options"
- shortcut="control|alt|shift|G"
- visible="false">
+ label="Away"
+ name="Set Away">
+ <menu_item_call.on_click
+ function="World.SetAway" />
+ </menu_item_call>
+ <menu_item_call
+ label="Busy"
+ name="Set Busy">
+ <menu_item_call.on_click
+ function="World.SetBusy"/>
+ </menu_item_call>
+ </menu>
+
+ <menu_item_call
+ label="Request Admin Status"
+ name="Request Admin Options"
+ shortcut="control|alt|G"
+ visible="false">
+ <menu_item_call.on_click
+ function="Advanced.RequestAdminStatus" />
+ </menu_item_call>
+ <menu_item_call
+ label="Leave Admin Status"
+ name="Leave Admin Options"
+ shortcut="control|alt|shift|G"
+ visible="false">
+ <menu_item_call.on_click
+ function="Advanced.LeaveAdminStatus" />
+ </menu_item_call>
+
+ <menu_item_separator/>
+
+ <menu_item_call
+ label="Buy L$"
+ name="Buy and Sell L$">
+ <menu_item_call.on_click
+ function="BuyCurrency" />
+ </menu_item_call>
+
+ <menu_item_separator/>
+
+ <menu_item_call
+ label="Preferences..."
+ name="Preferences"
+ shortcut="control|P">
<menu_item_call.on_click
- function="Advanced.LeaveAdminStatus" />
+ function="Floater.Show"
+ parameter="preferences" />
</menu_item_call>
+ <menu_item_call
+ label="Toolbars..."
+ name="Toolbars"
+ shortcut="control|T">
+ <menu_item_call.on_click
+ function="Floater.Toggle"
+ parameter="toybox" />
+ </menu_item_call>
+ <menu_item_call
+ label="Hide all controls"
+ name="Hide UI"
+ shortcut="control|shift|U">
+ <menu_item_call.on_click
+ function="View.ToggleUI" />
+ </menu_item_call>
<menu_item_separator/>
@@ -219,10 +228,10 @@
use_mac_ctrl="true">
<menu_item_check.on_check
function="Floater.Visible"
- parameter="nearby_chat" />
+ parameter="chat_bar" />
<menu_item_check.on_click
function="Floater.Toggle"
- parameter="nearby_chat" />
+ parameter="chat_bar" />
</menu_item_check>
<menu_item_call
label="Nearby People"
@@ -249,7 +258,7 @@
name="World"
tear_off="true">
<menu_item_check
- label="Mini-Map"
+ label="Mini-map"
name="Mini-Map"
shortcut="control|shift|M">
<menu_item_check.on_check
@@ -1136,14 +1145,6 @@
function="ShowHelp"
parameter="f1_help" />
</menu_item_call>
- <menu_item_check
- label="Enable Hints"
- name="Enable Hints">
- <on_check
- control="EnableUIHints"/>
- <on_click
- function="ToggleUIHints"/>
- </menu_item_check>
<!-- <menu_item_call
label="Tutorial"
name="Tutorial">
@@ -2435,7 +2436,7 @@
function="Advanced.ToggleInfoDisplay"
parameter="raycast" />
</menu_item_check>
- <menu_item_check
+ <menu_item_check
label="Render Complexity"
name="rendercomplexity">
<menu_item_check.on_check
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 41a90f5984..6720d8131e 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -2665,9 +2665,18 @@ Display settings have been set to safe levels because you have specified the -sa
<notification
icon="alertmodal.tga"
- name="DisplaySetToRecommended"
+ name="DisplaySetToRecommendedGPUChange"
type="alertmodal">
-Display settings have been set to recommended levels based on your system configuration.
+Display settings have been set to recommended levels because your graphics card changed
+from &apos;[LAST_GPU]&apos;
+to &apos;[THIS_GPU]&apos;
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="DisplaySetToRecommendedFeatureChange"
+ type="alertmodal">
+Display settings have been set to recommended levels because of a change to the rendering subsystem.
</notification>
<notification
@@ -4624,6 +4633,20 @@ Are you sure you want to quit?
<notification
icon="alertmodal.tga"
+ name="ConfirmRestoreToybox"
+ type="alertmodal">
+ <unique/>
+Are you sure you want to restore your default buttons and toolbars?
+
+You cannot undo this action.
+ <usetemplate
+ name="okcancelbuttons"
+ notext="Cancel"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
name="DeleteItems"
type="alertmodal">
<unique/>
@@ -7383,19 +7406,6 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
</notification>
<notification
- name="ModeChange"
- label=""
- type="alertmodal">
- <unique/>
- Changing modes requires you to quit and restart.
- <tag>confirm</tag>
- <usetemplate
- name="okcancelbuttons"
- yestext="Quit"
- notext="Don't Quit"/>
- </notification>
-
- <notification
name="NoClassifieds"
label=""
type="alertmodal">
@@ -7549,6 +7559,20 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
notext="Don't Quit"/>
</notification>
+ <notification
+ name="ConfirmHideUI"
+ label=""
+ type="alertmodal">
+ <unique/>
+ <tag>confirm</tag>
+ This action will hide all menu items and buttons. To get them back, click [SHORTCUT] again.
+ <usetemplate
+ name="okcancelignore"
+ yestext="OK"
+ notext="Cancel"
+ ignoretext="Confirm before hiding UI"/>
+ </notification>
+
<global name="UnsupportedGLRequirements">
You do not appear to have the proper hardware requirements for [APP_NAME]. [APP_NAME] requires an OpenGL graphics card that has multitexture support. If this is the case, you may want to make sure that you have the latest drivers for your graphics card, and service packs and patches for your operating system.
diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
index 20ff492c0f..2a24c74feb 100644
--- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
@@ -10,7 +10,7 @@
name="Mockup Tab"
selection_enabled="true"
tab_stop="false"
- title="Mockup Tab"
+ title="MOCKUP TAB"
translate="false"
width="0">
<wearable_items_list
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
deleted file mode 100644
index ec5853649e..0000000000
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ /dev/null
@@ -1,530 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- chrome="true"
- follows="left|bottom|right"
- focus_root="true"
- height="33"
- layout="topleft"
- left="0"
- name="bottom_tray"
- top="28"
- width="1310">
- <string
- name="DragIndicationImageName"
- value="Accordion_ArrowOpened_Off" />
- <string
- name="SpeakBtnToolTip"
- value="Turns microphone on/off" />
- <string
- name="VoiceControlBtnToolTip"
- value="Shows/hides voice control panel" />
- <layout_stack
- border_size="0"
- clip="false"
- follows="all"
- height="28"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="toolbar_stack"
- orientation="horizontal"
- top="0"
- width="1310">
- <layout_panel
- auto_resize="false"
- user_resize="false"
- min_width="2"
- width="2" />
- <layout_panel
- auto_resize="false"
- layout="topleft"
- max_width="320"
- min_width="214"
- height="28"
- mouse_opaque="false"
- name="chat_bar_layout_panel"
- user_resize="true"
- width="250" >
- <panel
- name="chat_bar"
- filename="panel_nearby_chat_bar.xml"
- left="0"
- height="28"
- width="248"
- top="0"
- mouse_opaque="false"
- follows="left|right"
- />
- </layout_panel>
- <!--
- This 5px Panel is an indicator of where the resize handle is.
- The panel provides a gap between the resize handle icon and a button to the right.
- -->
- <layout_panel
- auto_resize="false"
- layout="topleft"
- max_width="5"
- min_width="5"
- name="chat_bar_resize_handle_panel"
- user_resize="false"
- width="5">
- <icon
- follows="top|right"
- height="25"
- image_name="ChatBarHandle"
- layout="topleft"
- left="-7"
- name="resize_handle"
- top="4"
- width="5" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="59"
- mouse_opaque="false"
- name="speak_panel"
- top_delta="0"
- user_resize="false"
- width="108">
- <talk_button
- follows="left|right"
- height="23"
- layout="topleft"
- left="0"
- name="talk"
- top="5"
- width="105">
- <show_button
- tab_stop="true">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="voice_controls" />
- </show_button>
- <!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales.
- & pad_right is default value for long label which can be right aligned. See EXT-6318 -->
- <speak_button
- halign="center"
- label="Speak"
- label_selected="Speak"
- name="speak_btn"
- pad_right="20"
- tab_stop="true"
- use_ellipses="true" />
- </talk_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="gesture_panel"
- top_delta="0"
- user_resize="false"
- width="85">
- <gesture_combo_list
- follows="left|right"
- height="23"
- label="Gesture"
- layout="topleft"
- left="0"
- name="Gesture"
- tool_tip="Shows/hides gestures"
- top="5"
- width="82">
- <combo_button
- pad_right="10"
- use_ellipses="true" />
- <combo_list
- page_lines="17" />
- </gesture_combo_list>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="movement_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Move"
- layout="topleft"
- name="movement_btn"
- tool_tip="Shows/hides movement controls"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="moveview" />
- </bottomtray_button>
-
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="cam_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="View"
- layout="topleft"
- left="0"
- name="camera_btn"
- tool_tip="Shows/hides camera controls"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="camera" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_width="40"
- mouse_opaque="false"
- name="snapshot_panel"
- user_resize="false"
- width="39">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_overlay="Snapshot_Off"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- layout="topleft"
- left="0"
- name="snapshots"
- tool_tip="Take snapshot"
- top="5"
- width="36">
- <init_callback
- function="Button.SetFloaterToggle"
- parameter="snapshot" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="build_btn_panel"
- user_resize="false"
- width="83">
- <!--*FIX: Build Floater is not opened with default registration. Will be fixed soon.
-Disabled for now.
--->
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Build"
- layout="topleft"
- left="0"
- name="build_btn"
- tool_tip="Shows/hides Build Tools"
- top="5"
- use_ellipses="true"
- width="80">
- <commit_callback
- function="Build.Toggle"
- parameter="build" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="search_btn_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Search"
- layout="topleft"
- left="0"
- name="search_btn"
- tool_tip="Shows/hides Search"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetFloaterToggle"
- parameter="search" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="world_map_btn_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Map"
- layout="topleft"
- left="0"
- name="world_map_btn"
- tool_tip="Shows/hides World Map"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetFloaterToggle"
- parameter="world_map" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="62"
- mouse_opaque="false"
- name="mini_map_btn_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Mini-Map"
- layout="topleft"
- left="0"
- name="mini_map_btn"
- tool_tip="Shows/hides Mini-Map"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetFloaterToggle"
- parameter="mini_map" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- follows="left|right"
- height="30"
- layout="topleft"
- min_width="95"
- mouse_opaque="false"
- name="chiclet_list_panel"
- top="0"
- user_resize="false"
- width="189">
-<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
-as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
- <chiclet_panel
- chiclet_padding="4"
- follows="left|right"
- height="24"
- layout="topleft"
- left="1"
- min_width="95"
- mouse_opaque="false"
- name="chiclet_list"
- top="7"
- width="189">
- <button
- auto_resize="true"
- follows="right"
- height="29"
- image_hover_selected="SegmentedBtn_Left_Over"
- image_hover_unselected="SegmentedBtn_Left_Over"
- image_overlay="Arrow_Small_Left"
- image_pressed="SegmentedBtn_Left_Press"
- image_pressed_selected="SegmentedBtn_Left_Press"
- image_selected="SegmentedBtn_Left_Off"
- image_unselected="SegmentedBtn_Left_Off"
- layout="topleft"
- name="chicklet_left_scroll_button"
- tab_stop="false"
- top="-28"
- visible="false"
- width="7" />
- <button
- auto_resize="true"
- follows="right"
- height="29"
- image_hover_selected="SegmentedBtn_Right_Over"
- image_hover_unselected="SegmentedBtn_Right_Over"
- image_overlay="Arrow_Small_Right"
- image_pressed="SegmentedBtn_Right_Press"
- image_pressed_selected="SegmentedBtn_Right_Press"
- image_selected="SegmentedBtn_Right_Off"
- image_unselected="SegmentedBtn_Right_Off"
- layout="topleft"
- name="chicklet_right_scroll_button"
- tab_stop="false"
- top="-28"
- visible="false"
- width="7" />
- </chiclet_panel>
- </layout_panel>
- <layout_panel auto_resize="false"
- user_resize="false"
- width="4"
- min_width="4"/>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="37"
- name="im_well_panel"
- top="0"
- user_resize="false"
- width="37">
- <chiclet_im_well
- follows="right"
- height="28"
- layout="topleft"
- left="0"
- max_displayed_count="99"
- name="im_well"
- top="0"
- width="35">
- <!--
-Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
-xml attribute Description
-image_unselected "Unlit" - there are no new messages
-image_selected "Unlit" + "Selected" - there are no new messages and the Well is open
-image_pressed "Lit" - there are new messages
-image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open
- -->
- <button
- auto_resize="true"
- follows="right"
- halign="center"
- height="23"
- image_overlay="Unread_IM"
- image_overlay_alignment="center"
- image_pressed="WellButton_Lit"
- image_pressed_selected="WellButton_Lit_Selected"
- image_selected="PushButton_Press"
- label_color="Black"
- left="0"
- name="Unread IM messages"
- tool_tip="Conversations"
- width="34">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="im_well_window" />
- </button>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="37"
- name="notification_well_panel"
- top="0"
- user_resize="false"
- width="37">
- <chiclet_notification
- follows="right"
- height="23"
- layout="topleft"
- left="0"
- max_displayed_count="99"
- name="notification_well"
- top="5"
- width="35">
- <button
- auto_resize="true"
- bottom_pad="3"
- follows="right"
- halign="center"
- height="23"
- image_overlay="Notices_Unread"
- image_overlay_alignment="center"
- image_pressed="WellButton_Lit"
- image_pressed_selected="WellButton_Lit_Selected"
- image_selected="PushButton_Press"
- label_color="Black"
- left="0"
- name="Unread"
- tool_tip="Notifications"
- width="34">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="notification_well_window" />
- </button>
- </chiclet_notification>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- user_resize="false"
- min_width="4"
- name="DUMMY2"
- width="8" />
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..355a76e05f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="false"
+ chrome="true"
+ follows="left|top|right"
+ height="30"
+ layout="topleft"
+ mouse_opaque="false"
+ name="chiclet_bar"
+ width="1310">
+ <layout_stack
+ border_size="0"
+ clip="false"
+ follows="all"
+ height="30"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="toolbar_stack"
+ orientation="horizontal"
+ top="0"
+ width="1310">
+ <layout_panel
+ follows="left|right"
+ height="30"
+ layout="topleft"
+ min_width="95"
+ mouse_opaque="false"
+ name="chiclet_list_panel"
+ top="0"
+ user_resize="false"
+ width="189">
+ <chiclet_panel
+ chiclet_padding="4"
+ follows="left|right"
+ height="24"
+ layout="topleft"
+ left="1"
+ min_width="95"
+ mouse_opaque="false"
+ name="chiclet_list"
+ top="7"
+ width="189">
+ <button
+ auto_resize="true"
+ follows="right"
+ height="29"
+ image_hover_selected="SegmentedBtn_Left_Over"
+ image_hover_unselected="SegmentedBtn_Left_Over"
+ image_overlay="Arrow_Small_Left"
+ image_pressed="SegmentedBtn_Left_Press"
+ image_pressed_selected="SegmentedBtn_Left_Press"
+ image_selected="SegmentedBtn_Left_Off"
+ image_unselected="SegmentedBtn_Left_Off"
+ layout="topleft"
+ name="chicklet_left_scroll_button"
+ tab_stop="false"
+ top="-28"
+ visible="false"
+ width="7" />
+ <button
+ auto_resize="true"
+ follows="right"
+ height="29"
+ image_hover_selected="SegmentedBtn_Right_Over"
+ image_hover_unselected="SegmentedBtn_Right_Over"
+ image_overlay="Arrow_Small_Right"
+ image_pressed="SegmentedBtn_Right_Press"
+ image_pressed_selected="SegmentedBtn_Right_Press"
+ image_selected="SegmentedBtn_Right_Off"
+ image_unselected="SegmentedBtn_Right_Off"
+ layout="topleft"
+ name="chicklet_right_scroll_button"
+ tab_stop="false"
+ top="-28"
+ visible="false"
+ width="7" />
+ </chiclet_panel>
+ </layout_panel>
+ <layout_panel auto_resize="false"
+ user_resize="false"
+ width="4"
+ min_width="4"/>
+ <layout_panel
+ auto_resize="false"
+ follows="right"
+ height="28"
+ layout="topleft"
+ min_height="28"
+ min_width="37"
+ name="im_well_panel"
+ top="0"
+ user_resize="false"
+ width="37">
+ <chiclet_im_well
+ follows="right"
+ height="28"
+ layout="topleft"
+ left="0"
+ max_displayed_count="99"
+ name="im_well"
+ top="0"
+ width="35">
+ <!--
+Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
+xml attribute Description
+image_unselected "Unlit" - there are no new messages
+image_selected "Unlit" + "Selected" - there are no new messages and the Well is open
+image_pressed "Lit" - there are new messages
+image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open
+ -->
+ <button
+ auto_resize="true"
+ follows="right"
+ halign="center"
+ height="23"
+ image_overlay="Unread_IM"
+ image_overlay_alignment="center"
+ image_pressed="WellButton_Lit"
+ image_pressed_selected="WellButton_Lit_Selected"
+ image_selected="PushButton_Press"
+ label_color="Black"
+ left="0"
+ name="Unread IM messages"
+ tool_tip="Conversations"
+ width="34">
+ <init_callback
+ function="Button.SetDockableFloaterToggle"
+ parameter="im_well_window" />
+ </button>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel
+ auto_resize="false"
+ follows="right"
+ height="28"
+ layout="topleft"
+ min_height="28"
+ min_width="37"
+ name="notification_well_panel"
+ top="0"
+ user_resize="false"
+ width="37">
+ <chiclet_notification
+ follows="right"
+ height="23"
+ layout="topleft"
+ left="0"
+ max_displayed_count="99"
+ name="notification_well"
+ top="5"
+ width="35">
+ <button
+ auto_resize="true"
+ bottom_pad="3"
+ follows="right"
+ halign="center"
+ height="23"
+ image_overlay="Notices_Unread"
+ image_overlay_alignment="center"
+ image_pressed="WellButton_Lit"
+ image_pressed_selected="WellButton_Lit_Selected"
+ image_selected="PushButton_Press"
+ label_color="Black"
+ left="0"
+ name="Unread"
+ tool_tip="Notifications"
+ width="34">
+ <init_callback
+ function="Button.SetDockableFloaterToggle"
+ parameter="notification_well_window" />
+ </button>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
index eff674c628..d4da55e32e 100644
--- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
@@ -272,6 +272,7 @@
top="0"
width="313">
<text_editor
+ font="Monospace"
enabled="false"
type="string"
follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 1c3e08d59b..3835cd17b6 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -120,33 +120,6 @@ label="Remember password"
follows="left|bottom"
font="SansSerifSmall"
height="15"
- left_pad="10"
- name="mode_selection_text"
- top="20"
- width="130">
- Mode:
- </text>
- <combo_box
- follows="left|bottom"
- height="23"
- max_chars="128"
- tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
- top_pad="0"
- name="mode_combo"
- width="110">
- <combo_box.item
- label="Basic"
- name="Basic"
- value="settings_minimal.xml" />
- <combo_box.item
- label="Advanced"
- name="Advanced"
- value="" />
- </combo_box>
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- height="15"
left_pad="8"
name="start_location_text"
top="20"
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
index 84b5d11ba7..23e7814cad 100644
--- a/indra/newview/skins/default/xui/en/panel_me.xml
+++ b/indra/newview/skins/default/xui/en/panel_me.xml
@@ -10,43 +10,10 @@
name="panel_me"
top="0"
width="333">
- <!--<text
- type="string"
- follows="top|left|right"
- font="SansSerifHugeBold"
- height="20"
- layout="topleft"
- left="15"
- name="user_name"
- text_color="white"
- top="0"
- mouse_opaque="true"
- width="280">
- (Loading...)
- </text> -->
- <tab_container
- follows="all"
- height="555"
- halign="center"
- layout="topleft"
- left="5"
- name="tabs"
- tab_min_width="95"
- tab_height="30"
- tab_position="top"
- top_pad="10"
- width="317">
- <panel
- class="panel_my_profile"
- filename="panel_my_profile.xml"
- label="MY PROFILE"
- help_topic="panel_my_profile_tab"
- name="panel_profile" />
- <panel
- class="panel_picks"
- filename="panel_picks.xml"
- label="MY PICKS"
- help_topic="panel_my_picks_tab"
- name="panel_picks" />
- </tab_container>
+ <panel
+ class="panel_picks"
+ filename="panel_picks.xml"
+ label="MY PICKS"
+ help_topic="panel_my_picks_tab"
+ name="panel_picks"/>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 51ffec4727..7a8e872dc9 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -5,21 +5,21 @@
bg_opaque_color="MouseGray"
follows="left|top|right"
focus_root="true"
- height="60"
+ height="34"
layout="topleft"
name="navigation_bar"
chrome="true"
- width="600">
+ width="800">
<icon
follows="all"
image_name="NavBar_BG"
mouse_opaque="false"
name="bg_icon"
scale_image="true"
- visible="true"
+ visible="false"
left="0"
top="0"
- height="60"
+ height="34"
width="600"/>
<icon
follows="all"
@@ -30,7 +30,7 @@
visible="false"
left="0"
top="0"
- height="60"
+ height="34"
width="600"/>
<icon
follows="all"
@@ -41,16 +41,47 @@
visible="false"
left="0"
top="0"
- height="60"
+ height="34"
width="600"/>
+ <icon
+ follows="all"
+ image_name="NavBar Separator"
+ mouse_opaque="false"
+ name="separator_image"
+ scale_image="true"
+ left="0"
+ top="0"
+ width="800"
+ height="2"/>
+ <layout_stack
+ use_border="true"
+ bevel_style="none"
+ follows="all"
+ height="34"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="nvp_stack"
+ orientation="horizontal"
+ top="0"
+ width="800">
+ <layout_panel
+ follows="top|left"
+ layout="topleft"
+ auto_resize="true"
+ user_resize="true"
+ min_width="480"
+ name="navigation_layout_panel"
+ width="480">
<panel
background_visible="false"
follows="left|top|right"
top="3"
height="23"
layout="topleft"
+ left="0"
name="navigation_panel"
- width="600">
+ width="480">
<pull_button
follows="left|top"
direction="down"
@@ -87,7 +118,7 @@
top_delta="0"
width="32" />
<location_input
- follows="left|right|top"
+ follows="all"
halign="right"
height="23"
label="Location"
@@ -97,70 +128,50 @@
mouse_opaque="false"
name="location_combo"
top_delta="0"
- width="226">
+ width="355">
<combo_list
mouse_wheel_opaque="true"/>
- <!-- *TODO: Delete. Let the location_input use the correct art sizes.
- <location_input.add_landmark_button
- height="18"
- name="location_combo_add"
- width="20" />
- <location_input.info_button
- height="18"
- name="location_combo_info"
- width="20" />
- -->
</location_input>
- <!-- <button -->
- <!-- follows="right|top" -->
- <!-- height="20" -->
- <!-- image_disabled="TextField_Search_Off" -->
- <!-- image_disabled_selected="TextField_Search_Off" -->
- <!-- image_hover_selected="TextField_Search_Off" -->
- <!-- image_hover_unselected="TextField_Search_Off" -->
- <!-- image_selected="TextField_Search_Off" -->
- <!-- image_unselected="TextField_Search_Off" -->
- <!-- layout="topleft" -->
- <!-- left_pad="5" -->
- <!-- mouse_opaque="false" -->
- <!-- name="search_bg" -->
- <!-- top_delta="0" -->
- <!-- width="168" /> -->
- <search_combo_box
- follows="right|top"
- halign="right"
- height="23"
- label="Search"
+ </panel>
+ </layout_panel>
+
+ <layout_panel
+ auto_resize="false"
+ layout="topleft"
+ max_width="5"
+ min_width="5"
+ name="nav_bar_resize_handle_panel"
+ user_resize="false"
+ width="5">
+ <icon
+ follows="top|right"
+ height="25"
+ image_name="ChatBarHandle"
+ layout="topleft"
+ left="-6"
+ name="resize_handle"
+ top="4"
+ width="5" />
+ </layout_panel>
+
+ <layout_panel
+ follows="top|left"
layout="topleft"
- right="-10"
- mouse_opaque="false"
- name="search_combo_box"
- tool_tip="Search"
- top_delta="0"
- width="244" >
- <combo_editor
- label="Search [SECOND_LIFE]"
- name="search_combo_editor"/>
- <combo_list
- draw_border="true"
- border.highlight_light_color="FocusColor"
- border.highlight_dark_color="FocusColor"
- border.shadow_light_color="FocusColor"
- border.shadow_dark_color="FocusColor"
- mouse_wheel_opaque="true" />
- </search_combo_box>
- </panel>
+ auto_resize="true"
+ user_resize="true"
+ min_width="315"
+ name="favorites_layout_panel"
+ width="315">
<favorites_bar
follows="left|right|top"
font="SansSerifSmall"
- height="15"
+ height="20"
layout="topleft"
left="0"
name="favorite"
image_drag_indication="Accordion_ArrowOpened_Off"
- bottom="55"
tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
- width="590">
+ width="311">
<label
follows="left|top"
height="15"
@@ -173,14 +184,20 @@
width="102">
Favorites Bar
</label>
- <chevron_button name=">>"
- image_unselected="TabIcon_Close_Off"
- image_selected="TabIcon_Close_Off"
- tab_stop="false"
- follows="left|bottom"
- tool_tip="Show more of My Favorites"
- width="15"
- top="15"
- height="15"/>
+ <!-- More button actually is a text box. -->
+ <more_button
+ follows="left|bottom"
+ name=">>"
+ tab_stop="false"
+ tool_tip="Show more of My Favorites"
+ top="13"
+ width="50"
+ bottom="0"
+ valign="bottom">
+ More &#9660;
+ </more_button>
</favorites_bar>
+ </layout_panel>
+
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
index ab966dbb0e..f766236b2e 100644
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
@@ -1,25 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- border_visible="false"
- border="false"
- legacy_header_height="18"
- can_minimize="true"
- can_tear_off="false"
- can_resize="true"
- can_drag_on_left="false"
- can_close="false"
- can_dock="true"
- bevel_style="in"
+<panel
height="300"
- min_width="235"
+ follows="all"
layout="topleft"
name="nearby_chat"
help_topic="nearby_chat"
- save_rect="true"
- title="NEARBY CHAT"
- save_dock_state="true"
- save_visibility="true"
- single_instance="true"
width="320">
<check_box
bottom_delta="36"
@@ -47,4 +32,4 @@
right_widget_pad="5"
left_widget_pad="0"
width="315" />
-</floater>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 7daa52b2d9..24046d5cca 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -117,7 +117,7 @@
</scroll_container>
<panel
follows="left|right|bottom"
- height="35"
+ height="23"
layout="topleft"
top_pad="5"
left="8"
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index 87e263726d..85f402dfa2 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -4,12 +4,12 @@ bg_opaque_color="DkGray2"
background_visible="true"
background_opaque="true"
follows="all"
- height="548"
+ height="571"
label="Picks"
layout="topleft"
- left="0"
+ left="8"
name="panel_picks"
- top="0"
+ top_pad="0"
width="313">
<string
name="no_picks"
@@ -30,7 +30,7 @@ bg_opaque_color="DkGray2"
<accordion
fit_parent="true"
follows="all"
- height="485"
+ height="514"
layout="topleft"
left="0"
name="accordion"
@@ -81,10 +81,10 @@ bg_opaque_color="DkGray2"
left="1"
height="27"
label="bottom_panel"
- layout="bottom"
+ layout="topleft"
name="edit_panel"
- top_pad="-2"
- width="313">
+ top_pad="0"
+ width="312">
<layout_stack
follows="bottom|left|right"
@@ -149,8 +149,9 @@ bg_opaque_color="DkGray2"
follows="bottom|left|right"
layout="topleft"
left="0"
- height="40"
+ height="30"
name="buttons_cucks"
+ top_pad="0"
width="313">
<layout_stack
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
index cb547d7c6b..d9067b41c7 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -86,16 +86,6 @@
name="appearance_camera_movement"
tool_tip="Use automatic camera positioning while in edit mode"
width="242" />
- <check_box
- control_name="SidebarCameraMovement"
- follows="left|top"
- height="16"
- initial_value="true"
- label="Sidebar"
- layout="topleft"
- name="appearance_sidebar_positioning"
- tool_tip="Use automatic camera positioning for sidebar"
- width="242" />
<icon
follows="left|top"
height="18"
@@ -117,7 +107,7 @@
name="keyboard_lbl"
width="270"
top_delta="2">
- Keyboard:
+ Keyboard:
</text>
<check_box
control_name="ArrowKeysAlwaysMove"
@@ -149,7 +139,7 @@
name="mouse_lbl"
width="270"
top_pad="15">
- Mouse:
+ Mouse:
</text>
<check_box
control_name="FirstPersonAvatarVisible"
@@ -205,7 +195,7 @@
name="single_click_action_lbl"
width="150"
top_pad="20">
- Single click on land:
+ Single click on land:
</text>
<combo_box
height="23"
@@ -235,7 +225,7 @@
name="double_click_action_lbl"
width="150"
top_pad="12">
- Double click on land:
+ Double click on land:
</text>
<combo_box
height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
index 2b2ea78fac..df16f6fd37 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -107,13 +107,13 @@
<text_editor
enabled="false"
follows="left|top"
- height="100"
+ height="180"
layout="topleft"
- left="110"
+ left="10"
max_length="65535"
name="covenant_editor"
- top_delta="30"
- width="340"
+ top_delta="20"
+ width="460"
word_wrap="true">
There is no Covenant provided for this Estate.
</text_editor>
diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml
index 15df095efa..4550603134 100644
--- a/indra/newview/skins/default/xui/en/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml
@@ -174,31 +174,31 @@
<button
follows="left|top"
height="20"
- label="Get Top Scripts..."
+ label="Restart Region"
layout="topleft"
- left="10"
- name="top_scripts_btn"
- tool_tip="List of objects spending the most time running scripts"
- top_pad="5"
+ left_pad="155"
+ name="restart_btn"
+ tool_tip="Give 2 minute countdown and restart region"
+ top_delta="0"
width="150" />
<button
follows="left|top"
height="20"
- label="Restart Region"
+ label="Get Top Scripts..."
layout="topleft"
left="10"
- name="restart_btn"
- tool_tip="Give 2 minute countdown and restart region"
+ name="top_scripts_btn"
+ tool_tip="List of objects spending the most time running scripts"
top_pad="5"
- width="130" />
+ width="150" />
<button
follows="left|top"
height="20"
label="Delay Restart"
layout="topleft"
- left="10"
+ left_pad="155"
name="cancel_restart_btn"
tool_tip="Delay region restart by one hour"
- top_pad="5"
- width="130" />
+ top_delta="0"
+ width="150" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
deleted file mode 100644
index 0f330a7b98..0000000000
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- Side tray cannot show background because it is always
- partially on screen to hold tab buttons. -->
-<side_tray
- name="sidebar"
- background_visible="false"
- mouse_opaque="true"
- width="333"
- collapsed="true"
->
- <!-- Individual tabs must show background to have seemless
- appearance up to tray panel header word like "Home".
- Embedded panels are inset by a pixel and so their
- backgrounds will not block the world fully. -->
-
- <sidetray_tab
- name="sidebar_openclose"
- help_topic="sidebar_openclose"
- tab_title="Toggle Sidebar"
- description="Toggle Sidebar."
- image="TabIcon_Open_Off"
- image_selected="TabIcon_Close_Off"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel /> <!-- dummy panel, never to actually be seen -->
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_home"
- help_topic="sidebar_home"
- tab_title="Home"
- description="Home."
- image="TabIcon_Home_Off"
- image_selected="TabIcon_Home_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel
- class="panel_sidetray_home"
- name="panel_home"
- filename="panel_sidetray_home_tab.xml"
- label="home"
- />
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_me"
- help_topic="sidebar_me"
- tab_title="My Profile"
- description="Edit your public profile and Picks."
- image="TabIcon_Me_Off"
- image_selected="TabIcon_Me_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel_container
- name="panel_container"
- default_panel_name="panel_me"
- width="333"
- >
- <panel
- class="panel_me"
- name="panel_me"
- filename="panel_me.xml"
- label="Me"
- />
-
- </panel_container>
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_people"
- help_topic="sidebar_people"
- tab_title="People"
- description="Find your friends, contacts and people nearby."
- image="TabIcon_People_Off"
- image_selected="TabIcon_People_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel_container
- name="panel_container"
- default_panel_name="panel_people"
- width="333"
- >
- <panel
- class="panel_people"
- name="panel_people"
- filename="panel_people.xml"
- />
- <panel
- class="panel_profile_view"
- name="panel_profile_view"
- filename="panel_profile_view.xml"
- />
- <panel
- class="panel_group_info_sidetray"
- name="panel_group_info_sidetray"
- filename="panel_group_info_sidetray.xml"
- label="Group Profile"
- font="SansSerifBold"
- />
- <panel
- class="panel_block_list_sidetray"
- name="panel_block_list_sidetray"
- filename="panel_block_list_sidetray.xml"
- label="Blocked Residents &amp; Objects"
- font="SansSerifBold"
- />
-
- </panel_container>
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_places"
- help_topic="sidebar_places"
- tab_title="Places"
- label="Places"
- description="Find places to go and places you&apos;ve visited before."
- image="TabIcon_Places_Off"
- image_selected="TabIcon_Places_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel
- class="panel_places"
- name="panel_places"
- filename="panel_places.xml"
- label="Places"
- font="SansSerifBold"
- />
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_inventory"
- help_topic="sidebar_inventory"
- tab_title="My Inventory"
- description="Browse your inventory."
- image="TabIcon_Things_Off"
- image_selected="TabIcon_Things_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <badge location="top_left" location_percent_vcenter="50" location_percent_hcenter="95" />
- <panel
- class="sidepanel_inventory"
- name="sidepanel_inventory"
- filename="sidepanel_inventory.xml"
- label="Edit Inventory"
- font="SansSerifBold"
- />
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_appearance"
- help_topic="sidebar_appearance"
- tab_title="My Appearance"
- description="Change your appearance and current look."
- image="TabIcon_Appearance_Off"
- image_selected="TabIcon_Appearance_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel
- class="sidepanel_appearance"
- name="sidepanel_appearance"
- filename="sidepanel_appearance.xml"
- label="Edit Appearance"
- font="SansSerifBold"
- />
- </sidetray_tab>
-
-</side_tray>
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 5894abd03b..422bbada7f 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -35,8 +35,8 @@
</panel.string>
<panel
height="18"
- left="-355"
- width="95"
+ left="-370"
+ width="160"
top="1"
follows="right|top"
name="balance_bg"
@@ -60,11 +60,11 @@
halign="center"
font="SansSerifSmall"
follows="right|top|bottom"
- image_hover_unselected="buy_over"
- image_unselected="buy_off"
- image_pressed="buy_press"
+ image_hover_unselected="PushButton_Over"
+ image_unselected="PushButton_Off"
+ image_pressed="PushButton_Press"
height="18"
- label="BUY L$"
+ label="Buy L$"
label_color="White"
left_pad="0"
label_shadow="true"
@@ -74,39 +74,41 @@
tool_tip="Click to buy more L$"
top="0"
width="55" />
+ <button
+ halign="left"
+ font="SansSerifSmall"
+ follows="right|top|bottom"
+ imgoverlay_label_space="7"
+ image_overlay="Command_MiniCart_Icon"
+ image_overlay_alignment="left"
+ image_hover_unselected="PushButton_Over"
+ image_unselected="PushButton_Off"
+ image_pressed="PushButton_Press"
+ height="18"
+ label="Shop"
+ label_color="White"
+ left_pad="0"
+ label_shadow="true"
+ name="goShop"
+ pad_right="0"
+ pad_bottom="2"
+ tool_tip="Open Second Life Marketplace"
+ top="0"
+ width="65" />
</panel>
- <combo_box
- follows="right|top"
- drop_down_button.pad_left="10"
- left_pad="5"
- top="0"
- width="120"
- height="20"
- name="mode_combo"
- tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
- >
- <combo_box.item
- label="Basic Mode"
- name="Basic"
- value="settings_minimal.xml" />
- <combo_box.item
- label="Advanced Mode"
- name="Advanced"
- value="" />
- </combo_box>
<text
- left_pad="5"
type="string"
font="SansSerifSmall"
text_readonly_color="TimeTextColor"
follows="right|top"
- halign="center"
+ halign="right"
height="16"
top="5"
layout="topleft"
+ left_pad="0"
name="TimeText"
tool_tip="Current time (Pacific)"
- width="75">
+ width="145">
24:00 AM PST
</text>
<button
@@ -117,7 +119,7 @@
image_pressed="Pause_Press"
image_pressed_selected="Play_Press"
is_toggle="true"
- left_pad="10"
+ left_pad="15"
top="1"
name="media_toggle_btn"
tool_tip="Start/Stop All Media (Music, Video, Web pages)"
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index 42f64c3a76..b9e714dd30 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -10,6 +10,7 @@
-->
<floater
+ open_positioning="none"
legacy_header_height="0"
header_height="0"
name="toast"
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
new file mode 100644
index 0000000000..3c69a0cb6c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbar_view
+ follows="all"
+ layout="topleft"
+ name="toolbar view"
+ height="500"
+ width="1024"
+ left="0"
+ top="0"
+ mouse_opaque="false"
+ tab_stop="false"
+ visible="true">
+ <layout_stack name="bottom_toolbar_stack"
+ orientation="vertical"
+ left="0"
+ top="0"
+ width="1024"
+ height="500"
+ follows="all"
+ mouse_opaque="false">
+ <layout_panel name="vertical_toolbar_panel"
+ auto_resize="true"
+ user_resize="false"
+ width="1024"
+ height="500"
+ mouse_opaque="false">
+ <layout_stack name="vertical_toolbar_stack"
+ orientation="horizontal"
+ left="0"
+ top="0"
+ width="1024"
+ height="500"
+ follows="all"
+ mouse_opaque="false">
+ <layout_panel name="left_toolbar_panel"
+ auto_resize="false"
+ user_resize="false"
+ height="500"
+ width="30"
+ mouse_opaque="false">
+ <toolbar follows="left|top|bottom"
+ button_panel.bg_opaque_image="Rounded_Rect_Right"
+ name="toolbar_left"
+ width="30"
+ left="0"
+ top="10"
+ bottom="-10"
+ side="left"
+ button_display_mode="icons_only">
+ <icon layout="topleft"
+ height="15"
+ width="28"
+ follows="left|top"
+ top="20"
+ left="10"
+ tab_stop="false"
+ visible="false"
+ image_name="Caret_Left_Icon"
+ name="caret" />
+ </toolbar>
+ </layout_panel>
+ <layout_panel name="non_toolbar_panel"
+ auto_resize="true"
+ user_resize="false"
+ mouse_opaque="false"
+ height="100"
+ width="200">
+ <view top="0"
+ follows="all"
+ height="100"
+ left="0"
+ mouse_opaque="false"
+ name="floater_snap_region"
+ width="200"/>
+ <view top="0"
+ follows="left|top|bottom"
+ height="100"
+ left="0"
+ mouse_opaque="false"
+ name="minimized_floaters_region"
+ width="160"/>
+ <panel follows="left|top|right"
+ layout="topleft"
+ height="30"
+ left_pad="10"
+ mouse_opaque="false"
+ name="chiclet_container"
+ tab_stop="false"
+ top="0"
+ bg_visible="false"
+ width="20">
+ </panel>
+ <panel bottom="100"
+ follows="left|right|bottom"
+ height="25"
+ left="0"
+ mouse_opaque="false"
+ tab_stop="false"
+ name="stand_stop_flying_container"
+ visible="false"
+ width="200"/>
+ </layout_panel>
+ <layout_panel name="right_toolbar_panel"
+ auto_resize="false"
+ user_resize="false"
+ height="500"
+ width="30"
+ mouse_opaque="false">
+ <toolbar
+ button_panel.bg_opaque_image="Rounded_Rect_Left"
+ follows="right|top|bottom"
+ name="toolbar_right"
+ width="30"
+ left="0"
+ top="10"
+ bottom="-10"
+ side="right"
+ button_display_mode="icons_only">
+ <icon layout="topleft"
+ height="15"
+ width="28"
+ follows="left|top"
+ top="20"
+ left="10"
+ tab_stop="false"
+ visible="false"
+ image_name="Caret_Right_Icon"
+ name="caret" />
+ </toolbar>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="bottom_toolbar_panel"
+ auto_resize="false"
+ user_resize="false"
+ height="30"
+ width="1024"
+ mouse_opaque="false">
+ <toolbar layout="topleft"
+ button_panel.bg_opaque_image="Rounded_Rect_Top"
+ name="toolbar_bottom"
+ height="30"
+ left="40"
+ right="-40"
+ top="0"
+ side="bottom"
+ follows="left|right|bottom"
+ button_display_mode="icons_with_text"
+ visible="true">
+ <icon layout="topleft"
+ height="28"
+ width="15"
+ follows="left|top"
+ top="20"
+ left="10"
+ tab_stop="false"
+ visible="false"
+ use_draw_context_alpha="false"
+ image_name="Caret_Bottom_Icon"
+ name="caret" />
+ </toolbar>
+ </layout_panel>
+ </layout_stack>
+</toolbar_view>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 7a176ff367..b52784d6bc 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -67,6 +67,8 @@
top="0"
orientation="vertical"
name="inbox_outbox_layout_stack"
+ open_time_constant="0.02"
+ close_time_constant="0.02"
height="235"
width="330">
<layout_panel
@@ -91,10 +93,10 @@
label=""
height="200"
width="330">
- <string name="InboxLabelWithArg">Received Items ([NUM])</string>
- <string name="InboxLabelNoArg">Received Items</string>
+ <string name="InboxLabelWithArg">Received items ([NUM])</string>
+ <string name="InboxLabelNoArg">Received items</string>
<button
- label="Received Items"
+ label="Received items"
font="SansSerifMedium"
name="inbox_btn"
height="35"
@@ -122,7 +124,7 @@
halign="right"
top_pad="0"
width="300">
- [NUM] New
+ [NUM] new
</text>
<panel
follows="all"
@@ -173,10 +175,10 @@
label=""
height="200"
width="330">
- <string name="OutboxLabelWithArg">Merchant Outbox ([NUM])</string>
- <string name="OutboxLabelNoArg">Merchant Outbox</string>
+ <string name="OutboxLabelWithArg">Merchant outbox ([NUM])</string>
+ <string name="OutboxLabelNoArg">Merchant outbox</string>
<button
- label="Merchant Outbox"
+ label="Merchant outbox"
font="SansSerifMedium"
name="outbox_btn"
height="35"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index a41330c9f6..db7c07f2f8 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -16,16 +16,16 @@
<string name="StartupDetectingHardware">Detecting hardware...</string>
<string name="StartupLoading">Loading [APP_NAME]...</string>
<string name="StartupClearingCache">Clearing cache...</string>
- <string name="StartupInitializingTextureCache">Initializing Texture Cache...</string>
+ <string name="StartupInitializingTextureCache">Initializing texture cache...</string>
<string name="StartupInitializingVFS">Initializing VFS...</string>
- <string name="StartupRequireDriverUpdate">Graphics Initialization Failed. Please Update Your Graphics Driver!</string>
+ <string name="StartupRequireDriverUpdate">Graphics initialization failed. Please update your graphics driver!</string>
<!-- progress -->
<string name="ProgressRestoring">Restoring...</string>
- <string name="ProgressChangingResolution">Changing Resolution...</string>
+ <string name="ProgressChangingResolution">Changing resolution...</string>
<!-- Legacy strings, almost never used -->
- <string name="Fullbright">Fullbright (Legacy)</string> <!-- used in the Build > materials dropdown-->
+ <string name="Fullbright">Fullbright (legacy)</string> <!-- used in the Build > materials dropdown-->
<!-- Login -->
<string name="LoginInProgress">Logging in. [APP_NAME] may appear frozen. Please wait.</string>
@@ -38,8 +38,8 @@
<string name="LoginInitializingMultimedia">Initializing multimedia...</string>
<string name="LoginInitializingFonts">Loading fonts...</string>
<string name="LoginVerifyingCache">Verifying cache files (can take 60-90 seconds)...</string>
- <string name="LoginProcessingResponse">Processing Response...</string>
- <string name="LoginInitializingWorld">Initializing World...</string>
+ <string name="LoginProcessingResponse">Processing response...</string>
+ <string name="LoginInitializingWorld">Initializing world...</string>
<string name="LoginDecodingImages">Decoding images...</string>
<string name="LoginInitializingQuicktime">Initializing QuickTime...</string>
<string name="LoginQuicktimeNotFound">QuickTime not found - unable to initialize.</string>
@@ -56,7 +56,7 @@
<string name="CertBasicConstraints">Too many certificates were in the servers Certificate chain. Please contact your Grid administrator.</string>
<string name="CertInvalidSignature">The certificate signature returned by the Grid server could not be verified. Please contact your Grid administrator.</string>
- <string name="LoginFailedNoNetwork">Network Error: Could not establish connection, please check your network connection.</string>
+ <string name="LoginFailedNoNetwork">Network error: Could not establish connection, please check your network connection.</string>
<string name="LoginFailed">Login failed.</string>
<string name="Quit">Quit</string>
<string name="create_account_url">http://join.secondlife.com/</string>
@@ -2051,6 +2051,8 @@ Returns a string with the requested data about the region
<string name="Marketplace Error Unsellable Item">Error: This item can not be sold on the marketplace.</string>
<string name="Marketplace Error Internal Import">Error: There was a problem with this item. Try again later.</string>
+ <string name="Open landmarks">Open landmarks</string>
+
<!-- use value="" because they have preceding spaces -->
<string name="no_transfer" value=" (no transfer)" />
<string name="no_modify" value=" (no modify)" />
@@ -2267,7 +2269,7 @@ Returns a string with the requested data about the region
<string name="NextStipendDay" value="The next stipend day is " />
<string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string>
<string name="GroupIndividualShare" value=" Group Individual Share" />
- <string name="GroupColumn" value=" Group" />
+ <string name="GroupColumn" value=" Group" />
<string name="Balance">Balance</string>
<string name="Credits">Credits</string>
<string name="Debits">Debits</string>
@@ -3650,8 +3652,60 @@ Try enclosing path to the editor with double quotes.
<string name="BeaconSound">Viewing sound beacons (yellow)</string>
<string name="BeaconMedia">Viewing media beacons (white)</string>
<string name="ParticleHiding">Hiding Particles</string>
-
- <!-- Mesh UI terms -->
+
+ <!-- commands -->
+
+ <string name="Command_AboutLand_Label">About land</string>
+ <string name="Command_Appearance_Label">Appearance</string>
+ <string name="Command_Avatar_Label">Avatar</string>
+ <string name="Command_Build_Label">Build</string>
+ <string name="Command_Chat_Label">Chat</string>
+ <string name="Command_Compass_Label">Compass</string>
+ <string name="Command_Destinations_Label">Destinations</string>
+ <string name="Command_Gestures_Label">Gestures</string>
+ <string name="Command_HowTo_Label">How to</string>
+ <string name="Command_Inventory_Label">Inventory</string>
+ <string name="Command_Map_Label">Map</string>
+ <string name="Command_Marketplace_Label">Marketplace</string>
+ <string name="Command_MiniMap_Label">Mini-map</string>
+ <string name="Command_Move_Label">Move</string>
+ <string name="Command_People_Label">People</string>
+ <string name="Command_Picks_Label">Picks</string>
+ <string name="Command_Places_Label">Places</string>
+ <string name="Command_Preferences_Label">Preferences</string>
+ <string name="Command_Profile_Label">Profile</string>
+ <string name="Command_Search_Label">Search</string>
+ <string name="Command_Snapshot_Label">Snapshot</string>
+ <string name="Command_Speak_Label">Speak</string>
+ <string name="Command_View_Label">View</string>
+ <string name="Command_Voice_Label">Nearby voice</string>
+
+ <string name="Command_AboutLand_Tooltip">Information about the land you're visiting</string>
+ <string name="Command_Appearance_Tooltip">Change your avatar</string>
+ <string name="Command_Avatar_Tooltip">Choose a complete avatar</string>
+ <string name="Command_Build_Tooltip">Building objects and reshaping terrain</string>
+ <string name="Command_Chat_Tooltip">Chat with people nearby using text</string>
+ <string name="Command_Compass_Tooltip">Compass</string>
+ <string name="Command_Destinations_Tooltip">Destinations of interest</string>
+ <string name="Command_Gestures_Tooltip">Gestures for your avatar</string>
+ <string name="Command_HowTo_Tooltip">How to do common tasks</string>
+ <string name="Command_Inventory_Tooltip">View and use your belongings</string>
+ <string name="Command_Map_Tooltip">Map of the world</string>
+ <string name="Command_Marketplace_Tooltip">Go shopping</string>
+ <string name="Command_MiniMap_Tooltip">Show nearby people</string>
+ <string name="Command_Move_Tooltip">Moving your avatar</string>
+ <string name="Command_People_Tooltip">Friends, groups, and nearby people</string>
+ <string name="Command_Picks_Tooltip">Places to show as favorites in your profile</string>
+ <string name="Command_Places_Tooltip">Places you've saved</string>
+ <string name="Command_Preferences_Tooltip">Preferences</string>
+ <string name="Command_Profile_Tooltip">Edit or view your profile</string>
+ <string name="Command_Search_Tooltip">Find places, events, people</string>
+ <string name="Command_Snapshot_Tooltip">Take a picture</string>
+ <string name="Command_Speak_Tooltip">Speak with people nearby using your microphone</string>
+ <string name="Command_View_Tooltip">Changing camera angle</string>
+ <string name="Command_Voice_Tooltip">People nearby with voice capability</string>
+
+ <!-- Mesh UI terms -->
<string name="Retain%">Retain%</string>
<string name="Detail">Detail</string>
<string name="Better Detail">Better Detail</string>
@@ -3660,5 +3714,4 @@ Try enclosing path to the editor with double quotes.
<string name="Wrap">Wrap</string>
<string name="Preview">Preview</string>
<string name="Normal">Normal</string>
-
</strings>
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 61d36468d7..e2baba92a3 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -15,7 +15,6 @@
label_color_selected="ButtonLabelSelectedColor"
label_color_disabled="ButtonLabelDisabledColor"
label_color_disabled_selected="ButtonLabelSelectedDisabledColor"
- highlight_color="ButtonUnselectedFgColor"
image_color="ButtonImageColor"
image_color_disabled="ButtonImageColor"
flash_color="ButtonFlashBgColor"
@@ -27,5 +26,9 @@
scale_image="true"
handle_right_mouse="true"
use_draw_context_alpha="true"
- held_down_delay.seconds="0.5">
+ held_down_delay.seconds="0.5"
+ button_flash_count="8"
+ button_flash_rate="1.25"
+ display_pressed_state="true"
+ >
</button>
diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml
index 2e5ebafe46..adbb183317 100644
--- a/indra/newview/skins/default/xui/en/widgets/floater.xml
+++ b/indra/newview/skins/default/xui/en/widgets/floater.xml
@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- See also settings.xml UIFloater* settings for configuration -->
-<floater
+<floater
name="floater"
+ open_positioning="none"
+ layout="topleft"
bg_opaque_color="FloaterFocusBackgroundColor"
bg_alpha_color="FloaterDefaultBackgroundColor"
bg_opaque_image="Window_Foreground"
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
new file mode 100644
index 0000000000..7e7a9c61cf
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbar pad_left="1"
+ pad_right="1"
+ pad_top="1"
+ pad_bottom="1"
+ pad_between="1"
+ min_girth="24"
+ mouse_opaque="false"
+ read_only="false">
+ <button_panel name="button_panel"
+ bg_opaque_image="Rounded_Rect"
+ background_visible="true"
+ bg_opaque_image_overlay="MouseGray"
+ background_opaque="true"/>
+ <button_icon_and_text imgoverlay_label_space="7"
+ label_color_selected="White"
+ halign="left"
+ image_pressed="PushButton_Press"
+ image_pressed_selected="PushButton_Selected_Press"
+ image_selected="PushButton_Selected_Press"
+ image_disabled_selected="PushButton_Selected_Disabled"
+ image_disabled="PushButton_Disabled"
+ button_width.min="70"
+ button_width.max="140"
+ desired_height="24"
+ pad_left="10"
+ pad_right="10"
+ follows="left|top"
+ chrome="true"
+ image_overlay_alignment="left"
+ use_ellipses="true"
+ auto_resize="true"
+ flash_color="EmphasisColor"/>
+ <button_icon pad_left="10"
+ pad_right="10"
+ image_bottom_pad="10"
+ image_top_pad="10"
+ image_pressed="PushButton_Press"
+ image_pressed_selected="PushButton_Selected_Press"
+ image_selected="PushButton_Selected_Press"
+ image_disabled_selected="PushButton_Selected_Disabled"
+ image_disabled="PushButton_Disabled"
+ desired_height="38"
+ button_width.min="38"
+ button_width.max="38"
+ follows="left|top"
+ label=""
+ halign="left"
+ chrome="true"
+ use_ellipses="true"
+ auto_resize="true"
+ flash_color="EmphasisColor"/>
+</toolbar>
diff --git a/indra/newview/skins/default/xui/es/panel_pick_info.xml b/indra/newview/skins/default/xui/es/panel_pick_info.xml
index a1259cf483..3450279b4a 100644
--- a/indra/newview/skins/default/xui/es/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/es/panel_pick_info.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_pick_info">
- <text name="title" value="Información del destacado"/>
+ <text name="title" value="Datos del destacado"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
<text_editor name="pick_name" value="[nombre]"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml
index d088cb3244..4d02513a53 100644
--- a/indra/newview/skins/default/xui/fr/floater_about.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about.xml
@@ -8,9 +8,9 @@
Compilé avec [COMPILER] version [COMPILER_VERSION]
</floater.string>
<floater.string name="AboutPosition">
- Vous êtes à [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] dans [REGION] se trouvant à &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ Vous êtes à [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] dans [REGION], se trouvant à &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
</floater.string>
<floater.string name="AboutSystem">
CPU : [CPU]
@@ -37,6 +37,9 @@ Version serveur vocal : [VOICE_VERSION]
<floater.string name="AboutTraffic">
Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
</floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ Erreur lors de la récupération de l&apos;URL des notes de version du serveur.
+ </floater.string>
<tab_container name="about_tab">
<panel label="Infos" name="support_panel">
<button label="Copier dans le presse-papiers" name="copy_btn"/>
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 55dd913a22..9771c3f7fd 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -217,19 +217,19 @@ ou divisé.
Facteur Bonus objets : [BONUS]
</text>
<text name="Simulator primitive usage:">
- Utilisation des primitives :
+ Capacité de la région :
</text>
<text name="objects_available">
[COUNT] sur [MAX] ([AVAILABLE] disponibles)
</text>
<text name="Primitives parcel supports:">
- Prims max. sur la parcelle :
+ Capacité de la parcelle :
</text>
<text name="object_contrib_text">
[COUNT]
</text>
<text name="Primitives on parcel:">
- Prims sur la parcelle :
+ Impact sur la parcelle :
</text>
<text name="total_objects_text">
[COUNT]
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar.xml b/indra/newview/skins/default/xui/fr/floater_avatar.xml
new file mode 100644
index 0000000000..cfbac66c0e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="CHOIX D&apos;AVATAR"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_camera.xml b/indra/newview/skins/default/xui/fr/floater_camera.xml
index 1d62a89ff2..97ff246c4d 100644
--- a/indra/newview/skins/default/xui/fr/floater_camera.xml
+++ b/indra/newview/skins/default/xui/fr/floater_camera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="AFFICHER">
<floater.string name="rotate_tooltip">
Faire tourner la caméra autour du point central
</floater.string>
diff --git a/indra/newview/skins/default/xui/fr/floater_chat_bar.xml b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
new file mode 100644
index 0000000000..88a2fb669b
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="CHAT PRÈS DE MOI">
+ <panel>
+ <line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl-Entrée pour crier"/>
+ <button name="show_nearby_chat" tool_tip="Affiche/Masque le journal de chats près de vous"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_destinations.xml b/indra/newview/skins/default/xui/fr/floater_destinations.xml
new file mode 100644
index 0000000000..25e6c90a8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINATIONS"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_fast_timers.xml b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml
new file mode 100644
index 0000000000..0100b10557
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ Pauser
+ </string>
+ <string name="run">
+ Courir
+ </string>
+ <button label="Pauser" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_how_to.xml b/indra/newview/skins/default/xui/fr/floater_how_to.xml
new file mode 100644
index 0000000000..a414212ba0
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="AIDE RAPIDE"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml
index 8675fb8ef9..dbd3dd9406 100644
--- a/indra/newview/skins/default/xui/fr/floater_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_map.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="Mini-carte">
<floater.string name="ToolTipMsg">
[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)
</floater.string>
@@ -7,7 +7,7 @@
[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)
</floater.string>
<floater.string name="mini_map_caption">
- MINI-CARTE
+ Mini-carte
</floater.string>
<text label="N" name="floater_map_north" text="N">
N
diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
index 2b8e441ef0..a26deb1aef 100644
--- a/indra/newview/skins/default/xui/fr/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Chargement du modèle">
- <string name="status_idle">
- Inactif
- </string>
+<floater name="Model Preview" title="CHARGEMENT DU MODELE">
+ <string name="status_idle"/>
<string name="status_parse_error">
- Problème d&apos;analyse de fichier .dae ; reportez-vous au journal pour plus de détails.
+ Erreur : Problème d&apos;analyse de fichier .dae ; reportez-vous au journal pour plus de détails.
</string>
<string name="status_reading_file">
Chargement...
@@ -51,6 +49,9 @@
<string name="mesh_status_missing_lod">
Niveau de détail requis manquant.
</string>
+ <string name="mesh_status_invalid_material_list">
+ Les options du niveau de détail ne sont pas une sous-ensemble d&apos;un modèle de référence.
+ </string>
<string name="layer_all">
Tout
</string>
@@ -63,188 +64,211 @@
<string name="tbd">
TBD
</string>
- <text name="name_label">
- Nom :
- </text>
- <text name="lod_label">
- Aperçu :
- </text>
- <combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
- <combo_item name="high">
- Niveau de détail : Élevé
- </combo_item>
- <combo_item name="medium">
- Niveau de détail : Moyen
- </combo_item>
- <combo_item name="low">
- Niveau de détail : Faible
- </combo_item>
- <combo_item name="lowest">
- Niveau de détail : Le plus faible
- </combo_item>
- </combo_box>
- <text name="warning_title">
- AVERTISSEMENT :
- </text>
- <text name="warning_message">
- Vous ne pourrez pas effectuer le chargement final du modèle sur les serveurs Second Life. [[VURL] Découvrez comment] activer le chargement des modèles de maillage.
- </text>
- <text name="weights_text">
- Téléchargement :
-Propriétés physiques :
-Serveur :
-
-Équiv. en prims :
- </text>
- <text name="weights">
- [ST]
-[PH]
-[SIM]
-
-[EQ]
- </text>
- <tab_container name="import_tab">
- <panel label="Niveau de détail" name="lod_panel">
- <text name="lod_table_header">
- Sélectionner le niveau de détail :
- </text>
- <text name="high_label" value="Élevé"/>
- <text name="high_triangles" value="0"/>
- <text name="high_vertices" value="0"/>
- <text name="medium_label" value="Moyen"/>
- <text name="medium_triangles" value="0"/>
- <text name="medium_vertices" value="0"/>
- <text name="low_label" value="Faible"/>
- <text name="low_triangles" value="0"/>
- <text name="low_vertices" value="0"/>
- <text name="lowest_label" value="Le plus faible"/>
- <text name="lowest_triangles" value="0"/>
- <text name="lowest_vertices" value="0"/>
- <text name="lod_table_footer">
- Niveau de détail : [DETAIL]
- </text>
- <radio_group name="lod_file_or_limit" value="lod_from_file">
- <radio_item label="Charger depuis un fichier" name="lod_from_file"/>
- <radio_item label="Générer automatiquement" name="lod_auto_generate"/>
- <radio_item label="Aucun" name="lod_none"/>
- </radio_group>
- <button label="Parcourir..." name="lod_browse"/>
- <combo_box name="lod_mode">
- <combo_item name="triangle_limit">
- Triangles max.
- </combo_item>
- <combo_item name="error_threshold">
- Seuil d&apos;erreur
- </combo_item>
- </combo_box>
- <text name="build_operator_text">
- Opér. construction :
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ Nom du modèle :
</text>
- <text name="queue_mode_text">
- Mode file d&apos;attente :
+ <text name="model_category_label">
+ Ce modèle représente...
</text>
- <combo_box name="build_operator">
- <combo_item name="edge_collapse">
- Fusion (nouveau sommet)
- </combo_item>
- <combo_item name="half_edge_collapse">
- Fusion (un des sommets)
- </combo_item>
- </combo_box>
- <combo_box name="queue_mode">
- <combo_item name="greedy">
- Glouton
- </combo_item>
- <combo_item name="lazy">
- Paresseux
- </combo_item>
- <combo_item name="independent">
- Indépendant
- </combo_item>
+ <combo_box name="model_category_combo">
+ <combo_item label="Choisir une option..." name="Choose one"/>
+ <combo_item label="Silhouette de l&apos;avatar" name="Avatar shape"/>
+ <combo_item label="Éléments attachés aux avatars" name="Avatar attachment"/>
+ <combo_item label="Objet mobile (véhicule, animal)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="Éléments pour la construction" name="Building Component"/>
+ <combo_item label="Important, immobile etc." name="Large, non moving etc"/>
+ <combo_item label="Plus petit, immobile etc." name="Smaller, non-moving etc"/>
+ <combo_item label="Aucun" name="Not really any of these"/>
</combo_box>
- <text name="border_mode_text">
- Mode bord :
- </text>
- <text name="share_tolderance_text">
- Tolérance partage :
- </text>
- <combo_box name="border_mode">
- <combo_item name="border_unlock">
- Déverrouiller
- </combo_item>
- <combo_item name="border_lock">
- Verrouiller
- </combo_item>
- </combo_box>
- <text name="crease_label">
- Angle pli :
- </text>
- <spinner name="crease_angle" value="75"/>
</panel>
- <panel label="Propriétés physiques" name="physics_panel">
- <panel name="physics geometry">
- <radio_group name="physics_load_radio" value="physics_load_from_file">
- <radio_item label="Fichier :" name="physics_load_from_file"/>
- <radio_item label="Utiliser le niveau de détail :" name="physics_use_lod"/>
- </radio_group>
- <combo_box name="physics_lod_combo" tool_tip="Niveau de détail à utiliser pour la forme physique.">
- <combo_item name="physics_lowest">
- Le plus faible
- </combo_item>
- <combo_item name="physics_low">
- Faible
- </combo_item>
- <combo_item name="physics_medium">
- Moyen
- </combo_item>
- <combo_item name="physics_high">
- Élevé
- </combo_item>
- </combo_box>
- <button label="Parcourir..." name="physics_browse"/>
+ <tab_container name="import_tab">
+ <panel label="Niveau de détail" name="lod_panel" title="Niveau de détail">
+ <text initial_value="Source" name="source" value="Source"/>
+ <text initial_value="Triangles" name="triangles" value="Triangles"/>
+ <text initial_value="Sommets" name="vertices" value="Sommets"/>
+ <text initial_value="Élevé" name="high_label" value="Élevé"/>
+ <button label="Parcourir..." name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="Moyen" name="medium_label" value="Moyen"/>
+ <button label="Parcourir..." name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="Faible" name="low_label" value="Faible"/>
+ <button label="Parcourir..." name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="Le plus faible" name="lowest_label" value="Le plus faible"/>
+ <button label="Parcourir..." name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="Génération de normales" name="gen_normals"/>
+ <text initial_value="Angle pli :" name="crease_label" value="Angle pli :"/>
+ <spinner name="crease_angle" value="75"/>
</panel>
- <panel name="physics analysis">
- <slider label="Lissage :" name="Smooth"/>
- <check_box label="Fermer les trous (lent)" name="Close Holes (Slow)"/>
- <button label="Analyser" name="Decompose"/>
- <button label="Annuler" name="decompose_cancel"/>
+ <panel label="Propriétés physiques" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ Étape 1 : Niveau de détail
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="Niveau de détail à utiliser pour la forme des propriétés physiques.">
+ <combo_item name="choose_one">
+ Choisir une option...
+ </combo_item>
+ <combo_item name="physics_high">
+ Élevé
+ </combo_item>
+ <combo_item name="physics_medium">
+ Moyen
+ </combo_item>
+ <combo_item name="physics_low">
+ Faible
+ </combo_item>
+ <combo_item name="physics_lowest">
+ Le plus faible
+ </combo_item>
+ <combo_item name="load_from_file">
+ Du fichier
+ </combo_item>
+ </combo_box>
+ <button label="Parcourir..." name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ Étape 2 : Analyse
+ </text>
+ <text name="analysis_method_label">
+ Moyen :
+ </text>
+ <text name="quality_label">
+ Qualité :
+ </text>
+ <text name="smooth_method_label">
+ Lissage :
+ </text>
+ <check_box label="Fermer les trous" name="Close Holes (Slow)"/>
+ <button label="Analyser" name="Decompose"/>
+ <button label="Annuler" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ Étape 3 : Simplifier
+ </text>
+ <text name="simp_method_header">
+ Moyen :
+ </text>
+ <text name="pass_method_header">
+ Passes :
+ </text>
+ <text name="Detail Scale label">
+ Échelle de détail :
+ </text>
+ <text name="Retain%_label">
+ Retenue :
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="Simplifier" name="Simplify"/>
+ <button label="Annuler" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ Résultats :
+ </text>
+ <text name="physics_triangles">
+ Triangles : [TRIANGLES],
+ </text>
+ <text name="physics_points">
+ Sommets : [POINTS]
+ </text>
+ <text name="physics_hulls">
+ Enveloppes : [HULLS]
+ </text>
+ </panel>
</panel>
- <panel name="physics simplification">
- <slider label="Passes :" name="Combine Quality"/>
- <slider label="Échelle de détail :" name="Detail Scale"/>
- <slider label="Retenue :" name="Retain%"/>
- <button label="Simplifier" name="Simplify"/>
- <button label="Annuler" name="simplify_cancel"/>
- </panel>
- <panel name="physics info">
- <slider label="Décomposition de l&apos;aperçu :" name="physics_explode"/>
- <text name="physics_triangles">
- Triangles : [TRIANGLES]
+ <panel label="Option de chargement" name="modifiers_panel">
+ <text name="scale_label">
+ Echelle (1 = pas d&apos;échelle) :
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ Dimensions :
</text>
- <text name="physics_points">
- Sommets : [POINTS]
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
</text>
- <text name="physics_hulls">
- Enveloppes : [HULLS]
+ <check_box label="Inclure les textures" name="upload_textures"/>
+ <text name="include_label">
+ Pour les modèles d&apos;avatar uniquement :
</text>
+ <check_box label="Inclure la pondération de la peau :" name="upload_skin"/>
+ <check_box label="Inclure la position des articulations :" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Décalage Z (élever ou abaisser l&apos;avatar) :
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </panel>
- <panel label="Modificateurs" name="modifiers_panel">
- <spinner name="import_scale" value="1.0"/>
- <text name="import_dimensions">
- [X] x [Y] x [Z] m
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="Calculer les poids et les frais." name="calculate_btn" tool_tip="Calculer les poids et les frais."/>
+ <button label="Annuler" name="cancel_btn"/>
+ <button label="Charger le modèle" name="ok_btn" tool_tip="Charger dans le simulateur"/>
+ <button label="Effacer les paramètres et réinitialiser le formulaire" name="reset_btn"/>
+ <text name="upload_fee">
+ Frais de chargement : [FEE] L$
+ </text>
+ <text name="prim_weight">
+ Impact sur le terrain : [EQ]
+ </text>
+ <text name="download_weight">
+ Téléchargement : [ST]
+ </text>
+ <text name="physics_weight">
+ Propriétés physiques : [PH]
+ </text>
+ <text name="server_weight">
+ Serveur : [SIM]
+ </text>
+ <text name="warning_title">
+ Remarque :
+ </text>
+ <text name="warning_message">
+ Vous n&apos;avez pas la permission de charger des modèles de maillage. [[VURL] Savoir comment] obtenir la permission.
+ </text>
+ <text name="status">
+ [STATUS]
</text>
- <check_box label="Textures" name="upload_textures"/>
- <check_box label="Pondération de la peau" name="upload_skin"/>
- <check_box label="Position des articulations" name="upload_joints"/>
- <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </tab_container>
- <text name="upload_fee">
- Frais de chargement : [FEE] L$
+ </panel>
+ <text name="lod_label">
+ Aperçu :
</text>
- <button label="Réinitialiser" name="reset_btn" tool_tip="Rétablir les paramètres par défaut."/>
- <button label="Calculer poids et frais" name="calculate_btn" tool_tip="Calculer les poids et les frais."/>
- <button label="Charger" name="ok_btn" tool_tip="Charger dans le simulateur."/>
- <button label="Annuler" name="cancel_btn"/>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
+ <combo_item name="high">
+ Élevé
+ </combo_item>
+ <combo_item name="medium">
+ Moyen
+ </combo_item>
+ <combo_item name="low">
+ Faible
+ </combo_item>
+ <combo_item name="lowest">
+ Le plus faible
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ Afficher...
+ </text>
+ <check_box label="Coins" name="show_edges"/>
+ <check_box label="Propriétés physiques" name="show_physics"/>
+ <check_box label="Textures" name="show_textures"/>
+ <check_box label="Pondération de la peau" name="show_skin_weight"/>
+ <check_box label="Articulations" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ Décomposition de l&apos;aperçu :
+ </text>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
index f564b6f71a..cd2eb761ec 100644
--- a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
@@ -6,26 +6,20 @@
<button label="2. Optimisation" name="optimize_btn"/>
<button label="1. Sélection du fichier" name="choose_file_btn"/>
<panel name="choose_file_panel">
- <panel name="choose_file_header_panel">
- <text name="choose_file_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Choisir un fichier de modèle
</text>
</panel>
- <panel name="choose_file_content_panel">
+ <panel name="content">
<text name="advanced_users_text">
Utilisateurs expérimentés : si vous êtes habitué à utiliser des outils de création de contenu en 3D, l&apos;outil de chargement avancé est mis à votre disposition.
</text>
<button label="Passer à Avancé" name="switch_to_advanced"/>
- <text name="choose_model_file_label">
+ <text name="Cache location">
Choisir un fichier de modèle à charger
</text>
<button label="Parcourir..." label_selected="Parcourir..." name="browse"/>
- <text name="support_collada_text">
- Second Life prend en charge les fichiers COLLADA (.dae).
- </text>
- <text name="dimensions_label">
- Dimensions (mètres) :
- </text>
<text name="dimensions">
X Y Z
</text>
@@ -38,18 +32,15 @@
</panel>
</panel>
<panel name="optimize_panel">
- <panel name="optimize_header_panel">
- <text name="optimize_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Optimiser le modèle
</text>
</panel>
- <text name="optimize_hint">
+ <text name="description">
Le modèle a été optimisé en termes de performances. Vous pouvez l&apos;ajuster si vous le souhaitez.
</text>
- <panel name="optimize_content_panel">
- <text name="generating_lod_label">
- Génération du niveau de détail
- </text>
+ <panel name="content">
<text name="high_detail_text">
Générer le niveau de détail : Élevé
</text>
@@ -64,123 +55,64 @@
</text>
</panel>
<panel name="content2">
- <text name="optimize_performance_text">
- Performances
- </text>
- <text name="optimize_faster_rendering_text">
- Rendu plus rapide
-Moins de détail
-Poids en prims inférieur
- </text>
- <text name="optimize_accuracy_text">
- Précision
- </text>
- <text name="optimize_slower_rendering_text">
- Rendu plus lent
-Plus de détail
-Poids en prims supérieur
- </text>
- <text name="accuracy_slider_mark1">
- &apos;
- </text>
- <text name="accuracy_slider_mark2">
- &apos;
- </text>
- <text name="accuracy_slider_mark3">
- &apos;
- </text>
<button label="Recalcul géométrique" name="recalculate_geometry_btn"/>
- <text name="geometry_preview_label">
+ <text name="lod_label">
Aperçu de la géométrie
</text>
<combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
- <combo_item name="preview_lod_high">
+ <combo_item name="high">
Niveau de détail élevé
</combo_item>
- <combo_item name="preview_lod_medium">
+ <combo_item name="medium">
Niveau de détail moyen
</combo_item>
- <combo_item name="preview_lod_low">
+ <combo_item name="low">
Niveau de détail faible
</combo_item>
- <combo_item name="preview_lod_lowest">
+ <combo_item name="lowest">
Niveau de détail le plus faible
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="physics_panel">
- <panel name="physics_header_panel">
- <text name="physics_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Ajuster les propriétés physiques
</text>
</panel>
- <text name="physics_hint">
+ <text name="description">
Une forme va être créée pour l&apos;enveloppe externe du modèle. Ajustez le niveau de détail de la forme en fonction de l&apos;objectif souhaité pour votre modèle.
</text>
- <panel name="physics_content_panel">
- <text name="physics_performance_text">
- Performances
- </text>
- <text name="physics_faster_rendering_text">
- Rendu plus rapide
-Moins de détail
-Poids en prims inférieur
- </text>
- <text name="physics_accuracy_text">
- Précision
- </text>
- <text name="physics_slower_dendering_text">
- Rendu plus lent
-Plus de détail
-Poids en prims supérieur
- </text>
- <text name="physics_example_1">
- Exemples :
-Objets mobiles
-Objets volants
-Véhicules
- </text>
- <text name="physics_example_2">
- Exemples :
-Petits objets statiques
-Objets moins détaillés
-Mobilier simple
- </text>
- <text name="physics_example_3">
- Exemples :
-Objets statiques
-Objets détaillés
-Bâtiments
- </text>
+ <panel name="content">
<button label="Recalcul physique" name="recalculate_physics_btn"/>
<button label="Recalcul en cours..." name="recalculating_physics_btn"/>
- <text name="physics_preview_label">
+ <text name="lod_label">
Aperçu des propriétés physiques
</text>
<combo_box name="preview_lod_combo2" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
- <combo_item name="preview_lod2_high">
+ <combo_item name="high">
Niveau de détail élevé
</combo_item>
- <combo_item name="preview_lod2_medium">
+ <combo_item name="medium">
Niveau de détail moyen
</combo_item>
- <combo_item name="preview_lod2_low">
+ <combo_item name="low">
Niveau de détail faible
</combo_item>
- <combo_item name="preview_lod2_lowest">
+ <combo_item name="lowest">
Niveau de détail le plus faible
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="review_panel">
- <panel name="review_header_panel">
- <text name="review_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Vérification
</text>
</panel>
- <panel name="review_content_panel">
+ <panel name="content">
<text name="review_prim_equiv">
Impact sur la parcelle/région : équivalent à [EQUIV] prims
</text>
@@ -193,8 +125,8 @@ Bâtiments
</panel>
</panel>
<panel name="upload_panel">
- <panel name="upload_header_panel">
- <text name="upload_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Chargement terminé
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/floater_moveview.xml b/indra/newview/skins/default/xui/fr/floater_moveview.xml
index c0f3864b81..0b0ec51846 100644
--- a/indra/newview/skins/default/xui/fr/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_moveview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="BOUGER">
<string name="walk_forward_tooltip">
Marcher en avant (appuyer sur la flèche vers le haut ou W)
</string>
@@ -58,14 +58,14 @@
Voler
</string>
<panel name="panel_actions">
- <button label="" label_selected="" name="move up btn" tool_tip="Voler vers le haut (touche E)"/>
<button label="" label_selected="" name="turn left btn" tool_tip="Tourner à gauche (appuyer sur la flèche de gauche ou sur A)"/>
<joystick_slide name="move left btn" tool_tip="Marcher vers la gauche (Maj+Flèche gauche ou touche A)"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Voler vers le bas (touche C)"/>
<button label="" label_selected="" name="turn right btn" tool_tip="Tourner à droite (appuyer sur la flèche de droite ou sur D)"/>
<joystick_slide name="move right btn" tool_tip="Marcher vers la droite (Maj+Flèche droite ou touche D)"/>
<joystick_turn name="forward btn" tool_tip="Marcher en avant (appuyer sur la flèche vers le haut ou W)"/>
<joystick_turn name="backward btn" tool_tip="Marcher en arrière (appuyer sur la flèche vers le bas ou S)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Voler vers le haut (touche E)"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Voler vers le bas (touche C)"/>
</panel>
<panel name="panel_modes">
<button label="" name="mode_walk_btn" tool_tip="Mode marche"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_my_appearance.xml b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml
new file mode 100644
index 0000000000..53ff58e307
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="APPARENCE">
+ <panel label="Changer d&apos;apparence" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_my_inventory.xml b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml
new file mode 100644
index 0000000000..d514d08081
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTAIRE"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_object_weights.xml b/indra/newview/skins/default/xui/fr/floater_object_weights.xml
new file mode 100644
index 0000000000..f1b063a3da
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANCÉ">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="SELECTIONNÉ"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="Objets"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="Prims"/>
+ <text name="weights_of_selected_text" value="POIDS DES OBJETS SELECTIONNÉS"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="Télécharger"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="Propriétés physiques"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="Serveur"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="Afficher"/>
+ <text name="land_impacts_text" value="IMPACTS SUR LE TERRAIN"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="Sélection"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="Rezzé sur le terrain"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="Capacité restante"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="Capacité totale"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights What is all this?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
index d77dfbdf82..72018f5de5 100644
--- a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="Enregistrer la tenue">
+<floater name="modal container" title="SAUVEGARDER LA TENUE">
<button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
<button label="Annuler" label_selected="Annuler" name="Cancel"/>
<text name="Save item as:">
diff --git a/indra/newview/skins/default/xui/fr/floater_people.xml b/indra/newview/skins/default/xui/fr/floater_people.xml
new file mode 100644
index 0000000000..58701c06b2
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="PERSONNES">
+ <panel_container name="main_panel">
+ <panel label="Profil du groupe" name="panel_group_info_sidetray"/>
+ <panel label="Résidents et objets ignorés" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_picks.xml b/indra/newview/skins/default/xui/fr/floater_picks.xml
new file mode 100644
index 0000000000..f058ff668b
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Favoris"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_places.xml b/indra/newview/skins/default/xui/fr/floater_places.xml
new file mode 100644
index 0000000000..9e649aca47
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LIEUX">
+ <panel label="Lieux" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
index 9e2e4333aa..080ade9dd4 100644
--- a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Périphériques audio">
+<floater name="floater_sound_devices" title="PERIPHERIQUES AUDIO">
<text name="voice_label">
Chat vocal
</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_stats.xml b/indra/newview/skins/default/xui/fr/floater_stats.xml
index 3c19bb2608..a74a338bd7 100644
--- a/indra/newview/skins/default/xui/fr/floater_stats.xml
+++ b/indra/newview/skins/default/xui/fr/floater_stats.xml
@@ -10,8 +10,8 @@
</stat_view>
<stat_view label="Avancées" name="advanced">
<stat_view label="Rendu" name="render">
- <stat_bar label="KTris Drawn" name="ktrisframe"/>
- <stat_bar label="KTris Drawn" name="ktrissec"/>
+ <stat_bar label="KTris par image" name="ktrisframe"/>
+ <stat_bar label="KTris par s" name="ktrissec"/>
<stat_bar label="Objets totaux" name="objs"/>
<stat_bar label="Nouveaux objets" name="newobjs"/>
</stat_view>
@@ -32,7 +32,7 @@
<stat_bar label="Couches" name="layerskbitstat"/>
<stat_bar label="Arrivés" name="actualinkbitstat"/>
<stat_bar label="Sortis" name="actualoutkbitstat"/>
- <stat_bar label="Ops VFS en attente" name="vfspendingoperations"/>
+ <stat_bar label="Opérations VFS en attente" name="vfspendingoperations"/>
</stat_view>
</stat_view>
<stat_view label="Simulateur" name="sim">
@@ -64,6 +64,14 @@
<stat_bar label="Durée de l&apos;avatar" name="simagentmsec"/>
<stat_bar label="Durée des images" name="simimagesmsec"/>
<stat_bar label="Durée du script" name="simscriptmsec"/>
+ <stat_bar label="Temps d&apos;inactivité" name="simsparemsec"/>
+ <stat_view label="Détails Temps (ms)" name="timedetails">
+ <stat_bar label="Etape propr. physiques" name="simsimphysicsstepmsec"/>
+ <stat_bar label="Mettre à jour les formes phys" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="Propriétés physiques Autre" name="simsimphysicsothermsec"/>
+ <stat_bar label="Temps de sommeil" name="simsleepmsec"/>
+ <stat_bar label="Pump IO" name="simpumpiomsec"/>
+ </stat_view>
</stat_view>
</stat_view>
</container_view>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index bf687c412b..1ecf47f2e5 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -25,10 +25,10 @@
Cliquez et faites glisser pour sélectionner le terrain.
</floater.string>
<floater.string name="status_selectcount">
- [OBJ_COUNT] objets ( [PRIM_COUNT] prims[PE_STRING] ) sélectionnés
+ [OBJ_COUNT] objets sélectionnés, impact sur le terrain [LAND_IMPACT]
</floater.string>
- <floater.string name="status_selectprimequiv">
- , équiv. prims de [SEL_WEIGHT]
+ <floater.string name="status_remaining_capacity">
+ Capacité restante [LAND_CAPACITY].
</floater.string>
<button label="" label_selected="" name="button focus" tool_tip="Mise au point"/>
<button label="" label_selected="" name="button move" tool_tip="Déplacer"/>
@@ -105,8 +105,8 @@
<text name="selection_empty">
Aucune sélection effectuée.
</text>
- <text name="selection_weight">
- Poids physique [PHYS_WEIGHT], Coût de rendu [DISP_WEIGHT].
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
</text>
<tab_container name="Object Info Tabs">
<panel label="Général" name="General">
@@ -319,7 +319,6 @@
Type de raccord
</text>
<combo_box name="sculpt type control">
- <combo_box.item label="(aucun)" name="None"/>
<combo_box.item label="Sphère" name="Sphere"/>
<combo_box.item label="Tore" name="Torus"/>
<combo_box.item label="Plan" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_toybox.xml b/indra/newview/skins/default/xui/fr/floater_toybox.xml
new file mode 100644
index 0000000000..e6fa212c65
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="PERSONNALISER LA BARRE D&apos;OUTILS">
+ <text name="toybox label 1">
+ Ajouter ou supprimer des boutons en les faisant glisser vers les barres d&apos;outils ou à partir de ces dernières.
+ </text>
+ <text name="toybox label 2">
+ Les boutons s&apos;afficheront comme indiqué ou comme des icônes, en fonction des paramètres de chaque barre d&apos;outils.
+ </text>
+ <button label="Restaurer les choix par défaut" label_selected="Restaurer les choix par défaut" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
index d4f07a0a25..2b2bb8bbe3 100644
--- a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Contrôles vocaux">
+<floater name="floater_voice_controls" title="CONTROLES DE LA VOIX">
<string name="title_nearby">
- CHAT VOCAL PRÈS DE VOUS
+ Chat près de vous
</string>
<string name="title_group">
Appel de groupe avec [GROUP]
diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
index 20af901ddc..09c9f5084a 100644
--- a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_navbar_menu">
- <menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="Afficher la barre de navigation &amp; favoris" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="Afficher la mini-barre d&apos;emplacement" name="ShowMiniLocationPanel"/>
</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
index 6b96a16e75..8210c1be51 100644
--- a/indra/newview/skins/default/xui/fr/menu_login.xml
+++ b/indra/newview/skins/default/xui/fr/menu_login.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
<menu label="Moi" name="File">
- <menu_item_call label="Préférences" name="Preferences..."/>
+ <menu_item_call label="Préférences..." name="Preferences..."/>
<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
</menu>
<menu label="Aide" name="Help">
diff --git a/indra/newview/skins/default/xui/fr/menu_toolbars.xml b/indra/newview/skins/default/xui/fr/menu_toolbars.xml
new file mode 100644
index 0000000000..bbfbe4b9ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="Choisir les boutons..." name="Chose Buttons"/>
+ <menu_item_check label="Icônes et étiquettes" name="icons_with_text"/>
+ <menu_item_check label="Icônes uniquement" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index cf1dac2f3a..64cd463070 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -1,29 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
<menu label="Moi" name="Me">
- <menu_item_call label="Préférences" name="Preferences"/>
- <menu_item_call label="Ma Page d&apos;accueil" name="Manage My Account">
+ <menu_item_call label="Page d&apos;accueil..." name="Manage My Account">
<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/>
</menu_item_call>
- <menu_item_call label="Acheter des L$" name="Buy and Sell L$"/>
- <menu_item_call label="Mon profil" name="Profile"/>
- <menu_item_call label="Mon apparence" name="ChangeOutfit"/>
- <menu_item_check label="Mon inventaire" name="Inventory"/>
- <menu_item_check label="Mon inventaire" name="ShowSidetrayInventory"/>
- <menu_item_check label="Mes gestes" name="Gestures"/>
- <menu_item_check label="Ma voix" name="ShowVoice"/>
+ <menu_item_call label="Profil..." name="Profile"/>
+ <menu_item_call label="Apparence..." name="ChangeOutfit"/>
+ <menu_item_check label="Inventaire..." name="Inventory"/>
+ <menu_item_check label="Gestes..." name="Gestures"/>
+ <menu_item_check label="Chat vocal..." name="ShowVoice"/>
<menu label="Déplacement" name="Movement">
<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
<menu_item_check label="Voler" name="Fly"/>
<menu_item_check label="Toujours courir" name="Always Run"/>
<menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/>
</menu>
- <menu label="Mon statut" name="Status">
+ <menu label="Statut" name="Status">
<menu_item_call label="Absent" name="Set Away"/>
<menu_item_call label="Occupé" name="Set Busy"/>
</menu>
<menu_item_call label="Demander le statut Admin" name="Request Admin Options"/>
<menu_item_call label="Quitter le statut Admin" name="Leave Admin Options"/>
+ <menu_item_call label="Acheter des L$" name="Buy and Sell L$"/>
+ <menu_item_call label="Préférences..." name="Preferences"/>
+ <menu_item_call label="Barres d&apos;outils..." name="Toolbars"/>
+ <menu_item_call label="Cacher tous les contrôles" name="Hide UI"/>
<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
</menu>
<menu label="Communiquer" name="Communicate">
@@ -145,7 +146,6 @@
</menu>
<menu label="Aide" name="Help">
<menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_check label="Activer les astuces" name="Enable Hints"/>
<menu_item_call label="Signaler une infraction" name="Report Abuse"/>
<menu_item_call label="Signaler un bug" name="Report Bug"/>
<menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
@@ -161,7 +161,7 @@
<menu label="Outils de performance" name="Performance Tools">
<menu_item_call label="Mesure du lag" name="Lag Meter"/>
<menu_item_check label="Barre de statistiques" name="Statistics Bar"/>
- <menu_item_check label="Afficher le coût de rendu de l&apos;avatar" name="Avatar Rendering Cost"/>
+ <menu_item_check label="Afficher le poids de dessin pour les avatars" name="Avatar Rendering Cost"/>
</menu>
<menu label="Surbrillance et visibilité" name="Highlighting and Visibility">
<menu_item_check label="Balise animée" name="Cheesy Beacon"/>
@@ -289,6 +289,7 @@
<menu_item_check label="Lumières" name="Lights"/>
<menu_item_check label="Squelette de collision" name="Collision Skeleton"/>
<menu_item_check label="Rayons" name="Raycast"/>
+ <menu_item_check label="Complexité du rendu" name="rendercomplexity"/>
<menu_item_check label="Sculpture" name="Sculpt"/>
</menu>
<menu label="Rendu" name="Rendering">
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 1389c49f5b..31c29029b5 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -1909,6 +1909,12 @@ Déplacer les objets de l&apos;inventaire ?
Êtes-vous certain de vouloir quitter ?
<usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
</notification>
+ <notification name="ConfirmRestoreToybox">
+ Etes-vous certain de vouloir restaurer vos boutons et barres d&apos;outils par défaut ?
+
+Vous ne pouvez pas annuler cette action.
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
<notification name="DeleteItems">
[QUESTION]
<usetemplate ignoretext="Confirmer avant de supprimer des articles" name="okcancelignore" notext="Annuler" yestext="OK"/>
@@ -2995,10 +3001,6 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou
<button name="cancel" text="Annuler"/>
</form>
</notification>
- <notification label="" name="ModeChange">
- Vous devez quitter et redémarrer l&apos;application afin de changer de mode.
- <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
- </notification>
<notification label="" name="NoClassifieds">
Pour créer et modifier des petites annonces, vous devez utiliser le mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ? Le sélecteur de mode se trouve sur l&apos;écran de connexion.
<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
@@ -3043,6 +3045,10 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou
La recherche est uniquement disponible en mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ?
<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
</notification>
+ <notification label="" name="ConfirmHideUI">
+ Cette action cachera tous les objets des menus et boutons. Pour les récupérer, cliquez de nouveau sur [SHORTCUT].
+ <usetemplate ignoretext="Confimer avant de cacher l&apos;interface" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
<global name="UnsupportedGLRequirements">
Vous semblez ne pas avoir le matériel requis pour utiliser [APP_NAME]. [APP_NAME] requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les pilotes les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d&apos;exploitation.
diff --git a/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..de21996404
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Conversations"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Notifications"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_me.xml b/indra/newview/skins/default/xui/fr/panel_me.xml
index 219e5801f2..5676986228 100644
--- a/indra/newview/skins/default/xui/fr/panel_me.xml
+++ b/indra/newview/skins/default/xui/fr/panel_me.xml
@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Mon profil" name="panel_me">
- <tab_container name="tabs">
- <panel label="MON PROFIL" name="panel_profile"/>
- <panel label="MES FAVORIS" name="panel_picks"/>
- </tab_container>
+ <panel label="MES FAVORIS" name="panel_picks"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
index 45caf2323d..ecb1e9813a 100644
--- a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Revenir à l&apos;emplacement précédent"/>
- <pull_button name="forward_btn" tool_tip="Avancer d&apos;un emplacement"/>
- <button name="home_btn" tool_tip="Me téléporter jusqu&apos;à mon domicile"/>
- <location_input label="Emplacement" name="location_combo"/>
- <search_combo_box label="Rechercher" name="search_combo_box" tool_tip="Rechercher">
- <combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
- <label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
- Favoris
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris"/>
- </favorites_bar>
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="Revenir à l’emplacement précédent"/>
+ <pull_button name="forward_btn" tool_tip="Avancer d’un emplacement"/>
+ <button name="home_btn" tool_tip="Me téléporter jusqu’à mon domicile"/>
+ <location_input label="Endroit" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
+ <label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos endroits favoris dans Second Life.">
+ Barre des Favoris
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris">
+ Plus ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
index 9b1b21c434..98eddf196b 100644
--- a/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT PRÈS DE MOI">
+<panel name="nearby_chat">
<check_box label="Traduction du chat (fournie par Google)" name="translate_chat_checkbox"/>
-</floater>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
index 5ccf07f7b4..dd4c1c9f63 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -13,7 +13,10 @@
<combo_box.item label="Italiano (Italien) - Bêta" name="Italian"/>
<combo_box.item label="Polski (Polonais) - Bêta" name="Polish"/>
<combo_box.item label="Português (Portugais) - Bêta" name="Portugese"/>
+ <combo_box.item label="Русский (Russe) - Bêta" name="Russian"/>
+ <combo_box.item label="Türkçe (Turc) - Bêta" name="Turkish"/>
<combo_box.item label="日本語 (Japonais) - Bêta" name="(Japanese)"/>
+ <combo_box.item label="正體 (Chinois traditionnel) - Bêta" name="Traditional Chinese"/>
</combo_box>
<text name="language_textbox2">
(redémarrage requis)
@@ -48,7 +51,6 @@
<check_box label="Titres de groupe" name="show_all_title_checkbox1" tool_tip="Afficher les titres de groupe, comme Officier ou Membre."/>
<check_box label="Mettre mes amis en surbrillance" name="show_friends" tool_tip="Mettre en surbrillance l&apos;affichage des noms de vos amis."/>
<check_box label="Voir les noms d&apos;affichage" name="display_names_check" tool_tip="Cocher pour utiliser les noms d&apos;affichage dans les chats, les IM, l&apos;affichage des noms, etc."/>
- <check_box label="Activer les astuces de l&apos;interface" name="viewer_hints_check"/>
<text name="inworld_typing_rg_label">
Appuyer sur les touches lettre :
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
index 5f1b206a39..efb520bfd3 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
@@ -7,18 +7,33 @@
</text>
<check_box label="Construire/Modifier" name="edit_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra lorsque vous entrez en mode de modification et le quittez."/>
<check_box label="Apparence" name="appearance_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra en mode de modification."/>
- <check_box initial_value="true" label="Panneau latéral" name="appearance_sidebar_positioning" tool_tip="Utiliser le positionnement automatique de la caméra pour le panneau latéral."/>
+ <text name="keyboard_lbl">
+ Clavier :
+ </text>
+ <check_box label="Les touches de direction me font toujours me déplacer" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Appuyer deux fois et maintenir enfoncé pour courir" name="tap_tap_hold_to_run"/>
+ <text name="mouse_lbl">
+ Souris :
+ </text>
<check_box label="Afficher en vue subjective" name="first_person_avatar_visible"/>
<text name=" Mouse Sensitivity">
Sensibilité de la souris en vue subjective :
</text>
<check_box label="Inverser" name="invert_mouse"/>
- <check_box label="Les touches de direction me font toujours me déplacer" name="arrow_keys_move_avatar_check"/>
- <check_box label="Appuyer deux fois et maintenir enfoncé pour courir" name="tap_tap_hold_to_run"/>
- <check_box label="Double-cliquer pour :" name="double_click_chkbox"/>
- <radio_group name="double_click_action">
- <radio_item label="Téléportation" name="radio_teleport"/>
- <radio_item label="Pilotage auto" name="radio_autopilot"/>
- </radio_group>
+ <text name="single_click_action_lbl">
+ Clic simple sur le terrain :
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="Pas d&apos;action" name="0"/>
+ <combo_box.item label="Bouger vers le point cliqué" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ Double-clic sur le terrain :
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="Pas d&apos;action" name="0"/>
+ <combo_box.item label="Bouger vers le point cliqué" name="1"/>
+ <combo_box.item label="Téléporter vers le point cliqué" name="2"/>
+ </combo_box>
<button label="Autres accessoires" name="joystick_setup_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
index 2dd5c06e4d..e836c24a94 100644
--- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
@@ -17,12 +17,9 @@
</panel.string>
<panel name="balance_bg">
<text name="balance" tool_tip="Cliquer sur ce bouton pour actualiser votre solde en L$." value="20 L$"/>
- <button label="ACHETER L$" name="buyL" tool_tip="Cliquer pour acheter plus de L$"/>
+ <button label="Achat de L$" name="buyL" tool_tip="Cliquer pour acheter plus de L$"/>
+ <button label="Achats" name="goShop" tool_tip="Ouvrir la Place du marché Second Life"/>
</panel>
- <combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
- <combo_box.item label="Mode basique" name="Basic"/>
- <combo_box.item label="Mode avancé" name="Advanced"/>
- </combo_box>
<text name="TimeText" tool_tip="Heure actuelle (Pacifique)">
00h00 PST
</text>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 3a0553461a..daa31c980a 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1276,6 +1276,9 @@ Veuillez réessayer de vous connecter dans une minute.
<string name="Marketplace Error Internal Import">
Erreur : un problème est survenu concernant cet article. Veuillez réessayer ultérieurement.
</string>
+ <string name="Open landmarks">
+ Ouvrir les repères
+ </string>
<string name="no_transfer" value=" (pas de transfert)"/>
<string name="no_modify" value=" (pas de modification)"/>
<string name="no_copy" value=" (pas de copie)"/>
@@ -4254,7 +4257,7 @@ de l&apos;infraction signalée
<string name="Female - Wow">
Femme - Ouah !
</string>
- <string name="/bow1">
+ <string name="/bow">
/s&apos;incliner
</string>
<string name="/clap">
@@ -4767,4 +4770,172 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
<string name="ParticleHiding">
Masquage des particules
</string>
+ <string name="Command_AboutLand_Label">
+ À propos du terrain
+ </string>
+ <string name="Command_Appearance_Label">
+ Apparence
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Construire
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Compass_Label">
+ Boussole
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinations
+ </string>
+ <string name="Command_Gestures_Label">
+ Gestes
+ </string>
+ <string name="Command_HowTo_Label">
+ Aide rapide
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventaire
+ </string>
+ <string name="Command_Map_Label">
+ Carte
+ </string>
+ <string name="Command_Marketplace_Label">
+ Place du marché
+ </string>
+ <string name="Command_MiniMap_Label">
+ Mini-carte
+ </string>
+ <string name="Command_Move_Label">
+ Bouger
+ </string>
+ <string name="Command_People_Label">
+ Personnes
+ </string>
+ <string name="Command_Picks_Label">
+ Favoris
+ </string>
+ <string name="Command_Places_Label">
+ Lieux
+ </string>
+ <string name="Command_Preferences_Label">
+ Préférences
+ </string>
+ <string name="Command_Profile_Label">
+ Profil
+ </string>
+ <string name="Command_Search_Label">
+ Recherche
+ </string>
+ <string name="Command_Snapshot_Label">
+ Photo
+ </string>
+ <string name="Command_Speak_Label">
+ Parler
+ </string>
+ <string name="Command_View_Label">
+ Vue
+ </string>
+ <string name="Command_Voice_Label">
+ Chat près de vous
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Information sur le terrain que vous visitez
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Modifier votre avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Choisir un avatar complet
+ </string>
+ <string name="Command_Build_Tooltip">
+ Construction d&apos;objets et remodelage du terrain
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Parler aux personnes près de vous par chat écrit
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Boussole
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinations intéressantes
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gestes de votre avatar
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Comment effectuer les opérations courantes
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Afficher et utiliser vos possessions
+ </string>
+ <string name="Command_Map_Tooltip">
+ Carte du monde
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Faire du shopping
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Afficher les personnes près de vous
+ </string>
+ <string name="Command_Move_Tooltip">
+ Faire bouger votre avatar
+ </string>
+ <string name="Command_People_Tooltip">
+ Amis, groupes et personnes près de vous
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Lieux à afficher comme favoris dans votre profil
+ </string>
+ <string name="Command_Places_Tooltip">
+ Lieux enregistrés
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Préférences
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Modifier ou afficher votre profil
+ </string>
+ <string name="Command_Search_Tooltip">
+ Trouver des lieux, personnes, événements
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Prendre une photo
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Parler aux personnes près de vous en utilisant votre micro
+ </string>
+ <string name="Command_View_Tooltip">
+ Changer l&apos;angle de la caméra
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Personnes près de vous avec le chat vocal
+ </string>
+ <string name="Retain%">
+ Garder%
+ </string>
+ <string name="Detail">
+ Détail
+ </string>
+ <string name="Better Detail">
+ Meilleur détail
+ </string>
+ <string name="Surface">
+ Surface
+ </string>
+ <string name="Solid">
+ Solide
+ </string>
+ <string name="Wrap">
+ Wrap
+ </string>
+ <string name="Preview">
+ Aperçu
+ </string>
+ <string name="Normal">
+ Normal
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/ru/panel_login.xml b/indra/newview/skins/default/xui/ru/panel_login.xml
new file mode 100644
index 0000000000..4e0d81cb54
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_login.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+ <layout_stack name="login_widgets">
+ <layout_panel name="login">
+ <text name="username_text">
+ имя пользователя:
+ </text>
+ <text name="password_text">
+ пароль:
+ </text>
+ <button label="войти" name="connect_btn"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_login.xml b/indra/newview/skins/default/xui/tr/panel_login.xml
new file mode 100644
index 0000000000..c211b67dea
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_login.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+ <layout_stack name="login_widgets">
+ <layout_panel name="login">
+ <text name="username_text">
+ Kullanıcı adı:
+ </text>
+ <text name="password_text">
+ Parola:
+ </text>
+ <button label="Giriş" name="connect_btn"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/minimal/colors.xml b/indra/newview/skins/minimal/colors.xml
deleted file mode 100644
index 097a298ce5..0000000000
--- a/indra/newview/skins/minimal/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<colors>
- <color
- name="MenuBarBgColor"
- value="0 0 0 0" />
-</colors>
diff --git a/indra/newview/skins/minimal/textures/arrow_keys.png b/indra/newview/skins/minimal/textures/arrow_keys.png
deleted file mode 100644
index f19af59251..0000000000
--- a/indra/newview/skins/minimal/textures/arrow_keys.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png
deleted file mode 100644
index b6e9eef891..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png
deleted file mode 100644
index 687cb7fb53..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/button_separator.png b/indra/newview/skins/minimal/textures/bottomtray/button_separator.png
deleted file mode 100644
index 71ed25f931..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/button_separator.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_off.png b/indra/newview/skins/minimal/textures/bottomtray/close_off.png
deleted file mode 100644
index 241a24bde9..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/close_off.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_press.png b/indra/newview/skins/minimal/textures/bottomtray/close_press.png
deleted file mode 100644
index 3ed9c99a26..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/close_press.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/click_to_move.png b/indra/newview/skins/minimal/textures/click_to_move.png
deleted file mode 100644
index 74e3faa8ff..0000000000
--- a/indra/newview/skins/minimal/textures/click_to_move.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/textures.xml b/indra/newview/skins/minimal/textures/textures.xml
deleted file mode 100644
index e3ed01721a..0000000000
--- a/indra/newview/skins/minimal/textures/textures.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-<textures version="101">
- <texture name="Button_Separator" file_name="bottomtray/button_separator.png" preload="true" />
- <texture name="arrow_keys.png"/>
- <texture name="click_to_move" file_name="click_to_move.png"/>
- <texture name="bottomtray_close_off" file_name="bottomtray/close_off.png" preload="true" />
- <texture name="bottomtray_close_over" file_name="bottomtray/close_over.png" preload="true" />
- <texture name="bottomtray_close_press" file_name="bottomtray/close_press.png" preload="true" />
- <texture name="Speak_Btn_Off" file_name="bottomtray/Speak_Btn_Off.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
- <texture name="Speak_Btn_Selected_Press" file_name="bottomtray/Speak_Btn_Selected_Press.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
- </textures>
diff --git a/indra/newview/skins/minimal/xui/da/floater_camera.xml b/indra/newview/skins/minimal/xui/da/floater_camera.xml
deleted file mode 100644
index 5b7ef6db54..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Roter kamera omkring fokus
- </floater.string>
- <floater.string name="zoom_tooltip">
- Zoom kamera mod fokus
- </floater.string>
- <floater.string name="move_tooltip">
- Flyt kamera op og ned, til venstre og højre
- </floater.string>
- <floater.string name="camera_modes_title">
- Kamera valg
- </floater.string>
- <floater.string name="pan_mode_title">
- Kredsløb zoom panorering
- </floater.string>
- <floater.string name="presets_mode_title">
- Forvalg
- </floater.string>
- <floater.string name="free_mode_title">
- Se objekt
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Se forfra
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Se fra siden
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Se bagfra
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Se fra objekt
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Førsteperson
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Zoom kamera mod fokus">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera kredser rundt om fokus"/>
- <slider_bar name="zoom_slider" tool_tip="Zoom kamera mod fokus"/>
- <joystick_track name="cam_track_stick" tool_tip="Flyt kamera op og ned, venstre og højre"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Forvalg"/>
- <button label="" name="pan_btn" tool_tip="Kredsløb zoom panorering"/>
- <button label="" name="avatarview_btn" tool_tip="Kamera valg"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_help_browser.xml b/indra/newview/skins/minimal/xui/da/floater_help_browser.xml
deleted file mode 100644
index 0e2918e4e2..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="HVORDAN">
- <floater.string name="loading_text">
- Henter...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml b/indra/newview/skins/minimal/xui/da/floater_media_browser.xml
deleted file mode 100644
index 42fbdeaa9e..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIA BROWSER">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Tilbage" name="back"/>
- <button label="Frem" name="forward"/>
- <button label="Genlæs" name="reload"/>
- <button label="Go" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="tilbage" name="rewind"/>
- <button label="stop" name="stop"/>
- <button label="fremad" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Send denne side til parcel" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Åben i min internetbrowser" name="open_browser"/>
- <check_box label="Åben altid i min internetbrowser" name="open_always"/>
- <button label="Luk" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml
deleted file mode 100644
index bd17224259..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT NÆRVED">
- <check_box label="Oversæt chat (håndteret af Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_web_content.xml b/indra/newview/skins/minimal/xui/da/floater_web_content.xml
deleted file mode 100644
index 0410f74324..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Gå bagud"/>
- <button name="forward" tool_tip="Gå frem"/>
- <button name="stop" tool_tip="Stop"/>
- <button name="reload" tool_tip="Genindlæs side"/>
- <combo_box name="address" tool_tip="Indtast URL her"/>
- <icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/>
- <button name="popexternal" tool_tip="Åben denne URL i din normale internet browser"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/inspect_avatar.xml b/indra/newview/skins/minimal/xui/da/inspect_avatar.xml
deleted file mode 100644
index dc1ed562eb..0000000000
--- a/indra/newview/skins/minimal/xui/da/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_details">
- Dette er min second life beskrivelse og jeg synes den er rigtig god. Men af en eller ande grund er min beskrivelse meget lang fordi jeg taler en hel masse
- </text>
- <slider name="volume_slider" tool_tip="Stemme lydstyrke" value="0.5"/>
- <button label="Tilføj ven" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="Profil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Slå stemme-chat fra" name="disable_voice"/>
- <button label="Slå stemme-chat til" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/inspect_object.xml b/indra/newview/skins/minimal/xui/da/inspect_object.xml
deleted file mode 100644
index 78ccc5b869..0000000000
--- a/indra/newview/skins/minimal/xui/da/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Af [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Af [CREATOR]
-Owner [OWNER]
- </string>
- <string name="Price">
- L$[AMOUNT]
- </string>
- <string name="PriceFree">
- Gratis!
- </string>
- <string name="Touch">
- Berør
- </string>
- <string name="Sit">
- Sid
- </string>
- <text name="object_name" value="Test objekt navn der reelt er to linier og meget lang"/>
- <text name="price_text">
- L$30,000
- </text>
- <text name="object_description">
- Dette er en meget lang beskrivelse af et objekt udformet så den fylder mindst 80 karakterer i længden eller endda nærmere 120 på dette sted. Man kan aldrig vide....
- </text>
- <button label="Køb" name="buy_btn"/>
- <button label="Betal" name="pay_btn"/>
- <button label="Tag kopi" name="take_free_copy_btn"/>
- <button label="Berør" name="touch_btn"/>
- <button label="Sid" name="sit_btn"/>
- <button label="Åben" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Sikker Browsing"/>
- <button label="Mere" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml
deleted file mode 100644
index 1e8301dc4c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Sortér efter nyeste" name="sort_by_most_recent"/>
- <menu_item_check label="Sortér efter navn" name="sort_by_name"/>
- <menu_item_check label="Sortér efter type" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml
deleted file mode 100644
index ca7b184942..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Profil" name="Profile..."/>
- <menu_item_call label="Tilføj ven" name="Add Friend"/>
- <menu_item_call label="Send besked" name="Send IM..."/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Invitér til gruppe" name="Invite..."/>
- <menu_item_call label="Blokér" name="Avatar Mute"/>
- <menu_item_call label="Rapportér" name="abuse"/>
- <menu_item_call label="Frys" name="Freeze..."/>
- <menu_item_call label="Smid ud" name="Eject..."/>
- <menu_item_call label="Debug teksturer" name="Debug..."/>
- <menu_item_call label="Zoom ind" name="Zoom In"/>
- <menu_item_call label="Betal" name="Pay..."/>
- <menu_item_call label="Objekt profil" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml
deleted file mode 100644
index 35ba27f9e2..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Berør" name="Attachment Object Touch"/>
- <menu_item_call label="Redigér" name="Edit..."/>
- <menu_item_call label="Tag af" name="Detach"/>
- <menu_item_call label="Sid ned" name="Sit Down Here"/>
- <menu_item_call label="Stå op" name="Stand Up"/>
- <menu_item_call label="Udseende" name="Change Outfit"/>
- <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/>
- <menu_item_call label="Redigér min figur" name="Edit My Shape"/>
- <menu_item_call label="Venner" name="Friends..."/>
- <menu_item_call label="Grupper" name="Groups..."/>
- <menu_item_call label="Profil" name="Profile..."/>
- <menu_item_call label="Debug teksturer" name="Debug..."/>
- <menu_item_call label="Smid" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml
deleted file mode 100644
index 26b58ce1ab..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Profil" name="Show Profile"/>
- <menu_item_call label="Send besked..." name="Send IM"/>
- <menu_item_call label="Tilføj ven..." name="Add Friend"/>
- <menu_item_call label="Fjern ven..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml
deleted file mode 100644
index a778dedf0b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Profil" name="Profile..."/>
- <menu_item_call label="Tilføj ven" name="Add Friend"/>
- <menu_item_call label="Besked" name="Send IM..."/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Invitér til gruppe" name="Invite..."/>
- <menu_item_call label="Blokér" name="Avatar Mute"/>
- <menu_item_call label="Rapportér" name="abuse"/>
- <menu_item_call label="Frys" name="Freeze..."/>
- <menu_item_call label="Smid ud" name="Eject..."/>
- <menu_item_call label="Debug Teksturer" name="Debug..."/>
- <menu_item_call label="Zoom ind" name="Zoom In"/>
- <menu_item_call label="Betal" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml
deleted file mode 100644
index 0080f7a59e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Sid ned" name="Sit Down Here"/>
- <menu_item_call label="Stå op" name="Stand Up"/>
- <context_menu label="Tag af" name="Take Off &gt;">
- <context_menu label="Tøj" name="Clothes &gt;">
- <menu_item_call label="Trøje" name="Shirt"/>
- <menu_item_call label="Bukser" name="Pants"/>
- <menu_item_call label="Nederdel" name="Skirt"/>
- <menu_item_call label="Sko" name="Shoes"/>
- <menu_item_call label="Strømper" name="Socks"/>
- <menu_item_call label="Jakke" name="Jacket"/>
- <menu_item_call label="Handsker" name="Gloves"/>
- <menu_item_call label="Undertrøje" name="Self Undershirt"/>
- <menu_item_call label="Underbukser" name="Self Underpants"/>
- <menu_item_call label="Tatovering" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Alt tøj" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Tag af" name="Object Detach"/>
- <menu_item_call label="Tag alt af" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Mit udseende" name="Chenge Outfit"/>
- <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/>
- <menu_item_call label="Redigér min form" name="Edit My Shape"/>
- <menu_item_call label="Venner" name="Friends..."/>
- <menu_item_call label="Grupper" name="Groups..."/>
- <menu_item_call label="Profil" name="Profile..."/>
- <menu_item_call label="Debug teksturer" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml
deleted file mode 100644
index 9ac296904a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Stemme aktiveret" name="EnableVoiceChat"/>
- <menu_item_check label="Faste bevægelser" name="ShowGestureButton"/>
- <menu_item_check label="Bevægelse knap" name="ShowMoveButton"/>
- <menu_item_check label="Vis knap" name="ShowCameraButton"/>
- <menu_item_check label="Foto knap" name="ShowSnapshotButton"/>
- <menu_item_check label="Bygge knap" name="ShowBuildButton"/>
- <menu_item_check label="Søge knap" name="ShowSearchButton"/>
- <menu_item_check label="Kort knap" name="ShowWorldMapButton"/>
- <menu_item_check label="Mini-Map button" name="ShowMiniMapButton"/>
- <menu_item_call label="Klip" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Kopiér" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Sæt ind" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Slet" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Vælg alt" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml
deleted file mode 100644
index 9d7fc0f223..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Tag af" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml
deleted file mode 100644
index 0e90d5a3ae..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Erstat" name="replace"/>
- <menu_item_call label="Redigér" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml
deleted file mode 100644
index 16c225b7d9..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Tag af" name="take_off"/>
- <menu_item_call label="Redigér" name="edit"/>
- <menu_item_call label="Erstat" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml
deleted file mode 100644
index f44369fd84..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Nyt tøj" name="COF.Gear.New_Clothes"/>
- <menu label="Nye kropsdele" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_edit.xml b/indra/newview/skins/minimal/xui/da/menu_edit.xml
deleted file mode 100644
index 3752f42b1c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Redigér" name="Edit">
- <menu_item_call label="Fortryd" name="Undo"/>
- <menu_item_call label="Gendan" name="Redo"/>
- <menu_item_call label="Klip" name="Cut"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Sæt ind" name="Paste"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Duplikér" name="Duplicate"/>
- <menu_item_call label="Marker alt" name="Select All"/>
- <menu_item_call label="Fjern markering" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_favorites.xml b/indra/newview/skins/minimal/xui/da/menu_favorites.xml
deleted file mode 100644
index a4793e294c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportér" name="Teleport To Landmark"/>
- <menu_item_call label="Vis/ret landemærke" name="Landmark Open"/>
- <menu_item_call label="Kopiér SLurl" name="Copy slurl"/>
- <menu_item_call label="Vis på kort" name="Show On Map"/>
- <menu_item_call label="Kopiér" name="Landmark Copy"/>
- <menu_item_call label="Sæt ind" name="Landmark Paste"/>
- <menu_item_call label="Slet" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml
deleted file mode 100644
index a9010e99b6..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Tilføj/fjern fra favoritter" name="activate"/>
- <menu_item_call label="Kopiér" name="copy_gesture"/>
- <menu_item_call label="Sæt ind" name="paste"/>
- <menu_item_call label="Kopiér UUID" name="copy_uuid"/>
- <menu_item_call label="Gem til nuværende sæt" name="save_to_outfit"/>
- <menu_item_call label="Editér" name="edit_gesture"/>
- <menu_item_call label="Undersøg" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml b/indra/newview/skins/minimal/xui/da/menu_group_plus.xml
deleted file mode 100644
index 97fbec1ed1..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Meld ind i gruppe..." name="item_join"/>
- <menu_item_call label="Ny gruppe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml
deleted file mode 100644
index d96a8a8a17..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Vis navigationsbjælke" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Vis favoritbjælke" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Vis min lokation bjælke" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml
deleted file mode 100644
index 4889230919..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Luk alle" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml
deleted file mode 100644
index f64a6ad455..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Afslut" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml
deleted file mode 100644
index b89d9a5789..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Gruppe info" name="Show Profile"/>
- <menu_item_call label="Vis session" name="Chat"/>
- <menu_item_call label="Afslut session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml
deleted file mode 100644
index 6ebc40a8dd..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Profil" name="Show Profile"/>
- <menu_item_call label="Tilføj ven" name="Add Friend"/>
- <menu_item_call label="Vis session" name="Send IM"/>
- <menu_item_call label="Afslut session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 8da35adb1b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Profil" name="view_profile"/>
- <menu_item_call label="Tilføj ven" name="add_friend"/>
- <menu_item_call label="Besked" name="im"/>
- <menu_item_call label="Opkald" name="call"/>
- <menu_item_call label="Teleportér" name="teleport"/>
- <menu_item_call label="Invitér til gruppe" name="invite_to_group"/>
- <menu_item_call label="Blokér" name="block"/>
- <menu_item_call label="Fjern blokering" name="unblock"/>
- <menu_item_call label="Rapportér" name="report"/>
- <menu_item_call label="Frys" name="freeze"/>
- <menu_item_call label="Smid ud" name="eject"/>
- <menu_item_call label="Spark" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Debug teksturer" name="debug"/>
- <menu_item_call label="Find på kort" name="find_on_map"/>
- <menu_item_call label="Zoom ind" name="zoom_in"/>
- <menu_item_call label="Betal" name="pay"/>
- <menu_item_call label="Del" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml
deleted file mode 100644
index e28842836d..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Berør" name="touch"/>
- <menu_item_call label="Sid her" name="sit"/>
- <menu_item_call label="betal" name="pay"/>
- <menu_item_call label="Køb" name="buy"/>
- <menu_item_call label="Tag" name="take"/>
- <menu_item_call label="tag kopi" name="take_copy"/>
- <menu_item_call label="Åben" name="open"/>
- <menu_item_call label="Redigér" name="edit"/>
- <menu_item_call label="Tag på" name="wear"/>
- <menu_item_call label="Tilføj" name="add"/>
- <menu_item_call label="Rapportér" name="report"/>
- <menu_item_call label="Blokér" name="block"/>
- <menu_item_call label="Zoom ind" name="zoom_in"/>
- <menu_item_call label="Fjern" name="remove"/>
- <menu_item_call label="Mere info" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml
deleted file mode 100644
index 887c6484bc..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Sid ned" name="Sit Down Here"/>
- <menu_item_call label="Stå op" name="Stand Up"/>
- <context_menu label="Tag af" name="Take Off &gt;">
- <context_menu label="Tøj" name="Clothes &gt;">
- <menu_item_call label="Trøje" name="Shirt"/>
- <menu_item_call label="Bukser" name="Pants"/>
- <menu_item_call label="Nederdel" name="Skirt"/>
- <menu_item_call label="Sko" name="Shoes"/>
- <menu_item_call label="Strømper" name="Socks"/>
- <menu_item_call label="Jakke" name="Jacket"/>
- <menu_item_call label="Handsker" name="Gloves"/>
- <menu_item_call label="Undertrøje" name="Self Undershirt"/>
- <menu_item_call label="Underbukser" name="Self Underpants"/>
- <menu_item_call label="Tatovering" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Alt tøj" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Tag af" name="Object Detach"/>
- <menu_item_call label="Tag alt af" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Skift sæt" name="Chenge Outfit"/>
- <menu_item_call label="Redigér sæt" name="Edit Outfit"/>
- <menu_item_call label="Redigér min figur" name="Edit My Shape"/>
- <menu_item_call label="Mine venner" name="Friends..."/>
- <menu_item_call label="Mine grupper" name="Groups..."/>
- <menu_item_call label="Min profil" name="Profile..."/>
- <menu_item_call label="Debug teksturer" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml
deleted file mode 100644
index c3b03232bf..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Luk" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_inventory.xml
deleted file mode 100644
index 35551318d1..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Køb" name="Task Buy"/>
- <menu_item_call label="åben" name="Task Open"/>
- <menu_item_call label="Afspil" name="Task Play"/>
- <menu_item_call label="Egenskaber" name="Task Properties"/>
- <menu_item_call label="Omdøb" name="Task Rename"/>
- <menu_item_call label="Slet" name="Task Remove"/>
- <menu_item_call label="Tøm papirkurv" name="Empty Trash"/>
- <menu_item_call label="Tøm &apos;Lost and found&apos;" name="Empty Lost And Found"/>
- <menu_item_call label="Ny mappe" name="New Folder"/>
- <menu_item_call label="Nyt script" name="New Script"/>
- <menu_item_call label="Ny note" name="New Note"/>
- <menu_item_call label="Ny bevægelse" name="New Gesture"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Nyt alpha lag" name="New Alpha Mask"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny figur" name="New Shape"/>
- <menu_item_call label="Nyt hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
- <menu label="Ændre type" name="Change Type">
- <menu_item_call label="Standard" name="Default"/>
- <menu_item_call label="Handsker" name="Gloves"/>
- <menu_item_call label="Jakke" name="Jacket"/>
- <menu_item_call label="Bukser" name="Pants"/>
- <menu_item_call label="Kropsbygning" name="Shape"/>
- <menu_item_call label="Sko" name="Shoes"/>
- <menu_item_call label="Trøje" name="Shirt"/>
- <menu_item_call label="Nederdel" name="Skirt"/>
- <menu_item_call label="Underbukser" name="Underpants"/>
- <menu_item_call label="Undertrøje" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleport" name="Landmark Open"/>
- <menu_item_call label="åben" name="Animation Open"/>
- <menu_item_call label="åben" name="Sound Open"/>
- <menu_item_call label="Erstat påklædning" name="Replace Outfit"/>
- <menu_item_call label="Tilføj til påklædning" name="Add To Outfit"/>
- <menu_item_call label="Slet ting" name="Purge Item"/>
- <menu_item_call label="Genskab ting" name="Restore Item"/>
- <menu_item_call label="åben" name="Open"/>
- <menu_item_call label="Åben original" name="Open Original"/>
- <menu_item_call label="Egenskaber" name="Properties"/>
- <menu_item_call label="Omdøb" name="Rename"/>
- <menu_item_call label="Kopiér asset UUID" name="Copy Asset UUID"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Indsæt" name="Paste"/>
- <menu_item_call label="Sæt ind som link" name="Paste As Link"/>
- <menu_item_call label="Slet" name="Remove Link"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Slet systemfolder" name="Delete System Folder"/>
- <menu_item_call label="start konference chat" name="Conference Chat Folder"/>
- <menu_item_call label="Afspil" name="Sound Play"/>
- <menu_item_call label="Om landemærke" name="About Landmark"/>
- <menu_item_call label="Afspil i verden" name="Animation Play"/>
- <menu_item_call label="Afspil lokalt" name="Animation Audition"/>
- <menu_item_call label="Send privat besked (IM)" name="Send Instant Message"/>
- <menu_item_call label="Tilbyd teleport..." name="Offer Teleport..."/>
- <menu_item_call label="start konference Chat" name="Conference Chat"/>
- <menu_item_call label="Aktivér" name="Activate"/>
- <menu_item_call label="Deaktivér" name="Deactivate"/>
- <menu_item_call label="Gem som" name="Save As"/>
- <menu_item_call label="Tag af dig selv" name="Detach From Yourself"/>
- <menu_item_call label="Tag på" name="Wearable And Object Wear"/>
- <menu label="Vedhæft" name="Attach To"/>
- <menu label="Vedhæft til HUD" name="Attach To HUD"/>
- <menu_item_call label="Redigér" name="Wearable Edit"/>
- <menu_item_call label="Tilføj" name="Wearable Add"/>
- <menu_item_call label="Tag af" name="Take Off"/>
- <menu_item_call label="--ingen valg--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml
deleted file mode 100644
index 07f70d7190..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Hent" name="upload">
- <menu_item_call label="Billede (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="Hent mange (L$[COST] pr. fil)..." name="Bulk Upload"/>
- <menu_item_call label="Sæt standardværdier for upload rettigheder" name="perm prefs"/>
- </menu>
- <menu_item_call label="Ny mappe" name="New Folder"/>
- <menu_item_call label="Nyt script" name="New Script"/>
- <menu_item_call label="Ny note" name="New Note"/>
- <menu_item_call label="Ny bevægelse" name="New Gesture"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Nyt alpha lag" name="New Alpha"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny kropsbygning" name="New Shape"/>
- <menu_item_call label="Ny hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml
deleted file mode 100644
index 4809b24463..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nyt vindue" name="new_window"/>
- <menu_item_check label="Sortér efter navn" name="sort_by_name"/>
- <menu_item_check label="Sortér efter nyeste" name="sort_by_recent"/>
- <menu_item_check label="Sortér altid mapper efter navn" name="sort_folders_by_name"/>
- <menu_item_check label="Vis System mapper øverst" name="sort_system_folders_to_top"/>
- <menu_item_call label="Vis filtre" name="show_filters"/>
- <menu_item_call label="Nulstil filtre" name="reset_filters"/>
- <menu_item_call label="Luk alle mapper" name="close_folders"/>
- <menu_item_call label="Tøm &quot;fundne genstande&quot;" name="empty_lostnfound"/>
- <menu_item_call label="Gem tekstur som" name="Save Texture As"/>
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Find original" name="Find Original"/>
- <menu_item_call label="Find alle links" name="Find All Links"/>
- <menu_item_call label="Tøm papirkurv" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_land.xml b/indra/newview/skins/minimal/xui/da/menu_land.xml
deleted file mode 100644
index 1548f18f89..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Om land" name="Place Information..."/>
- <menu_item_call label="Sid her" name="Sit Here"/>
- <menu_item_call label="Køb" name="Land Buy"/>
- <menu_item_call label="Køb adgang" name="Land Buy Pass"/>
- <menu_item_call label="Byg" name="Create"/>
- <menu_item_call label="Tilpas terræn" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_landmark.xml
deleted file mode 100644
index 3cf2ffe375..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Kopiér SLurl" name="copy"/>
- <menu_item_call label="Slet" name="delete"/>
- <menu_item_call label="Opret favorit" name="pick"/>
- <menu_item_call label="Tilføj til favorit bjælke" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_login.xml b/indra/newview/skins/minimal/xui/da/menu_login.xml
deleted file mode 100644
index 0b7a5040ae..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Mig" name="File">
- <menu_item_call label="Indstillinger" name="Preferences..."/>
- <menu_item_call label="Afslut [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Hjælp" name="Help">
- <menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help"/>
- <menu_item_call label="Om [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Vis debug menu" name="Show Debug Menu"/>
- <menu label="Debug" name="Debug">
- <menu_item_call label="Vis debug opsætning" name="Debug Settings"/>
- <menu_item_call label="UI/farve opsætning" name="UI/Color Settings"/>
- <menu label="UI tests" name="UI Tests"/>
- <menu_item_call label="Sæt vinduesstørrelse" name="Set Window Size..."/>
- <menu_item_call label="Vis betingelser" name="TOS"/>
- <menu_item_call label="Vis vigtig besked" name="Critical"/>
- <menu_item_call label="Media Browser Test" name="Web Browser Test"/>
- <menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/>
- <menu_item_check label="Vis gitter vælger" name="Show Grid Picker"/>
- <menu_item_call label="Vis notifikationskonsol" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml b/indra/newview/skins/minimal/xui/da/menu_mini_map.xml
deleted file mode 100644
index 186dbd476a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom tæt" name="Zoom Close"/>
- <menu_item_call label="Zoom mellem" name="Zoom Medium"/>
- <menu_item_call label="Zoom langt" name="Zoom Far"/>
- <menu_item_call label="Zoom standard" name="Zoom Default"/>
- <menu_item_check label="Rotér kort" name="Rotate Map"/>
- <menu_item_check label="Auto centrér" name="Auto Center"/>
- <menu_item_call label="Fjern ref." name="Stop Tracking"/>
- <menu_item_call label="Verdenskort" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_navbar.xml
deleted file mode 100644
index c04206824a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Vis koordinater" name="Show Coordinates"/>
- <menu_item_check label="Vis oplysninger om parcel" name="Show Parcel Properties"/>
- <menu_item_call label="Landemærke" name="Landmark"/>
- <menu_item_call label="Klip" name="Cut"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Sæt ind" name="Paste"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Vælg alt" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml
deleted file mode 100644
index be532ad406..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Vis personer tæt på..." name="nearby_people"/>
- <menu_item_check label="Vis blokeret tekst" name="muted_text"/>
- <menu_item_check label="Vis venne-ikoner" name="show_buddy_icons"/>
- <menu_item_check label="Vis navne" name="show_names"/>
- <menu_item_check label="Vis ikoner og navne" name="show_icons_and_names"/>
- <menu_item_call label="Font størrelse" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml
deleted file mode 100644
index 40b35b5fdd..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Luk alle" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_object.xml b/indra/newview/skins/minimal/xui/da/menu_object.xml
deleted file mode 100644
index ba62ccf90c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Berør" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Berør"/>
- </menu_item_call>
- <menu_item_call label="Redigér" name="Edit..."/>
- <menu_item_call label="Byg" name="Build"/>
- <menu_item_call label="Åben" name="Open"/>
- <menu_item_call label="Sid her" name="Object Sit"/>
- <menu_item_call label="Stå op" name="Object Stand Up"/>
- <menu_item_call label="Objekt profil" name="Object Inspect"/>
- <menu_item_call label="Zoom In" name="Zoom In"/>
- <context_menu label="Tag på" name="Put On">
- <menu_item_call label="Tag på" name="Wear"/>
- <menu_item_call label="Tilføj" name="Add"/>
- <context_menu label="Vedhæft" name="Object Attach"/>
- <context_menu label="Vedhæft HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Administrér" name="Remove">
- <menu_item_call label="Rapportér misbrug" name="Report Abuse..."/>
- <menu_item_call label="Blokér" name="Object Mute"/>
- <menu_item_call label="Returnér" name="Return..."/>
- </context_menu>
- <menu_item_call label="Tag" name="Pie Object Take"/>
- <menu_item_call label="Tag kopi" name="Take Copy"/>
- <menu_item_call label="Betal" name="Pay..."/>
- <menu_item_call label="Køb" name="Buy..."/>
- <menu_item_call label="Slet" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml b/indra/newview/skins/minimal/xui/da/menu_object_icon.xml
deleted file mode 100644
index 08aeb633b6..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Objekt Profil..." name="Object Profile"/>
- <menu_item_call label="Blokér..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml
deleted file mode 100644
index 8b4c776496..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Tag på - Erstat nuværende sæt" name="wear"/>
- <menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/>
- <menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Ny alpha" name="New Alpha"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny figur" name="New Shape"/>
- <menu_item_call label="Nyt hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
- <menu_item_call label="Omdøb sæt" name="rename"/>
- <menu_item_call label="Slet sæt" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml
deleted file mode 100644
index d6a6f2724f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Tag på - Erstat nuværende sæt" name="wear_replace"/>
- <menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/>
- <menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/>
- <menu_item_call label="Redigér sæt" name="edit"/>
- <menu_item_call label="Omdøb sæt" name="rename"/>
- <menu_item_call label="Slet sæt" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml b/indra/newview/skins/minimal/xui/da/menu_participant_list.xml
deleted file mode 100644
index 5951d3ffb9..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Sortér efter navn" name="SortByName"/>
- <menu_item_check label="Sortér efter nylige talere" name="SortByRecentSpeakers"/>
- <menu_item_call label="Profil" name="View Profile"/>
- <menu_item_call label="Tilføj ven" name="Add Friend"/>
- <menu_item_call label="Send besked" name="IM"/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Betal" name="Pay"/>
- <menu_item_check label="Se person ikoner" name="View Icons"/>
- <menu_item_check label="Blokér stemme" name="Block/Unblock"/>
- <menu_item_check label="Blokér tekst" name="MuteText"/>
- <context_menu label="Moderator valg" name="Moderator Options">
- <menu_item_check label="Tillad tekst chat" name="AllowTextChat"/>
- <menu_item_call label="Sluk for denne deltager" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Fjern slukning for denne deltager" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Sluk lyd for alle" name="ModerateVoiceMute"/>
- <menu_item_call label="Tænd lyd for alle" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml
deleted file mode 100644
index 32c5e6a6c7..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Sortér efter navn" name="sort_name"/>
- <menu_item_check label="Sortér efter status" name="sort_status"/>
- <menu_item_check label="Vis person ikoner" name="view_icons"/>
- <menu_item_check label="Vis tildelte rettigheder" name="view_permissions"/>
- <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups.xml
deleted file mode 100644
index 841f58b619..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Se info" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Aktivér" name="Activate"/>
- <menu_item_call label="Forlad" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml
deleted file mode 100644
index 0b9a791530..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Vis gruppe ikoner" name="Display Group Icons"/>
- <menu_item_call label="Forlad valgte gruppe" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml
deleted file mode 100644
index 220ab8724f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Vis profil" name="View Profile"/>
- <menu_item_call label="Tilføj som ven" name="Add Friend"/>
- <menu_item_call label="Fjern venskab" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Kort" name="Map"/>
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Betal" name="Pay"/>
- <menu_item_check label="Blokér/Fjern blokering" name="Block/Unblock"/>
- <menu_item_call label="Tilbyd teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 9318a0e340..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Tilføj venner" name="Add Friends"/>
- <menu_item_call label="Fjern venner" name="Remove Friend"/>
- <menu_item_call label="Besked" name="IM"/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Betal" name="Pay"/>
- <menu_item_call label="tilbyd teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 2f35ff3c92..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Sortér efter tidligere talere" name="sort_by_recent_speakers"/>
- <menu_item_check label="Sortér efter navn" name="sort_name"/>
- <menu_item_check label="Sortér efter afstand" name="sort_distance"/>
- <menu_item_check label="Se ikoner for personer" name="view_icons"/>
- <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml
deleted file mode 100644
index d081f637f2..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Sortér efter nyeste" name="sort_most"/>
- <menu_item_check label="Sortér efter navn" name="sort_name"/>
- <menu_item_check label="Vis person ikoner" name="view_icons"/>
- <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_picks.xml b/indra/newview/skins/minimal/xui/da/menu_picks.xml
deleted file mode 100644
index 81ee900773..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Redigér" name="pick_edit"/>
- <menu_item_call label="Teleportér" name="pick_teleport"/>
- <menu_item_call label="Vis på kort" name="pick_map"/>
- <menu_item_call label="Slet" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml
deleted file mode 100644
index d95071fbbb..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Ny favorit" name="create_pick"/>
- <menu_item_call label="Ny annonce" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_place.xml b/indra/newview/skins/minimal/xui/da/menu_place.xml
deleted file mode 100644
index b87964ac14..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Opret et landemærke" name="landmark"/>
- <menu_item_call label="Opret favorit" name="pick"/>
- <menu_item_call label="Køb adgang" name="pass"/>
- <menu_item_call label="Redigér" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml
deleted file mode 100644
index 7ad2253550..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Opret mappe" name="add_folder"/>
- <menu_item_call label="Tilføj landemærke" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml
deleted file mode 100644
index 5f573c2363..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
- <menu_item_call label="Tilføj landemærke" name="add_landmark"/>
- <menu_item_call label="Tilføj mappe" name="add_folder"/>
- <menu_item_call label="Gendan genstand" name="restore_item"/>
- <menu_item_call label="Klip" name="cut"/>
- <menu_item_call label="Kopiér" name="copy_folder"/>
- <menu_item_call label="Sæt ind" name="paste"/>
- <menu_item_call label="Omdøb" name="rename"/>
- <menu_item_call label="Slet" name="delete"/>
- <menu_item_call label="Udvid" name="expand"/>
- <menu_item_call label="Luk" name="collapse"/>
- <menu_item_call label="Udvid alle mapper" name="expand_all"/>
- <menu_item_call label="Luk alle mapper" name="collapse_all"/>
- <menu_item_check label="Sortér efter dato" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml
deleted file mode 100644
index 13dbcdd42e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportér" name="teleport"/>
- <menu_item_call label="Mere information" name="more_info"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Tilføj landemærke" name="add_landmark"/>
- <menu_item_call label="Tilføj mappe" name="add_folder"/>
- <menu_item_call label="Gendan genstand" name="restore_item"/>
- <menu_item_call label="Klip" name="cut"/>
- <menu_item_call label="Kopiér landemærke" name="copy_landmark"/>
- <menu_item_call label="Kopiér SLurl" name="copy_slurl"/>
- <menu_item_call label="Sæt ind" name="paste"/>
- <menu_item_call label="Omdøb" name="rename"/>
- <menu_item_call label="Slet" name="delete"/>
- <menu_item_call label="Åben alle mapper" name="expand_all"/>
- <menu_item_call label="Luk alle mapper" name="collapse_all"/>
- <menu_item_check label="Sortér efter dato" name="sort_by_date"/>
- <menu_item_call label="Opret favorit" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml
deleted file mode 100644
index 6745007c99..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Kort" name="show_on_map"/>
- <menu_item_call label="Betal" name="pay"/>
- <menu_item_call label="Del" name="share"/>
- <menu_item_call label="Blokér" name="block"/>
- <menu_item_call label="Fjern blokering" name="unblock"/>
- <menu_item_call label="Spark" name="kick"/>
- <menu_item_call label="Frys" name="freeze"/>
- <menu_item_call label="Fjern frys" name="unfreeze"/>
- <menu_item_call label="Kundeservicemedarbejder (CSR)" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml
deleted file mode 100644
index 188229b586..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Gem" name="save_outfit"/>
- <menu_item_call label="Gem som" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml
deleted file mode 100644
index cdd3212373..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Luk" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_slurl.xml
deleted file mode 100644
index a9302e111e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Om URL" name="about_url"/>
- <menu_item_call label="Teleportér til URL" name="teleport_to_url"/>
- <menu_item_call label="Kort" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml
deleted file mode 100644
index a1c25fea69..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Udvid alle mapper" name="Expand all folders"/>
- <menu_item_call label="Luk alle mapper" name="Collapse all folders"/>
- <menu_item_call label="Nulstil teleport historik" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml
deleted file mode 100644
index dbaec62087..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleportér" name="Teleport"/>
- <menu_item_call label="Mere information" name="More Information"/>
- <menu_item_call label="Kopiér til udklipsholder" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml
deleted file mode 100644
index c4d4bb4b5b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Åben" name="TabOpen"/>
- <menu_item_call label="Luk" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml b/indra/newview/skins/minimal/xui/da/menu_text_editor.xml
deleted file mode 100644
index 3ff31ea232..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Klip" name="Cut"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Sæt ind" name="Paste"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Vælg alt" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml
deleted file mode 100644
index 08d1c25d6f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Vis koordinater" name="Show Coordinates"/>
- <menu_item_check label="Vis egenskaber for parcel" name="Show Parcel Properties"/>
- <menu_item_call label="Landemærke" name="Landmark"/>
- <menu_item_call label="Kopi" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml b/indra/newview/skins/minimal/xui/da/menu_url_agent.xml
deleted file mode 100644
index 491586f3b4..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis beboer profil" name="show_agent"/>
- <menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_group.xml b/indra/newview/skins/minimal/xui/da/menu_url_group.xml
deleted file mode 100644
index c776159b0a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis gruppeinformation" name="show_group"/>
- <menu_item_call label="Kopiér gruppe til udklipsholder" name="url_copy_label"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_http.xml b/indra/newview/skins/minimal/xui/da/menu_url_http.xml
deleted file mode 100644
index 4398777a39..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Indlæs" name="url_open"/>
- <menu_item_call label="Åben i intern browser" name="url_open_internal"/>
- <menu_item_call label="Åben i ekstern browser" name="url_open_external"/>
- <menu_item_call label="Kopiér URL til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml
deleted file mode 100644
index 9a7de23e06..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis beholdningsgenstand" name="show_item"/>
- <menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_map.xml b/indra/newview/skins/minimal/xui/da/menu_url_map.xml
deleted file mode 100644
index ff4a4d5174..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Teleport til lokation" name="teleport_to_location"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml
deleted file mode 100644
index e27cf84959..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis objekt information" name="show_object"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Teleportér til objekt lokation" name="teleport_to_object"/>
- <menu_item_call label="Kopiér objekt navn til udklipsholder" name="url_copy_label"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml
deleted file mode 100644
index 0f21e14f66..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis information om parcel" name="show_parcel"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml
deleted file mode 100644
index dd25db2aa7..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Kør denne kommando" name="run_slapp"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml
deleted file mode 100644
index 8d84a138bb..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis information" name="show_place"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Teleportér til lokation" name="teleport_to_location"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml
deleted file mode 100644
index e0ca7b920d..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teleport" name="teleport"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_viewer.xml b/indra/newview/skins/minimal/xui/da/menu_viewer.xml
deleted file mode 100644
index 93b247f841..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Hjælp" name="Help">
- <menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/>
- </menu>
- <menu label="Avanceret" name="Advanced">
- <menu label="Shortcuts" name="Shortcuts">
- <menu_item_check label="Flyv" name="Fly"/>
- <menu_item_call label="Luk vindue" name="Close Window"/>
- <menu_item_call label="Luk alle vinduer" name="Close All Windows"/>
- <menu_item_call label="Nulstil udsyn" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml
deleted file mode 100644
index 63f4b0b388..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Erstat" name="wear_replace"/>
- <menu_item_call label="Tag på" name="wear_wear"/>
- <menu_item_call label="Tilføj" name="wear_add"/>
- <menu_item_call label="Tag af" name="take_off_or_detach"/>
- <menu_item_call label="Tag af" name="detach"/>
- <context_menu label="Vedhæft til" name="wearable_attach_to"/>
- <context_menu label="Vedhæft til HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Tag af" name="take_off"/>
- <menu_item_call label="Redigér" name="edit"/>
- <menu_item_call label="Genstandsprofil" name="object_profile"/>
- <menu_item_call label="Vis original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml
deleted file mode 100644
index 515a15b287..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Redigér sæt" name="edit"/>
- <menu_item_call label="Tag af" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml
deleted file mode 100644
index c0db7b6842..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Tag af" name="take_off"/>
- <menu_item_call label="Tag af" name="detach"/>
- <menu_item_call label="Redigér sæt" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/notifications.xml b/indra/newview/skins/minimal/xui/da/notifications.xml
deleted file mode 100644
index 3d003ea3b3..0000000000
--- a/indra/newview/skins/minimal/xui/da/notifications.xml
+++ /dev/null
@@ -1,1831 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Vis ikke dette igen
- </global>
- <global name="alwayschoose">
- Vælg altid dette
- </global>
- <global name="implicitclosebutton">
- Luk
- </global>
- <template name="okbutton">
- <form>
- <button name="OK_okbutton" text="$yestext"/>
- </form>
- </template>
- <template name="okignore">
- <form>
- <button name="OK_okignore" text="$yestext"/>
- </form>
- </template>
- <template name="okcancelbuttons">
- <form>
- <button name="OK_okcancelbuttons" text="$yestext"/>
- <button name="Cancel_okcancelbuttons" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore">
- <form>
- <button name="OK_okcancelignore" text="$yestext"/>
- <button name="Cancel_okcancelignore" text="$notext"/>
- </form>
- </template>
- <template name="okhelpbuttons">
- <form>
- <button name="OK_okhelpbuttons" text="$yestext"/>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Ukendt notificeringsbesked" name="MissingAlert">
- Din version af [APP_NAME] kan ikke vise den besked den lige modtog. Undersøg venligst at du har den nyester version af klienten installeret.
-
-Fejl detaljer: Beskeden kaldet &apos;[_NAME]&apos; blev ikke fundet i notifications.xml.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Floater error: Kunne ikke finde følgende kontrol:
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Der er i øjeblikket ingen tilgængelig guide.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ja"/>
- </notification>
- <notification name="BadInstallation">
- Der opstod en fejl ved opdatering af [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Kunne ikke tilslutte til [SECOND_LIFE_GRID].
- &apos;[DIAGNOSTIC]&apos;
-Check at Internet forbindelsen fungerer korrekt.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Besked template [PATH] kunne ikke findes.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Gem ændringer til nuværende tøj/krops del?
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem ikke" yestext="Gem"/>
- </notification>
- <notification name="CompileQueueSaveText">
- Der var problemer med upload af teksten til et script af følgende årsager: [REASON]. Prøv igen senere.
- </notification>
- <notification name="CompileQueueSaveBytecode">
- Der var problemer med at uploade den kompileret script af følgende årsager: [REASON]. Prøv igen senere.
- </notification>
- <notification name="WriteAnimationFail">
- Der var et problem med skrivning af animations data. Prøv igen senere.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- Der var problemer med at uploade billedet til auktionen af følgende årsager: [REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Ude af stand til at se indholdet af mere end ét element ad gangen.
-Vælg kun en genstand, og prøv igen.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Gem alle ændringer til tøj/krops dele?
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem Ikke" yestext="Gem Alt"/>
- </notification>
- <notification name="FriendsAndGroupsOnly">
- &apos;Ikke-venner&apos; vil ikke vide, at du har valgt at ignorere deres opkald og personlige beskeder (IM)
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FavoritesOnLogin">
- Bemærk: Når du aktiverer dette valg, kan enhver der bruger denne computer se dine favorit lokationer.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GrantModifyRights">
- Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed.
-Ønsker du at give ændre-rettgheder til [NAME]?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage ALLE genstande, du måtte have i verden. Vær MEGET forsigtig når uddeler denne tilladelse.
-Ønsker du at ændre rettigheder for de valgte beboere?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="RevokeModifyRights">
- Ønsker du at tilbagekalder ændre-rettigheder for [NAME]?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Vil du tilbagekalde rettighederne for de valgte beboere?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Kunne ikke oprette gruppe.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Ignorer Ændringer" yestext="Godkend Ændringer"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- Du skal angive et emne for at sende en gruppe besked.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- Du er ved at tilføje medlemmer til rollen som [ROLE_NAME].
-Medlemmer ikke kan fjernes fra denne rolle.
-Medlemmerne skal fratræde sin rolle selv.
-Er du sikker på du vil fortsætte?
- <usetemplate ignoretext="Bekræft, før jeg tilføjer en ny gruppe ejer" name="okcancelignore" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- Du er ved at tilføje muligheden for &apos;[ACTION_NAME]&apos; til
-rollen &apos;[ROLE_NAME]&apos;.
-
-*ADVARSEL*
-Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet medlem - roller med flere beføjelser, end de har i øjeblikket, potentielt kan de ophøje sig selv til nær-Ejer magt. Være sikker på, at du ved, hvad du laver, før tildeling af denne evne.
-
-Add this Ability to &apos;[ROLE_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="AttachmentDrop">
- Du er ved at smide et vedhæng.
- Er du sikker på at du vil fortsætte?
- <usetemplate ignoretext="Bekræft før vedhæng smides" name="okcancelignore" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="JoinGroupNoCost">
- Du melder dig ind i gruppen [NAME].
-Ønsker du at fortsætte?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Bliv medlem"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Tilmelding til denne gruppe koster L$[COST].
-Du har ikke nok L$ til denne tilmelding.
- </notification>
- <notification name="CreateGroupCost">
- Oprettelse af denne gruppe vil koste L$100.
-Grupper skal have mindst 2 medlemmer, ellers slettes de for altid.
-Invitér venligst medlemmer indenfor 48 timer.
- <usetemplate canceltext="Annullér" name="okcancelbuttons" notext="Annullér" yestext="Oprete en gruppe for L$100"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- ADVARSEL: Ved at vælge &apos;sælg til enhver&apos; bliver til land tilgængeligt for alle i hele [SECOND_LIFE], også de som ikke er i denne region.
-
-Det valgte antal [LAND_SIZE] m² land bliver sat til salg.
-Salgprisen vil være [SALE_PRICE]L$ og vil være til salg til [NAME].
- </notification>
- <notification name="MultipleFacesSelected">
- Flere overflader er valgt for øjeblikket.
-Hvis du fortsætter med denne aktion, vil flere instanser af media blive vist på overfladerne på objektet.
-Hvis media kun skal vises på en overflade, vælg &apos;Vælg overflade&apos; og klik på den relevante overflade og klik på tilføj.
- <usetemplate ignoretext="Media vil blive sat på flere valgte overflader" name="okcancelignore" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="PromptMissingSubjMsg">
- E-mail dette billede med standard emne eller besked?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="ErrorUploadingPostcard">
- Der var et problem med at sende billedet på grund af følgende: [REASON]
- </notification>
- <notification name="MaxAttachmentsOnOutfit">
- Kunne ikke vedhæfte objekt.
-Overskrider vedhæftnings begrænsning på [MAX_ATTACHMENTS] objekter. Tag venligst en anden vedhæftning af først.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Ups. Noget mangler at blive udfyldt.
-Du skal indtaste brugernavnet for din avatar.
-
-Du skal bruge en konto for at benytte [SECOND_LIFE]. Ønsker du at oprette en konto nu?
- <usetemplate name="okcancelbuttons" notext="Prøv igen" yestext="Lav ny konto"/>
- </notification>
- <notification name="InvalidCredentialFormat">
- Du skal indtaste enten dit brugernavn eller både dit fornavn og efternavn for din avatar i brugernavn feltet, derefter log på igen.
- </notification>
- <notification name="DeleteMedia">
- Du har valgt at slette media tilknyttet denne overflade.
-Er du sikker på at du vil fortsætte?
- <usetemplate ignoretext="Bekræft før jeg slette media i et objekt" name="okcancelignore" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="ClassifiedInsufficientFunds">
- Ikke nok penge til at oprette annonce.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Slet favorit &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
- </notification>
- <notification name="DeleteOutfits">
- Slet valgte sæt?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="CacheWillClear">
- Cache vil blive tømt ved næste genstart af [APP_NAME].
- </notification>
- <notification name="CacheWillBeMoved">
- Cache vil blive fjernet ved næste genstart af [APP_NAME].
-Note: This will clear the cache.
- </notification>
- <notification name="ChangeConnectionPort">
- Port ændringer vil blive effektueret ved næste genstart af [APP_NAME].
- </notification>
- <notification name="ChangeSkin">
- Den nye hud vil blive vist ved næste genstart af [APP_NAME].
- </notification>
- <notification name="ChangeLanguage">
- Ændring af sprog vil først have effekt efter genstart af [APP_NAME].
- </notification>
- <notification name="StartRegionEmpty">
- Ups, din start region er ikke angivet.
-Indtast venligst navn på region i Start lokation feltet eller vælg &quot;Min sidste lokation&quot; eller &quot;Hjem&quot;.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="UnsupportedHardware">
- Din computer opfylder ikke minimumskravene til [APP_NAME]. Du kan risikere nedsat hastighed. Desværre kan [SUPPORT_SITE] ikke tilbyde teknisk support til konfigurationer der ikke er understøttet.
-
-Besøg [_URL] for yderligere information?
- <usetemplate ignoretext="Din computer hardware understøttes ikke" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="UnknownGPU">
- Dit system indeholder et grafikkort som [APP_NAME] ikke kan genkende.
-Dette skyldes ofte nyt hardware som endnu ikke er blevet testet med [APP_NAME]. Kortet vil sandsynligvis virke fint, med det kan være nødvendigt at justere grafik opsætningen.
-(Mig &gt; Indstillinger &gt; Grafik).
- <form name="form">
- <ignore name="ignore" text="Dit grafikkort kunne ikke identificeres"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- [APP_NAME] gik ned ved inititalisering af grafik drivere.
-Grafik kvaliteten sættes til &apos;lav&apos; for at undgå typiske problemer med drivere. Dette vil slå visse grafik funktioner fra.
-Vi anbefaler at opdatere driverne til dit grafikkort.
-Grafik kvaliteten kan forbedres i indstillinger &gt; Grafik.
- </notification>
- <notification name="CannotCopyWarning">
- Du har ikke rettigheder til at kopiere følgende genstande:
-[ITEMS]
-og du vil miste dem fra din beholdning hvis du forærer dem væk. Er du sikker på at du vil tilbyde disse genstande?
- </notification>
- <notification name="CannotGiveCategory">
- Du har ikke tilladelse til at videreføre den valgte mappe.
- </notification>
- <notification name="EjectAvatarFromGroup">
- Du har smidt [AVATAR_NAME] ud af gruppen [GROUP_NAME]
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-Gå til [_URL] for information om køb af L$?
- </notification>
- <notification name="SoundFileInvalidChunkSize">
- Fejl i WAV fil (chunk size):
-[FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Kunne ikke &apos;forstå&apos; filen: [FILE]
- </notification>
- <notification name="CorruptedProtectedDataStore">
- Vi kan ikke udfylde dit brugernavn og password. Dette kan ske hvis du ændrer netværksopsætning
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- [APP_NAME] understøtter p.t. ikke at send flere animationsfiler ad gangen.
- </notification>
- <notification name="LandmarkCreated">
- Du har tilføjet &quot;[LANDMARK_NAME]&quot; til din [FOLDER_NAME] mappe.
- </notification>
- <notification name="LandmarkAlreadyExists">
- Du har allerede et landemærke for denne lokation.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotOpenScriptObjectNoMod">
- Ikke muligt at åbne script i objekt uden &apos;Redigére&apos; rettigheder.
- </notification>
- <notification name="CouldNotTeleportReason">
- Teleport fejlede.
-[REASON]
- </notification>
- <notification name="invalid_tport">
- Der opstod et problem ved din teleport. Det kan være nødvendigt at logge ind igen, før du kan teleporte.
-Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
- </notification>
- <notification name="invalid_region_handoff">
- Der opstod et problem ved skift til ny region. Det kan være nødvendigt at logge ind igen, før du kan skifte til andre regioner.
-Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
- </notification>
- <notification name="blocked_tport">
- Beklager, teleport er blokeret lige nu. Prøv igen senere.
-Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for at løse dette problem.
- </notification>
- <notification name="nolandmark_tport">
- Beklager, systemet kunne ikke finde landmærke destinationen.
- </notification>
- <notification name="timeout_tport">
- Beklager, systemet kunne ikke fuldføre teleport forbindelse.
-Prøv igen om lidt.
- </notification>
- <notification name="noaccess_tport">
- Beklager, du har ikke adgang til denne teleport destination.
- </notification>
- <notification name="missing_attach_tport">
- Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen.
- </notification>
- <notification name="too_many_uploads_tport">
- Tekniske problemer hindrer at din teleport kan gennemføres.
-Prøv venligst igen om lidt eller vælg et mindre travlt område.
- </notification>
- <notification name="expired_tport">
- Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt.
- </notification>
- <notification name="expired_region_handoff">
- Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt.
- </notification>
- <notification name="no_host">
- Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere.
-Prøv evt. igen om lidt.
- </notification>
- <notification name="no_inventory_host">
- Beholdningssystemet er ikke tilgængelig lige nu.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Denne parcel er sat på auktion. Gennemtving ejerskab vil annullere denne auktion og måske irritere nogen beboere hvis bud allerede er afgivet.
-Gennemtving ejerskab?
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Ikke i stand til at købe land:
-Kan ikke finde region som dette land er i.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- Du kan ikke lukke &apos;Køb land&apos; vinduet før [APP_NAME] har vurderet en pris på denne transaktion.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Land kunne ikke dedikeres:
-Kunne ikke finde den region land ligger i.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Kunne ikke efterlade land:
-Kan ikke finde den region landet ligger i.
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Kunne ikke opdele land:
-Kan ikke finde den region landet ligger i.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Kunne ikke opdele land:
-Kan ikke finde den region landet ligger i.
- </notification>
- <notification name="CannotSaveToAssetStore">
- Kunne ikke gemme [NAME] i den centrale database.
-Dette er typisk en midlertidig fejl. Venligst rediger og gem igen om et par minutter.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- Du er blevet logget af [SECOND_LIFE]
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Se PB &amp; Chat"/>
- </notification>
- <notification label="Tilføj ven" name="AddFriendWithMessage">
- Venner kan give tilladelse til at følge hinanden
-på Verdenskortet eller modtage status opdateringer.
-
-Tilbyd venskab til [NAME]?
- <form name="form">
- <input name="message">
- Vil du være min ven?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification label="Gem sæt" name="SaveOutfitAs">
- Gem det som jeg har på som nyt sæt:
- <form name="form">
- <input name="message">
- [DESC] (ny)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification label="Gem" name="SaveWearableAs">
- Gem genstand til beholdning som:
- <form name="form">
- <input name="message">
- [DESC] (ny)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification label="Omdøb sæt" name="RenameOutfit">
- Nyt navn til sæt:
- <form name="form">
- <input name="new_name">
- [NAME]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Ønsker du at fjerne [NAME] fra din venneliste?
- </notification>
- <notification name="ConfirmItemDeleteHasLinks">
- Mindst en af genstandene har lænkede genstande der peger på den. Hvis du sletter denne genstand, vil lænkninger ikke virke mere. Det anbefales kraftigt at fjerne lænkninger først.
-
-Er du sikker på at du vil slette disse genstande?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Ved at dedikere denne parcel, vil gruppen skulle have og vedblive med at have nok kreditter til brug af land.
-Dedikeringen vil inkludere samtidige bidrag til gruppen fra &apos;[NAME]&apos;.
-Købsprisen for dette land er ikke refunderet til ejeren. Hvis en dedikeret parvel sælges, vil salgsprisen blive delt ligeligt mellem gruppe medlemmerne.
-
-Dediker disse [AREA] m² land til gruppen &apos;[GROUP_NAME]&apos;?
- </notification>
- <notification name="ErrorMessage">
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarMovedDesired">
- Den ønskede lokation er ikke tilgængelig lige nu.
-Du er blevet flyttet til en region in nærheden.
- </notification>
- <notification name="AvatarMovedLast">
- Din sidste lokation er ikke tilgængelig for øjeblikket.
-Du er blevet flyttet til en region in nærheden.
- </notification>
- <notification name="AvatarMovedHome">
- Din hjemme lokation er ikke tilgængelig for øjeblikket.
-Du er blevet flyttet til en region in nærheden.
-Du kan måske ønske at sætte en ny hjemme lokation.
- </notification>
- <notification name="ClothingLoading">
- Dit tøj hentes stadig ned.
-Du kan bruge [SECOND_LIFE] normalt og andre personer vil se dig korrekt.
- <form name="form">
- <ignore name="ignore" text="Det tager lang tid at hente tøj"/>
- </form>
- </notification>
- <notification name="FirstRun">
- [APP_NAME] installationen er færdig.
-
-Hvis det er første gang du bruger [SECOND_LIFE], skal du først oprette en konto for at logge på.
-Vend tilbage til [http://join.secondlife.com secondlife.com] for at oprette en ny konto?
- </notification>
- <notification name="LoginPacketNeverReceived">
- Der er problemer med at koble på. Der kan være et problem med din Internet forbindelse eller [SECOND_LIFE_GRID].
-
-Du kan enten checke din Internet forbindelse og prøve igen om lidt, klikke på Hjælp for at se [SUPPORT_SITE] siden, eller klikke på Teleport for at forsøge at teleportere hjem.
- </notification>
- <notification name="CantTeleportToGrid">
- Kunne ikke teleportere til [SLURL] da den er på et andet net ([GRID]) end det nuværende net ([CURRENT_GRID]). Luk venligst din klient og prøv igen.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GeneralCertificateError">
- Kunne ikke opnå forbindelse til server.
-[REASON]
-
-Vedrørende: [SUBJECT_NAME_STRING]
-Fra: [ISSUER_NAME_STRING]
-Valid fra: [VALID_FROM]
-Valid til: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TrustCertificateError">
- Certifikationsmyndighed for denne server er ikke kendt.
-
-Certifikat information:
-Vedrørende: [SUBJECT_NAME_STRING]
-Fra: [ISSUER_NAME_STRING]
-Valid fra: [VALID_FROM]
-Valid til: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-Ønsker du at stole på denne myndighed?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Stol på"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] L$ [PRICE] Du har ikke nok L$ til dette.
- </notification>
- <notification name="GrantedModifyRights">
- [NAME] har givet dig rettighed til at redigere sine objekter.
- </notification>
- <notification name="RevokedModifyRights">
- Dinne rettigheder til at redigere objekter ejet af [NAME] er fjernet
- </notification>
- <notification name="BuyOneObjectOnly">
- Ikke muligt at købe mere end et objekt ad gangen. Vælg kun ét objekt og prøv igen.
- </notification>
- <notification name="DownloadWindowsMandatory">
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne version for at bruge [APP_NAME].
- </notification>
- <notification name="DownloadWindows">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
- </notification>
- <notification name="DownloadLinuxMandatory">
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne version for at kunne benytte [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Hent"/>
- </notification>
- <notification name="DownloadLinux">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
- <usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
- <usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/>
- </notification>
- <notification name="DownloadMacMandatory">
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne opdatering for at bruge [APP_NAME].
-
-Download til dit Program bibliotek?
- </notification>
- <notification name="DownloadMac">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-Download til dit Program bibliotek?
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-Download til dit Program bibliotek?
- </notification>
- <notification name="FailedUpdateInstall">
- Der opstod en fejl ved installation af opdatering.
-Hent og installér venligst den nyeste version fra
-http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FailedRequiredUpdateInstall">
- Vi kunne ikke installere en påkrævet opdatering.
-Du kan ikke logge på før [APP_NAME] er blevet opdateret.
-
-Hent og installer venligst den nyeste klien fra
-http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="Afslut"/>
- </notification>
- <notification name="UpdaterServiceNotRunning">
- Dette er en påkrævet opdatering af din Second Life installation.
-
-Du kan downloade opdateringen fra http://www.secondlife.com/downloads
-eller du kan installere den nu.
- <usetemplate name="okcancelbuttons" notext="Afslut Second Life" yestext="Hent og installér nu"/>
- </notification>
- <notification name="DownloadBackgroundTip">
- Vi har hentet en opdatering til din [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
- <usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/>
- </notification>
- <notification name="DownloadBackgroundDialog">
- Vi har hentet en opdatering til din [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
- <usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/>
- </notification>
- <notification name="RequiredUpdateDownloadedVerboseDialog">
- Vi har hentet en påkrævet opdatering.
-Version [VERSION]
-
-Du skal genstarte [APP_NAME] for at installere denne opdatering.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RequiredUpdateDownloadedDialog">
- Du skal genstarte [APP_NAME] for at installere opdateringen.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeedObjectToGroup">
- <usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Ønsker du at åbne din web browser for at se dette indhold?
- <usetemplate ignoretext="Start min browser for at se hjemmesider" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- Gå til [http://secondlife.com/account/ Dashboard] for at administrere din konto?
- <usetemplate ignoretext="Start min browser for at administrere min konto" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- <usetemplate ignoretext="Start min browser for at lære hvordan man rapporterer sikkerhedsproblemer" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- <usetemplate ignoretext="Start min browser for at se QA Wiki" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- <usetemplate ignoretext="Start min browser for at bruge det Linden Labs sagsstyring" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- <usetemplate ignoretext="Start min browser for at se bloggen" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Ønsker du at åbne &apos;Scripting Guide&apos; for hjælp til scripting?
- <usetemplate ignoretext="Start min browser for at se Scripting Guide" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Ønsker du at besøge LSL portalen for hjælp til scripting?
- <usetemplate ignoretext="Start min browser for at besøge LSL Portalen" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
- </notification>
- <notification name="ReturnToOwner">
- <usetemplate ignoretext="Bekræft før objekter returneres til deres ejere" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Er du SIKKER på at du vil sparke alle beboere ud?
- <usetemplate name="okcancelbuttons" notext="Cancel" yestext="Spark alle beboere ud"/>
- </notification>
- <notification name="MuteLinden">
- Beklager, men du kan ikke blokere en Linden.
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- Du kan ikke starte en auktion på en parcel som allerede er sat til salg. Fjern &apos;til salg&apos; muligheden hvis du ønsker at starte en auktion.
- </notification>
- <notification label="Blokering af objekt via navn mislykkedes" name="MuteByNameFailed">
- Du har allerede blokeret dette navn.
- </notification>
- <notification name="BusyModeSet">
- Sat til &apos;optaget&apos;.
-Chat og personlige beskeder vil blive skjult. Personlige beskeder vil få din &apos;optaget&apos; besked. Alle teleport invitationer vil blive afvist. Alle objekter sendt til dig vil ende i papirkurven.
- <usetemplate ignoretext="Jeg skrifter min status til &apos;optaget" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- Du er oppe på det maksimale antal grupper. Forlad venligst en anden gruppe inden du melder dig ind i denne, eller afvis tilbuddet.
-[NAME] har inviteret dig til en gruppe.
- </notification>
- <notification name="JoinedTooManyGroups">
- Du er oppe på det maksimale antal grupper. Forlad venligst en gruppe inden du melder dig ind i enndnu en gruppe eller opretter en ny.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="KickUser">
- Spark beboere ud med hvilken besked?
- </notification>
- <notification name="FreezeUser">
- Frys beboeren med hvilken besked?
- </notification>
- <notification name="UnFreezeUser">
- Fjern frysning af beboeren med hvilken besked?
- </notification>
- <notification name="SetDisplayNameSuccess">
- Hej [DISPLAY_NAME]!
-
-Præcist som i virkeligheden tager det et stykke tid at vænne sig til et nyt navn. Det kan tage flere dage for [http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update] i objekter, scripts, søgninger m.v.
- </notification>
- <notification name="SetDisplayNameBlocked">
- Beklager, du kan ikke ændre dit visningsnavn. Hvis du mener dette skyldes en fejl, kontakt venligst support.
- </notification>
- <notification name="SetDisplayNameFailedLength">
- Beklager, mavnet er for langt. Visningsnavne kan ikke indholde mere end [LENGTH] karakterer.
-
-Prøv venligst med et kortere navn.
- </notification>
- <notification name="SetDisplayNameFailedGeneric">
- Beklager, vi kunne ikke sætte dit visningsnavn. Prøv venligst igen senere.
- </notification>
- <notification name="SetDisplayNameMismatch">
- Visningsnavnene du angav matcher ikke. Prøv at taste ind igen.
- </notification>
- <notification name="AgentDisplayNameUpdateThresholdExceeded">
- Beklager, du er nødt til at vente længere, inden du kan ændre visningsnavn.
-
-Se mere under http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Prøv venligst igen senere.
- </notification>
- <notification name="AgentDisplayNameSetBlocked">
- Beklager, vi kunne ikke sætte dit valgte navn da det indholder et ikke tilladt ord.
-
- Prøv med et andet navn.
- </notification>
- <notification name="AgentDisplayNameSetInvalidUnicode">
- Visningsnavnet du prøver at angive indeholder ugyldige karakterer.
- </notification>
- <notification name="AgentDisplayNameSetOnlyPunctuation">
- Dit vinsningsnavn skal indeholde andre bogstaver end tegnsætningstegn.
- </notification>
- <notification name="DisplayNameUpdate">
- [OLD_NAME] ([SLID]) er nu kendt som [NEW_NAME].
- </notification>
- <notification name="OfferTeleport">
- Tilbyd en teleport til din position med følgende besked?
- <form name="form">
- <input name="message">
- Mød mig i [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- Tilkald beboer til din lokation?
- </notification>
- <notification name="TeleportFromLandmark">
- Er du sikker på at du vil teleportere til &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
- <usetemplate ignoretext="Bekræft at jeg vil teleportere til et landemærke" name="okcancelignore" notext="Cancel" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToPick">
- Teleport til [PICK]?
- <usetemplate ignoretext="Bekræft at jeg ønsker at teleportere til et sted i favoritter" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToClassified">
- Teleport til [CLASSIFIED]?
- <usetemplate ignoretext="Bekræft at du ønsker at teleportere til lokation in annoncer" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToHistoryEntry">
- Teleport til [HISTORY_ENTRY]?
- <usetemplate ignoretext="Bekræft at du ønsker at teleportere til en lokation i din historik" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
- </notification>
- <notification label="Change Linden Estate" name="ChangeLindenEstate">
- Du er i færd med at ændre et Linden ejet estate (mainland, teeen grid, orientation etc.).
-
-Dette er EKSTREMT FARLIGT da det kan ændre beboernes oplevelse fundamentalt. På mainland vil dette betyde ændring af tusinder af regioner og få spaceserveren til at kløjs i det.
-
-Fortsæt?
- </notification>
- <notification name="RegionEntryAccessBlocked">
- Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder.
-
-Undersøg venligst om du har installeret den nyeste [APP_NAME] klient, og gå til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- Du har ikke adgang til denne region på grund af din valgte indholdsrating.
-
-Gå til &apos;Knowledge Base&apos; for mere information om indholdsratings.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Ikke adgang til denne region på grund af begrænsninger i min indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- Du har ikke adgang til denne region på grund af din valgte indholdsrating.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- Du har ikke adgang til denne region på grund af din opsætning af indholdsrating.
-
-For at få adgang til den ønskede region skal du ændre din indholdsrating. Dette vil give dig ret til at søge og får tilgang til indhold af typen [REGIONMATURITY]. For at omgøre ændringer gå til Mig &gt; Indstillinger &gt; Generelt.
- <form name="form">
- <button name="OK" text="Ændre indstillinger"/>
- <button name="Cancel" text="Luk"/>
- <ignore name="ignore" text="Din valgte indholdsrating forhindrer dig i at kommer til en region"/>
- </form>
- </notification>
- <notification name="PreferredMaturityChanged">
- Din indholdsrating er nu [RATING].
- </notification>
- <notification name="LandClaimAccessBlocked">
- Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
-
-Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstilling..
-
-Gå venligst til &apos;Knowledge Base&apos; for yderligere information om indholdsrating.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Du kan ikke kræve dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- Du kan ikke kræve dette land på grund af din indholdsrating.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- Du kan ikke kræve dette land, på grund af begrænsninger i din opsætning af indholdsrating.
-
-Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
- <usetemplate ignoretext="Din valgte indholdsrating forhindrer dig i at kræve land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- Du kan ikke købe dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
-
-Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- Du kan ikke købe dette land på grund af din nuværende indholdsrating.
-
-Gå til &apos;Knowledge Base&apos; for yderligere detaljer om indholdsrating.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Du kan ikke købe dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- Du kan ikke købe dette land på grund af din nuværende indholdsrating indstilling.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- Du kan ikke købe dette land, på grund af begrænsninger i din opsætning af indholdsrating.
-
-Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
- <usetemplate ignoretext="Din valgte rating forhindrer dig i at købe land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- Der er valgt for mange prims. Vælg venligst [MAX_PRIM_COUNT] eller færre og prøv igen
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Kunne ikke hente notecard indhold.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Indeholder denne annonce &apos;Mature&apos; indhold?
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="SetGroupMature">
- Indeholder denne gruppe &apos;Mature&apos; indhold?
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification label="Changed Region Maturity" name="RegionMaturityChange">
- Ratingen for denne region er ændret.
-Det kan tage noget tid inden ændringen slår igennem på kortet.
-
-For at få adgang til voksen regioner, skal beboere være alders-checket, enten via aldersverifikation eller betalingsverifikation.
- </notification>
- <notification label="Voice Version Mismatch" name="VoiceVersionMismatch">
- Denne version af [APP_NAME] er ikke kompatibel med stemme chat funktionen i denne region. For at kunne få stemme chat til at fungere skal du opdatere [APP_NAME].
- </notification>
- <notification name="MoveInventoryFromObject">
- <usetemplate ignoretext="Advar mig før jeg flytter &apos;ikke-kopiérbare&apos; genstande fra et objekt" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- <usetemplate ignoretext="Advar mig før jeg flytter &apos;ikke-kopiérbare&apos; genstande, hvor det kan medføre at ødelægge et scriptet objekt" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Advarsel: &apos;Betal objekt&apos; klik-aktionen er blevet aktiveret, men det vil kun virke, hvis et script med et &apos;money()&apos; event er tilføjet.
- <form name="form">
- <ignore name="ignore" text="I set the action &apos;Pay object&apos; when building an object without a money() script"/>
- </form>
- </notification>
- <notification name="WebLaunchAccountHistory">
- Gå til [http://secondlife.com/account/ Dashboard] for at se konto-historik?
- <usetemplate ignoretext="Start min browser for at se min konto historik" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
- </notification>
- <notification name="ConfirmQuit">
- Er du sikker på at du vil afslutte?
- <usetemplate ignoretext="Bekræft før jeg afslutter" name="okcancelignore" notext="Afslut ikke" yestext="Quit"/>
- </notification>
- <notification name="DeleteItems">
- [QUESTION]
- <usetemplate ignoretext="Bekræft før sletning af genstande" name="okcancelignore" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Benyt dette værktøj til at rapportere krænkninger af [http://secondlife.com/corporate/tos.php Terms of Service] og [http://secondlife.com/corporate/cs.php Community Standards].
-
-Alle rapporter om krænkninger vil blive undersøgt og behandlet.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Kære beboer,
-
-Det ser ud til at du indrapporterer krænkelse af ophavsret. Check venligst at du rapporterer korrekt:
-
-(1) Krænkelsesproces. Du må sende en rapport, hvis du mener at en beboer udnytter [SECOND_LIFE] rettighedssystemet, for eksempel via CopyBot eller lignende værktøjer, til at overtræde ophavsretten til objekter.
-
-(2) DCMA (”Digital Millennium Copyright Act”) eller fjernelsesproces. For at kræve at indhold fjernes fra [SECOND_LIFE], SKAL du sende en gyldig besked om overtrædelse som beskrevet i [http://secondlife.com/corporate/dmca.php DMCA Policy].
-
-Hvis du stadig ønsker at fortsætte med rapportering om overtrædelse, luk venligst dette vindue og afslut afsendelse af rapporten. Du skal muligvis vælge en specifik kategori &apos;CopyBot or Permissions Exploit&apos;.
-
-Mange tak
-
-Linden Lab
- </notification>
- <notification label="Replace Existing Attachment" name="ReplaceAttachment">
- <form name="form">
- <ignore name="ignore" text="Erstat et eksisterende vedhæng med den valgte genstand"/>
- </form>
- </notification>
- <notification label="Busy Mode Warning" name="BusyModePay">
- <form name="form">
- <ignore name="ignore" text="Jeg er ved at betale en person eller et objekt mens jeg er &apos;optaget&apos;"/>
- </form>
- </notification>
- <notification name="ConfirmDeleteProtectedCategory">
- Mappen &apos;[FOLDERNAME]&apos; er en system mappe. At slette denne mappe kan medføre ustabilitet. Er du sikker på at du vil slette den?
- <usetemplate ignoretext="Bekræft, inden en system mappe slettes" name="okcancelignore" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Er du sikker på at du ønsker at tømme papirkurven?
- <usetemplate ignoretext="Bekræft før papirkurv i beholdning tømmes" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Er du sikker på at du ønsker at slette din historik om besøg, web og søgninger?
- <usetemplate name="okcancelbuttons" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Er du sikker på du vil slette alle cookies?
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Er du sikker på at du vil slette indholdet i din &apos;Fundne genstande&apos;?
- <usetemplate ignoretext="Bekræft før sletning af &apos;Fundne genstande&apos; mappe i beholdning" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="CopySLURL">
- Følgende SLurl er blevet kopieret til din udklipsholder:
- [SLURL]
-
-Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokation, eller prøv det selv ved at indsætte det i adresselinien i en web-browser.
- <form name="form">
- <ignore name="ignore" text="SLurl er kopieret til min udklipsholder"/>
- </form>
- </notification>
- <notification name="NewSkyPreset">
- <form name="form">
- <input name="message">
- Ny forudindstilling
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="NewWaterPreset">
- <form name="form">
- <input name="message">
- Ny forudindstilling
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Ikke i stand til at start chat med [RECIPIENT].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Du kan ikke købe en genstand mens den er vedhæftet.
- </notification>
- <notification name="AutoWearNewClothing">
- Vil du automatisk tage det tøj på du er ved at lave?
- <usetemplate ignoretext="Tag det tøj på jeg laver, mens jeg ændrer udseende" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="NotAgeVerified">
- Du skal være alders-checket for at besøge dette område. Ønsker du at gå til [SECOND_LIFE] hjemmesiden og bekræfte din alder?
-
-[_URL]
- <usetemplate ignoretext="Jeg har ikke bekræftet min alder" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Du skal være betalende medlem for at besøge dette område. Ønsker du at gå til [SECOND_LIFE] hjemmesiden for at blive dette?
-
-[_URL]
- <usetemplate ignoretext="Du mangler at være betalende medlem" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="IMSystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Annulléret
- </notification>
- <notification name="CancelledSit">
- Annulléret sid
- </notification>
- <notification name="CancelledAttach">
- Annulléreret vedhæft
- </notification>
- <notification name="ReplacedMissingWearable">
- Erstattet manglende tøj/kropsdele med standard.
- </notification>
- <notification name="FriendOnline">
- [NAME] er logget på
- </notification>
- <notification name="FriendOffline">
- [NAME] er logget af
- </notification>
- <notification name="AddSelfFriend">
- Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- Uploader billeder fra verdenen og www...
-(Tager omkring 5 minutter.)
- </notification>
- <notification name="UploadPayment">
- Du betalte L$[AMOUNT] for at uploade.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Billeder fra www er uploadet.
- </notification>
- <notification name="UploadSnapshotDone">
- Billeder fra verdenen er uploadet
- </notification>
- <notification name="TerrainDownloaded">
- Terrain.raw downloadet
- </notification>
- <notification name="GestureMissing">
- Bevægelsen [NAME] mangler i databasen.
- </notification>
- <notification name="UnableToLoadGesture">
- Kunne ikke indlæse læse bevægelse [NAME].
- </notification>
- <notification name="LandmarkMissing">
- Landmærke mangler i databasen.
- </notification>
- <notification name="UnableToLoadLandmark">
- Ikke muligt at indlæse landmærke. Prøv venligst igen.
- </notification>
- <notification name="CapsKeyOn">
- Din Caps Lock er aktiveret.
-Det kan påvirke din indtastning af password.
- </notification>
- <notification name="NotecardMissing">
- Note mangler i databasen.
- </notification>
- <notification name="NotecardNoPermissions">
- Du har ikke rettigheder til at se denne note.
- </notification>
- <notification name="RezItemNoPermissions">
- Utilstrækkelige tilladelser til at danne genstanden.
- </notification>
- <notification name="UnableToLoadNotecard">
- Ikke muligt at indlæse note.
-Prøv venligst igen.
- </notification>
- <notification name="ScriptMissing">
- Script mangler i databasen.
- </notification>
- <notification name="ScriptNoPermissions">
- Utilstrækkelige tilladelser til at se script.
- </notification>
- <notification name="UnableToLoadScript">
- Ikke muligt at indlæse script. Prøv venligst igen.
- </notification>
- <notification name="IncompleteInventory">
- Det komplette indhold, du tilbyder, er ikke endnu tilgængelig lokalt. Prøv venligst at tilbyde tingene igen om lidt.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- Du kan ikke ændre beskyttede kategorier.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- Du kan ikke fjerne beskyttede kategorier.
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Ikke muligt at købe, imens genstandens data hentes.
-Prøv venligst igen.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Ikke muligt at lænke imens genstandens data hentes.
-Prøv venligst igen.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Du kan kun købe objekter fra én ejer ad gangen.
-Vælg venligst et enkelt objekt.
- </notification>
- <notification name="ObjectNotForSale">
- Dette objekt er ikke til salg.
- </notification>
- <notification name="EnteringGodMode">
- Starter gud-tilstand, niveau [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- Stopper gud-tilstand, niveau [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Du har ikke rettigheder til at kopiere dette.
- </notification>
- <notification name="InventoryAccepted">
- [NAME] modtog dit tilbud til hans/hendes beholdning.
- </notification>
- <notification name="InventoryDeclined">
- [NAME] afviste det du tilbød fra din beholdning.
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Dit visitkort blev accepteret.
- </notification>
- <notification name="CallingCardDeclined">
- Dit visitkort blev afvist.
- </notification>
- <notification name="TeleportToLandmark">
- Du kan teleportere til lokationer som &apos;[NAME]&apos; ved at åbne Steder panelet til højre på skærmen, og her vælge landemærker fanen.
-Klik på et landemærke og vælg den, derefter
-Click on any landmark to select it, then click &apos;Teleport&apos; at the bottom of the panel.
-(You can also double-click on the landmark, or right-click it and choose &apos;Teleport&apos;.)
- </notification>
- <notification name="TeleportToPerson">
- Du kan kontakte beboere som &apos;[NAME]&apos; ved at åbne Personer panelet til højre på skærmen.
-Vælg beboeren fra listen og klik så &apos;IM&apos; i bundet af panelet.
-(Du kan også dobbelt-klikke på navnet i listen, eller højre-klikke og vælge &apos;IM&apos;).
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Kan ikke vælge land på tværs af grænser.
-Prøv at vælge mindre stykker land.
- </notification>
- <notification name="SearchWordBanned">
- Visse ord er fjernet fra din søge-sætning på grund af at disse strider mod de generelle &apos;Community Standards&apos;.
- </notification>
- <notification name="NoContentToSearch">
- Vælg venligst mindst en indholdstype for at søge (PG, Mature, or Adult).
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="PaymentReceived">
- [MESSAGE]
- </notification>
- <notification name="PaymentSent">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Besked om begivenhed:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="Detaljer"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Alle genstande på denne grund, som vil blive overført til køberen af denne grund, er nu oplyst.
-
-* Træer og græs, der vil blive overført, er ikke fremhævet.
- <form name="form">
- <button name="Done" text="Færdig"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Deaktiverede bevægelser med samme udløser: [NAMES]
- </notification>
- <notification name="NoQuickTime">
- Det ser ikke ud til at Apples QuickTime software er installeret på dit system.
-Hvis du ønsker at se streaming media på parceller der understøtter dette skal du besøge siden [http://www.apple.com/quicktime QuickTime site] og installere QuickTime Player.
- </notification>
- <notification name="NoPlugin">
- Ingen Media Plugin blev fundet til at håndtere mime af typen &quot;[MIME_TYPE]&quot;. Media af denne type vil ikke være tilgængelig.
- </notification>
- <notification name="MediaPluginFailed">
- Følgende Media Plugin has fejlede:
- [PLUGIN]
-
-Prøv venligst at geninstallere plugin eller kontakt leverandøren hvis problemerne bliver ved.
- <form name="form">
- <ignore name="ignore" text="En Media Plugin kunne ikke afvikles"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- De genstande du ejer på det valgte stykke land er blevet returneret til din beholdning.
- </notification>
- <notification name="OtherObjectsReturned">
- Objekterne på den valgte parcel, ejet af [NAME], er blevet returneret til vedkommendes beholdning.
- </notification>
- <notification name="OtherObjectsReturned2">
- Objekterne i den valgte parcel, ejet af beboeren &apos;[NAME]&apos;, er blevet returneret til deres ejer.
- </notification>
- <notification name="GroupObjectsReturned">
- Genstandene på det valgte stykke land, delt med gruppen [GROUPNAME], er blevet returneret til deres ejeres beholdninger.
-Genstande, som er dedikerede og som kan overføres, er blevet returneret til deres forrige ejere.
-Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet slettet.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- Genstandene på det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere.
- </notification>
- <notification name="ServerObjectMessage">
- Besked fra [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
- </notification>
- <notification name="NotSafe">
- Dette land er åbnet for &apos;skade&apos;.
-Du kan blive skadet her. Hvis du dør, vil du blive teleporteret til din hjemme lokation.
- </notification>
- <notification name="NoFly">
- Dette sted har ikke aktiveret ret til flyvning.
-Du kan ikke flyve her.
- </notification>
- <notification name="PushRestricted">
- Dette sted tillader ikke skubning. Du kan ikke skubbe andre, med mindre du ejer dette land.
- </notification>
- <notification name="NoVoice">
- Dette sted har ikke aktiveret stemme-chat. Du vil ikke kunne høre nogen tale.
- </notification>
- <notification name="NoBuild">
- Dette sted har ikke aktiveret bygge-ret. Du kan ikke bygge eller &apos;rezze&apos; objekter her.
- </notification>
- <notification name="ScriptsStopped">
- En administrator har midlertidig stoppet scripts i denne region.
- </notification>
- <notification name="ScriptsNotRunning">
- Denne region kører ikke nogen scripts.
- </notification>
- <notification name="NoOutsideScripts">
- Dette sted tillader ikke udefra kommende scripts.
-
-Ingen scripts vil virke her, udover de som tilhører ejeren af landet.
- </notification>
- <notification name="ClaimPublicLand">
- Du kan kun kræve land i den region du befinder dig i.
- </notification>
- <notification name="RegionTPAccessBlocked">
- Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder eller at du ikke benytter den nyeste [APP_NAME] klient.
-
-Gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
- </notification>
- <notification name="URBannedFromRegion">
- Du er blokeret i denne region.
- </notification>
- <notification name="NoTeenGridAccess">
- Du kan ikke tilslutte dig denne &apos;Teen&apos; region.
- </notification>
- <notification name="ImproperPaymentStatus">
- Du har ikke de rette betalingsoplysninger til at komme ind i denne region.
- </notification>
- <notification name="MustGetAgeParcel">
- Du skal være aldersgodkendt for at komme ind på denne parcel.
- </notification>
- <notification name="NoDestRegion">
- Destinations region ikke fundet.
- </notification>
- <notification name="NotAllowedInDest">
- Du har ikke adgang til denne destination.
- </notification>
- <notification name="RegionParcelBan">
- Kan ikke skifte til ny region via en blokeret parcel. Prøv en anden vej ind.
- </notification>
- <notification name="TelehubRedirect">
- Du er blevet omdirigeret til en telehub.
- </notification>
- <notification name="CouldntTPCloser">
- Kunne ikke teleportere nærmere til destination.
- </notification>
- <notification name="TPCancelled">
- Teleport afbrudt.
- </notification>
- <notification name="FullRegionTryAgain">
- Den region du prøver at komme ind i er fuld for øjeblikket.
-Prøv igen om lidt.
- </notification>
- <notification name="GeneralFailure">
- Generel fejl.
- </notification>
- <notification name="RoutedWrongRegion">
- Du blev sendt til en forkert region. Prøv igen.
- </notification>
- <notification name="NoValidAgentID">
- Ikke en gyldig agent ID.
- </notification>
- <notification name="NoValidSession">
- Ikke noget gyldig sessions-ID
- </notification>
- <notification name="NoValidCircuit">
- Ingen gyldig kode for kredsløb.
- </notification>
- <notification name="NoValidTimestamp">
- Ikke et gyldigt klokkeslæt.
- </notification>
- <notification name="NoPendingConnection">
- Kunne ikke skabe fast forbindelse.
- </notification>
- <notification name="InternalUsherError">
- Der opstod en intern fejl ved teleportering til din teleport destination.. Der kan være generelle problemer med [SECOND_LIFE] lige nu.
- </notification>
- <notification name="NoGoodTPDestination">
- Kunne ikke finde et egnet teleport sted i denne region.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Der opstod en intern fejl ved beregning af globale koordinater for din teleport forespørgsel. Der kan være generelle problemer med [SECOND_LIFE] lige nu.
- </notification>
- <notification name="NoValidLanding">
- Kunne ikke finde et gyldigt landingspunkt.
- </notification>
- <notification name="NoValidParcel">
- No valid parcel could be found.
- </notification>
- <notification name="ObjectGiveItem">
- Et objekt ved navn &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; ejet af [NAME_SLURL] tilbyder dig &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <form name="form">
- <button name="Keep" text="Behold genstand"/>
- <button name="Discard" text="Afvis genstand"/>
- <button name="Mute" text="Blokér objekt"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME_SLURL] tilbyder dig [ITEM_SLURL]. For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <form name="form">
- <button name="Show" text="Behold genstand"/>
- <button name="Discard" text="Afvis genstand"/>
- <button name="Mute" text="Blokér bruger"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Indmeld"/>
- <button name="Decline" text="Afvis"/>
- <button name="Info" text="Information"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME_SLURL] har tilbudt en teleport til deres lokation:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
- <form name="form">
- <button name="Teleport" text="Teleportér"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="TeleportOfferSent">
- Tilbud om teleport sendt til [TO_NAME]
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Senere"/>
- <button name="GoNow..." text="Gå nu..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME_SLURL] tilbyder venskab.
-
-[MESSAGE]
-
-(Som udgangspunkt vil I være i stand til at se hinandens online status.)
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- </form>
- </notification>
- <notification name="FriendshipOffered">
- Du har tilbudt venskab til [TO_NAME]
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME_SLURL] tilbyder venskab.
-
-(Som udgangspunkt, vil du være i stand til at se den andens online status)
- </notification>
- <notification name="FriendshipAccepted">
- [NAME] accepterede dit tilbud om venskab.
- </notification>
- <notification name="FriendshipDeclined">
- [NAME] afviste dit tilbud om venskab.
- </notification>
- <notification name="FriendshipAcceptedByMe">
- Tilbud om venskab accepteret.
- </notification>
- <notification name="FriendshipDeclinedByMe">
- Tilbud om venskab afvist.
- </notification>
- <notification name="OfferCallingCard">
- [NAME] tilbyder sit visitkort.
-Dette vil tilføje et bogmærke i din beholdning, så du hurtigt kan sende en personlig besked til denne beboer.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- Denne region vil genstarte om [MINUTES] minutter.
-Hvis du ikke forlader regionen, vil du blive logget af.
- </notification>
- <notification name="RegionRestartSeconds">
- Denne region genstartes om [SECONDS] sekunder.
-Hvis du ikke forlader regionen, vil du blive logget af.
- </notification>
- <notification name="LoadWebPage">
- Indlæas websiden [URL]?
-
-[MESSAGE]
-
-Fra objekt: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, ejer: [NAME]?
- <form name="form">
- <button name="Gotopage" text="Gå til side"/>
- <button name="Cancel" text="Afbryd"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- Det lykkedes ikke at finde [TYPE] i databasen.
- </notification>
- <notification name="FailedToFindWearable">
- Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen.
- </notification>
- <notification name="InvalidWearable">
- Den genstand du prøver at tage på benytter en funktion din klient ikke kan forstå. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand på.
- </notification>
- <notification name="ScriptQuestion">
- &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, et objekt ved ejet af &apos;[NAME]&apos;, ønsker at:
-
-[QUESTIONS]
-Er dette OK?
- <form name="form">
- <button name="Yes" text="Ja"/>
- <button name="No" text="Nej"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- Et objeckt med navn &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, ejet af &apos;[NAME]&apos; ønsker at:
-
-[QUESTIONS]
-Hvis du ikke stoler på dette objekt og dets skaber, bør du afvise dette ønske.
-
-Opfyld dette ønske?
- <form name="form">
- <button name="Grant" text="Imødekom"/>
- <button name="Deny" text="Afvis"/>
- <button name="Details" text="Detaljer..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignorér"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignorér"/>
- </form>
- </notification>
- <notification name="BuyLindenDollarSuccess">
- Tak for din betaling!
-
-Din L$ balance vil blive opdateret når transaktionen er gennemført. Ved transaktionen tager mere end 20 min., vil den blive annulleret. I så fald vil beløbet blive krediteret din US$ balance.
-
-Status for din betaling kan ses i din &apos;Transaction History&apos; side på din [http://secondlife.com/account/ Dashboard]
- </notification>
- <notification name="FirstOverrideKeys">
- Dine bevælgelsestaster bliver nu håndteret af et objekt.
-Brug piletasterne eller AWSD for at se, hvad de gør.
-Nogle genstande (som skydevåben) kræver at du går ind i musevisning for at bruge dem.
-Tryk på &apos;M&apos; for at gåre det.
- </notification>
- <notification name="FirstSandbox">
- Dette er et sandkasse område. Her kan beboere lære ast bygge.
-
-De ting du bygger vil blive slettet senere, så glem ikke at højre-klikke og vælge &quot;Tag&quot; for at tage en kopi af din kreation til din beholdning.
- </notification>
- <notification name="MaxListSelectMessage">
- Du må kun vælge op til [MAX_SELECT] genstande på denne liste.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] inviterer dig til en stemme-chat samtale.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [NAME] har fået sendt en besked og blokering er derfor automatisk blevet fjernet.
- </notification>
- <notification name="AutoUnmuteByMoney">
- [NAME] har fået givet penge og blokering er derfor automatisk blevet fjernet.
- </notification>
- <notification name="AutoUnmuteByInventory">
- [NAME] er blevet tilbud noget fra beholdning og blokering er derfor automatisk blevet fjernet.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] har has sluttet sig til stemme-chaten i gruppen [GROUP].
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] har sluttet sig til en stemme-chat med en konference chat.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] inviterer dig til en konference chat.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- Den stemme-chat, du prøver at tilslutte dig, [VOICE_CHANNEL_NAME], har nået maksiumum kapacitet. Prøv venligst igen senere.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Vi beklager. Dette område har nået sin maksimale kapacitet for stemme-chat. Prøv venligst at benytte stemme i et andet område.
- </notification>
- <notification name="VoiceChannelDisconnected">
- Du er blevet koblet fra [VOICE_CHANNEL_NAME]. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] har afsluttet samtalen. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] har avist dit opkald. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] er ikke tilgængelig til at modtage dit opkald. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Det lykkedes ikke at forbinde til [VOICE_CHANNEL_NAME], prøv venligst igen senere. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="VoiceLoginRetry">
- Vi laver en stemmekanal til dig. Det kan tage op til et minut.
- </notification>
- <notification name="VoiceEffectsExpired">
- En eller flere af dine stemme &quot;morphs&quot; er udløbet.
-[[URL] Click here] for at forny dit abbonnement.
- </notification>
- <notification name="VoiceEffectsExpiredInUse">
- Den aktive stemme &quot;morph&quot; er udløbet og din normale stemme opsætning er genaktiveret.
-[[URL] Click here] for at forny dit abbonnement.
- </notification>
- <notification name="VoiceEffectsWillExpire">
- En eller flere af dine stemme &quot;morphs&quot; vil udløbe om mindre end [INTERVAL] dage.
-[[URL] Click here] for at forny dit abbonnement.
- </notification>
- <notification name="VoiceEffectsNew">
- Nye stemme &quot;morphs&quot; er tilgængelige!
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Kun medlemmer af en bestemt gruppe kan besøge dette område.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Du kan ikke komme ind på området. Du er blevet udelukket.
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Du kan ikke komme ind på området. Du er ikke på adgangslisten.
- </notification>
- <notification name="VoiceNotAllowed">
- Du har ikke tilladelse til at tilslutte dig stemme-chat på [VOICE_CHANNEL_NAME].
- </notification>
- <notification name="VoiceCallGenericError">
- En fejl er opstået under forsøget på at koble sig på stemme chatten [VOICE_CHANNEL_NAME]. Pråv venligst senere.
- </notification>
- <notification name="UnsupportedCommandSLURL">
- Den SLurl du klikkede på understøttes ikke.
- </notification>
- <notification name="BlockedSLURL">
- En SLurl blev modtaget en ikke sikret browser og den er blevet blokeret af sikkerhedsmæssige årsager.
- </notification>
- <notification name="ThrottledSLURL">
- Flere SLurls blev modtaget fra en browser i et kort tidsrum.
-De vil blive blokeret nogle få sekunder af sikkerhedsmæssige årsager.
- </notification>
- <notification name="IMToast">
- [MESSAGE]
- <form name="form">
- <button name="respondbutton" text="Svar"/>
- </form>
- </notification>
- <notification name="ConfirmCloseAll">
- Er du sikker på at du vil lukke alle personlige samtaler (IM)?
- <usetemplate ignoretext="Bekræft før du lukker alle IMer" name="okcancelignore" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="AttachmentSaved">
- Vedhæng er blevet gemt.
- </notification>
- <notification name="UnableToFindHelpTopic">
- Ikke muligt at finde hjælp om dette element.
- </notification>
- <notification name="ObjectMediaFailure">
- Server fejl: Media opdatering eller &quot;get&quot; fejlede.
-&apos;[ERROR]&apos;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TextChatIsMutedByModerator">
- Din tekst chat er blevet slukket af moderator.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="VoiceIsMutedByModerator">
- Din stemme er blevet slukket af moderatoren.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearTeleportHistory">
- Er du sikker på at du vil slette teleport historikken?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="BottomTrayButtonCanNotBeShown">
- Den valgte knap kan ikke vises lige nu.
-Knappen vil blive vist når der er nok plads til den.
- </notification>
- <notification name="ShareNotification">
- Vælg beboere at dele med.
- </notification>
- <notification name="ShareItemsConfirmation">
- Er du sikker på at du vil dele følgende genstande:
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-Me følgende beboere:
-
-[RESIDENTS]
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ok"/>
- </notification>
- <notification name="ItemsShared">
- Genstande er nu delt.
- </notification>
- <notification name="DeedToGroupFail">
- Dedikering til gruppe fejlede.
- </notification>
- <notification name="AvatarRezNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; var ikke sky mere, efter [TIME] sekunder.
- </notification>
- <notification name="AvatarRezSelfBakedDoneNotification">
- ( [EXISTENCE] seconds alive )
-Du blev færdig med at fremvise dit sæt efter [TIME] sekunder.
- </notification>
- <notification name="AvatarRezSelfBakedUpdateNotification">
- ( [EXISTENCE] seconds alive )
-Du sendte en opdatering af dit udseende efter [TIME] sekunder.
-[STATUS]
- </notification>
- <notification name="AvatarRezCloudNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; blev til &quot;sky&quot;.
- </notification>
- <notification name="AvatarRezArrivedNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; appeared.
- </notification>
- <notification name="AvatarRezLeftCloudNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; forsvandt efter [TIME] sekunder som &quot;sky&quot;.
- </notification>
- <notification name="AvatarRezEnteredAppearanceNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; skiftede til udseende modus.
- </notification>
- <notification name="AvatarRezLeftAppearanceNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; har forladt udseende modus.
- </notification>
- <notification name="NoConnect">
- Vi har problemer med at oprette forbindelse via [PROTOCOL] [HOSTID].
-Check venligst din netværks- og firewallsetup.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NoVoiceConnect">
- Vi har problemer med at oprette forbindelse til din stemme server:
-
-[HOSTID]
-
-Stemme kommunikation vil ikke være tilgængelig.
-Check venligst din netværks- og firewall setup.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarRezLeftNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; forsvandt helt &quot;uploaded&quot;.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUploadNotification">
- ( [EXISTENCE] sekunder i live )
-Du uploadede en [RESOLUTION] &quot;bagt&quot; tekstur til &apos;[BODYREGION]&apos; efter [TIME] sekunder.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUpdateNotification">
- ( [EXISTENCE] sekunder i live )
-Du opdaterede en [RESOLUTION] &quot;bagt&quot; tekstur for &apos;[BODYREGION]&apos; efter [TIME] sekunder.
- </notification>
- <notification name="ConfirmLeaveCall">
- Er du sikker på at du vil forlade dette opkald?
- <usetemplate ignoretext="Bekræft før jeg forlader opkald" name="okcancelignore" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="ConfirmMuteAll">
- Du har valgt at slukke for lyden for alle deltagere i gruppeopkaldet.
-Dette vil også betyde, at alle beboere der slutter sig til opkaldet
-vil have lyden slukket - selv efter de har forladt kaldet.
-
-
-Sluk for alles lyd?
- <usetemplate ignoretext="Bekræft før jeg slukker for alle deltageres lyd i gruppe-kald" name="okcancelignore" notext="Annullér" yestext="Ok"/>
- </notification>
- <notification label="Chat" name="HintChat">
- For at deltage i samtalen tast tekst ind i chat feltet nedenfor.
- </notification>
- <notification label="Stå op" name="HintSit">
- For at rejse dig op og forlad siddeposition, tryk på &quot;Stå op&quot; knappen.
- </notification>
- <notification label="Undersøg verden" name="HintDestinationGuide">
- Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen.
- </notification>
- <notification label="Side panel" name="HintSidePanel">
- Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel.
- </notification>
- <notification label="Flyt" name="HintMove">
- For at gå eller løbe, åben Flyt panelet for neden og brug pilene til at navigere. Du kan også bruge pile-tasterne på dit tastatur.
- </notification>
- <notification label="Visningsnavn" name="HintDisplayName">
- Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger.
- </notification>
- <notification label="Flyt" name="HintMoveArrows">
- For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op
- </notification>
- <notification label="Se" name="HintView">
- For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå.
- </notification>
- <notification label="Beholdning" name="HintInventory">
- Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen &quot;Nye ting&quot;
- </notification>
- <notification label="Der er kommet Linden Dollars" name="HintLindenDollar">
- Her er din nuværende balance af L$. Klik på Køb L$ for at købe flere Linden dollars.
- </notification>
- <notification name="PopupAttempt">
- En pop-up blev hindret i at blive vist.
- <form name="form">
- <ignore name="ignore" text="Tillad alle pop-ups"/>
- <button name="open" text="Åben pop-up vindue"/>
- </form>
- </notification>
- <notification name="AuthRequest">
- Hjemmesiden på &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;[REALM]&apos; kræver et brugernavn og password.
- <form name="form">
- <input name="username" text="Brugernavn"/>
- <input name="password" text="Password"/>
- <button name="ok" text="Send"/>
- <button name="cancel" text="Annullér"/>
- </form>
- </notification>
- <notification label="" name="ModeChange">
- For at skifte tilstand skal du genstarte programmet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoClassifieds">
- Oprettelse og redigering af annoncer er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoGroupInfo">
- Oprettelse og redigering af grupper er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoPicks">
- Oprettelse og redigering af favoritter er kun mulig i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoWorldMap">
- Det er kun muligt at se verdenskortet i avanceret tilstand.Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoVoiceCall">
- Stemme kald kan kun benttes i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoAvatarShare">
- Det er kun mulig at dele i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoAvatarPay">
- Det er kun muligt at betale andre beboere i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <global name="UnsupportedGLRequirements">
- Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter &apos;multitexture&apos;. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem.
-
-Hvis du bliver ved med at have problemer, besøg venligst [SUPPORT_SITE].
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Hvis du selv ejer land, kan du benytte det til hjemme lokation.
-Ellers kan du se på verdenskortet og finde steder markeret med &quot;Infohub&quot;.
- </global>
- <global name="You died and have been teleported to your home location">
- Du døde og er blevet teleporteret til din hjemmelokation.
- </global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml
deleted file mode 100644
index 14250453eb..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Opkald" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Forlad samtale" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Stemmekontroller" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml
deleted file mode 100644
index bd20ece764..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Slå mikrofon til/fra"/>
- <string name="VoiceControlBtnToolTip" value="Vis/skjul stemme kontrolpanel"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Tal" name="speak_btn" tool_tip="Tænd og sluk for mikrofon"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Ændring af opsætning for lyd"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Bevægelse" name="Gesture" tool_tip="Lad din avatar gøre ting"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Vis" name="camera_btn" tool_tip="Kontrollér kameravinkel"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinationer" name="destination_btn" tool_tip="Rejs i Second Life"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Min avatar" name="avatar_btn" tool_tip="Ændre dit udseende"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Personer" name="show_people_button" tool_tip="Find personer i Second Life"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Se og rediger din profil"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Hvordan" name="show_help_btn" tool_tip="Vis hjælpeinformation for Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Konversationer"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notifikationer"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml
deleted file mode 100644
index 23a5e79e22..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="group_info_btn_panel">
- <button label="Gruppe profil" name="group_info_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Opkald gruppe" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Forlad samtale" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Åben stemme indstillinger" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml
deleted file mode 100644
index b8a7ec0b34..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Tilføj ven" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleport" name="teleport_btn" tool_tip="Tilbyd teleport til denne person"/>
- </layout_panel>
- <layout_panel name="share_btn_panel">
- <button label="Del" name="share_btn"/>
- </layout_panel>
- <layout_panel name="pay_btn_panel">
- <button label="Betal" name="pay_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Opkald" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Afslut samtale" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Stemme kontroller" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_login.xml b/indra/newview/skins/minimal/xui/da/panel_login.xml
deleted file mode 100644
index 2e0f726e1a..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Brugernavn:
- </text>
- <combo_box name="username_combo" tool_tip="Brugernavnet du valgte da du registrerde dig, som f.eks. bobsmith12 or Steller Sunshine"/>
- <text name="password_text">
- Password:
- </text>
- <check_box label="Husk password" name="remember_check"/>
- <button label="Log på" name="connect_btn"/>
- <text name="mode_selection_text">
- Tilstand:
- </text>
- <combo_box name="mode_combo" tool_tip="Vælg ønsket tilstand. Vælg basis for hurtig og nem udforskning og chat. Vælg avanceret for at få adgang til flere muligheder.">
- <combo_box.item label="Basis" name="Basic"/>
- <combo_box.item label="Avanceret" name="Advanced"/>
- </combo_box>
- <text name="start_location_text">
- Start ved:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="Min sidste lokation" name="MyLastLocation"/>
- <combo_box.item label="Hjem" name="MyHome"/>
- <combo_box.item label="&lt;Indtast regionnavn&gt;" name="Typeregionname"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Opret bruger
- </text>
- <text name="forgot_password_text">
- Har du glemt brugernavn eller password?
- </text>
- <text name="login_help">
- Hjælp til login
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml
deleted file mode 100644
index 2ee87433a4..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Gå tilbage til min forrige lokation"/>
- <pull_button name="forward_btn" tool_tip="Gå en lokation fremad"/>
- <button name="home_btn" tool_tip="Teleport til min hjemme lokation"/>
- <location_input label="Lokation" name="location_combo"/>
- <search_combo_box label="Søg" name="search_combo_box" tool_tip="Søg">
- <combo_editor label="Søg [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!">
- <label name="favorites_bar_label" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!">
- Favoritter
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Søg mere af mine favoritter"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_people.xml b/indra/newview/skins/minimal/xui/da/panel_people.xml
deleted file mode 100644
index 8be4d695bd..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Personer" name="people_panel">
- <string name="no_recent_people" value="Ingen nylige personer. Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor."/>
- <string name="no_filtered_recent_people" value="Ingen nylige personer med det navn."/>
- <string name="no_one_near" value="Ingen i nærheden. Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor."/>
- <string name="no_one_filtered_near" value="Ingen i nærheden med det navn."/>
- <string name="no_friends_online" value="Ingen venner online"/>
- <string name="no_friends" value="Ingen venner"/>
- <string name="no_friends_msg">
- Højre-klik på en person for at tilføje som ven.
-Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor.
- </string>
- <string name="no_filtered_friends_msg">
- Fandt du ikke hvad du søgte? Prøv destinationsknappen nedenfor.
- </string>
- <string name="people_filter_label" value="Filtrér personer"/>
- <string name="groups_filter_label" value="Filtrér grupper"/>
- <string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Søg]."/>
- <string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Søg]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Dobbelt-klik for at åbne kort, træk for at panorere)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Dobbelt-klik for at teleportere, træk for at panorere)"/>
- <filter_editor label="Filtrér" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="TÆT PÅ" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="nearby_view_sort_btn" tool_tip="Valg"/>
- <button name="add_friend_btn" tool_tip="Tilføj valgte beboer til din venneliste"/>
- </panel>
- </panel>
- <panel label="MINE VENNER" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Online"/>
- <accordion_tab name="tab_all" title="Alle"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="options_gear_btn_panel">
- <menu_button name="friends_viewsort_btn" tool_tip="Vis flere valg"/>
- </layout_panel>
- <layout_panel name="add_btn_panel">
- <button name="add_btn" tool_tip="Tilbyd venskab til en beboer"/>
- </layout_panel>
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Fjern valgte person fra din venneliste"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="MINE GRUPPER" name="groups_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="groups_viewsort_btn" tool_tip="Valg"/>
- <button name="plus_btn" tool_tip="Bliv medlem af gruppe/Opret ny gruppe"/>
- <button name="activate_btn" tool_tip="Activér valgte gruppe"/>
- </panel>
- </panel>
- <panel label="NYLIGE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="recent_viewsort_btn" tool_tip="Valg"/>
- <button name="add_friend_btn" tool_tip="Tilføj valgte beboer til din venneliste"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profil" name="view_profile_btn" tool_tip="Vis billeder, grupper og anden beboer information"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="Åben session med privat besked (IM)"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Opkald" name="call_btn" tool_tip="Kald til denne beboer"/>
- </layout_panel>
- <layout_panel name="share_btn_lp">
- <button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Gruppe profil" name="group_info_btn" tool_tip="Vis gruppe information"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Gruppe chat" name="chat_btn" tool_tip="Åben chat session"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Gruppe kald" name="group_call_btn" tool_tip="Opkald til denne gruppe"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml
deleted file mode 100644
index ce3a1d8b4e..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Side bjælke"/>
- <button name="undock" tool_tip="Løsriv"/>
- <button name="dock" tool_tip="Fastgør"/>
- <button name="show_help" tool_tip="Vis hjælp"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml b/indra/newview/skins/minimal/xui/da/panel_status_bar.xml
deleted file mode 100644
index 6e7bdfc188..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="StatBarDaysOfWeek">
- Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag
- </panel.string>
- <panel.string name="StatBarMonthsOfYear">
- Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December
- </panel.string>
- <panel.string name="packet_loss_tooltip">
- Packet Loss
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Båndbredde
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <panel name="balance_bg">
- <text name="balance" tool_tip="Klik for at opdaterer din L$ balance" value="L$20"/>
- <button label="KØB L$" name="buyL" tool_tip="Klik for at købe flere L$"/>
- </panel>
- <text name="TimeText" tool_tip="Nuværende tid (Pacific)">
- 24:00 PST
- </text>
- <button name="media_toggle_btn" tool_tip="Start/Stop Alle medier (musik, video, hjemmesider)"/>
- <button name="volume_btn" tool_tip="Kontrol for generel lydstyrke"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/floater_camera.xml b/indra/newview/skins/minimal/xui/de/floater_camera.xml
deleted file mode 100644
index d49c207f98..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- Kamera um Fokus drehen
- </floater.string>
- <floater.string name="zoom_tooltip">
- Kamera auf Fokus zoomen
- </floater.string>
- <floater.string name="move_tooltip">
- Kamera nach oben, unten, links und rechts bewegen
- </floater.string>
- <floater.string name="camera_modes_title">
- Kameramodi
- </floater.string>
- <floater.string name="pan_mode_title">
- Kreisen - Zoomen - Schwenken
- </floater.string>
- <floater.string name="presets_mode_title">
- Ansichten
- </floater.string>
- <floater.string name="free_mode_title">
- Objekt ansehen
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Vorderansicht
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Seitenansicht
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Hinteransicht
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Objektansicht
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Mouselook
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Kamera auf Fokus zoomen">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/>
- <slider_bar name="zoom_slider" tool_tip="Kamera auf Fokus zoomen"/>
- <joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Ansichten"/>
- <button label="" name="pan_btn" tool_tip="Kreisen - Zoomen - Schwenken"/>
- <button label="" name="avatarview_btn" tool_tip="Kameramodi"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_help_browser.xml b/indra/newview/skins/minimal/xui/de/floater_help_browser.xml
deleted file mode 100644
index 459dfb66c0..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ANWEISUNGEN">
- <floater.string name="loading_text">
- Wird geladen...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_media_browser.xml b/indra/newview/skins/minimal/xui/de/floater_media_browser.xml
deleted file mode 100644
index 63cf4a6cba..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIEN-BROWSER">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Zurück" name="back"/>
- <button label="Vorwärts" name="forward"/>
- <button label="Neu laden" name="reload"/>
- <button label="Los" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="zurück" name="rewind"/>
- <button label="anhalten" name="stop"/>
- <button label="vorwärts" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Aktuelle Seite an Parzelle senden" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="In meinem Browser öffnen" name="open_browser"/>
- <check_box label="Immer in meinem Browser öffnen" name="open_always"/>
- <button label="Schließen" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml
deleted file mode 100644
index bbb4114200..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT IN DER NÄHE">
- <check_box label="Chat übersetzen (Service von Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_web_content.xml b/indra/newview/skins/minimal/xui/de/floater_web_content.xml
deleted file mode 100644
index 6ab119eeab..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Rückwärts"/>
- <button name="forward" tool_tip="Vorwärts"/>
- <button name="stop" tool_tip="Navigation stoppen"/>
- <button name="reload" tool_tip="Seite neu laden"/>
- <combo_box name="address" tool_tip="URL hier eingeben"/>
- <icon name="media_secure_lock_flag" tool_tip="Sicheres Browsen"/>
- <button name="popexternal" tool_tip="Aktuelle URL im Desktop-Browser öffnen"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/inspect_avatar.xml b/indra/newview/skins/minimal/xui/de/inspect_avatar.xml
deleted file mode 100644
index 4b8fd8a0ad..0000000000
--- a/indra/newview/skins/minimal/xui/de/inspect_avatar.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_subtitle" value="11 Monate und 3 Tage alt"/>
- <text name="user_details">
- Dies ist meine Second Life-Beschreibung und ich finde sie wirklich gut! Meine Beschreibung ist deshalb so lang, weil ich gerne rede.
- </text>
- <slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
- <button label="Freund hinzufügen" name="add_friend_btn" width="110"/>
- <button label="IM" name="im_btn"/>
- <button label="Profil" left_delta="120" name="view_profile_btn" width="44"/>
- <panel name="moderator_panel">
- <button label="Voice deaktivieren" name="disable_voice"/>
- <button label="Voice aktivieren" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/inspect_object.xml b/indra/newview/skins/minimal/xui/de/inspect_object.xml
deleted file mode 100644
index 72b8235828..0000000000
--- a/indra/newview/skins/minimal/xui/de/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Von [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Von [CREATOR]
-Besitzer [OWNER]
- </string>
- <string name="Price">
- [AMOUNT] L$
- </string>
- <string name="PriceFree">
- Kostenlos!
- </string>
- <string name="Touch">
- Berühren
- </string>
- <string name="Sit">
- Sitzen
- </string>
- <text name="object_name" value="Test für ein Objektname der sehr lange ist und über zwei Zeilen geht."/>
- <text name="object_creator">
- von secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-Besitzer secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
- </text>
- <text name="price_text">
- 30.000 L$
- </text>
- <text name="object_description">
- Dies ist eine wirklich lange Beschreibung für ein Objekt, mindestens 80 Zeichen lang oder jetzt schon mindestens 120 Zeichen lang und länger als der englische Originaltext. Niemand weiß es genau.
- </text>
- <text name="object_media_url">
- http://www.superdupertest.com
- </text>
- <button label="Kaufen" name="buy_btn"/>
- <button label="Bezahlen" name="pay_btn"/>
- <button label="Kopie nehmen" name="take_free_copy_btn" width="100"/>
- <button label="Berühren" name="touch_btn"/>
- <button label="Sitzen" name="sit_btn"/>
- <button label="Öffnen" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Sicheres Browsen"/>
- <button label="Mehr" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml
deleted file mode 100644
index f3775a05ec..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_by_most_recent"/>
- <menu_item_check label="Nach Name sortieren" name="sort_by_name"/>
- <menu_item_check label="Nach Typ sortieren" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml
deleted file mode 100644
index 237c92f7d2..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Profil anzeigen" name="Profile..."/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="In Gruppe einladen" name="Invite..."/>
- <menu_item_call label="Ignorieren" name="Avatar Mute"/>
- <menu_item_call label="Melden" name="abuse"/>
- <menu_item_call label="Einfrieren" name="Freeze..."/>
- <menu_item_call label="Hinauswerfen" name="Eject..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
- <menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <menu_item_call label="Bezahlen" name="Pay..."/>
- <menu_item_call label="Objektprofil" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml
deleted file mode 100644
index 644fc68ba4..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Berühren" name="Attachment Object Touch"/>
- <menu_item_call label="Bearbeiten" name="Edit..."/>
- <menu_item_call label="Abnehmen" name="Detach"/>
- <menu_item_call label="Hinsetzen" name="Sit Down Here"/>
- <menu_item_call label="Aufstehen" name="Stand Up"/>
- <menu_item_call label="Outfit ändern" name="Change Outfit"/>
- <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
- <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
- <menu_item_call label="Meine Freunde" name="Friends..."/>
- <menu_item_call label="Meine Gruppen" name="Groups..."/>
- <menu_item_call label="Mein Profil" name="Profile..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
- <menu_item_call label="Fallen lassen" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml
deleted file mode 100644
index c036cf5515..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Profil anzeigen" name="Show Profile"/>
- <menu_item_call label="IM senden..." name="Send IM"/>
- <menu_item_call label="Freund hinzufügen..." name="Add Friend"/>
- <menu_item_call label="Freund entfernen..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml
deleted file mode 100644
index 8aee0be3d2..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Profil anzeigen" name="Profile..."/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="In Gruppe einladen" name="Invite..."/>
- <menu_item_call label="Ignorieren" name="Avatar Mute"/>
- <menu_item_call label="Melden" name="abuse"/>
- <menu_item_call label="Einfrieren" name="Freeze..."/>
- <menu_item_call label="Hinauswerfen" name="Eject..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
- <menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <menu_item_call label="Bezahlen" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml
deleted file mode 100644
index 582c76ac94..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Hinsetzen" name="Sit Down Here"/>
- <menu_item_call label="Aufstehen" name="Stand Up"/>
- <context_menu label="Ausziehen" name="Take Off &gt;">
- <context_menu label="Kleidung" name="Clothes &gt;">
- <menu_item_call label="Hemd" name="Shirt"/>
- <menu_item_call label="Hose" name="Pants"/>
- <menu_item_call label="Rock" name="Skirt"/>
- <menu_item_call label="Schuhe" name="Shoes"/>
- <menu_item_call label="Strümpfe" name="Socks"/>
- <menu_item_call label="Jacke" name="Jacket"/>
- <menu_item_call label="Handschuhe" name="Gloves"/>
- <menu_item_call label="Unterhemd" name="Self Undershirt"/>
- <menu_item_call label="Unterhose" name="Self Underpants"/>
- <menu_item_call label="Tätowierung" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Alle Kleider" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Abnehmen" name="Object Detach"/>
- <menu_item_call label="Alles abnehmen" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Outfit ändern" name="Chenge Outfit"/>
- <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
- <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
- <menu_item_call label="Meine Freunde" name="Friends..."/>
- <menu_item_call label="Meine Gruppen" name="Groups..."/>
- <menu_item_call label="Mein Profil" name="Profile..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml
deleted file mode 100644
index 6c4308286a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Schaltfläche Gesten" name="ShowGestureButton"/>
- <menu_item_check label="Schaltfläche Bewegungssteuerung" name="ShowMoveButton"/>
- <menu_item_check label="Schaltfläche Ansicht" name="ShowCameraButton"/>
- <menu_item_check label="Schaltfläche Foto" name="ShowSnapshotButton"/>
- <menu_item_check label="Schaltfläche „Seitenleiste“" name="ShowSidebarButton"/>
- <menu_item_check label="Schaltfläche „Bauen“" name="ShowBuildButton"/>
- <menu_item_check label="Schaltfläche „Suchen“" name="ShowSearchButton"/>
- <menu_item_check label="Schaltfläche „Karte“" name="ShowWorldMapButton"/>
- <menu_item_check label="Schaltfläche „Minikarte“" name="ShowMiniMapButton"/>
- <menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Löschen" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Alle auswählen" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml
deleted file mode 100644
index 05d3dfca9d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Abnehmen" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml
deleted file mode 100644
index 07960a525c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Ersetzen" name="replace"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml
deleted file mode 100644
index 7fced273a7..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Ausziehen" name="take_off"/>
- <menu_item_call label="Ersetzen" name="replace"/>
- <menu_item_call label="Eine Kategorie nach oben" name="move_up"/>
- <menu_item_call label="Eine Kategorie nach unten" name="move_down"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml
deleted file mode 100644
index 54b218d22f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Neue Kleider" name="COF.Gear.New_Clothes"/>
- <menu label="Neue Körperteile" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_edit.xml b/indra/newview/skins/minimal/xui/de/menu_edit.xml
deleted file mode 100644
index 37f68d68d5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Bearbeiten" name="Edit">
- <menu_item_call label="Rückgängig" name="Undo"/>
- <menu_item_call label="Wiederherstellen" name="Redo"/>
- <menu_item_call label="Ausschneiden" name="Cut"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Duplizieren" name="Duplicate"/>
- <menu_item_call label="Alle auswählen" name="Select All"/>
- <menu_item_call label="Auswahl aufheben" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_favorites.xml b/indra/newview/skins/minimal/xui/de/menu_favorites.xml
deleted file mode 100644
index 0d0491d2eb..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportieren" name="Teleport To Landmark"/>
- <menu_item_call label="Landmarken anzeigen/bearbeiten" name="Landmark Open"/>
- <menu_item_call label="SLurl kopieren" name="Copy slurl"/>
- <menu_item_call label="Auf Karte zeigen" name="Show On Map"/>
- <menu_item_call label="Kopieren" name="Landmark Copy"/>
- <menu_item_call label="Einfügen" name="Landmark Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml
deleted file mode 100644
index 953c0eeed5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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="Kopieren" name="copy_gesture"/>
- <menu_item_call label="Einfügen" name="paste"/>
- <menu_item_call label="UUID kopieren" name="copy_uuid"/>
- <menu_item_call label="Aktuelles Outfit speichern" name="save_to_outfit"/>
- <menu_item_call label="Bearbeiten" name="edit_gesture"/>
- <menu_item_call label="Untersuchen" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_group_plus.xml b/indra/newview/skins/minimal/xui/de/menu_group_plus.xml
deleted file mode 100644
index 583ee793be..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Werden Sie Mitglied..." name="item_join"/>
- <menu_item_call label="Neue Gruppe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml
deleted file mode 100644
index 9acf96dc6d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Navigationsleiste anzeigen" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Favoritenleiste anzeigen" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Mini-Standortleiste anzeigen" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml
deleted file mode 100644
index f464b71f4a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Alle schließen" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 11f93f47b4..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml
deleted file mode 100644
index 81ef3b6569..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Gruppeninfo" name="Show Profile"/>
- <menu_item_call label="Sitzung anzeigen" name="Chat"/>
- <menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml
deleted file mode 100644
index d123238246..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Profil anzeigen" name="Show Profile"/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="Sitzung anzeigen" name="Send IM"/>
- <menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 72ba7fe41d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Profil anzeigen" name="view_profile"/>
- <menu_item_call label="Freund hinzufügen" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="Anrufen" name="call"/>
- <menu_item_call label="Teleportieren" name="teleport"/>
- <menu_item_call label="Ignorieren" name="block"/>
- <menu_item_call label="Freischalten" name="unblock"/>
- <menu_item_call label="Melden" name="report"/>
- <menu_item_call label="Einfrieren" name="freeze"/>
- <menu_item_call label="Hinauswerfen" name="eject"/>
- <menu_item_call label="Hinauswerfen" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="debug"/>
- <menu_item_call label="Auf Karte anzeigen" name="find_on_map"/>
- <menu_item_call label="Hineinzoomen" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml
deleted file mode 100644
index 7c47913e30..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Berühren" name="touch"/>
- <menu_item_call label="Sitzen" name="sit"/>
- <menu_item_call label="Bezahlen" name="pay"/>
- <menu_item_call label="Kaufen" name="buy"/>
- <menu_item_call label="Nehmen" name="take"/>
- <menu_item_call label="Kopie nehmen" name="take_copy"/>
- <menu_item_call label="Öffnen" name="open"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
- <menu_item_call label="Anziehen" name="wear"/>
- <menu_item_call label="Hinzufügen" name="add"/>
- <menu_item_call label="Melden" name="report"/>
- <menu_item_call label="Ignorieren" name="block"/>
- <menu_item_call label="Hineinzoomen" name="zoom_in"/>
- <menu_item_call label="Entfernen" name="remove"/>
- <menu_item_call label="Weitere Infos" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
deleted file mode 100644
index 443092319b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
- <menu_item_call label="Hinsetzen" name="Sit Down Here"/>
- <menu_item_call label="Aufstehen" name="Stand Up"/>
- <menu_item_call label="Meine Freunde" name="Friends..."/>
- <menu_item_call label="Mein Profil" name="Profile..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 71cff7136b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Schließen" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory.xml b/indra/newview/skins/minimal/xui/de/menu_inventory.xml
deleted file mode 100644
index 43722e0dcf..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Kaufen" name="Task Buy"/>
- <menu_item_call label="Öffnen" name="Task Open"/>
- <menu_item_call label="Abspielen" name="Task Play"/>
- <menu_item_call label="Eigenschaften" name="Task Properties"/>
- <menu_item_call label="Umbenennen" name="Task Rename"/>
- <menu_item_call label="Löschen" name="Task Remove"/>
- <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/>
- <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/>
- <menu_item_call label="Neuer Ordner" name="New Folder"/>
- <menu_item_call label="Neues Skript" name="New Script"/>
- <menu_item_call label="Neue Notizkarte" name="New Note"/>
- <menu_item_call label="Neue Geste" name="New Gesture"/>
- <menu label="Neue Kleider" name="New Clothes">
- <menu_item_call label="Neues Hemd" name="New Shirt"/>
- <menu_item_call label="Neue Hose" name="New Pants"/>
- <menu_item_call label="Neue Schuhe" name="New Shoes"/>
- <menu_item_call label="Neue Socken" name="New Socks"/>
- <menu_item_call label="Neue Jacke" name="New Jacket"/>
- <menu_item_call label="Neuer Rock" name="New Skirt"/>
- <menu_item_call label="Neue Handschuhe" name="New Gloves"/>
- <menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
- <menu_item_call label="Neue Unterhose" name="New Underpants"/>
- <menu_item_call label="Neue Alpha-Maske" name="New Alpha Mask"/>
- <menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
- </menu>
- <menu label="Neue Körperteile" name="New Body Parts">
- <menu_item_call label="Neue Form/Gestalt" name="New Shape"/>
- <menu_item_call label="Neue Haut" name="New Skin"/>
- <menu_item_call label="Neues Haar" name="New Hair"/>
- <menu_item_call label="Neue Augen" name="New Eyes"/>
- </menu>
- <menu label="Typ ändern" name="Change Type">
- <menu_item_call label="Standard" name="Default"/>
- <menu_item_call label="Handschuhe" name="Gloves"/>
- <menu_item_call label="Jacke" name="Jacket"/>
- <menu_item_call label="Hose" name="Pants"/>
- <menu_item_call label="Form" name="Shape"/>
- <menu_item_call label="Schuhe" name="Shoes"/>
- <menu_item_call label="Hemd" name="Shirt"/>
- <menu_item_call label="Rock" name="Skirt"/>
- <menu_item_call label="Unterhose" name="Underpants"/>
- <menu_item_call label="Unterhemd" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleportieren" name="Landmark Open"/>
- <menu_item_call label="Öffnen" name="Animation Open"/>
- <menu_item_call label="Öffnen" name="Sound Open"/>
- <menu_item_call label="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="Original suchen" name="Find Original"/>
- <menu_item_call label="Objekt löschen" name="Purge Item"/>
- <menu_item_call label="Objekt wiederherstellen" name="Restore Item"/>
- <menu_item_call label="Öffnen" name="Open"/>
- <menu_item_call label="Original öffnen" name="Open Original"/>
- <menu_item_call label="Eigenschaften" name="Properties"/>
- <menu_item_call label="Umbenennen" name="Rename"/>
- <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="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"/>
- <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/>
- <menu_item_call label="Landmarken-Info" name="About Landmark"/>
- <menu_item_call label="Inworld abspielen" name="Animation Play"/>
- <menu_item_call label="Lokal abspielen" name="Animation Audition"/>
- <menu_item_call label="Instant Message senden" name="Send Instant Message"/>
- <menu_item_call label="Teleport anbieten..." name="Offer Teleport..."/>
- <menu_item_call label="Konferenz-Chat starten" name="Conference Chat"/>
- <menu_item_call label="Aktivieren" name="Activate"/>
- <menu_item_call label="Deaktivieren" name="Deactivate"/>
- <menu_item_call label="Speichern unter" name="Save As"/>
- <menu_item_call label="Von Körper abnehmen" name="Detach From Yourself"/>
- <menu_item_call label="Anziehen" name="Wearable And Object Wear"/>
- <menu label="Anhängen an" name="Attach To"/>
- <menu label="An HUD hängen" name="Attach To HUD"/>
- <menu_item_call label="Bearbeiten" name="Wearable Edit"/>
- <menu_item_call label="Hinzufügen" name="Wearable Add"/>
- <menu_item_call label="Ausziehen" name="Take Off"/>
- <menu_item_call label="--keine Optionen--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml
deleted file mode 100644
index dccee6712d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Hochladen" name="upload">
- <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/>
- <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/>
- <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
- <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/>
- <menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/>
- </menu>
- <menu_item_call label="Neuer Ordner" name="New Folder"/>
- <menu_item_call label="Neues Skript" name="New Script"/>
- <menu_item_call label="Neue Notizkarte" name="New Note"/>
- <menu_item_call label="Neue Geste" name="New Gesture"/>
- <menu label="Neue Kleider" name="New Clothes">
- <menu_item_call label="Neues Hemd" name="New Shirt"/>
- <menu_item_call label="Neue Hose" name="New Pants"/>
- <menu_item_call label="Neue Schuhe" name="New Shoes"/>
- <menu_item_call label="Neue Socken" name="New Socks"/>
- <menu_item_call label="Neue Jacke" name="New Jacket"/>
- <menu_item_call label="Neuer Rock" name="New Skirt"/>
- <menu_item_call label="Neue Handschuhe" name="New Gloves"/>
- <menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
- <menu_item_call label="Neue Unterhose" name="New Underpants"/>
- <menu_item_call label="Neues Alpha" name="New Alpha"/>
- <menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
- </menu>
- <menu label="Neue Körperteile" name="New Body Parts">
- <menu_item_call label="Neue Form/Gestalt" name="New Shape"/>
- <menu_item_call label="Neue Haut" name="New Skin"/>
- <menu_item_call label="Neues Haar" name="New Hair"/>
- <menu_item_call label="Neue Augen" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml
deleted file mode 100644
index df86a5cf71..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Neues Inventar-Fenster" name="new_window"/>
- <menu_item_check label="Nach Name sortieren" name="sort_by_name"/>
- <menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_by_recent"/>
- <menu_item_check label="Systemordner nach oben" name="sort_system_folders_to_top"/>
- <menu_item_call label="Filter anzeigen" name="show_filters"/>
- <menu_item_call label="Filter zurücksetzen" name="reset_filters"/>
- <menu_item_call label="Alle Ordner schließen" name="close_folders"/>
- <menu_item_call label="Fundbüro ausleeren" name="empty_lostnfound"/>
- <menu_item_call label="Textur speichern als" name="Save Texture As"/>
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Original suchen" name="Find Original"/>
- <menu_item_call label="Alle Links suchen" name="Find All Links"/>
- <menu_item_call label="Papierkorb ausleeren" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_land.xml b/indra/newview/skins/minimal/xui/de/menu_land.xml
deleted file mode 100644
index de679da3d8..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Land-Info" name="Place Information..."/>
- <menu_item_call label="Hier sitzen" name="Sit Here"/>
- <menu_item_call label="Dieses Land kaufen" name="Land Buy"/>
- <menu_item_call label="Pass kaufen" name="Land Buy Pass"/>
- <menu_item_call label="Bauen" name="Create"/>
- <menu_item_call label="Land bearbeiten" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_landmark.xml b/indra/newview/skins/minimal/xui/de/menu_landmark.xml
deleted file mode 100644
index 2aff0eec95..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="SLurl kopieren" name="copy"/>
- <menu_item_call label="Löschen" name="delete"/>
- <menu_item_call label="Auswahl erstellen" name="pick"/>
- <menu_item_call label="Zu Favoritenleiste hinzufügen" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_login.xml b/indra/newview/skins/minimal/xui/de/menu_login.xml
deleted file mode 100644
index a373e15338..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Ich" name="File">
- <menu_item_call label="Einstellungen" name="Preferences..."/>
- <menu_item_call label="[APP_NAME] schließen" name="Quit"/>
- </menu>
- <menu label="Hilfe" name="Help">
- <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
- <menu_item_call label="INFO ÜBER [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Debug-Menü anzeigen" name="Show Debug Menu"/>
- <menu label="Debug" name="Debug">
- <menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/>
- <menu_item_call label="UI/Farb-Einstellungen" name="UI/Color Settings"/>
- <menu_item_call label="XUI-Editor" name="UI Preview Tool"/>
- <menu label="UI-Tests" name="UI Tests"/>
- <menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/>
- <menu_item_call label="Servicebedingungen anzeigen" name="TOS"/>
- <menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/>
- <menu_item_call label="Test Medienbrowser" name="Web Browser Test"/>
- <menu_item_call label="Test Webinhalt-Floater" name="Web Content Floater Test"/>
- <menu_item_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/minimal/xui/de/menu_mini_map.xml b/indra/newview/skins/minimal/xui/de/menu_mini_map.xml
deleted file mode 100644
index 2e0d72c40c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom Nah" name="Zoom Close"/>
- <menu_item_call label="Zoom Mittel" name="Zoom Medium"/>
- <menu_item_call label="Zoom Weit" name="Zoom Far"/>
- <menu_item_call label="Zoom-Standard" name="Zoom Default"/>
- <menu_item_check label="Karte drehen" name="Rotate Map"/>
- <menu_item_check label="Automatisch zentrieren" name="Auto Center"/>
- <menu_item_call label="Verfolgung abschalten" name="Stop Tracking"/>
- <menu_item_call label="Weltkarte" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_navbar.xml b/indra/newview/skins/minimal/xui/de/menu_navbar.xml
deleted file mode 100644
index 5175f34b41..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
- <menu_item_check label="Parzelleneigenschaften anzeigen" name="Show Parcel Properties"/>
- <menu_item_call label="Landmarke" name="Landmark"/>
- <menu_item_call label="Ausschneiden" name="Cut"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Alle auswählen" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml
deleted file mode 100644
index 99d6428c3f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Leute in der Nähe anzeigen..." name="nearby_people"/>
- <menu_item_check label="Ignorierten Text anzeigen" name="muted_text"/>
- <menu_item_check label="Bilder von Freunden anzeigen" name="show_buddy_icons"/>
- <menu_item_check label="Namen anzeigen" name="show_names"/>
- <menu_item_check label="Namen und Symbole anzeigen" name="show_icons_and_names"/>
- <menu_item_call label="Schriftgröße" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml
deleted file mode 100644
index 0f2784f160..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Alle schließen" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_object.xml b/indra/newview/skins/minimal/xui/de/menu_object.xml
deleted file mode 100644
index 19057d4228..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Berühren" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Berühren"/>
- </menu_item_call>
- <menu_item_call label="Bearbeiten" name="Edit..."/>
- <menu_item_call label="Bauen" name="Build"/>
- <menu_item_call label="Öffnen" name="Open"/>
- <menu_item_call label="Hier sitzen" name="Object Sit"/>
- <menu_item_call label="Aufstehen" name="Object Stand Up"/>
- <menu_item_call label="Objektprofil" name="Object Inspect"/>
- <menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <context_menu label="Anziehen" name="Put On">
- <menu_item_call label="Anziehen" name="Wear"/>
- <menu_item_call label="Hinzufügen" name="Add"/>
- <context_menu label="Anhängen" name="Object Attach"/>
- <context_menu label="HUD anhängen" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Entfernen" name="Remove">
- <menu_item_call label="Missbrauch melden" name="Report Abuse..."/>
- <menu_item_call label="Ignorieren" name="Object Mute"/>
- <menu_item_call label="Zurückgeben" name="Return..."/>
- <menu_item_call label="Löschen" name="Delete"/>
- </context_menu>
- <menu_item_call label="Nehmen" name="Pie Object Take"/>
- <menu_item_call label="Kopie nehmen" name="Take Copy"/>
- <menu_item_call label="Bezahlen" name="Pay..."/>
- <menu_item_call label="Kaufen" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_object_icon.xml b/indra/newview/skins/minimal/xui/de/menu_object_icon.xml
deleted file mode 100644
index 8b6c558416..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Objektprofil..." name="Object Profile"/>
- <menu_item_call label="Ignorieren..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml
deleted file mode 100644
index 897154ec56..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear"/>
- <menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/>
- <menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/>
- <menu label="Neue Kleider" name="New Clothes">
- <menu_item_call label="Neues Hemd" name="New Shirt"/>
- <menu_item_call label="Neue Hose" name="New Pants"/>
- <menu_item_call label="Neue Schuhe" name="New Shoes"/>
- <menu_item_call label="Neue Socken" name="New Socks"/>
- <menu_item_call label="Neue Jacke" name="New Jacket"/>
- <menu_item_call label="Neuer Rock" name="New Skirt"/>
- <menu_item_call label="Neue Handschuhe" name="New Gloves"/>
- <menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
- <menu_item_call label="Neue Unterhose" name="New Underpants"/>
- <menu_item_call label="Neues Alpha" name="New Alpha"/>
- <menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
- </menu>
- <menu label="Neue Körperteile" name="New Body Parts">
- <menu_item_call label="Neue Form" name="New Shape"/>
- <menu_item_call label="Neue Haut" name="New Skin"/>
- <menu_item_call label="Neues Haar" name="New Hair"/>
- <menu_item_call label="Neue Augen" name="New Eyes"/>
- </menu>
- <menu_item_call label="Outfit neu benennen" name="rename"/>
- <menu_item_call label="Outfit löschen" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml
deleted file mode 100644
index 32a65c96fc..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear_replace"/>
- <menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/>
- <menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/>
- <menu_item_call label="Outfit bearbeiten" name="edit"/>
- <menu_item_call label="Outfit neu benennen" name="rename"/>
- <menu_item_call label="Outfit löschen" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_participant_list.xml b/indra/newview/skins/minimal/xui/de/menu_participant_list.xml
deleted file mode 100644
index 160f2f97be..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Nach Name sortieren" name="SortByName"/>
- <menu_item_check label="Nach letzten Sprechern sortieren" name="SortByRecentSpeakers"/>
- <menu_item_call label="Profil anzeigen" name="View Profile"/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Bezahlen" name="Pay"/>
- <menu_item_check label="Symbole für Personen anzeigen" name="View Icons"/>
- <menu_item_check label="Voice ignorieren" name="Block/Unblock"/>
- <menu_item_check label="Text ignorieren" name="MuteText"/>
- <context_menu label="Moderator-Optionen" name="Moderator Options">
- <menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/>
- <menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Alle stummschalten" name="ModerateVoiceMute"/>
- <menu_item_call label="Alle freischalten" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml
deleted file mode 100644
index 84d9d8938c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Nach Name sortieren" name="sort_name"/>
- <menu_item_check label="Nach Status sortieren" name="sort_status"/>
- <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
- <menu_item_check label="Erteilte Genehmigungen anzeigen" name="view_permissions"/>
- <menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_groups.xml b/indra/newview/skins/minimal/xui/de/menu_people_groups.xml
deleted file mode 100644
index 76225ba241..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Info anzeigen" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="Aktivieren" name="Activate"/>
- <menu_item_call label="Verlassen" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml
deleted file mode 100644
index b68597d8aa..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Gruppensymbole anzeigen" name="Display Group Icons"/>
- <menu_item_call label="Ausgewählte Gruppe verlassen" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml
deleted file mode 100644
index 1db964357f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Profil anzeigen" name="View Profile"/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="Freund entfernen" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="Karte" name="Map"/>
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Bezahlen" name="Pay"/>
- <menu_item_check label="Ignorieren/Freischalten" name="Block/Unblock"/>
- <menu_item_call label="Teleport anbieten" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml
deleted file mode 100644
index b6e99edfe1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Freunde hinzufügen" name="Add Friends"/>
- <menu_item_call label="Freunde entfernen" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Bezahlen" name="Pay"/>
- <menu_item_call label="Teleport anbieten" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 0f252ab46d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/>
- <menu_item_check label="Nach Name sortieren" name="sort_name"/>
- <menu_item_check label="Nach Entfernung sortieren" name="sort_distance"/>
- <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
- <menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml
deleted file mode 100644
index 1ef020f5e1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Nach aktuellesten Sprechern sortieren" name="sort_most"/>
- <menu_item_check label="Nach Name sortieren" name="sort_name"/>
- <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
- <menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_picks.xml b/indra/newview/skins/minimal/xui/de/menu_picks.xml
deleted file mode 100644
index 9aec4c83b0..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Bearbeiten" name="pick_edit"/>
- <menu_item_call label="Teleportieren" name="pick_teleport"/>
- <menu_item_call label="Karte" name="pick_map"/>
- <menu_item_call label="Löschen" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml
deleted file mode 100644
index 385ff25b95..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Neue Auswahl" name="create_pick"/>
- <menu_item_call label="Neue Anzeige" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_place.xml b/indra/newview/skins/minimal/xui/de/menu_place.xml
deleted file mode 100644
index d9c85f5b92..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Eine Landmarke setzen" name="landmark"/>
- <menu_item_call label="Auswahl erstellen" name="pick"/>
- <menu_item_call label="Pass kaufen" name="pass"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml
deleted file mode 100644
index 7c0ff4a46a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Ordner hinzufügen" name="add_folder"/>
- <menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml
deleted file mode 100644
index 132d3f6466..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
- <menu_item_call label="Ordner hinzufügen" name="add_folder"/>
- <menu_item_call label="Ausschneiden" name="cut"/>
- <menu_item_call label="Kopieren" name="copy_folder"/>
- <menu_item_call label="Einfügen" name="paste"/>
- <menu_item_call label="Umbenennen" name="rename"/>
- <menu_item_call label="Löschen" name="delete"/>
- <menu_item_call label="Erweitern Sie sich" name="expand"/>
- <menu_item_call label="Zuklappen" name="collapse"/>
- <menu_item_call label="Alle Ordner aufklappen" name="expand_all"/>
- <menu_item_call label="Alle Ordner schließen" name="collapse_all"/>
- <menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml
deleted file mode 100644
index 6af4d644af..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportieren" name="teleport"/>
- <menu_item_call label="Weitere Informationen" name="more_info"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
- <menu_item_call label="Ordner hinzufügen" name="add_folder"/>
- <menu_item_call label="Ausschneiden" name="cut"/>
- <menu_item_call label="Landmarke kopieren" name="copy_landmark"/>
- <menu_item_call label="SLurl kopieren" name="copy_slurl"/>
- <menu_item_call label="Einfügen" name="paste"/>
- <menu_item_call label="Umbenennen" name="rename"/>
- <menu_item_call label="Löschen" name="delete"/>
- <menu_item_call label="Alle Ordner aufklappen" name="expand_all"/>
- <menu_item_call label="Alle Ordner schließen" name="collapse_all"/>
- <menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
- <menu_item_call label="Auswahl erstellen" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml
deleted file mode 100644
index 9f3fcbca1d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Karte" name="show_on_map"/>
- <menu_item_call label="Bezahlen" name="pay"/>
- <menu_item_call label="Teilen" name="share"/>
- <menu_item_call label="Ignorieren" name="block"/>
- <menu_item_call label="Freischalten" name="unblock"/>
- <menu_item_call label="Hinauswerfen" name="kick"/>
- <menu_item_call label="Einfrieren" name="freeze"/>
- <menu_item_call label="Auftauen" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml
deleted file mode 100644
index 986c78b318..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Speichern" name="save_outfit"/>
- <menu_item_call label="Speichern unter" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml
deleted file mode 100644
index 3256aa1a87..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Schließen" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_slurl.xml b/indra/newview/skins/minimal/xui/de/menu_slurl.xml
deleted file mode 100644
index b2ec017f9f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="URL-Info" name="about_url"/>
- <menu_item_call label="Zu URL teleportieren" name="teleport_to_url"/>
- <menu_item_call label="Karte" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml
deleted file mode 100644
index 68b8e21802..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Alle Ordner aufklappen" name="Expand all folders"/>
- <menu_item_call label="Alle Ordner schließen" name="Collapse all folders"/>
- <menu_item_call label="Teleport-Liste löschen" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml
deleted file mode 100644
index ff8fb0b181..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleportieren" name="Teleport"/>
- <menu_item_call label="Weitere Informationen" name="More Information"/>
- <menu_item_call label="In Zwischenablage kopieren" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml
deleted file mode 100644
index 194dd16fd1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Öffnen" name="TabOpen"/>
- <menu_item_call label="Schließen" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_text_editor.xml b/indra/newview/skins/minimal/xui/de/menu_text_editor.xml
deleted file mode 100644
index c00186c13e..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Ausschneiden" name="Cut"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Alle auswählen" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml
deleted file mode 100644
index 5b0a724244..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
- <menu_item_check label="Parzellen-Eigenschaften anzeigen" name="Show Parcel Properties"/>
- <menu_item_call label="Landmarke" name="Landmark"/>
- <menu_item_call label="Kopieren" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_agent.xml b/indra/newview/skins/minimal/xui/de/menu_url_agent.xml
deleted file mode 100644
index 9a808088fb..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Einwohnerprofil anzeigen" name="show_agent"/>
- <menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_group.xml b/indra/newview/skins/minimal/xui/de/menu_url_group.xml
deleted file mode 100644
index 6bd86414bc..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Gruppeninformation anzeigen" name="show_group"/>
- <menu_item_call label="Gruppe in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_http.xml b/indra/newview/skins/minimal/xui/de/menu_url_http.xml
deleted file mode 100644
index 30eb1668a5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Webseite öffnen" name="url_open"/>
- <menu_item_call label="Im internen Browser öffnen" name="url_open_internal"/>
- <menu_item_call label="Im externen Browser öffnen" name="url_open_external"/>
- <menu_item_call label="URL in Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml
deleted file mode 100644
index dc069df02b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Inventarobjekte anzeigen" name="show_item"/>
- <menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_map.xml b/indra/newview/skins/minimal/xui/de/menu_url_map.xml
deleted file mode 100644
index 2f6ffcd450..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml
deleted file mode 100644
index 90d3763d9c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Objektinformationen anzeigen" name="show_object"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/>
- <menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml
deleted file mode 100644
index 9169bca24f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Parzelleninformationen anzeigen" name="show_parcel"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml
deleted file mode 100644
index 72e916b902..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Diesen Befehl ausführen" name="run_slapp"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml
deleted file mode 100644
index 5d48230ebf..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Ortsinformationen anzeigen" name="show_place"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml
deleted file mode 100644
index 4cc1ecc70e..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="An diesen Standort teleportieren" name="teleport"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_viewer.xml b/indra/newview/skins/minimal/xui/de/menu_viewer.xml
deleted file mode 100644
index 67dc618eb0..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Hilfe" name="Help">
- <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
- </menu>
- <menu label="Erweitert" name="Advanced">
- <menu label="Tastaturkürzel" name="Shortcuts">
- <menu_item_check label="Fliegen" name="Fly"/>
- <menu_item_call label="Fenster schließen" name="Close Window"/>
- <menu_item_call label="Alle Fenster schließen" name="Close All Windows"/>
- <menu_item_call label="Ansicht zurücksetzen" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml
deleted file mode 100644
index 283e454a06..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Ersetzen" name="wear_replace"/>
- <menu_item_call label="Anziehen" name="wear_wear"/>
- <menu_item_call label="Hinzufügen" name="wear_add"/>
- <menu_item_call label="Ausziehen / Abnehmen" name="take_off_or_detach"/>
- <menu_item_call label="Abnehmen" name="detach"/>
- <context_menu label="Anhängen an" name="wearable_attach_to"/>
- <context_menu label="An HUD hängen" name="wearable_attach_to_hud"/>
- <menu_item_call label="Ausziehen" name="take_off"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
- <menu_item_call label="Objektprofil" name="object_profile"/>
- <menu_item_call label="Original anzeigen" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml
deleted file mode 100644
index 80d4ff4d9f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Outfit bearbeiten" name="edit"/>
- <menu_item_call label="Ausziehen" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml
deleted file mode 100644
index 695451a105..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Ausziehen" name="take_off"/>
- <menu_item_call label="Abnehmen" name="detach"/>
- <menu_item_call label="Outfit bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/notifications.xml b/indra/newview/skins/minimal/xui/de/notifications.xml
deleted file mode 100644
index 195d5105c5..0000000000
--- a/indra/newview/skins/minimal/xui/de/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <notification name="UserGiveItem">
- [NAME_SLURL] bietet Ihnen [ITEM_SLURL] an. Zur Verwendung dieses Artikels müssen Sie in den erweiterten Modus umschalten, wo Sie den Artikel in Ihrem Inventar finden werden. Um in den erweiterten Modus umzuschalten, beenden Sie die Anwendung, starten Sie sie neu und ändern Sie die Moduseinstellung auf dem Anmeldebildschirm.
- <form name="form">
- <button name="Show" text="Artikel behalten"/>
- <button name="Discard" text="Artikel ablehnen"/>
- <button name="Mute" text="Benutzer blockieren"/>
- </form>
- </notification>
- <notification name="ObjectGiveItem">
- Ein Objekt namens &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, das [NAME_SLURL] gehört, bietet Ihnen &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; an. Zur Verwendung dieses Artikels müssen Sie in den erweiterten Modus umschalten, wo Sie den Artikel in Ihrem Inventar finden werden. Um in den erweiterten Modus zu wechseln, beenden Sie die Anwendung, starten Sie sie neu und ändern Sie die Moduseinstellung auf dem Anmeldebildschirm.
- <form name="form">
- <button name="Keep" text="Artikel behalten"/>
- <button name="Discard" text="Artikel ablehnen"/>
- <button name="Mute" text="Objekt blockieren"/>
- </form>
- </notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml
deleted file mode 100644
index cc45f42169..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Anrufen" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Anruf beenden" name="end_call_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml
deleted file mode 100644
index 2278bfb699..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Schaltet Mikrofon ein/aus"/>
- <string name="VoiceControlBtnToolTip" value="Voice-Chat-Steuerung anzeigen/ausblenden"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Sprechen" name="speak_btn" tool_tip="Mikrofon ein- und ausschalten"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Soundeinstellungen ändern"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesten" name="Gesture" tool_tip="Ihren Avatar bestimmte Aktionen durchführen lassen"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Ansicht" name="camera_btn" tool_tip="Kamerawinkel steuern"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Ziele" name="destination_btn" tool_tip="Durch Second Life reisen"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Mein Avatar" name="avatar_btn" tool_tip="Eigenes Aussehen verändern"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Leute" name="show_people_button" tool_tip="Personen in Second Life suchen"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Eigenes Profil anzeigen und bearbeiten"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Anweisungen" name="show_help_btn" tool_tip="Hilfeinfos zu Second Life anzeigen"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="IMs"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Benachrichtigungen"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml
deleted file mode 100644
index 81e6040f84..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="end_call_btn_panel">
- <button label="Anruf beenden" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
deleted file mode 100644
index 56c2310f2f..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Freund hinzufügen" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleportieren" name="teleport_btn" tool_tip="Dieser Person einen Teleport anbieten"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Anrufen" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Anruf beenden" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Ignorieren" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="Freischalten" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Anrufvolumen" value="0,5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_login.xml b/indra/newview/skins/minimal/xui/de/panel_login.xml
deleted file mode 100644
index 2e82453aab..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://de.secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=de
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Benutzername:
- </text>
- <combo_box name="username_combo" tool_tip="Bei der Registrierung gewählter Benutzername wie „berndschmidt12“ oder „Liebe Sonne“"/>
- <text name="password_text">
- Kennwort:
- </text>
- <check_box label="Kennwort merken" name="remember_check"/>
- <button label="Anmelden" name="connect_btn"/>
- <text name="mode_selection_text">
- Modus:
- </text>
- <combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basis: schnelles, einfaches Erkunden und Chatten. Erweitert: Zugriff auf zusätzliche Funktionen.">
- <combo_box.item label="Basis" name="Basic"/>
- <combo_box.item label="Erweitert" name="Advanced"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Registrieren
- </text>
- <text name="forgot_password_text">
- Benutzernamen oder Kennwort vergessen?
- </text>
- <text name="login_help">
- Sie brauchen Hilfe?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml
deleted file mode 100644
index ee1a543aac..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort teleportieren"/>
- <pull_button name="forward_btn" tool_tip="Um einen Standort weiter teleportieren"/>
- <button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
- <location_input label="Standort" name="location_combo"/>
- <search_combo_box label="Suche" name="search_combo_box" tool_tip="Suche">
- <combo_editor label="[SECOND_LIFE] durchsuchen" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
- <label name="favorites_bar_label" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
- Favoritenleiste
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mehr meiner Favoriten anzeigen"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_people.xml b/indra/newview/skins/minimal/xui/de/panel_people.xml
deleted file mode 100644
index 1b6565eb73..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_people.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Leute" name="people_panel">
- <string name="no_recent_people" value="Sie haben in letzter Zeit mit niemandem interagiert. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“."/>
- <string name="no_filtered_recent_people" value="Es gibt keine Leute mit diesem Namen, mit denen Sie in letzter Zeit interagiert haben."/>
- <string name="no_one_near" value="Es ist niemand in der Nähe. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“."/>
- <string name="no_one_filtered_near" value="Es ist niemand mit diesem Namen in der Nähe."/>
- <string name="no_friends_online" value="Keine Freunde online"/>
- <string name="no_friends" value="Keine Freunde"/>
- <string name="no_friends_msg">
- Klicken Sie mit der rechten Maustaste auf einen Einwohner, um ihn als Freund hinzuzufügen. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“.
- </string>
- <string name="no_filtered_friends_msg">
- Sie haben nicht das Richtige gefunden? Klicken Sie unten auf die Schaltfläche „Ziele“.
- </string>
- <string name="people_filter_label" value="Nach Leuten filtern"/>
- <string name="groups_filter_label" value="Nach Gruppen filtern"/>
- <string name="no_filtered_groups_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/groups/[SEARCH_TERM] Suche]."/>
- <string name="no_groups_msg" value="Suchen Sie nach Gruppen? Versuchen Sie es mit der [secondlife:///app/search/groups Suche]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Doppelklicken, um Karte zu öffnen; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
- <filter_editor label="Filter" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="IN DER NÄHE" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel"/>
- </panel>
- <panel label="MEINE FREUNDE" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Online"/>
- <accordion_tab name="tab_all" title="Alle"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Ausgewählte Person aus Ihrer Freundesliste entfernen"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="AKTUELL" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="IM-Sitzung öffnen"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Gruppe anrufen" name="group_call_btn" tool_tip="Diese Gruppe anrufen"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 652fb7c836..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Klappmenü??"/>
- <button name="undock" tool_tip="Abkoppeln"/>
- <button name="dock" tool_tip="Andocken"/>
- <button name="show_help" tool_tip="Hilfe anzeigen"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_status_bar.xml b/indra/newview/skins/minimal/xui/de/panel_status_bar.xml
deleted file mode 100644
index 2f8dc938c5..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Paketverlust
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Bandbreite
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- [AMT] L$
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basismodus: Second Life schnell und einfach erkunden und chatten. Erweiterter Modus: Zugriff auf zusätzliche Funktionen.">
- <combo_box.item label="Basismodus" name="Basic"/>
- <combo_box.item label="Erweiterter Modus" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Alle Medien starten/stoppen (Musik, Video, Webseiten)"/>
- <button name="volume_btn" tool_tip="Steuerung der Gesamtlautstärke"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/floater_camera.xml b/indra/newview/skins/minimal/xui/en/floater_camera.xml
deleted file mode 100644
index 4cf792444f..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_camera.xml
+++ /dev/null
@@ -1,284 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_dock="true"
- can_minimize="true"
- can_close="false"
- follows="bottom"
- height="164"
- layout="topleft"
- name="camera_floater"
- save_rect="true"
- save_visibility="true"
- save_dock_state="true"
- single_instance="true"
- width="228">
- <floater.string
- name="rotate_tooltip">
- Rotate Camera Around Focus
- </floater.string>
- <floater.string
- name="zoom_tooltip">
- Zoom Camera Towards Focus
- </floater.string>
- <floater.string
- name="move_tooltip">
- Move Camera Up and Down, Left and Right
- </floater.string>
- <floater.string
- name="camera_modes_title">
- Camera modes
- </floater.string>
- <floater.string
- name="pan_mode_title">
- Orbit Zoom Pan
- </floater.string>
- <floater.string
- name="presets_mode_title">
- Preset Views
- </floater.string>
- <floater.string
- name="free_mode_title">
- View Object
- </floater.string>
- <panel
- border="false"
- height="123"
- layout="topleft"
- left="2"
- top="0"
- mouse_opaque="false"
- name="controls"
- width="226">
- <panel
- color="Transparent"
- follows="all"
- height="102"
- layout="topleft"
- left="8"
- name="preset_views_list"
- opaque="true"
- top="24"
- width="212"
- visible="false">
- <panel_camera_item
- name="front_view">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="front_view" />
- <panel_camera_item.picture
- image_name="Cam_Preset_Front_Off" />
- <panel_camera_item.selected_picture
- image_name="Cam_Preset_Front_On" />
- <panel_camera_item.text
- name="front_view_text">
- Front View
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item
- name="group_view"
- top_pad="4">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="group_view" />
- <panel_camera_item.picture
- image_name="Cam_Preset_Side_Off" />
- <panel_camera_item.selected_picture
- image_name="Cam_Preset_Side_On" />
- <panel_camera_item.text
- name="side_view_text">
- Side View
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item
- name="rear_view"
- layout="topleft"
- top_pad="4">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="rear_view" />
- <panel_camera_item.picture
- image_name="Cam_Preset_Back_Off" />
- <panel_camera_item.selected_picture
- image_name="Cam_Preset_Back_On" />
- <panel_camera_item.text
- name="rear_view_text">
- Rear View
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel
- color="Transparent"
- follows="all"
- height="68"
- item_pad="4"
- layout="topleft"
- left="8"
- name="camera_modes_list"
- opaque="true"
- top="24"
- width="212"
- visible="false">
- <panel_camera_item
- name="object_view">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="object_view" />
- <panel_camera_item.text
- name="object_view_text">
- Object View
- </panel_camera_item.text>
- <panel_camera_item.picture
- image_name="Object_View_Off" />
- <panel_camera_item.selected_picture
- image_name="Object_View_On" />
- </panel_camera_item>
- <panel_camera_item
- name="mouselook_view"
- layout="topleft">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="mouselook_view" />
- <panel_camera_item.text
- name="mouselook_view_text">
- Mouselook View
- </panel_camera_item.text>
- <panel_camera_item.picture
- image_name="MouseLook_View_Off" />
- <panel_camera_item.selected_picture
- image_name="MouseLook_View_On" />
- </panel_camera_item>
- </panel>
- <!--TODO: replace + - images -->
- <panel
- border="false"
- class="camera_zoom_panel"
- height="114"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="zoom"
- top="20"
- width="226">
- <joystick_rotate
- follows="top|left"
- height="78"
- image_selected="Cam_Rotate_In"
- image_unselected="Cam_Rotate_Out"
- layout="topleft"
- left="7"
- mouse_opaque="false"
- name="cam_rotate_stick"
- quadrant="left"
- scale_image="false"
- sound_flags="3"
- visible="true"
- tool_tip="Orbit camera around focus"
- top="20"
- width="78">
- <commit_callback
- function="Camera.rotate" />
- <mouse_held_callback
- function="Camera.rotate" />
- </joystick_rotate>
- <button
- follows="top|left"
- height="18"
- image_disabled="AddItem_Disabled"
- image_selected="AddItem_Press"
- image_unselected="AddItem_Off"
- layout="topleft"
- left_pad="14"
- name="zoom_plus_btn"
- width="18"
- top="18">
- <commit_callback
- function="Zoom.plus" />
- <mouse_held_callback
- function="Zoom.plus" />
- </button>
- <slider_bar
- height="50"
- layout="topleft"
- name="zoom_slider"
- orientation="vertical"
- tool_tip="Zoom camera toward focus"
- top_pad="0"
- min_val="0"
- max_val="1"
- width="18">
- <commit_callback function="Slider.value_changed"/>
- </slider_bar>
- <button
- follows="top|left"
- height="18"
- image_disabled="MinusItem_Disabled"
- image_selected="MinusItem_Press"
- image_unselected="MinusItem_Off"
- layout="topleft"
- name="zoom_minus_btn"
- top_pad="0"
- width="18">
- <commit_callback
- function="Zoom.minus" />
- <mouse_held_callback
- function="Zoom.minus" />
- </button>
- <joystick_track
- follows="top|left"
- height="78"
- image_selected="Cam_Tracking_In"
- image_unselected="Cam_Tracking_Out"
- layout="topleft"
- left="133"
- name="cam_track_stick"
- quadrant="left"
- scale_image="false"
- sound_flags="3"
- tool_tip="Move camera up and down, left and right"
- top="20"
- width="78">
- <commit_callback
- function="Camera.track" />
- <mouse_held_callback
- function="Camera.track" />
- </joystick_track>
- </panel>
- </panel>
- <panel
- border="false"
- height="42"
- layout="topleft"
- left="2"
- top_pad="0"
- name="buttons"
- width="226">
- <button
- height="23"
- label=""
- layout="topleft"
- left="83"
- is_toggle="true"
- image_overlay="Cam_Avatar_Off"
- image_selected="PushButton_Selected_Press"
- name="presets_btn"
- tab_stop="false"
- tool_tip="Preset Views"
- top="13"
- width="25">
- </button>
- <button
- height="23"
- label=""
- layout="topleft"
- left_pad="1"
- is_toggle="true"
- image_overlay="PanOrbit_Off"
- image_selected="PushButton_Selected_Press"
- name="pan_btn"
- tab_stop="false"
- tool_tip="Orbit Zoom Pan"
- width="25">
- </button>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml b/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
deleted file mode 100644
index 477f210352..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- can_minimize="false"
- height="460"
- layout="topleft"
- min_height="360"
- left="10000"
- top="10"
- min_width="335"
- name="floater_help_browser"
- single_instance="true"
- title="HOW TO"
- width="335">
- <floater.string
- name="loading_text">
- Loading...
- </floater.string>
- <floater.string
- name="done_text">
- </floater.string>
- <layout_stack
- bottom="460"
- follows="left|right|top|bottom"
- layout="topleft"
- left="5"
- orientation="vertical"
- name="stack1"
- top="20"
- width="325">
- <layout_panel
- layout="topleft"
- left_delta="0"
- top_delta="0"
- name="external_controls"
- user_resize="false"
- width="325">
- <web_browser
- trusted_content="true"
- bottom="-5"
- follows="left|right|top|bottom"
- layout="topleft"
- left="0"
- name="browser"
- top="0"
- height="300"
- width="325" />
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_media_browser.xml b/indra/newview/skins/minimal/xui/en/floater_media_browser.xml
deleted file mode 100644
index 4862146c94..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_media_browser.xml
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="440"
- layout="topleft"
- min_height="140"
- min_width="467"
- name="floater_about"
- save_rect="true"
- auto_tile="true"
- title="MEDIA BROWSER"
- width="820">
- <floater.string
- name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string
- name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack
- bottom="440"
- follows="left|right|top|bottom"
- layout="topleft"
- left="10"
- name="stack1"
- orientation="vertical"
- top="20"
- width="800">
- <layout_panel
- auto_resize="false"
- default_tab_group="1"
- height="20"
- layout="topleft"
- left="0"
- min_height="20"
- name="nav_controls"
- top="400"
- user_resize="false"
- width="800">
- <button
- follows="left|top"
- height="20"
- label="Back"
- layout="topleft"
- left="0"
- name="back"
- top="0"
- width="55">
- <button.commit_callback
- function="MediaBrowser.Back" />
- </button>
- <button
- follows="left|top"
- height="20"
- label="Forward"
- layout="topleft"
- left_pad="3"
- name="forward"
- top_delta="0"
- width="68">
- <button.commit_callback
- function="MediaBrowser.Forward" />
- </button>
- <button
- enabled="false"
- follows="left|top"
- height="20"
- label="Reload"
- layout="topleft"
- left_pad="2"
- name="reload"
- top_delta="0"
- width="70">
- <button.commit_callback
- function="MediaBrowser.Refresh" />
- </button>
- <combo_box
- allow_text_entry="true"
- follows="left|top|right"
- tab_group="1"
- height="20"
- layout="topleft"
- left_pad="5"
- max_chars="1024"
- name="address"
- combo_editor.select_on_focus="true"
- top_delta="0"
- width="540">
- <combo_box.commit_callback
- function="MediaBrowser.EnterAddress" />
- </combo_box>
- <button
- enabled="false"
- follows="right|top"
- height="20"
- label="Go"
- layout="topleft"
- left_pad="5"
- name="go"
- top_delta="0"
- width="50">
- <button.commit_callback
- function="MediaBrowser.Go" />
- </button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- height="20"
- layout="topleft"
- left_delta="0"
- min_height="20"
- name="time_controls"
- top_delta="0"
- user_resize="false"
- width="800">
- <button
- follows="left|top"
- height="20"
- label="rewind"
- layout="topleft"
- left="0"
- name="rewind"
- top="0"
- width="55" />
- <button
- follows="left|top"
- height="20"
- image_selected="button_anim_play_selected.tga"
- image_unselected="button_anim_play.tga"
- layout="topleft"
- left_delta="55"
- name="play"
- top_delta="0"
- width="55" />
- <button
- follows="left|top"
- height="20"
- image_selected="button_anim_pause_selected.tga"
- image_unselected="button_anim_pause.tga"
- layout="topleft"
- left_delta="0"
- name="pause"
- top_delta="0"
- width="55" />
- <button
- follows="left|top"
- height="20"
- label="stop"
- layout="topleft"
- left_pad="10"
- name="stop"
- top_delta="0"
- width="55" />
- <button
- follows="left|top"
- height="20"
- label="forward"
- layout="topleft"
- left_pad="20"
- name="seek"
- top_delta="0"
- width="55" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- height="20"
- layout="topleft"
- left_delta="0"
- min_height="20"
- name="parcel_owner_controls"
- top_delta="0"
- user_resize="false"
- width="540">
- <button
- enabled="false"
- follows="left|top"
- height="20"
- label="Send Current Page to Parcel"
- layout="topleft"
- left="0"
- name="assign"
- top="0"
- width="200">
- <button.commit_callback
- function="MediaBrowser.Assign" />
- </button>
- </layout_panel>
- <layout_panel
- height="40"
- layout="topleft"
- left_delta="0"
- name="external_controls"
- top_delta="0"
- user_resize="false"
- width="540">
- <web_browser
- bottom="-30"
- follows="all"
- layout="topleft"
- left="0"
- name="browser"
- top="0"
- width="540" />
- <button
- follows="bottom|left"
- height="20"
- label="Open in My Web Browser"
- layout="topleft"
- left_delta="0"
- name="open_browser"
- top_pad="5"
- width="185">
- <button.commit_callback
- function="MediaBrowser.OpenWebBrowser" />
- </button>
- <check_box
- control_name="UseExternalBrowser"
- follows="bottom|left"
- height="20"
- label="Always open in my web browser"
- layout="topleft"
- left_pad="5"
- name="open_always"
- top_delta="0"
- width="200" />
- <button
- follows="bottom|right"
- height="20"
- label="Close"
- layout="topleft"
- left_pad="80"
- name="close"
- top_delta="0"
- width="70">
- <button.commit_callback
- function="MediaBrowser.Close" />
- </button>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml
deleted file mode 100644
index 74ac885202..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- border_visible="false"
- border="false"
- bg_opaque_image="Window_Foreground"
- bg_alpha_image="Window_Background"
- bg_alpha_image_overlay="DkGray_66"
- legacy_header_height="18"
- can_minimize="true"
- can_tear_off="false"
- can_resize="true"
- can_drag_on_left="false"
- can_close="false"
- can_dock="true"
- bevel_style="in"
- height="300"
- min_width="235"
- layout="topleft"
- name="nearby_chat"
- save_rect="true"
- title="NEARBY CHAT"
- save_dock_state="true"
- save_visibility="true"
- single_instance="true"
- width="320">
- <check_box
- bottom_delta="36"
- control_name="TranslateChat"
- enabled="true"
- height="16"
- label="Translate chat (powered by Google)"
- layout="topleft"
- left="5"
- name="translate_chat_checkbox"
- width="230" />
- <chat_history
- parse_urls="true"
- bg_readonly_color="ChatHistoryBgColor"
- bg_writeable_color="ChatHistoryBgColor"
- follows="all"
- left="5"
- top_delta="17"
- layout="topleft"
- height="260"
- name="chat_history"
- parse_highlights="true"
- text_color="ChatHistoryTextColor"
- text_readonly_color="ChatHistoryTextColor"
- right_widget_pad="5"
- left_widget_pad="0"
- width="315" />
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml b/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml
deleted file mode 100644
index 83b1260620..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<floater
- can_close="true"
- can_resize="true"
- min_width="333"
- min_height="440"
- save_rect="true"
- save_visibility="true"
- >
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_web_content.xml b/indra/newview/skins/minimal/xui/en/floater_web_content.xml
deleted file mode 100644
index 1d9a967d5a..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_web_content.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="775"
- layout="topleft"
- min_height="400"
- min_width="500"
- name="floater_web_content"
- save_rect="true"
- auto_tile="true"
- title=""
- initial_mime_type="text/html"
- width="780">
- <layout_stack
- bottom="775"
- follows="left|right|top|bottom"
- layout="topleft"
- left="5"
- animate="false"
- name="stack1"
- orientation="vertical"
- top="20"
- width="770">
- <layout_panel
- auto_resize="false"
- default_tab_group="1"
- height="22"
- layout="topleft"
- left="0"
- min_height="20"
- name="nav_controls"
- top="400"
- user_resize="false"
- width="770">
- <button
- image_overlay="Arrow_Left_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- hover_glow_amount="0.15"
- tool_tip="Navigate back"
- follows="left|top"
- height="22"
- layout="topleft"
- left="1"
- name="back"
- top="0"
- width="22">
- <button.commit_callback
- function="WebContent.Back" />
- </button>
- <button
- image_overlay="Arrow_Right_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- tool_tip="Navigate forward"
- follows="left|top"
- height="22"
- layout="topleft"
- left="27"
- name="forward"
- top_delta="0"
- width="22">
- <button.commit_callback
- function="WebContent.Forward" />
- </button>
- <button
- image_overlay="Stop_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- tool_tip="Stop navigation"
- enabled="true"
- follows="left|top"
- height="22"
- layout="topleft"
- left="51"
- name="stop"
- top_delta="0"
- width="22">
- <button.commit_callback
- function="WebContent.Stop" />
- </button>
- <button
- image_overlay="Refresh_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- tool_tip="Reload page"
- follows="left|top"
- height="22"
- layout="topleft"
- left="51"
- name="reload"
- top_delta="0"
- width="22">
- <button.commit_callback
- function="WebContent.Reload" />
- </button>
- <combo_box
- allow_text_entry="true"
- follows="left|top|right"
- tab_group="1"
- height="22"
- layout="topleft"
- left_pad="4"
- max_chars="1024"
- name="address"
- combo_editor.select_on_focus="true"
- tool_tip="Enter URL here"
- top_delta="0"
- width="672">
- <combo_box.commit_callback
- function="WebContent.EnterAddress" />
- </combo_box>
- <icon
- name="media_secure_lock_flag"
- height="16"
- follows="top|right"
- image_name="Lock2"
- layout="topleft"
- left_delta="620"
- top_delta="2"
- visible="false"
- tool_tip="Secured Browsing"
- width="16" />
- <button
- image_overlay="ExternalBrowser_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- tool_tip="Open current URL in your desktop browser"
- follows="right|top"
- enabled="true"
- height="22"
- layout="topleft"
- name="popexternal"
- right="770"
- top_delta="-2"
- width="22">
- <button.commit_callback
- function="WebContent.PopExternal" />
- </button>
- </layout_panel>
- <layout_panel
- height="40"
- layout="topleft"
- left_delta="0"
- name="external_controls"
- top_delta="0"
- user_resize="false"
- auto_resize="true"
- width="585">
- <web_browser
- bottom="-2"
- follows="all"
- layout="topleft"
- left="0"
- name="webbrowser"
- top="0"/>
- </layout_panel>
- <layout_panel name="status_bar"
- height="23"
- auto_resize="false"
- user_resize="false">
- <text
- type="string"
- length="200"
- follows="bottom|left"
- height="20"
- layout="topleft"
- left_delta="0"
- name="statusbartext"
- parse_urls="false"
- text_color="0.4 0.4 0.4 1"
- top_pad="3"
- width="495"/>
- <progress_bar
- color_bar="0.3 1.0 0.3 1"
- follows="bottom|right"
- height="16"
- top_delta="-1"
- left_pad="24"
- layout="topleft"
- name="statusbarprogress"
- width="64"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/inspect_avatar.xml b/indra/newview/skins/minimal/xui/en/inspect_avatar.xml
deleted file mode 100644
index 853d5f8735..0000000000
--- a/indra/newview/skins/minimal/xui/en/inspect_avatar.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater
- legacy_header_height="25"
- bevel_style="in"
- bg_opaque_image="Inspector_Background"
- can_close="false"
- can_minimize="false"
- height="164"
- layout="topleft"
- name="inspect_avatar"
- single_instance="true"
- sound_flags="0"
- visible="true"
- width="245">
- <!-- Allowed fields include:
- [BORN_ON] ("12/3/2008")
- [SL_PROFILE] (Second Life profile),
- [RW_PROFILE] (real world profile),
- [ACCTTYPE] ("Resident"),
- [PAYMENTINFO] ("Payment Info on File"),
- [AGE] ("1 year 2 months")
- -->
- <string
- name="Subtitle">
-[AGE]
- </string>
- <string
- name="Details">
-[SL_PROFILE]
- </string>
- <text
- follows="top|left"
- font="SansSerif"
- height="20"
- left="8"
- name="user_name_small"
- top="7"
- text_color="White"
- use_ellipses="true"
- word_wrap="true"
- visible="false"
- value="Grumpity ProductEngine with a long name"
- width="185" />
- <text
- follows="top|left"
- font="SansSerifBigLarge"
- height="21"
- left="8"
- name="user_name"
- top="10"
- text_color="White"
- use_ellipses="true"
- value="Grumpity ProductEngine"
- width="190" />
- <text
- follows="top|left"
- height="16"
- left="8"
- name="user_slid"
- font="SansSerifSmallBold"
- text_color="EmphasisColor"
- value="james.linden"
- width="185"
- use_ellipses="true" />
- <text
- follows="top|left"
- height="16"
- left="8"
- name="user_subtitle"
- font="SansSerifSmall"
- text_color="White"
- top_pad="0"
- value="11 Months, 3 days old"
- width="175"
- use_ellipses="true" />
- <text
- follows="left|top|right"
- height="35"
- left="8"
- name="user_details"
- right="-10"
- word_wrap="true"
- top_pad="4"
- use_ellipses="true"
- width="220">This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
- </text>
- <slider
- follows="top|left"
- height="23"
- increment="0.01"
- left="1"
- max_val="0.95"
- min_val="0.05"
- name="volume_slider"
- show_text="false"
- tool_tip="Voice volume"
- top_pad="0"
- value="0.5"
- width="200" />
- <button
- follows="top|left"
- height="16"
- image_disabled="Audio_Off"
- image_disabled_selected="AudioMute_Off"
- image_hover_selected="AudioMute_Over"
- image_selected="AudioMute_Off"
- image_unselected="Audio_Off"
- is_toggle="true"
- left_pad="0"
- top_delta="4"
- name="mute_btn"
- width="16" />
- <avatar_icon
- follows="top|left"
- height="38"
- right="-10"
- bevel_style="in"
- border_style="line"
- mouse_opaque="true"
- name="avatar_icon"
- top="10"
- width="38" />
-<!-- Overlapping buttons for default actions
- llinspectavatar.cpp makes visible the most likely default action
--->
- <button
- follows="top|left"
- height="20"
- label="Add Friend"
- left="8"
- top="135"
- name="add_friend_btn"
- width="90" />
- <button
- follows="top|left"
- height="20"
- label="IM"
- left_delta="0"
- top_delta="0"
- name="im_btn"
- width="80"
- commit_callback.function="InspectAvatar.IM"/>
- <button
- follows="top|left"
- height="20"
- label="Profile"
- layout="topleft"
- name="view_profile_btn"
- left_delta="96"
- top_delta="0"
- tab_stop="false"
- width="80" />
- <!-- gear buttons here -->
- <menu_button
- follows="top|left"
- height="20"
- layout="topleft"
- image_overlay="OptionsMenu_Off"
- menu_filename="menu_inspect_avatar_gear.xml"
- name="gear_btn"
- right="-5"
- top_delta="0"
- width="35" />
- <menu_button
- follows="top|left"
- height="20"
- image_overlay="OptionsMenu_Off"
- menu_filename="menu_inspect_self_gear.xml"
- name="gear_self_btn"
- right="-5"
- top_delta="0"
- width="35" />
- <panel
- follows="top|left"
- top="164"
- left="0"
- height="60"
- width="228"
- visible="false"
- background_visible="true"
- name="moderator_panel"
- background_opaque="true"
- bg_opaque_color="MouseGray">
- <button
- name="disable_voice"
- label="Disable Voice"
- top="20"
- width="95"
- height="20"
- left="10"
- commit_callback.function="InspectAvatar.DisableVoice"/>
- <button
- name="enable_voice"
- label="Enable Voice"
- top="20"
- width="95"
- height="20"
- left="10"
- visible="false"
- commit_callback.function="InspectAvatar.EnableVoice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/inspect_object.xml b/indra/newview/skins/minimal/xui/en/inspect_object.xml
deleted file mode 100644
index f424069ec6..0000000000
--- a/indra/newview/skins/minimal/xui/en/inspect_object.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater
- legacy_header_height="25"
- bevel_style="in"
- bg_opaque_image="Inspector_Background"
- can_close="false"
- can_minimize="false"
- height="150"
- layout="topleft"
- name="inspect_object"
- single_instance="true"
- sound_flags="0"
- visible="true"
- width="228">
- <string name="Creator">By [CREATOR]</string>
- <string name="CreatorAndOwner">
-By [CREATOR]
-Owner [OWNER]
- </string>
- <string name="Price">L$[AMOUNT]</string>
- <string name="PriceFree">Free!</string>
- <string name="Touch">Touch</string>
- <string name="Sit">Sit</string>
- <text
- parse_urls="false"
- follows="all"
- font="SansSerifLarge"
- height="30"
- left="8"
- name="object_name"
- text_color="White"
- top="6"
- use_ellipses="true"
- word_wrap="true"
- width="220" />
- <text
- follows="all"
- height="50"
- left="8"
- name="object_creator"
- top_pad="6"
- use_ellipses="true"
- width="220">
- by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
- </text>
- <text
- follows="all"
- font="SansSerifSmall"
- font.style="BOLD"
- height="14"
- halign="right"
- right="-5"
- name="price_text"
- text_color="white"
- top="60"
- font_shadow="none"
- width="60">
-L$30,000
- </text>
- <text
- clip_partial="true"
- follows="all"
- font="SansSerifSmall"
- height="25"
- left="8"
- name="object_description"
- top="76"
- use_ellipses="true"
- width="220"
- word_wrap="true">
- </text>
- <!-- Overlapping buttons for all default actions. Show "Buy" if
- for sale, "Sit" if can sit, etc. -->
- <icon
- name="secure_browsing"
- image_name="Lock"
- left="0"
- visible="false"
- width="18"
- height="18"
- top="103"
- tool_tip="Secure Browsing"
- follows="left|top" />
- <text
- follows="all"
- font="SansSerifSmall"
- height="13"
- name="object_media_url"
- width="207"
- left_pad="2"
- top_delta="0"
- max_length = "50"
- use_ellipses="true">
- http://www.superdupertest.com
-</text>
- <button
- follows="top|left"
- height="20"
- label="Take Copy"
- left_delta="0"
- name="take_free_copy_btn"
- top_delta="0"
- width="80" />
- <button
- follows="top|left"
- height="20"
- label="Touch"
- left_delta="0"
- name="touch_btn"
- top_delta="0"
- width="80" />
- <button
- follows="top|left"
- height="20"
- label="Sit"
- left_delta="0"
- name="sit_btn"
- top_delta="0"
- width="80" />
- <button
- follows="top|left"
- height="20"
- label="Open"
- left_delta="0"
- name="open_btn"
- top_delta="0"
- width="80" />
-
- <!-- non-overlapping buttons here -->
- <menu_button
- follows="top|left"
- height="20"
- image_overlay="OptionsMenu_Off"
- menu_filename="menu_inspect_object_gear.xml"
- name="gear_btn"
- right="-5"
- top_delta="0"
- width="35" />
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/main_view.xml b/indra/newview/skins/minimal/xui/en/main_view.xml
deleted file mode 100644
index 0ce6cbc984..0000000000
--- a/indra/newview/skins/minimal/xui/en/main_view.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="left|right|top|bottom"
- height="768"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- tab_stop="false"
- name="main_view"
- width="1024">
- <panel top="0"
- follows="all"
- height="768"
- mouse_opaque="false"
- name="login_panel_holder"
- width="1024"/>
-
- <layout_stack border_size="0"
- follows="all"
- mouse_opaque="false"
- height="768"
- name="menu_stack"
- orientation="vertical"
- top="0">
- <layout_panel auto_resize="false"
- height="30"
- mouse_opaque="false"
- name="nav_bar_container"
- tab_stop="false"
- min_height="0"
- width="1024"
- user_resize="false"
- visible="true">
- </layout_panel>
- <layout_panel auto_resize="true"
- follows="all"
- height="500"
- layout="topleft"
- mouse_opaque="false"
- tab_stop="false"
- name="hud"
- width="1024">
- <panel auto_resize="false"
- follows="all"
- height="500"
- top="0"
- layout="topleft"
- mouse_opaque="false"
- tab_stop="false"
- name="non_side_tray_view"
- user_resize="false"
- width="1024">
-
- <layout_stack border_size="0"
- bottom="500"
- follows="all"
- height="500"
- left="0"
- top="0"
- mouse_opaque="false"
- name="world_stack"
- open_time_constant="0.03"
- close_time_constant="0.03"
- orientation="vertical">
- <layout_panel auto_resize="true"
- follows="all"
- height="500"
- layout="topleft"
- tab_stop="false"
- mouse_opaque="false"
- user_resize="false"
- name="hud container"
- width="500">
- <view top="0"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="floater_snap_region"
- width="500"/>
- <panel follows="left|top"
- height="0"
- left="0"
- mouse_opaque="false"
- name="topinfo_bar_container"
- tab_stop="false"
- top="0"
- visible="false"
- width="1024"/>
- <panel bottom="500"
- follows="left|right|bottom"
- height="25"
- left="0"
- mouse_opaque="false"
- tab_stop="false"
- name="stand_stop_flying_container"
- visible="false"
- width="500"/>
-
- <panel follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="floater_view_holder"
- tab_group="-1"
- tab_stop="false"
- top="0"
- width="500">
- <floater_view follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="Floater View"
- tab_group="-1"
- tab_stop="false"
- top="0"
- width="500"/>
- </panel>
- <panel bottom="500"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="world_view_rect"
- top="0"
- width="500"/>
- </layout_panel>
- <layout_panel auto_resize="false"
- min_height="33"
- height="33"
- mouse_opaque="false"
- name="bottom_tray_container"
- visible="false"/>
- <layout_panel auto_resize="false"
- height="215"
- mouse_opaque="false"
- user_resize="false"
- name="avatar_picker_and_destination_guide_container"
- visible="false">
- <panel top="0"
- height="215"
- left="0"
- background_visible="true"
- width="500"
- follows="all">
- <web_browser
- top="0"
- height="200"
- follows="all"
- name="destination_guide_contents"
- trusted_content="true"
- visible="false"/>
- <web_browser
- top="0"
- height="200"
- follows="all"
- name="avatar_picker_contents"
- visible="false"
- trusted_content="true"/>
- <button
- name="close"
- width="22"
- height="23"
- right="-10"
- top="2"
- follows="top|right"
- chrome="true"
- tab_stop="false"
- image_unselected="bottomtray_close_off"
- image_selected="bottomtray_close_press"
- />
- </panel>
- </layout_panel>
- </layout_stack>
- </panel>
- <debug_view follows="all"
- left="0"
- top="0"
- mouse_opaque="false"
- height="500"
- name="DebugView"
- width="1024"/>
- </layout_panel>
- </layout_stack>
- <panel mouse_opaque="false"
- follows="right|top"
- name="status_bar_container"
- tab_stop="false"
- height="30"
- left="-160"
- top="0"
- width="160"
- visible="false"/>
- <panel follows="top|bottom"
- height="500"
- mouse_opaque="false"
- tab_stop="false"
- name="hidden_side_tray"
- visible="false"
- width="333">
- <panel
- name="side_tray_container"
- width="333"
- height="500"/>
- </panel>
-
- <panel top="0"
- follows="all"
- mouse_opaque="false"
- left="0"
- name="snapshot_floater_view_holder"
- width="1024"
- height="798">
- <snapshot_floater_view enabled="false"
- follows="all"
- height="768"
- left="0"
- mouse_opaque="false"
- name="Snapshot Floater View"
- tab_stop="false"
- top="0"
- visible="false"
- width="1024"/>
- </panel>
- <panel top="0"
- follows="all"
- height="768"
- mouse_opaque="false"
- name="popup_holder"
- class="popup_holder"
- width="1024">
- <icon follows="right|bottom"
- image_name="Resize_Corner"
- right="-1"
- name="resize_corner"
- width="11"
- bottom="-1"
- height="11" />
- </panel>
- <view top="0"
- left="0"
- width="1024"
- height="768"
- name="hint_holder"
- mouse_opaque="false"
- follows="all"/>
- <panel top="0"
- follows="all"
- height="768"
- mouse_opaque="true"
- name="progress_view"
- filename="panel_progress.xml"
- class="progress_view"
- width="1024"
- visible="false"/>
- <menu_holder top="0"
- follows="all"
- height="768"
- mouse_opaque="false"
- name="Menu Holder"
- width="1024"/>
- <tooltip_view top="0"
- follows="all"
- height="768"
- mouse_opaque="false"
- name="tooltip view"
- tab_group="-2"
- width="1024"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
deleted file mode 100644
index 80cf365c46..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu
- layout="topleft"
- name="Avatar Pie">
- <menu_item_call
- label="View Profile"
- name="Profile...">
- <menu_item_call.on_click
- function="ShowAgentProfile"
- parameter="hit object" />
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Add Friend"
- name="Add Friend">
- <menu_item_call.on_click
- function="Avatar.AddFriend" />
- <menu_item_call.on_enable
- function="Avatar.EnableAddFriend" />
- </menu_item_call>
- <menu_item_call
- label="IM"
- name="Send IM...">
- <menu_item_call.on_click
- function="Avatar.SendIM" />
- </menu_item_call>
- <menu_item_call
- label="Call"
- name="Call">
- <menu_item_call.on_click
- function="Avatar.Call" />
- <menu_item_call.on_enable
- function="Avatar.EnableCall" />
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- enabled="false"
- label="Block"
- name="Avatar Mute">
- <menu_item_call.on_click
- function="Avatar.Mute" />
- <menu_item_call.on_enable
- function="Avatar.EnableMute" />
- </menu_item_call>
- <menu_item_call
- label="Report"
- name="abuse">
- <menu_item_call.on_click
- function="Avatar.ReportAbuse" />
- </menu_item_call>
- <menu_item_call
- label="Freeze"
- name="Freeze...">
- <menu_item_call.on_click
- function="Avatar.Freeze" />
- <menu_item_call.on_visible
- function="Avatar.EnableFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Eject"
- name="Eject...">
- <menu_item_call.on_click
- function="Avatar.Eject" />
- <menu_item_call.on_visible
- function="Avatar.EnableFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Debug Textures"
- name="Debug...">
- <menu_item_call.on_click
- function="Avatar.Debug" />
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="Zoom In">
- <menu_item_call.on_click
- function="Tools.LookAtSelection"
- parameter="zoom" />
- </menu_item_call>
- <menu_item_separator />
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml
deleted file mode 100644
index 542a7dc7dc..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Attachment Pie">
- <menu_item_call
- enabled="false"
- label="Touch"
- layout="topleft"
- name="Attachment Object Touch">
- <menu_item_call.on_click
- function="Object.Touch" />
- <menu_item_call.on_enable
- function="Object.EnableTouch"
- name="EnableTouch"/>
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Detach"
- layout="topleft"
- name="Detach">
- <menu_item_call.on_click
- function="Attachment.Detach" />
- <menu_item_call.on_enable
- function="Attachment.EnableDetach" />
- </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
deleted file mode 100644
index 2c81b5a778..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu
- layout="topleft"
- name="Avatar Pie">
- <menu_item_call
- label="View Profile"
- name="Profile...">
- <menu_item_call.on_click
- function="ShowAgentProfile"
- parameter="hit object" />
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Add Friend"
- name="Add Friend">
- <menu_item_call.on_click
- function="Avatar.AddFriend" />
- <menu_item_call.on_enable
- function="Avatar.EnableAddFriend" />
- </menu_item_call>
- <menu_item_call
- label="IM"
- name="Send IM...">
- <menu_item_call.on_click
- function="Avatar.SendIM" />
- </menu_item_call>
- <menu_item_call
- label="Call"
- name="Call">
- <menu_item_call.on_click
- function="Avatar.Call" />
- <menu_item_call.on_enable
- function="Avatar.EnableCall" />
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- enabled="false"
- label="Block"
- name="Avatar Mute">
- <menu_item_call.on_click
- function="Avatar.Mute" />
- <menu_item_call.on_enable
- function="Avatar.EnableMute" />
- </menu_item_call>
- <menu_item_call
- label="Report"
- name="abuse">
- <menu_item_call.on_click
- function="Avatar.ReportAbuse" />
- </menu_item_call>
- <menu_item_call
- label="Freeze"
- name="Freeze...">
- <menu_item_call.on_click
- function="Avatar.Freeze" />
- <menu_item_call.on_visible
- function="Avatar.EnableFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Eject"
- name="Eject...">
- <menu_item_call.on_click
- function="Avatar.Eject" />
- <menu_item_call.on_visible
- function="Avatar.EnableFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Debug Textures"
- name="Debug...">
- <menu_item_call.on_click
- function="Avatar.Debug" />
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="Zoom In">
- <menu_item_call.on_click
- function="Tools.LookAtSelection"
- parameter="zoom" />
- </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_edit.xml b/indra/newview/skins/minimal/xui/en/menu_edit.xml
deleted file mode 100644
index 747eb3fc6a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_edit.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu create_jump_keys="true"
- label="Edit"
- name="Edit"
- visible="false">
- <menu_item_call
- label="Undo"
- name="Undo"
- shortcut="control|Z">
- <menu_item_call.on_click
- function="Edit.Undo" />
- <menu_item_call.on_enable
- function="Edit.EnableUndo" />
- </menu_item_call>
- <menu_item_call
- label="Redo"
- name="Redo"
- shortcut="control|Y">
- <menu_item_call.on_click
- function="Edit.Redo" />
- <menu_item_call.on_enable
- function="Edit.EnableRedo" />
- </menu_item_call>
- <menu_item_separator/>
- <menu_item_call
- label="Cut"
- name="Cut"
- shortcut="control|X">
- <menu_item_call.on_click
- function="Edit.Cut" />
- <menu_item_call.on_enable
- function="Edit.EnableCut" />
- </menu_item_call>
- <menu_item_call
- label="Copy"
- name="Copy"
- shortcut="control|C">
- <menu_item_call.on_click
- function="Edit.Copy" />
- <menu_item_call.on_enable
- function="Edit.EnableCopy" />
- </menu_item_call>
- <menu_item_call
- label="Paste"
- name="Paste"
- shortcut="control|V">
- <menu_item_call.on_click
- function="Edit.Paste" />
- <menu_item_call.on_enable
- function="Edit.EnablePaste" />
- </menu_item_call>
- <menu_item_call
- label="Delete"
- name="Delete"
- allow_key_repeat="true"
- shortcut="Del">
- <menu_item_call.on_click
- function="Edit.Delete" />
- <menu_item_call.on_enable
- function="Edit.EnableDelete" />
- </menu_item_call>
- <menu_item_call
- label="Duplicate"
- name="Duplicate"
- shortcut="control|D">
- <menu_item_call.on_click
- function="Edit.Duplicate" />
- <menu_item_call.on_enable
- function="Edit.EnableDuplicate" />
- </menu_item_call>
- <menu_item_separator/>
- <menu_item_call
- label="Select All"
- name="Select All"
- shortcut="control|A">
- <menu_item_call.on_click
- function="Edit.SelectAll" />
- <menu_item_call.on_enable
- function="Edit.EnableSelectAll" />
- </menu_item_call>
- <menu_item_call
- label="Deselect"
- name="Deselect"
- shortcut="control|E">
- <menu_item_call.on_click
- function="Edit.Deselect" />
- <menu_item_call.on_enable
- function="Edit.EnableDeselect" />
- </menu_item_call>
-</menu> \ No newline at end of file
diff --git a/indra/newview/skins/minimal/xui/en/menu_favorites.xml b/indra/newview/skins/minimal/xui/en/menu_favorites.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_favorites.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_group_plus.xml b/indra/newview/skins/minimal/xui/en/menu_group_plus.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_group_plus.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
deleted file mode 100644
index a11e367d66..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu
- create_jump_keys="true"
- layout="topleft"
- mouse_opaque="false"
- visible="false"
- name="Gear Menu">
- <menu_item_call
- label="View Profile"
- enabled="true"
- name="view_profile">
- <menu_item_call.on_click
- function="InspectAvatar.ViewProfile"/>
- </menu_item_call>
- <menu_item_call
- label="Add Friend"
- name="add_friend">
- <menu_item_call.on_click
- function="InspectAvatar.AddFriend"/>
- <menu_item_call.on_enable
- function="InspectAvatar.Gear.Enable"/>
- </menu_item_call>
- <menu_item_call
- label="IM"
- name="im">
- <menu_item_call.on_click
- function="InspectAvatar.IM"/>
- </menu_item_call>
- <menu_item_call
- label="Call"
- enabled="true"
- name="call">
- <menu_item_call.on_click
- function="InspectAvatar.Call"/>
- <menu_item_call.on_enable
- function="InspectAvatar.Gear.EnableCall"/>
- </menu_item_call>
- <menu_item_call
- label="Teleport"
- name="teleport">
- <menu_item_call.on_click
- function="InspectAvatar.Teleport"/>
- <menu_item_call.on_enable
- function="InspectAvatar.Gear.EnableTeleportOffer"/>
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- label="Block"
- name="block">
- <menu_item_call.on_click
- function="InspectAvatar.ToggleMute"/>
- <menu_item_call.on_visible
- function="InspectAvatar.EnableMute" />
- </menu_item_call>
- <menu_item_call
- label="Unblock"
- name="unblock">
- <menu_item_call.on_click
- function="InspectAvatar.ToggleMute"/>
- <menu_item_call.on_visible
- function="InspectAvatar.EnableUnmute" />
- </menu_item_call>
- <menu_item_call
- label="Report"
- name="report">
- <menu_item_call.on_click
- function="InspectAvatar.Report"/>
- </menu_item_call>
- <menu_item_call
- label="Freeze"
- name="freeze">
- <menu_item_call.on_click
- function="InspectAvatar.Freeze"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleFreeze"/>
- </menu_item_call>
- <menu_item_call
- label="Eject"
- name="eject">
- <menu_item_call.on_click
- function="InspectAvatar.Eject"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleEject"/>
- </menu_item_call>
- <menu_item_call
- label="Kick"
- name="kick">
- <menu_item_call.on_click
- function="InspectAvatar.Kick"/>
- <menu_item_call.on_visible
- function="InspectAvatar.EnableGod"/>
- </menu_item_call>
- <menu_item_call
- label="CSR"
- name="csr">
- <menu_item_call.on_click
- function="InspectAvatar.CSR" />
- <menu_item_call.on_visible
- function="InspectAvatar.EnableGod" />
- </menu_item_call>
- <menu_item_call
- label="Debug Textures"
- name="debug">
- <menu_item_call.on_click
- function="Avatar.Debug"/>
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
- <menu_item_call
- label="Find On Map"
- name="find_on_map">
- <menu_item_call.on_click
- function="InspectAvatar.FindOnMap"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleFindOnMap"/>
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="zoom_in">
- <menu_item_call.on_click
- function="InspectAvatar.ZoomIn"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleZoomIn"/>
- </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml
deleted file mode 100644
index 8ec360a604..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu
- create_jump_keys="true"
- layout="topleft"
- mouse_opaque="false"
- visible="false"
- name="Gear Menu">
- <menu_item_call
- label="Touch"
- layout="topleft"
- enabled="true"
- name="touch">
- <menu_item_call.on_click
- function="InspectObject.Touch"/>
- <menu_item_call.on_visible
- function="Object.EnableTouch" />
- </menu_item_call>
- <menu_item_call
- label="Sit"
- layout="topleft"
- name="sit">
- <menu_item_call.on_click
- function="InspectObject.Sit"/>
- <menu_item_call.on_visible
- function="Object.EnableSit"/>
- </menu_item_call>
- <menu_item_call
- label="Report"
- layout="topleft"
- name="report">
- <menu_item_call.on_click
- function="Object.ReportAbuse" />
- </menu_item_call>
- <menu_item_call
- label="Block"
- layout="topleft"
- name="block">
- <menu_item_call.on_click
- function="Object.Mute" />
- <menu_item_call.on_visible
- function="Object.EnableMute" />
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- layout="topleft"
- name="zoom_in">
- <menu_item_call.on_click
- function="InspectObject.ZoomIn" />
- </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml
deleted file mode 100644
index ae8b640d26..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu
- layout="topleft"
- name="Self Pie">
- <menu_item_call
- label="Sit Down"
- layout="topleft"
- name="Sit Down Here">
- <menu_item_call.on_click
- function="Self.SitDown"
- parameter="" />
- <menu_item_call.on_enable
- function="Self.EnableSitDown" />
- </menu_item_call>
- <menu_item_call
- label="Stand Up"
- layout="topleft"
- name="Stand Up">
- <menu_item_call.on_click
- function="Self.StandUp"
- parameter="" />
- <menu_item_call.on_enable
- function="Self.EnableStandUp" />
- </menu_item_call>
- <menu_item_call
- label="My Friends"
- layout="topleft"
- name="Friends...">
- <menu_item_call.on_click
- function="SideTray.PanelPeopleTab"
- parameter="friends_panel" />
- </menu_item_call>
- <menu_item_call
- label="My Profile"
- layout="topleft"
- name="Profile...">
- <menu_item_call.on_click
- function="ShowAgentProfile"
- parameter="agent" />
- </menu_item_call>
- <menu_item_call
- label="Debug Textures"
- name="Debug...">
- <menu_item_call.on_click
- function="Avatar.Debug" />
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory.xml b/indra/newview/skins/minimal/xui/en/menu_inventory.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_land.xml b/indra/newview/skins/minimal/xui/en/menu_land.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_land.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_landmark.xml b/indra/newview/skins/minimal/xui/en/menu_landmark.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_landmark.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_login.xml b/indra/newview/skins/minimal/xui/en/menu_login.xml
deleted file mode 100644
index 62dbce3f56..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_login.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu_bar/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_mini_map.xml b/indra/newview/skins/minimal/xui/en/menu_mini_map.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_mini_map.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_navbar.xml b/indra/newview/skins/minimal/xui/en/menu_navbar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_navbar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_object.xml b/indra/newview/skins/minimal/xui/en/menu_object.xml
deleted file mode 100644
index 888ce42cf1..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_object.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Object Pie">
- <menu_item_call
- enabled="false"
- label="Sit Here"
- name="Object Sit">
- <menu_item_call.on_click
- function="Object.SitOrStand" />
- <menu_item_call.on_enable
- function="Object.EnableSit" />
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Stand Up"
- name="Object Stand Up">
- <menu_item_call.on_click
- function="Object.SitOrStand" />
- <menu_item_call.on_enable
- function="Object.EnableStandUp" />
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="Zoom In">
- <menu_item_call.on_click
- function="Object.ZoomIn" />
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Touch"
- name="Object Touch">
- <menu_item_call.on_click
- function="Object.Touch" />
- <menu_item_call.on_enable
- function="Object.EnableTouch"
- name="EnableTouch"
- parameter="Touch" />
- </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_object_icon.xml b/indra/newview/skins/minimal/xui/en/menu_object_icon.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_object_icon.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_participant_list.xml b/indra/newview/skins/minimal/xui/en/menu_participant_list.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_participant_list.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_groups.xml b/indra/newview/skins/minimal/xui/en/menu_people_groups.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_groups.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
deleted file mode 100644
index 1840ebd491..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Avatar Context Menu">
- <menu_item_call
- label="View Profile"
- layout="topleft"
- name="View Profile">
- <menu_item_call.on_click
- function="Avatar.Profile" />
- </menu_item_call>
- <menu_item_call
- label="Add Friend"
- layout="topleft"
- name="Add Friend">
- <menu_item_call.on_click
- function="Avatar.AddFriend" />
- <menu_item_call.on_enable
- function="Avatar.EnableItem"
- parameter="can_add" />
- </menu_item_call>
- <menu_item_call
- label="Remove Friend"
- layout="topleft"
- name="Remove Friend">
- <menu_item_call.on_click
- function="Avatar.RemoveFriend" />
- <menu_item_call.on_enable
- function="Avatar.EnableItem"
- parameter="can_delete" />
- </menu_item_call>
- <menu_item_call
- label="IM"
- layout="topleft"
- name="IM">
- <menu_item_call.on_click
- function="Avatar.IM" />
- </menu_item_call>
- <menu_item_call
- label="Call"
- layout="topleft"
- name="Call">
- <menu_item_call.on_click
- function="Avatar.Call" />
- <menu_item_call.on_enable
- function="Avatar.EnableItem"
- parameter="can_call" />
- </menu_item_call>
- <menu_item_check
- label="Block/Unblock"
- layout="topleft"
- name="Block/Unblock">
- <menu_item_check.on_click
- function="Avatar.BlockUnblock" />
- <menu_item_check.on_check
- function="Avatar.CheckItem"
- parameter="is_blocked" />
- <menu_item_check.on_enable
- function="Avatar.EnableItem"
- parameter="can_block" />
- </menu_item_check>
- <menu_item_call
- label="Offer Teleport"
- name="teleport">
- <menu_item_call.on_click
- function="Avatar.OfferTeleport"/>
- <menu_item_call.on_enable
- function="Avatar.EnableItem"
- parameter="can_offer_teleport"/>
- </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_picks.xml b/indra/newview/skins/minimal/xui/en/menu_picks.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_picks.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_place.xml b/indra/newview/skins/minimal/xui/en/menu_place.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_place.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_slurl.xml b/indra/newview/skins/minimal/xui/en/menu_slurl.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_slurl.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_text_editor.xml b/indra/newview/skins/minimal/xui/en/menu_text_editor.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_text_editor.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_agent.xml b/indra/newview/skins/minimal/xui/en/menu_url_agent.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_agent.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_group.xml b/indra/newview/skins/minimal/xui/en/menu_url_group.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_group.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_http.xml b/indra/newview/skins/minimal/xui/en/menu_url_http.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_http.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_map.xml b/indra/newview/skins/minimal/xui/en/menu_url_map.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_map.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_viewer.xml b/indra/newview/skins/minimal/xui/en/menu_viewer.xml
deleted file mode 100644
index cd83ea4e99..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_viewer.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu_bar
- bg_visible="false"
- follows="left|top|right"
- name="Main Menu">
- <menu
- create_jump_keys="true"
- label="Help"
- name="Help"
- tear_off="true">
- <menu_item_call
- label="[SECOND_LIFE] Help"
- name="Second Life Help"
- shortcut="F1">
- <menu_item_call.on_click
- function="ShowHelp"
- parameter="f1_help" />
- </menu_item_call>
- </menu>
- <menu
- create_jump_keys="true"
- label="Advanced"
- name="Advanced"
- tear_off="true"
- visible="false">
- <menu
- create_jump_keys="true"
- label="Shortcuts"
- name="Shortcuts"
- tear_off="true"
- visible="false">
- <menu_item_check
- label="Fly"
- name="Fly"
- shortcut="Home">
- <menu_item_check.on_check
- function="Agent.getFlying" />
- <menu_item_check.on_click
- function="Agent.toggleFlying" />
- <menu_item_check.on_enable
- function="Agent.enableFlying" />
- </menu_item_check>
- <menu_item_call
- label="Close Window"
- name="Close Window"
- shortcut="control|W">
- <menu_item_call.on_click
- function="File.CloseWindow" />
- <menu_item_call.on_enable
- function="File.EnableCloseWindow" />
- </menu_item_call>
- <menu_item_call
- label="Close All Windows"
- name="Close All Windows"
- shortcut="control|shift|W">
- <menu_item_call.on_click
- function="File.CloseAllWindows" />
- <menu_item_call.on_enable
- function="File.EnableCloseAllWindows" />
- </menu_item_call>
-
- <menu_item_call
- label="Reset View"
- name="Reset View"
- shortcut="Esc">
- <menu_item_call.on_click
- function="View.ResetView" />
- </menu_item_call>
- </menu> <!--Shortcuts-->
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/notification_visibility.xml b/indra/newview/skins/minimal/xui/en/notification_visibility.xml
deleted file mode 100644
index bdd3c3d4a4..0000000000
--- a/indra/newview/skins/minimal/xui/en/notification_visibility.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" ?>
-<notification_visibility>
- <respond name="VoiceInviteGroup" response="Decline"/>
-
- <!-- group and voice are disabled features -->
- <hide tag="group"/>
-
- <!-- no spammy scripts -->
- <!-- <hide name="ScriptDialog"/> -->
-
- <!-- hints pertaining to UI we don't show -->
- <hide name="FirstBalanceIncrease"/>
- <hide name="FirstInventory"/>
- <hide name="HintSidePanel"/>
- <hide name="HintMove"/>
- <hide name="HintSpeak"/>
- <hide name="HintDisplayName"/>
- <hide name="HintInventory"/>
- <hide name="HintLindenDollar"/>
-
- <!-- spam from servers, such as "Autopilot cancelled" -->
- <hide name="SystemMessageTip"/>
-
- <!-- show everything else -->
- <show/>
-</notification_visibility>
-
diff --git a/indra/newview/skins/minimal/xui/en/notifications.xml b/indra/newview/skins/minimal/xui/en/notifications.xml
deleted file mode 100644
index 7b7cdb5fc6..0000000000
--- a/indra/newview/skins/minimal/xui/en/notifications.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" ?>
-<notifications>
- <notification
- icon="notify.tga"
- name="UserGiveItem"
- type="offer">
- [NAME_SLURL] is offering you [ITEM_SLURL]. Using this item requires you to switch to Advanced mode where you will find the item in your Inventory. To switch to Advanced mode, quit and restart this application and change the mode setting on the login screen.
- <form name="form">
- <button
- index="4"
- name="Show"
- text="Keep Item"/>
- <button
- index="1"
- name="Discard"
- text="Reject Item"/>
- <button
- index="2"
- name="Mute"
- text="Block User"/>
- </form>
- </notification>
- <notification
- icon="notify.tga"
- name="ObjectGiveItem"
- type="offer">
- An object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; owned by [NAME_SLURL] is offering you &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Using this item requires you to switch to Advanced mode where you will find the item in your Inventory. To switch to Advanced mode, quit and restart this application and change the mode setting on the login screen.
- <form name="form">
- <button
- index="0"
- name="Keep"
- text="Keep Item"/>
- <button
- index="1"
- name="Discard"
- text="Reject Item"/>
- <button
- index="2"
- name="Mute"
- text="Block Object"/>
- </form>
- </notification>
-
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
deleted file mode 100644
index 39d1a90850..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- follows="all"
- height="215"
- name="panel_im_control_panel"
- width="150">
- <layout_stack
- mouse_opaque="false"
- border_size="0"
- clip="false"
- follows="all"
- height="215"
- layout="topleft"
- left="3"
- name="vertical_stack"
- orientation="vertical"
- top="0"
- width="147">
- <layout_panel
- auto_resize="true"
- follows="top|left"
- height="130"
- layout="topleft"
- left="0"
- min_height="0"
- mouse_opaque="false"
- width="147"
- top="0"
- name="speakers_list_panel"
- user_resize="false">
- <avatar_list
- color="DkGray2"
- follows="all"
- height="130"
- ignore_online_status="true"
- layout="topleft"
- name="speakers_list"
- opaque="false"
- show_info_btn="true"
- show_profile_btn="false"
- show_speaking_indicator="false"
- width="147" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="130"
- name="call_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="all"
- height="20"
- label="Call"
- name="call_btn"
- width="130"
- top="5" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="130"
- name="end_call_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="all"
- height="20"
- label="Leave Call"
- name="end_call_btn"
- top="5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
deleted file mode 100644
index d722c54081..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ /dev/null
@@ -1,557 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- chrome="true"
- follows="left|bottom|right"
- height="33"
- layout="topleft"
- left="0"
- name="bottom_tray"
- focus_root="true"
- top="28"
- width="1310">
- <string
- name="DragIndicationImageName"
- value="Accordion_ArrowOpened_Off" />
- <string
- name="SpeakBtnToolTip"
- value="Turns microphone on/off" />
- <string
- name="VoiceControlBtnToolTip"
- value="Shows/hides voice control panel" />
- <layout_stack
- border_size="0"
- clip="false"
- follows="all"
- height="28"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="toolbar_stack"
- orientation="horizontal"
- top="0"
- width="1310">
- <layout_panel
- auto_resize="false"
- user_resize="false"
- min_width="2"
- width="2" />
- <layout_panel
- auto_resize="false"
- layout="topleft"
- max_width="320"
- min_width="214"
- height="28"
- mouse_opaque="false"
- name="chat_bar_layout_panel"
- user_resize="true"
- width="312" >
- <panel
- name="chat_bar"
- filename="panel_nearby_chat_bar.xml"
- left="0"
- height="28"
- width="306"
- top="0"
- mouse_opaque="false"
- follows="left|right"
- />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="35"
- mouse_opaque="false"
- name="speak_panel"
- top_delta="0"
- user_resize="false"
- width="85">
- <button
- follows="left|right"
- height="23"
- layout="topleft"
- label="Speak"
- left="0"
- name="speak_btn"
- tool_tip="Turn your microphone on and off"
- pad_right="30"
- halign="center"
- use_ellipses="true"
- tab_stop="true"
- is_toggle="true"
- image_selected="Speak_Btn_Selected_Press"
- image_unselected="Speak_Btn_Off"
- image_pressed="Speak_Btn_Selected_Press"
- image_pressed_selected="Speak_Btn_Selected_Press"
- top="5"
- width="85">
-
- <commit_callback
- function="ToggleSpeak"
- parameter="f1_help" />
- </button>
- </layout_panel>
-
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="20"
- mouse_opaque="false"
- name="speak_flyout_panel"
- top_delta="0"
- user_resize="false"
- width="26">
- <button
- follows="left|right"
- width="20"
- top="5"
- left="0"
- height="23"
- name="flyout_btn"
- label=""
- tab_stop="false"
- tool_tip="Change your sound preferences"
- is_toggle="true"
- image_disabled="ComboButton_UpOff"
- image_unselected="ComboButton_UpOff"
- image_selected="ComboButton_On"
- image_pressed="ComboButton_UpSelected"
- image_pressed_selected="ComboButton_Selected">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="sound_devices" />
- </button>
-
- </layout_panel>
-
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="gesture_panel"
- top_delta="0"
- user_resize="false"
- width="88">
- <gesture_combo_list
- follows="left|right"
- height="23"
- label="Gesture"
- layout="topleft"
- get_more="false"
- view_all="false"
- left="0"
- name="Gesture"
- tool_tip="Make your avatar do things"
- top="5"
- width="82">
- <combo_button
- pad_right="10"
- can_drag="false"
- use_ellipses="true" />
- <combo_list
- page_lines="17" />
- </gesture_combo_list>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="cam_panel"
- user_resize="false"
- width="86">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="View"
- layout="topleft"
- left="0"
- name="camera_btn"
- tool_tip="Control your camera angle"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="camera" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_width="8"
- name="splitter_panel_1"
- user_resize="false"
- width="8">
- <icon
- follows="left|bottom"
- height="18"
- width="2"
- left="0"
- image_name="Button_Separator"
- name="separator"
- top="7"/>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="83"
- mouse_opaque="false"
- name="destinations_panel"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="Destinations"
- layout="topleft"
- left="0"
- name="destination_btn"
- tool_tip="Travel through Second Life"
- top="5"
- is_toggle="true"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="Destination.show" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="73"
- mouse_opaque="false"
- name="avatar_panel"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="My Avatar"
- layout="topleft"
- left="0"
- name="avatar_btn"
- top="5"
- is_toggle="true"
- tool_tip="Change your appearance"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="Avatar.show" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_width="8"
- name="splitter_panel_2"
- user_resize="false"
- width="8">
- <icon
- follows="left|bottom"
- height="18"
- width="2"
- left="0"
- image_name="Button_Separator"
- name="separator"
- top="7"/>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="people_panel"
- top_delta="0"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="People"
- layout="topleft"
- left="0"
- name="show_people_button"
- tool_tip="Find people in Second Life"
- top="5"
- is_toggle="true"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="ShowSidetrayPanel"
- parameter="panel_people" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="profile_panel"
- top_delta="0"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="Profile"
- layout="topleft"
- left="0"
- name="show_profile_btn"
- tool_tip="View and edit your Profile"
- is_toggle="true"
- top="5"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="ToggleAgentProfile"
- parameter="agent"/>
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="howto_panel"
- top_delta="0"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="How To"
- layout="topleft"
- left="0"
- name="show_help_btn"
- tool_tip="View Second Life help info"
- is_toggle="true"
- top="5"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="ToggleHelp"
- parameter="f1_help" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- follows="left|right"
- height="30"
- layout="topleft"
- min_width="95"
- mouse_opaque="false"
- name="chiclet_list_panel"
- top="0"
- user_resize="false"
- width="189">
- <!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
-as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
- <chiclet_panel
- chiclet_padding="4"
- follows="left|right"
- height="24"
- layout="topleft"
- left="1"
- min_width="95"
- mouse_opaque="false"
- name="chiclet_list"
- top="7"
- width="189">
- <button
- auto_resize="true"
- follows="right"
- height="29"
- image_hover_selected="SegmentedBtn_Left_Over"
- image_hover_unselected="SegmentedBtn_Left_Over"
- image_overlay="Arrow_Small_Left"
- image_pressed="SegmentedBtn_Left_Press"
- image_pressed_selected="SegmentedBtn_Left_Press"
- image_selected="SegmentedBtn_Left_Off"
- image_unselected="SegmentedBtn_Left_Off"
- layout="topleft"
- name="chicklet_left_scroll_button"
- tab_stop="false"
- top="-28"
- visible="false"
- width="7" />
- <button
- auto_resize="true"
- follows="right"
- height="29"
- image_hover_selected="SegmentedBtn_Right_Over"
- image_hover_unselected="SegmentedBtn_Right_Over"
- image_overlay="Arrow_Small_Right"
- image_pressed="SegmentedBtn_Right_Press"
- image_pressed_selected="SegmentedBtn_Right_Press"
- image_selected="SegmentedBtn_Right_Off"
- image_unselected="SegmentedBtn_Right_Off"
- layout="topleft"
- name="chicklet_right_scroll_button"
- tab_stop="false"
- top="-28"
- visible="false"
- width="7" />
- </chiclet_panel>
- </layout_panel>
- <layout_panel auto_resize="false"
- user_resize="false"
- width="4"
- min_width="4"/>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="37"
- name="im_well_panel"
- top="0"
- user_resize="false"
- width="37">
- <chiclet_im_well
- follows="right"
- height="28"
- layout="topleft"
- left="0"
- max_displayed_count="99"
- name="im_well"
- top="0"
- width="35">
- <!--
-Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
-xml attribute Description
-image_unselected "Unlit" - there are no new messages
-image_selected "Unlit" + "Selected" - there are no new messages and the Well is open
-image_pressed "Lit" - there are new messages
-image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open
- -->
- <button
- auto_resize="true"
- follows="right"
- halign="center"
- height="23"
- image_overlay="Unread_IM"
- image_overlay_alignment="center"
- image_pressed="WellButton_Lit"
- image_pressed_selected="WellButton_Lit_Selected"
- image_selected="PushButton_Press"
- label_color="Black"
- left="0"
- name="Unread IM messages"
- tool_tip="Conversations"
- width="34">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="im_well_window" />
- </button>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="37"
- name="notification_well_panel"
- top="0"
- user_resize="false"
- width="37">
- <chiclet_notification
- follows="right"
- height="23"
- layout="topleft"
- left="0"
- max_displayed_count="99"
- name="notification_well"
- top="5"
- width="35">
- <button
- auto_resize="true"
- bottom_pad="3"
- follows="right"
- halign="center"
- height="23"
- image_overlay="Notices_Unread"
- image_overlay_alignment="center"
- image_pressed="WellButton_Lit"
- image_pressed_selected="WellButton_Lit_Selected"
- image_selected="PushButton_Press"
- label_color="Black"
- left="0"
- name="Unread"
- tool_tip="Notifications"
- width="34">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="notification_well_window" />
- </button>
- </chiclet_notification>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- user_resize="false"
- min_width="4"
- name="DUMMY2"
- width="8" />
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml
deleted file mode 100644
index abddc59296..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- follows="all"
- height="238"
- name="panel_im_control_panel"
- width="150">
- <layout_stack
- mouse_opaque="false"
- border_size="0"
- clip="false"
- follows="all"
- height="238"
- layout="topleft"
- left="5"
- name="vertical_stack"
- orientation="vertical"
- top="0"
- width="145">
- <layout_panel
- auto_resize="true"
- follows="top|left"
- height="100"
- layout="topleft"
- min_height="0"
- mouse_opaque="false"
- width="145"
- top="0"
- name="speakers_list_panel"
- user_resize="false">
- <avatar_list
- color="DkGray2"
- follows="all"
- height="100"
- ignore_online_status="true"
- layout="topleft"
- name="speakers_list"
- opaque="false"
- show_info_btn="true"
- show_profile_btn="false"
- show_speaking_indicator="false"
- width="145" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="28"
- layout="topleft"
- min_height="28"
- width="130"
- name="end_call_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="all"
- height="23"
- label="Leave Call"
- name="end_call_btn"
- use_ellipses="true" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="28"
- layout="topleft"
- min_height="28"
- width="130"
- name="voice_ctrls_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="all"
- height="23"
- label="Open Voice Controls"
- name="voice_ctrls_btn"
- use_ellipses="true" />
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
deleted file mode 100644
index 2cb77bcdf3..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- height="300"
- name="panel_im_control_panel"
- width="150">
- <avatar_icon
- follows="left|top"
- height="105"
- left_delta="20"
- name="avatar_icon"
- top="-5"
- width="114"/>
- <layout_stack
- mouse_opaque="false"
- border_size="0"
- clip="false"
- follows="all"
- height="183"
- layout="topleft"
- left="5"
- name="button_stack"
- orientation="vertical"
- top_pad="5"
- width="145">
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="20"
- layout="topleft"
- left="2"
- min_height="20"
- width="140"
- name="view_profile_btn_panel"
- top="0"
- user_resize="false">
- <button
- follows="left|top|right"
- height="23"
- label="Profile"
- name="view_profile_btn"
- top="0"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="add_friend_btn_panel"
- user_resize="false">
- <button
- follows="left|top|right"
- height="23"
- label="Add Friend"
- name="add_friend_btn"
- top="5"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="teleport_btn_panel"
- user_resize="false">
- <button
- auto_resize="false"
- follows="left|top|right"
- height="23"
- label="Teleport"
- name="teleport_btn"
- tool_tip = "Offer to teleport this person"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="call_btn_panel"
- user_resize="false">
- <button
- follows="left|top|right"
- height="23"
- label="Call"
- name="call_btn"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="end_call_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="left|top|right"
- height="23"
- label="End Call"
- name="end_call_btn"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="block_btn_panel"
- user_resize="false">
- <button
- follows="left|top|right"
- height="23"
- label="Block"
- name="block_btn"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="unblock_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="left|top|right"
- height="23"
- label="Unblock"
- name="unblock_btn"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="54"
- width="140"
- name="volume_ctrl_panel"
- visible="false"
- user_resize="false">
- <slider
- follows="top|left"
- height="23"
- increment="0.01"
- left="0"
- max_val="0.95"
- min_val="0.05"
- name="volume_slider"
- show_text="false"
- tool_tip="Call Volume"
- top_pad="32"
- value="0.5"
- width="125" />
- <button
- follows="top|left"
- height="16"
- image_disabled="Audio_Off"
- image_disabled_selected="AudioMute_Off"
- image_hover_selected="AudioMute_Over"
- image_selected="AudioMute_Off"
- image_unselected="Audio_Off"
- is_toggle="true"
- left_pad="0"
- top_delta="4"
- name="mute_btn"
- width="16" />
- </layout_panel>
- <layout_panel
- mouse_opaque="false"
- auto_resize="true"
- follows="top|left"
- height="0"
- layout="topleft"
- min_height="0"
- width="140"
- name="spacer"
- user_resize="false" />
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_login.xml b/indra/newview/skins/minimal/xui/en/panel_login.xml
deleted file mode 100644
index 40d2df78e1..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_login.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
-follows="all"
-height="600"
-layout="topleft"
-left="0"
-name="panel_login"
-focus_root="true"
-top="600"
- width="996">
-<panel.string
- name="create_account_url">
- http://join.secondlife.com/
-</panel.string>
-<string name="reg_in_client_url" translate="false">
- http://secondlife.eniac15.lindenlab.com/reg-in-client/
-</string>
-<panel.string
- name="forgot_password_url">
- http://secondlife.com/account/request.php
-</panel.string>
-<!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp -->
-<web_browser
- tab_stop="false"
-trusted_content="true"
-bg_opaque_color="Black"
-border_visible="false"
-bottom="600"
-follows="all"
-hide_loading="true"
-left="0"
-name="login_html"
-start_url=""
-top="0"
-height="600"
- width="980" />
-<layout_stack
-follows="left|bottom|right"
-name="login_widgets"
-layout="topleft"
-orientation="horizontal"
-top="519"
-width="996"
-height="80">
-<layout_panel
-auto_resize="false"
-follows="left|bottom"
-name="login"
-layout="topleft"
-width="570"
-min_width="570"
-user_resize="false"
-height="80">
-<text
-follows="left|bottom"
-font="SansSerifSmall"
-height="16"
-name="username_text"
-top="20"
-left="20"
-width="150">
-Username:
-</text>
- <combo_box
- allow_text_entry="true"
- follows="left|bottom"
- height="22"
- left_delta="0"
- max_chars="128"
- combo_editor.prevalidate_callback="ascii"
- tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine"
- top_pad="0"
- name="username_combo"
- width="178">
- <combo_box.combo_button
- visible ="false"/>
- <combo_box.drop_down_button
- visible ="false"/>
- </combo_box>
-<text
-follows="left|bottom"
-font="SansSerifSmall"
-height="15"
-left_pad="-19"
-name="password_text"
-top="20"
- width="150">
- Password:
-</text>
-<line_editor
-follows="left|bottom"
- height="22"
-left_delta="0"
- max_length_bytes="16"
-name="password_edit"
-is_password="true"
-select_on_focus="true"
- top_pad="0"
- width="135" />
- <check_box
-control_name="RememberPassword"
-follows="left|bottom"
-font="SansSerifSmall"
-height="16"
-label="Remember password"
- top_pad="3"
- name="remember_check"
- width="135" />
-<button
- follows="left|bottom"
- height="23"
- image_unselected="PushButton_On"
- image_selected="PushButton_On_Selected"
- label="Log In"
- label_color="White"
- layout="topleft"
- left_pad="10"
- name="connect_btn"
- top="35"
- width="90" />
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- height="15"
- left_pad="10"
- name="mode_selection_text"
- top="20"
- width="130">
- Mode:
- </text>
- <combo_box
- follows="left|bottom"
- height="23"
- max_chars="128"
- tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
- top_pad="0"
- name="mode_combo"
- width="110">
- <combo_box.item
- label="Basic"
- name="Basic"
- value="settings_minimal.xml" />
- <combo_box.item
- label="Advanced"
- name="Advanced"
- value="" />
- </combo_box>
-</layout_panel>
-<layout_panel
-tab_stop="false"
-follows="right|bottom"
-name="links"
-width="205"
-min_width="205"
-user_resize="false"
-height="80">
- <text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-top="12"
-right="-10"
-name="create_new_account_text"
- width="200">
- Sign up
- </text>
-<text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-name="forgot_password_text"
-top_pad="12"
-right="-10"
- width="200">
- Forgot your username or password?
-</text>
-<text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-name="login_help"
-top_pad="2"
-right="-10"
- width="200">
- Need help logging in? </text>
-<!-- <text
- follows="right|bottom"
- font="SansSerifSmall"
- halign="right"
- height="28"
- top_pad="2"
- name="channel_text"
- width="180"
- word_wrap="true">
- [VERSION]
- </text>-->
- </layout_panel>
-</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml
deleted file mode 100644
index 73a8564274..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_color="MouseGray"
- follows="left|top|right"
- height="26"
- layout="topleft"
- name="navigation_bar"
- chrome="true"
- width="600">
- <icon
- follows="all"
- image_name="NavBar_BG_NoFav_Bevel"
- mouse_opaque="false"
- name="bg_icon_no_fav_bevel"
- scale_image="true"
- visible="true"
- left="0"
- top="0"
- height="26"
- width="600"/>
- <panel
- background_visible="false"
- follows="left|top|right"
- top="3"
- height="26"
- layout="topleft"
- name="navigation_panel"
- width="600">
- <pull_button
-follows="left|top"
-direction="down"
-height="23"
-image_overlay="Arrow_Left_Off"
-image_bottom_pad="1"
-layout="topleft"
-left="10"
-name="back_btn"
-tool_tip="Go back to previous location"
-top="2"
-width="31" />
- <pull_button
- follows="left|top"
- direction="down"
- height="23"
- image_overlay="Arrow_Right_Off"
- image_bottom_pad="1"
- layout="topleft"
- left_pad="0"
- name="forward_btn"
- tool_tip="Go forward one location"
- top_delta="0"
- width="31" />
- <location_input
- follows="left|right|top"
- halign="right"
- height="23"
- label="Location"
- layout="topleft"
- left_pad="7"
- max_chars="254"
- mouse_opaque="false"
- name="location_combo"
- top_delta="0"
- width="325">
- </location_input>
- <icon follows="right"
- height="20"
- width="2"
- left_pad="2"
- image_name="Button_Separator"
- name="separator"
- top="2"/>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_people.xml b/indra/newview/skins/minimal/xui/en/panel_people.xml
deleted file mode 100644
index 4739f86e95..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_people.xml
+++ /dev/null
@@ -1,571 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- Side tray panel -->
-<panel
- default_tab_group="1"
- follows="all"
- height="449"
- label="People"
- layout="topleft"
- left="0"
- min_height="350"
- name="people_panel"
- top="0"
- width="333">
- <string
- name="no_recent_people"
- value="No recent people. Looking for people to hang out with? Try the Destinations button below." />
- <string
- name="no_filtered_recent_people"
- value="No recent people with that name." />
- <string
- name="no_one_near"
- value="No one nearby. Looking for people to hang out with? Try the Destinations button below." />
- <string
- name="no_one_filtered_near"
- value="No one nearby with that name." />
- <string
- name="no_friends_online"
- value="No friends online" />
- <string
- name="no_friends"
- value="No friends" />
- <string
- name="no_friends_msg">
- Right-click on a Resident to add them as a friend.
-Looking for people to hang out with? Try the Destinations button below.
- </string>
- <string
- name="no_filtered_friends_msg">
- Didn't find what you're looking for? Try the Destinations button below..
- </string>
- <string
- name="people_filter_label"
- value="Filter People" />
- <string
- name="groups_filter_label"
- value="Filter Groups" />
- <!--
- *WORKAROUND: for group_list.no_items_msg & group_list.no_filtered_items_msg attributes.
- They are not defined as translatable in VLT. See EXT-5931
- -->
- <string
- name="no_filtered_groups_msg"
- value="Didn't find what you're looking for? Try [secondlife:///app/search/groups/[SEARCH_TERM] Search]." />
- <string
- name="no_groups_msg"
- value="Looking for Groups to join? Try [secondlife:///app/search/groups Search]." />
- <string
- name="MiniMapToolTipMsg"
- value="[REGION](Double-click to open Map, shift-drag to pan)"/>
- <string
- name="AltMiniMapToolTipMsg"
- value="[REGION](Double-click to teleport, shift-drag to pan)"/>
- <filter_editor
- follows="left|top|right"
- height="23"
- layout="topleft"
- left="10"
- label="Filter"
- max_length="300"
- name="filter_input"
- text_color="Black"
- text_pad_left="10"
- top="3"
- width="303" />
- <tab_container
- follows="all"
- height="383"
- layout="topleft"
- left="5"
- name="tabs"
- tab_group="1"
- tab_min_width="70"
- tab_height="30"
- tab_position="top"
- top_pad="10"
- halign="center"
- width="317">
- <panel
- background_opaque="true"
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- follows="all"
- height="383"
- label="NEARBY"
- layout="topleft"
- left="0"
- help_topic="people_nearby_tab"
- name="nearby_panel"
- top="0"
- width="313">
- <net_map
- bg_color="NetMapBackgroundColor"
- follows="top|left|right"
- layout="topleft"
- left="3"
- mouse_opaque="false"
- name="Net Map"
- width="307"
- height="140"
- top="0"/>
- <avatar_list
- allow_select="true"
- follows="top|left|bottom|right"
- height="216"
- ignore_online_status="true"
- layout="topleft"
- left="3"
- multi_select="true"
- name="avatar_list"
- top="145"
- width="307" />
- <panel
- background_visible="true"
- follows="left|right|bottom"
- height="27"
- label="bottom_panel"
- layout="topleft"
- left="3"
- name="bottom_panel"
- top_pad="0"
- width="313">
- <icon
- follows="bottom|left|right"
- height="25"
- image_name="Toolbar_Right_Off"
- layout="topleft"
- left_pad="1"
- name="dummy_icon"
- width="241"
- />
- </panel>
- </panel>
- <panel
- background_opaque="true"
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- follows="all"
- height="383"
- label="MY FRIENDS"
- layout="topleft"
- left="0"
- help_topic="people_friends_tab"
- name="friends_panel"
- top="0"
- width="313">
- <accordion
- background_visible="true"
- bg_alpha_color="DkGray2"
- bg_opaque_color="DkGray2"
- follows="all"
- height="356"
- layout="topleft"
- left="3"
- name="friends_accordion"
- top="0"
- width="307">
- <accordion_tab
- layout="topleft"
- height="172"
- min_height="150"
- name="tab_online"
- title="Online">
- <avatar_list
- allow_select="true"
- follows="all"
- height="172"
- layout="topleft"
- left="0"
- multi_select="true"
- name="avatars_online"
- show_permissions_granted="true"
- top="0"
- width="307" />
- </accordion_tab>
- <accordion_tab
- layout="topleft"
- height="173"
- name="tab_all"
- title="All">
- <avatar_list
- allow_select="true"
- follows="all"
- height="173"
- layout="topleft"
- left="0"
- multi_select="true"
- name="avatars_all"
- show_permissions_granted="true"
- top="0"
- width="307" />
- </accordion_tab>
- </accordion>
- <panel
- background_visible="true"
- follows="left|right|bottom"
- height="27"
- label="bottom_panel"
- layout="topleft"
- left="3"
- name="bottom_panel"
- top_pad="0"
- width="313">
-
- <layout_stack
- animate="false"
- border_size="0"
- follows="left|right|bottom"
- height="25"
- layout="topleft"
- orientation="horizontal"
- top_pad="1"
- left="0"
- name="bottom_panel"
- width="305">
- <layout_panel
- auto_resize="true"
- height="25"
- layout="topleft"
- name="dummy_panel"
- user_resize="false"
- width="212">
- <icon
- follows="bottom|left|right"
- height="25"
- image_name="Toolbar_Middle_Off"
- layout="topleft"
- left="0"
- top="0"
- name="dummy_icon"
- width="211" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- height="25"
- layout="topleft"
- name="trash_btn_panel"
- user_resize="false"
- width="31">
- <dnd_button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Right_Over"
- image_overlay="TrashItem_Off"
- image_selected="Toolbar_Right_Selected"
- image_unselected="Toolbar_Right_Off"
- left="0"
- layout="topleft"
- name="del_btn"
- tool_tip="Remove selected person from your Friends list"
- top="0"
- width="31"/>
- </layout_panel>
- </layout_stack><!--
-
- <button
- follows="bottom|left"
- tool_tip="Options"
- height="25"
- image_hover_unselected="Toolbar_Left_Over"
- image_overlay="OptionsMenu_Off"
- image_selected="Toolbar_Left_Selected"
- image_unselected="Toolbar_Left_Off"
- layout="topleft"
- left="0"
- name="friends_viewsort_btn"
- top="1"
- width="31" />
- <button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Middle_Over"
- image_overlay="AddItem_Off"
- image_selected="Toolbar_Middle_Selected"
- image_unselected="Toolbar_Middle_Off"
- layout="topleft"
- left_pad="1"
- name="add_btn"
- tool_tip="Offer friendship to a Resident"
- width="31" />
- <icon
- follows="bottom|left|right"
- height="25"
- image_name="Toolbar_Middle_Off"
- layout="topleft"
- left_pad="1"
- name="dummy_icon"
- width="209"
- />
- <button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Right_Over"
- image_overlay="TrashItem_Off"
- image_selected="Toolbar_Right_Selected"
- image_unselected="Toolbar_Right_Off"
- layout="topleft"
- left_pad="1"
- name="del_btn"
- tool_tip="Remove selected person from your Friends list"
- width="31" />
- --></panel>
- <text
- follows="all"
- height="450"
- left="13"
- name="no_friends_help_text"
- top="10"
- width="293"
- wrap="true" />
- </panel>
- <panel
- background_opaque="true"
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- follows="all"
- height="383"
- label="RECENT"
- layout="topleft"
- left="0"
- help_topic="people_recent_tab"
- name="recent_panel"
- top="0"
- width="313">
- <avatar_list
- allow_select="true"
- follows="all"
- height="356"
- layout="topleft"
- left="3"
- multi_select="true"
- name="avatar_list"
- show_last_interaction_time="true"
- top="0"
- width="307" />
- <panel
- background_visible="true"
- follows="left|right|bottom"
- height="27"
- label="bottom_panel"
- layout="topleft"
- left="0"
- name="bottom_panel"
- top_pad="0"
- width="313">
- <button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Middle_Over"
- image_overlay="AddItem_Off"
- image_selected="Toolbar_Middle_Selected"
- image_unselected="Toolbar_Middle_Off"
- layout="topleft"
- left_pad="1"
- name="add_friend_btn"
- tool_tip="Add selected Resident to your friends List"
- width="31">
- <commit_callback
- function="People.addFriend" />
- </button>
- <icon
- follows="bottom|left|right"
- height="25"
- image_name="Toolbar_Right_Off"
- layout="topleft"
- left_pad="1"
- name="dummy_icon"
- width="241"
- />
- </panel>
- </panel>
- </tab_container>
- <panel
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- left="8"
- top_pad="4"
- name="button_bar"
- width="313">
-
-<!--********************************Profile; IM; Call, Share, Teleport********************************-->
- <layout_stack
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- name="bottom_bar_ls"
- left="0"
- orientation="horizontal"
- top_pad="0"
- width="313">
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left="0"
- name="view_profile_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="68">
- <button
- follows="bottom|left|right"
- height="23"
- label="Profile"
- layout="topleft"
- left="1"
- name="view_profile_btn"
- tool_tip="Show picture, groups, and other Residents information"
- top="0"
- width="67" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="im_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="41">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="IM"
- layout="topleft"
- name="im_btn"
- tool_tip="Open instant message session"
- top="0"
- width="40" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="call_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="52">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Call"
- layout="topleft"
- name="call_btn"
- tool_tip="Call this Resident"
- top="0"
- width="51" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="teleport_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="77">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Teleport"
- layout="topleft"
- name="teleport_btn"
- tool_tip="Offer teleport"
- top="0"
- width="76" />
- </layout_panel>
- </layout_stack>
-
-<!--********************************Group Profile; Group Chat; Group Call buttons************************-->
- <layout_stack
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- mouse_opaque="false"
- name="bottom_bar_ls1"
- left="0"
- orientation="horizontal"
- top="0"
- width="313">
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left="0"
- mouse_opaque="false"
- name="group_info_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="108">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Group Profile"
- layout="topleft"
- mouse_opaque="false"
- name="group_info_btn"
- tool_tip="Show group information"
- top="0"
- width="107" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- mouse_opaque="false"
- name="chat_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="101">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Group Chat"
- layout="topleft"
- mouse_opaque="false"
- name="chat_btn"
- tool_tip="Open chat session"
- top="0"
- width="100" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- mouse_opaque="false"
- name="group_call_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="96">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Group Call"
- layout="topleft"
- mouse_opaque="false"
- name="group_call_btn"
- tool_tip="Call this group"
- top="0"
- width="95" />
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 9f2f41ba31..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bottom="0"
- follows="left|top|right"
- height="5"
- width="333"
- layout="topleft"
- left="0"
- name="sidetray_tab_panel">
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_status_bar.xml b/indra/newview/skins/minimal/xui/en/panel_status_bar.xml
deleted file mode 100644
index fdd6b5d6ec..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_status_bar.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_color="MouseGray"
- chrome="true"
- follows="top|right"
- height="30"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="status"
- top="19"
- tab_stop="false"
- width="185">
- <panel.string
- name="packet_loss_tooltip">
- Packet Loss
- </panel.string>
- <panel.string
- name="bandwidth_tooltip">
- Bandwidth
- </panel.string>
- <panel.string
- name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string
- name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string
- name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <combo_box
- follows="right|top"
- left_pad="5"
- drop_down_button.pad_left="10"
- left="0"
- top="5"
- pad_left="5"
- width="120"
- height="23"
- name="mode_combo"
- tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
- >
- <combo_box.item
- label="Basic Mode"
- name="Basic"
- value="settings_minimal.xml" />
- <combo_box.item
- label="Advanced Mode"
- name="Advanced"
- value="" />
- </combo_box>
- <button
- follows="right|top"
- height="16"
- image_selected="Play_Off"
- image_unselected="Pause_Off"
- image_pressed="Pause_Press"
- image_pressed_selected="Play_Press"
- is_toggle="true"
- left_pad="5"
- top="7"
- name="media_toggle_btn"
- tool_tip="Start/Stop All Media (Music, Video, Web pages)"
- width="16" >
- </button>
- <button
- follows="right|top"
- height="16"
- image_selected="AudioMute_Off"
- image_pressed="Audio_Press"
- image_unselected="Audio_Off"
- is_toggle="true"
- left_pad="5"
- top="8"
- name="volume_btn"
- tool_tip="Global Volume Control"
- width="16" />
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml
deleted file mode 100644
index 36ad39abe8..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_image="Volume_Background"
- bg_alpha_image="Volume_Background"
- border_visible="false"
- border="false"
- chrome="true"
- follows="bottom"
- height="150"
- layout="topleft"
- name="volumepulldown_floater"
- width="32">
- <slider
- control_name="AudioLevelMaster"
- follows="left|top"
- left="0"
- top="1"
- orientation="vertical"
- height="140"
- increment="0.05"
- initial_value="0.5"
- layout="topleft"
- name="mastervolume"
- show_text="false"
- slider_label.halign="right"
- top_pad="2"
- volume="true">
- <slider.commit_callback
- function="Vol.setControlFalse"
- parameter="MuteAudio" />
- </slider>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
deleted file mode 100644
index ba148cf421..0000000000
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!--
-*TODO: Replace hardcoded buttons width/height with getting this info from the button images.
- Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images.
--->
-<location_input font="SansSerifSmall"
- maturity_help_topic="maturity_rating"
- add_landmark_hpad="0"
- icon_hpad="2"
- allow_text_entry="true"
- list_position="below"
- show_text_as_tentative="false"
- max_chars="20"
- follows="left|top"
- allow_new_values="true"
- >
- <!-- *NOTE: Tooltips are in strings.xml so they can be localized.
- See LocationCtrlAddLandmarkTooltip etc. -->
- <info_button
- name="Place Information"
- width="0"
- height="0"
- visible="false"
- left="6"
- top="20"
- follows="left|top"
- hover_glow_amount="0.15" />
- <add_landmark_button name="Add Landmark"
- hover_glow_amount="0.15"
- width="0"
- height="0"
- visible="false"
- follows="right|top"
- scale_image="false"
- top="19"
- left="-3" />
- <maturity_button
- name="maturity_icon"
- width="0"
- height="0"
- visible="false"
- top="20"
- follows="left|top"
- />
- <for_sale_button
- name="for_sale_btn"
- width="0"
- height="0"
- visible="false"
- follows="right|top"
- scale_image="false"
- top="21"
- />
- <voice_icon
- enabled="true"
- name="voice_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <fly_icon
- name="fly_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <push_icon
- name="push_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <build_icon
- name="build_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <scripts_icon
- name="scripts_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <damage_icon
- name="damage_icon"
- width="0"
- height="0"
- visible="false"
- top="19"
- left="2"
- follows="right|top"
- />
- <!-- Default text color is invisible on top of nav bar background -->
- <damage_text
- name="damage_text"
- width="0"
- height="0"
- max_length="0"
- top="17"
- follows="right|top"
- halign="right"
- font="SansSerifSmall"
- text_color="TextFgColor"
- />
- <see_avatars_icon
- name="see_avatars_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <combo_button
- name="Location History"
- label=""
- pad_right="0"/>
- <combo_list
- bg_writeable_color="MenuDefaultBgColor"
- page_lines="10"
- scroll_bar_bg_visible="true" />
- <combo_editor name="Combo Text Entry"
- text_pad_left="4"
- select_on_focus="false"
- font="SansSerifSmall"
- bevel_style="none"
- border_style="line"
- border.border_thickness="0" />
-</location_input>
diff --git a/indra/newview/skins/minimal/xui/es/floater_camera.xml b/indra/newview/skins/minimal/xui/es/floater_camera.xml
deleted file mode 100644
index 87177e285c..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Girar la cámara alrededor de lo enfocado
- </floater.string>
- <floater.string name="zoom_tooltip">
- Hacer zoom con la cámara en lo enfocado
- </floater.string>
- <floater.string name="move_tooltip">
- Mover la cámara arriba y abajo, izquierda y derecha
- </floater.string>
- <floater.string name="camera_modes_title">
- Modos de cámara
- </floater.string>
- <floater.string name="pan_mode_title">
- Orbital - Zoom - Panorámica
- </floater.string>
- <floater.string name="presets_mode_title">
- Vistas predefinidas
- </floater.string>
- <floater.string name="free_mode_title">
- Centrar el objeto
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- De frente
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Vista lateral
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Desde detrás
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Vista de objeto
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Vista subjetiva
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Hacer zoom con la cámara en lo enfocado">
- <joystick_rotate name="cam_rotate_stick" tool_tip="La cámara gira alrededor del punto de vista"/>
- <slider_bar name="zoom_slider" tool_tip="Hacer zoom en lo enfocado"/>
- <joystick_track name="cam_track_stick" tool_tip="Mueve la cámara arriba y abajo, a izquierda y derecha"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Vistas predefinidas"/>
- <button label="" name="pan_btn" tool_tip="Orbital - Zoom - Panorámica"/>
- <button label="" name="avatarview_btn" tool_tip="Modos de cámara"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_help_browser.xml b/indra/newview/skins/minimal/xui/es/floater_help_browser.xml
deleted file mode 100644
index 67590ebfbb..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="INDICACIONES">
- <floater.string name="loading_text">
- Cargando...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_media_browser.xml b/indra/newview/skins/minimal/xui/es/floater_media_browser.xml
deleted file mode 100644
index a7086c2d6d..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="EXPLORADOR DE MEDIA">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Atrás" name="back"/>
- <button label="Adelante" name="forward"/>
- <button label="Recargar" name="reload"/>
- <button label="Ir" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="rebobinar" name="rewind"/>
- <button label="parar" name="stop"/>
- <button label="avanzar" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Enviar a la parcela la página actual" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Abrir en mi propio navegador" name="open_browser"/>
- <check_box label="Abrir siempre en mi propio navegador" name="open_always"/>
- <button label="Cerrar" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml
deleted file mode 100644
index 1fee9ab056..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT">
- <check_box label="Traducir chat (mediante Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_web_content.xml b/indra/newview/skins/minimal/xui/es/floater_web_content.xml
deleted file mode 100644
index b012809679..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Navegar hacia atrás"/>
- <button name="forward" tool_tip="Navegar hacia adelante"/>
- <button name="stop" tool_tip="Parar navegación"/>
- <button name="reload" tool_tip="Recargar página"/>
- <combo_box name="address" tool_tip="Escribe la URL aquí"/>
- <icon name="media_secure_lock_flag" tool_tip="Navegación segura"/>
- <button name="popexternal" tool_tip="Abrir la URL actual en tu explorador de escritorio"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/inspect_avatar.xml b/indra/newview/skins/minimal/xui/es/inspect_avatar.xml
deleted file mode 100644
index 1d70fa6a90..0000000000
--- a/indra/newview/skins/minimal/xui/es/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_details">
- Ésta es mi descripción de Second Life que, por cierto, me encanta. Pero, por lo que sea, me he enrollado más de la cuenta y la descripción es larguísima.
- </text>
- <slider name="volume_slider" tool_tip="Volumen de la voz" value="0.5"/>
- <button label="Añadir como amigo" name="add_friend_btn"/>
- <button label="MI" name="im_btn"/>
- <button label="Perfil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Desactivar la voz" name="disable_voice"/>
- <button label="Activar la voz" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/inspect_object.xml b/indra/newview/skins/minimal/xui/es/inspect_object.xml
deleted file mode 100644
index d608b4a0f7..0000000000
--- a/indra/newview/skins/minimal/xui/es/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Por [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Por [CREATOR]
-Propietario [OWNER]
- </string>
- <string name="Price">
- [AMOUNT] L$
- </string>
- <string name="PriceFree">
- ¡Gratis!
- </string>
- <string name="Touch">
- Tocar
- </string>
- <string name="Sit">
- Sentarme
- </string>
- <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
- <text name="price_text">
- 30.000 L$
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <button label="Comprar" name="buy_btn"/>
- <button label="Pagar" name="pay_btn"/>
- <button label="Coger una copia" name="take_free_copy_btn"/>
- <button label="Tocar" name="touch_btn"/>
- <button label="Sentarme" name="sit_btn"/>
- <button label="Abrir" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Navegación segura"/>
- <button label="Más" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml
deleted file mode 100644
index f2367c72a3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Ordenar por los más recientes" name="sort_by_most_recent"/>
- <menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
- <menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml
deleted file mode 100644
index b8ae93afd2..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Ver el perfil" name="Profile..."/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="MI" name="Send IM..."/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Invitar al grupo" name="Invite..."/>
- <menu_item_call label="Ignorar" name="Avatar Mute"/>
- <menu_item_call label="Denunciar" name="abuse"/>
- <menu_item_call label="Congelar" name="Freeze..."/>
- <menu_item_call label="Expulsar" name="Eject..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
- <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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml
deleted file mode 100644
index ab76c92d65..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Tocar" name="Attachment Object Touch"/>
- <menu_item_call label="Editar" name="Edit..."/>
- <menu_item_call label="Quitar" name="Detach"/>
- <menu_item_call label="Sentarte" name="Sit Down Here"/>
- <menu_item_call label="Levantarme" name="Stand Up"/>
- <menu_item_call label="Cambiar vestuario" name="Change Outfit"/>
- <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
- <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
- <menu_item_call label="Mis amigos" name="Friends..."/>
- <menu_item_call label="Mis grupos" name="Groups..."/>
- <menu_item_call label="Mi perfil" name="Profile..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
- <menu_item_call label="Soltar" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml
deleted file mode 100644
index fe7331a108..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Ver el perfil" name="Show Profile"/>
- <menu_item_call label="Enviar un MI..." name="Send IM"/>
- <menu_item_call label="Añadir como amigo..." name="Add Friend"/>
- <menu_item_call label="Quitar de los amigos..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml
deleted file mode 100644
index 5fb3e51575..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Ver el perfil" name="Profile..."/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="MI" name="Send IM..."/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Invitar al grupo" name="Invite..."/>
- <menu_item_call label="Ignorar" name="Avatar Mute"/>
- <menu_item_call label="Denunciar" name="abuse"/>
- <menu_item_call label="Congelar" name="Freeze..."/>
- <menu_item_call label="Expulsar" name="Eject..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
- <menu_item_call label="Acercar el zoom" name="Zoom In"/>
- <menu_item_call label="Pagar" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml
deleted file mode 100644
index 50f8384b0f..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Sentarte" name="Sit Down Here"/>
- <menu_item_call label="Levantarme" name="Stand Up"/>
- <context_menu label="Quitarme" name="Take Off &gt;">
- <context_menu label="Ropas" name="Clothes &gt;">
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Pantalón" name="Pants"/>
- <menu_item_call label="Falda" name="Skirt"/>
- <menu_item_call label="Zapatos" name="Shoes"/>
- <menu_item_call label="Calcetines" name="Socks"/>
- <menu_item_call label="Chaqueta" name="Jacket"/>
- <menu_item_call label="Guantes" name="Gloves"/>
- <menu_item_call label="Camiseta" name="Self Undershirt"/>
- <menu_item_call label="Ropa interior" name="Self Underpants"/>
- <menu_item_call label="Tatuaje" name="Self Tattoo"/>
- <menu_item_call label="Alfa" name="Self Alpha"/>
- <menu_item_call label="Toda la ropa" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Quitar" name="Object Detach"/>
- <menu_item_call label="Quitarse todo" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Cambiar vestuario" name="Chenge Outfit"/>
- <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
- <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
- <menu_item_call label="Mis amigos" name="Friends..."/>
- <menu_item_call label="Mis grupos" name="Groups..."/>
- <menu_item_call label="Mi perfil" name="Profile..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml
deleted file mode 100644
index 62683f3076..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Botón Gestos" name="ShowGestureButton"/>
- <menu_item_check label="Botón Moverse" name="ShowMoveButton"/>
- <menu_item_check label="Botón Vista" name="ShowCameraButton"/>
- <menu_item_check label="Botón Foto" name="ShowSnapshotButton"/>
- <menu_item_check label="Botón Barra lateral" name="ShowSidebarButton"/>
- <menu_item_check label="Botón Construir" name="ShowBuildButton"/>
- <menu_item_check label="Botón Buscar" name="ShowSearchButton"/>
- <menu_item_check label="Botón Mapa" name="ShowWorldMapButton"/>
- <menu_item_check label="Botón Minimapa" name="ShowMiniMapButton"/>
- <menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Pegar" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Borrar" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Seleccionar todo" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml
deleted file mode 100644
index 7541530601..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Quitar" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml
deleted file mode 100644
index 56b95bdc3b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Reemplazar" name="replace"/>
- <menu_item_call label="Editar" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml
deleted file mode 100644
index 3c0c588284..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Quitarme" name="take_off"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Reemplazar" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml
deleted file mode 100644
index ff8ad0977a..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Ropas nuevas" name="COF.Gear.New_Clothes"/>
- <menu label="Nuevas partes del cuerpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_edit.xml b/indra/newview/skins/minimal/xui/es/menu_edit.xml
deleted file mode 100644
index 96fc9d8881..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Editar" name="Edit">
- <menu_item_call label="Deshacer" name="Undo"/>
- <menu_item_call label="Rehacer" name="Redo"/>
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Pegar" name="Paste"/>
- <menu_item_call label="Borrar" name="Delete"/>
- <menu_item_call label="Duplicar" name="Duplicate"/>
- <menu_item_call label="Seleccionar todo" name="Select All"/>
- <menu_item_call label="Deseleccionar" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_favorites.xml b/indra/newview/skins/minimal/xui/es/menu_favorites.xml
deleted file mode 100644
index 85210d5c49..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportar" name="Teleport To Landmark"/>
- <menu_item_call label="Ver/Editar el hito" name="Landmark Open"/>
- <menu_item_call label="Copiar la SLurl" name="Copy slurl"/>
- <menu_item_call label="Mostrar en el mapa" name="Show On Map"/>
- <menu_item_call label="Copiar" name="Landmark Copy"/>
- <menu_item_call label="Pegar" name="Landmark Paste"/>
- <menu_item_call label="Borrar" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml
deleted file mode 100644
index 24706eb2c8..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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="Copiar" name="copy_gesture"/>
- <menu_item_call label="Pegar" name="paste"/>
- <menu_item_call label="Copiar la UUID" name="copy_uuid"/>
- <menu_item_call label="Añadir al vestuario actual" name="save_to_outfit"/>
- <menu_item_call label="Editar" name="edit_gesture"/>
- <menu_item_call label="Inspeccionar" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_group_plus.xml b/indra/newview/skins/minimal/xui/es/menu_group_plus.xml
deleted file mode 100644
index 6b26ba42c4..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Entrar al grupo..." name="item_join"/>
- <menu_item_call label="Grupo nuevo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml
deleted file mode 100644
index 22a1873234..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Mostrar la barra de navegación" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Mostrar la barra de favoritos" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Mostrar mini-barra de ubicación" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml
deleted file mode 100644
index c8f6c217cc..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Cerrar todo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml
deleted file mode 100644
index e11e9bdc58..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml
deleted file mode 100644
index a5e60ea40b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Información del grupo" name="Show Profile"/>
- <menu_item_call label="Mostrar la sesión" name="Chat"/>
- <menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml
deleted file mode 100644
index 492801026c..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Ver el perfil" name="Show Profile"/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="Mostrar la sesión" name="Send IM"/>
- <menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 728637de78..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Ver el perfil" name="view_profile"/>
- <menu_item_call label="Añadir como amigo" name="add_friend"/>
- <menu_item_call label="MI" name="im"/>
- <menu_item_call label="Llamar" name="call"/>
- <menu_item_call label="Teleportar" name="teleport"/>
- <menu_item_call label="Ignorar" name="block"/>
- <menu_item_call label="Designorar" name="unblock"/>
- <menu_item_call label="Denunciar" name="report"/>
- <menu_item_call label="Congelar" name="freeze"/>
- <menu_item_call label="Expulsar" name="eject"/>
- <menu_item_call label="Expulsar" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Depurar las texturas" name="debug"/>
- <menu_item_call label="Encontrar en el mapa" name="find_on_map"/>
- <menu_item_call label="Acercar el zoom" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml
deleted file mode 100644
index bcdc25894f..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Tocar" name="touch"/>
- <menu_item_call label="Sentarse" name="sit"/>
- <menu_item_call label="Pagar" name="pay"/>
- <menu_item_call label="Comprar" name="buy"/>
- <menu_item_call label="Tomar" name="take"/>
- <menu_item_call label="Coger una copia" name="take_copy"/>
- <menu_item_call label="Abrir" name="open"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Ponerse" name="wear"/>
- <menu_item_call label="Añadir" name="add"/>
- <menu_item_call label="Denunciar" name="report"/>
- <menu_item_call label="Ignorar" name="block"/>
- <menu_item_call label="Acercar el zoom" name="zoom_in"/>
- <menu_item_call label="Quitar" name="remove"/>
- <menu_item_call label="Más información" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
deleted file mode 100644
index 1a49efb9d0..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
- <menu_item_call label="Sentarme" name="Sit Down Here"/>
- <menu_item_call label="Levantarme" name="Stand Up"/>
- <menu_item_call label="Mis amigos" name="Friends..."/>
- <menu_item_call label="Mi perfil" name="Profile..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 20d99afde1..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Cerrar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory.xml b/indra/newview/skins/minimal/xui/es/menu_inventory.xml
deleted file mode 100644
index 94ee162bbc..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Comprar" name="Task Buy"/>
- <menu_item_call label="Abrir" name="Task Open"/>
- <menu_item_call label="Ejecutar" name="Task Play"/>
- <menu_item_call label="Propiedades" name="Task Properties"/>
- <menu_item_call label="Renombrar" name="Task Rename"/>
- <menu_item_call label="Borrar" name="Task Remove"/>
- <menu_item_call label="Vaciar la papelera" name="Empty Trash"/>
- <menu_item_call label="Vaciar Objetos Perdidos" name="Empty Lost And Found"/>
- <menu_item_call label="Carpeta nueva" name="New Folder"/>
- <menu_item_call label="Script nuevo" name="New Script"/>
- <menu_item_call label="Nota nueva" name="New Note"/>
- <menu_item_call label="Gesto nuevo" name="New Gesture"/>
- <menu label="Ropas nuevas" name="New Clothes">
- <menu_item_call label="Camisa nueva" name="New Shirt"/>
- <menu_item_call label="Pantalones nuevos" name="New Pants"/>
- <menu_item_call label="Zapatos nuevos" name="New Shoes"/>
- <menu_item_call label="Calcetines nuevos" name="New Socks"/>
- <menu_item_call label="Chaqueta nueva" name="New Jacket"/>
- <menu_item_call label="Falda nueva" name="New Skirt"/>
- <menu_item_call label="Guantes nuevos" name="New Gloves"/>
- <menu_item_call label="Camiseta nueva" name="New Undershirt"/>
- <menu_item_call label="Ropa interior nueva" name="New Underpants"/>
- <menu_item_call label="Nueva capa Alpha" name="New Alpha Mask"/>
- <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
- </menu>
- <menu label="Nuevas partes del cuerpo" name="New Body Parts">
- <menu_item_call label="Forma nueva" name="New Shape"/>
- <menu_item_call label="Piel nueva" name="New Skin"/>
- <menu_item_call label="Pelo nuevo" name="New Hair"/>
- <menu_item_call label="Ojos nuevos" name="New Eyes"/>
- </menu>
- <menu label="Change Type" name="Change Type">
- <menu_item_call label="Por defecto" name="Default"/>
- <menu_item_call label="Guantes" name="Gloves"/>
- <menu_item_call label="Chaqueta" name="Jacket"/>
- <menu_item_call label="Pantalón" name="Pants"/>
- <menu_item_call label="Forma" name="Shape"/>
- <menu_item_call label="Zapatos" name="Shoes"/>
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Falda" name="Skirt"/>
- <menu_item_call label="Ropa interior" name="Underpants"/>
- <menu_item_call label="Camiseta" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleportar" name="Landmark Open"/>
- <menu_item_call label="Abrir" name="Animation Open"/>
- <menu_item_call label="Abrir" name="Sound Open"/>
- <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="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"/>
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Abrir original" name="Open Original"/>
- <menu_item_call label="Propiedades" name="Properties"/>
- <menu_item_call label="Renombrar" name="Rename"/>
- <menu_item_call label="Copiar la UUID" name="Copy Asset UUID"/>
- <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"/>
- <menu_item_call label="Escuchar" name="Sound Play"/>
- <menu_item_call label="Acerca del hito" name="About Landmark"/>
- <menu_item_call label="Escuchar en el mundo" name="Animation Play"/>
- <menu_item_call label="Ejecutarla para usted" name="Animation Audition"/>
- <menu_item_call label="Enviar un mensaje instantáneo" name="Send Instant Message"/>
- <menu_item_call label="Ofrecer teleporte..." name="Offer Teleport..."/>
- <menu_item_call label="Empezar multiconferencia" name="Conference Chat"/>
- <menu_item_call label="Activar" name="Activate"/>
- <menu_item_call label="Desactivar" name="Deactivate"/>
- <menu_item_call label="Guardar como" name="Save As"/>
- <menu_item_call label="Quitarse" name="Detach From Yourself"/>
- <menu_item_call label="Ponerme" name="Wearable And Object Wear"/>
- <menu label="Anexar a" name="Attach To"/>
- <menu label="Anexar como HUD" name="Attach To HUD"/>
- <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="--sin opciones--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml
deleted file mode 100644
index ba106e8335..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Subir" name="upload">
- <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/>
- <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/>
- <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/>
- <menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/>
- <menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/>
- </menu>
- <menu_item_call label="Carpeta nueva" name="New Folder"/>
- <menu_item_call label="Script nuevo" name="New Script"/>
- <menu_item_call label="Nota nueva" name="New Note"/>
- <menu_item_call label="Gesto nuevo" name="New Gesture"/>
- <menu label="Ropas nuevas" name="New Clothes">
- <menu_item_call label="Camisa nueva" name="New Shirt"/>
- <menu_item_call label="Pantalón nuevo" name="New Pants"/>
- <menu_item_call label="Zapatos nuevos" name="New Shoes"/>
- <menu_item_call label="Calcetines nuevos" name="New Socks"/>
- <menu_item_call label="Chaqueta nueva" name="New Jacket"/>
- <menu_item_call label="Falda nueva" name="New Skirt"/>
- <menu_item_call label="Guantes nuevos" name="New Gloves"/>
- <menu_item_call label="Camiseta nueva" name="New Undershirt"/>
- <menu_item_call label="Ropa interior nueva" name="New Underpants"/>
- <menu_item_call label="Nueva Alfa" name="New Alpha"/>
- <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
- </menu>
- <menu label="Nuevas partes del cuerpo" name="New Body Parts">
- <menu_item_call label="Forma nueva" name="New Shape"/>
- <menu_item_call label="Piel nueva" name="New Skin"/>
- <menu_item_call label="Pelo nuevo" name="New Hair"/>
- <menu_item_call label="Ojos nuevos" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml
deleted file mode 100644
index 8e498fefba..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nueva ventana del inventario" name="new_window"/>
- <menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
- <menu_item_check label="Ordenar por los más recientes" name="sort_by_recent"/>
- <menu_item_check label="Las carpetas del sistema, arriba" name="sort_system_folders_to_top"/>
- <menu_item_call label="Ver los filtros" name="show_filters"/>
- <menu_item_call label="Restablecer los filtros" name="reset_filters"/>
- <menu_item_call label="Cerrar todas las carpetas" name="close_folders"/>
- <menu_item_call label="Vaciar Objetos Perdidos" name="empty_lostnfound"/>
- <menu_item_call label="Guardar la textura como" name="Save Texture As"/>
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Encontrar el original" name="Find Original"/>
- <menu_item_call label="Encontrar todos los enlazados" name="Find All Links"/>
- <menu_item_call label="Vaciar la Papelera" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_land.xml b/indra/newview/skins/minimal/xui/es/menu_land.xml
deleted file mode 100644
index b0f15be1b6..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Acerca del terreno" name="Place Information..."/>
- <menu_item_call label="Sentarme aquí" name="Sit Here"/>
- <menu_item_call label="Comprar este terreno" name="Land Buy"/>
- <menu_item_call label="Comprar un pase" name="Land Buy Pass"/>
- <menu_item_call label="Construir" name="Create"/>
- <menu_item_call label="Modificar el terreno" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_landmark.xml b/indra/newview/skins/minimal/xui/es/menu_landmark.xml
deleted file mode 100644
index f69b1539b8..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copiar la SLurl" name="copy"/>
- <menu_item_call label="Borrar" name="delete"/>
- <menu_item_call label="Crear un Destacado" name="pick"/>
- <menu_item_call label="Añadir a la barra de favoritos" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_login.xml b/indra/newview/skins/minimal/xui/es/menu_login.xml
deleted file mode 100644
index c27d624732..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Yo" name="File">
- <menu_item_call label="Preferencias" name="Preferences..."/>
- <menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Ayuda" name="Help">
- <menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Mostrar el menú &apos;Debug&apos;" name="Show Debug Menu"/>
- <menu label="Depurar" name="Debug">
- <menu_item_call label="Mostrar las configuraciones del depurador" name="Debug Settings"/>
- <menu_item_call label="Configuraciones del Visor/Color" name="UI/Color Settings"/>
- <menu label="Pruebas de la interfaz" name="UI Tests"/>
- <menu_item_call label="Definir el tamaño de la ventana..." name="Set Window Size..."/>
- <menu_item_call label="Mostrar los &apos;TOS&apos;" name="TOS"/>
- <menu_item_call label="Mostrar mensaje crítico" name="Critical"/>
- <menu_item_call label="Prueba de navegadores de medios" name="Web Browser Test"/>
- <menu_item_call label="Prueba de ventanas de contenidos web" name="Web Content Floater Test"/>
- <menu_item_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/minimal/xui/es/menu_mini_map.xml b/indra/newview/skins/minimal/xui/es/menu_mini_map.xml
deleted file mode 100644
index 07d1b08572..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom cerca" name="Zoom Close"/>
- <menu_item_call label="Zoom medio" name="Zoom Medium"/>
- <menu_item_call label="Zoom lejos" name="Zoom Far"/>
- <menu_item_call label="Zoom por defecto" name="Zoom Default"/>
- <menu_item_check label="Girar el mapa" name="Rotate Map"/>
- <menu_item_check label="Centrar automáticamente" name="Auto Center"/>
- <menu_item_call label="Parar la búsqueda" name="Stop Tracking"/>
- <menu_item_call label="Mapa del mundo" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_navbar.xml b/indra/newview/skins/minimal/xui/es/menu_navbar.xml
deleted file mode 100644
index 63e5468020..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Mostrar las coordenadas" name="Show Coordinates"/>
- <menu_item_check label="Mostrar las propiedades de la parcela" name="Show Parcel Properties"/>
- <menu_item_call label="Hito" name="Landmark"/>
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Pegar" name="Paste"/>
- <menu_item_call label="Borrar" name="Delete"/>
- <menu_item_call label="Seleccionar todo" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml
deleted file mode 100644
index 94b281b6c7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Mostrar la gente que está cerca..." name="nearby_people"/>
- <menu_item_check label="Ver el texto ignorado" name="muted_text"/>
- <menu_item_check label="Mostrar los iconos del amigo" name="show_buddy_icons"/>
- <menu_item_check label="Mostrar los nombres" name="show_names"/>
- <menu_item_check label="Mostrar los iconos y los nombres" name="show_icons_and_names"/>
- <menu_item_call label="Tamaño de la fuente" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml
deleted file mode 100644
index 0562d35be7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Cerrar todo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_object.xml b/indra/newview/skins/minimal/xui/es/menu_object.xml
deleted file mode 100644
index 06121e0c09..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Tocar" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Tocar"/>
- </menu_item_call>
- <menu_item_call label="Editar" name="Edit..."/>
- <menu_item_call label="Construir" name="Build"/>
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Sentarme aquí" name="Object Sit"/>
- <menu_item_call label="Levantarme" name="Object Stand Up"/>
- <menu_item_call label="Perfil del objeto" name="Object Inspect"/>
- <menu_item_call label="Acercar el zoom" name="Zoom In"/>
- <context_menu label="Ponerme" name="Put On">
- <menu_item_call label="Ponerme" name="Wear"/>
- <menu_item_call label="Añadir" name="Add"/>
- <context_menu label="Anexar" name="Object Attach"/>
- <context_menu label="Anexar el HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Quitar" name="Remove">
- <menu_item_call label="Denunciar una infracción" name="Report Abuse..."/>
- <menu_item_call label="Ignorar" name="Object Mute"/>
- <menu_item_call label="Devolver" name="Return..."/>
- <menu_item_call label="Eliminar" name="Delete"/>
- </context_menu>
- <menu_item_call label="Tomar" name="Pie Object Take"/>
- <menu_item_call label="Coger una copia" name="Take Copy"/>
- <menu_item_call label="Pagar" name="Pay..."/>
- <menu_item_call label="Comprar" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_object_icon.xml b/indra/newview/skins/minimal/xui/es/menu_object_icon.xml
deleted file mode 100644
index 7e4578b950..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Perfil del objeto..." name="Object Profile"/>
- <menu_item_call label="Ignorar..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml
deleted file mode 100644
index 3b11bceecf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear"/>
- <menu_item_call label="Ponerme - Añadir al vestuario actual" name="wear_add"/>
- <menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/>
- <menu label="Ropas nuevas" name="New Clothes">
- <menu_item_call label="Camisa nueva" name="New Shirt"/>
- <menu_item_call label="Pantalón nuevo" name="New Pants"/>
- <menu_item_call label="Zapatos nuevos" name="New Shoes"/>
- <menu_item_call label="Calcetines nuevos" name="New Socks"/>
- <menu_item_call label="Chaqueta nueva" name="New Jacket"/>
- <menu_item_call label="Falda nueva" name="New Skirt"/>
- <menu_item_call label="Guantes nuevos" name="New Gloves"/>
- <menu_item_call label="Camiseta nueva" name="New Undershirt"/>
- <menu_item_call label="Ropa interior nueva" name="New Underpants"/>
- <menu_item_call label="Nueva Alfa" name="New Alpha"/>
- <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
- </menu>
- <menu label="Nuevas partes del cuerpo" name="New Body Parts">
- <menu_item_call label="Anatomía nueva" name="New Shape"/>
- <menu_item_call label="Piel nueva" name="New Skin"/>
- <menu_item_call label="Pelo nuevo" name="New Hair"/>
- <menu_item_call label="Ojos nuevos" name="New Eyes"/>
- </menu>
- <menu_item_call label="Renombrar el vestuario" name="rename"/>
- <menu_item_call label="Borrar el vestuario" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml
deleted file mode 100644
index 4136082a62..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear_replace"/>
- <menu_item_call label="Ponerme - Añadir al vestuario actual" name="wear_add"/>
- <menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/>
- <menu_item_call label="Editar el vestuario" name="edit"/>
- <menu_item_call label="Renombrar el vestuario" name="rename"/>
- <menu_item_call label="Borrar el vestuario" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_participant_list.xml b/indra/newview/skins/minimal/xui/es/menu_participant_list.xml
deleted file mode 100644
index f6eedd1170..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Ordenar alfabéticamente" name="SortByName"/>
- <menu_item_check label="Ordenar según las intervenciones recientes" name="SortByRecentSpeakers"/>
- <menu_item_call label="Ver el perfil" name="View Profile"/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Ver los iconos de la gente" name="View Icons"/>
- <menu_item_check label="Ignorar la voz" name="Block/Unblock"/>
- <menu_item_check label="Ignorar el texto" name="MuteText"/>
- <context_menu label="Opciones del moderador" name="Moderator Options">
- <menu_item_check label="Permitir el chat de texto" name="AllowTextChat"/>
- <menu_item_call label="Ignorar a este participante" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Silenciar a todos" name="ModerateVoiceMute"/>
- <menu_item_call label="Quitar el silencio a todos" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml
deleted file mode 100644
index 3899ad9e96..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
- <menu_item_check label="Ordenar por estatus" name="sort_status"/>
- <menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
- <menu_item_check label="Ver permisos concedidos" name="view_permissions"/>
- <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_groups.xml b/indra/newview/skins/minimal/xui/es/menu_people_groups.xml
deleted file mode 100644
index 51bd2c7208..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Ver la información" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Activar" name="Activate"/>
- <menu_item_call label="Dejar" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml
deleted file mode 100644
index 1bd3efb611..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Mostrar los iconos de grupo" name="Display Group Icons"/>
- <menu_item_call label="Dejar el grupo seleccionado" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml
deleted file mode 100644
index dc1486d879..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Ver el perfil" name="View Profile"/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="Quitarle como amigo" name="Remove Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Mapa" name="Map"/>
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
- <menu_item_call label="Ofrecer teleporte" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 227c5ebe58..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Añadir como amigos" name="Add Friends"/>
- <menu_item_call label="Quitar amigos" name="Remove Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_call label="Ofrecer teleporte" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml
deleted file mode 100644
index f0fe383c0c..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar según las intervenciones recientes" name="sort_by_recent_speakers"/>
- <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
- <menu_item_check label="Ordenar según distancia" name="sort_distance"/>
- <menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
- <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml
deleted file mode 100644
index e4aaa89110..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar por los más recientes" name="sort_most"/>
- <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
- <menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
- <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_picks.xml b/indra/newview/skins/minimal/xui/es/menu_picks.xml
deleted file mode 100644
index 9da68d7c9b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Información" name="pick_info"/>
- <menu_item_call label="Editar" name="pick_edit"/>
- <menu_item_call label="Teleportar" name="pick_teleport"/>
- <menu_item_call label="Mapa" name="pick_map"/>
- <menu_item_call label="Eliminar" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml
deleted file mode 100644
index cc59bf1d29..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Destacado nuevo" name="create_pick"/>
- <menu_item_call label="Clasificado nuevo" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_place.xml b/indra/newview/skins/minimal/xui/es/menu_place.xml
deleted file mode 100644
index 675f0699e9..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Crear un hito" name="landmark"/>
- <menu_item_call label="Crear un destacado" name="pick"/>
- <menu_item_call label="Comprar un pase" name="pass"/>
- <menu_item_call label="Editar" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml
deleted file mode 100644
index 4b2f908a06..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Añadir una carpeta" name="add_folder"/>
- <menu_item_call label="Añadir este hito" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml
deleted file mode 100644
index bf46eb58e3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Añadir este hito" name="add_landmark"/>
- <menu_item_call label="Añadir una carpeta" name="add_folder"/>
- <menu_item_call label="Cortar" name="cut"/>
- <menu_item_call label="Copiar" name="copy_folder"/>
- <menu_item_call label="Pegar" name="paste"/>
- <menu_item_call label="Renombrar" name="rename"/>
- <menu_item_call label="Borrar" name="delete"/>
- <menu_item_call label="Abrir" name="expand"/>
- <menu_item_call label="Cerrar" name="collapse"/>
- <menu_item_call label="Abrir todas las carpetas" name="expand_all"/>
- <menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/>
- <menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml
deleted file mode 100644
index eac85de846..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportar" name="teleport"/>
- <menu_item_call label="Más información" name="more_info"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Añadir un hito" name="add_landmark"/>
- <menu_item_call label="Añadir una carpeta" name="add_folder"/>
- <menu_item_call label="Cortar" name="cut"/>
- <menu_item_call label="Copiar el hito" name="copy_landmark"/>
- <menu_item_call label="Copiar la SLurl" name="copy_slurl"/>
- <menu_item_call label="Pegar" name="paste"/>
- <menu_item_call label="Renombrar" name="rename"/>
- <menu_item_call label="Eliminar" name="delete"/>
- <menu_item_call label="Abrir todas las carpetas" name="expand_all"/>
- <menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/>
- <menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
- <menu_item_call label="Crear un Destacado" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml
deleted file mode 100644
index 5ee8c50949..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Mapa" name="show_on_map"/>
- <menu_item_call label="Pagar" name="pay"/>
- <menu_item_call label="Compartir" name="share"/>
- <menu_item_call label="Ignorar" name="block"/>
- <menu_item_call label="Designorar" name="unblock"/>
- <menu_item_call label="Expulsar" name="kick"/>
- <menu_item_call label="Congelar" name="freeze"/>
- <menu_item_call label="Descongelar" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml
deleted file mode 100644
index a04ec75b60..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Guardar" name="save_outfit"/>
- <menu_item_call label="Guardar como" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml
deleted file mode 100644
index f517baf566..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Cerrar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_slurl.xml b/indra/newview/skins/minimal/xui/es/menu_slurl.xml
deleted file mode 100644
index ca19acec6e..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Acerca de la URL" name="about_url"/>
- <menu_item_call label="Teleportar a la URL" name="teleport_to_url"/>
- <menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml
deleted file mode 100644
index b708f3bc20..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Abrir todas las carpetas" name="Expand all folders"/>
- <menu_item_call label="Cerrar todas las carpetas" name="Collapse all folders"/>
- <menu_item_call label="Limpiar el historial de teleportes" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
deleted file mode 100644
index c482907812..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleportar" name="Teleport"/>
- <menu_item_call label="Más información" name="More Information"/>
- <menu_item_call label="Copiar al portapapeles" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml
deleted file mode 100644
index 17e90422a5..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Abrir" name="TabOpen"/>
- <menu_item_call label="Cerrar" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_text_editor.xml b/indra/newview/skins/minimal/xui/es/menu_text_editor.xml
deleted file mode 100644
index 095e461734..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Pegar" name="Paste"/>
- <menu_item_call label="Borrar" name="Delete"/>
- <menu_item_call label="Seleccionar todo" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml
deleted file mode 100644
index 2125fd51b2..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Mostrar las coordenadas" name="Show Coordinates"/>
- <menu_item_check label="Mostrar las propiedades de la parcela" name="Show Parcel Properties"/>
- <menu_item_call label="Hito" name="Landmark"/>
- <menu_item_call label="Copiar" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_agent.xml b/indra/newview/skins/minimal/xui/es/menu_url_agent.xml
deleted file mode 100644
index a089c8f68e..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar el perfil del Residente" name="show_agent"/>
- <menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_group.xml b/indra/newview/skins/minimal/xui/es/menu_url_group.xml
deleted file mode 100644
index 79374b9739..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar la información del grupo" name="show_group"/>
- <menu_item_call label="Copiar el grupo al portapapeles" name="url_copy_label"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_http.xml b/indra/newview/skins/minimal/xui/es/menu_url_http.xml
deleted file mode 100644
index 585c059ff3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Abrir la página web" name="url_open"/>
- <menu_item_call label="Abrir en el navegador incorporado" name="url_open_internal"/>
- <menu_item_call label="Abrir en mi navegador" name="url_open_external"/>
- <menu_item_call label="Copiar la URL al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml
deleted file mode 100644
index 13a8711c76..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar ítem del inventario" name="show_item"/>
- <menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_map.xml b/indra/newview/skins/minimal/xui/es/menu_url_map.xml
deleted file mode 100644
index f96a0c7170..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Teleportarse a la localización" name="teleport_to_location"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml
deleted file mode 100644
index 8791a290af..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar la información del objeto" name="show_object"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/>
- <menu_item_call label="Copiar el nombre del objeto al portapapeles" name="url_copy_label"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml
deleted file mode 100644
index 9e789ef8ee..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar la información de la parcela" name="show_parcel"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml
deleted file mode 100644
index 7147dcd3cf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Ejecutar este comando" name="run_slapp"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml
deleted file mode 100644
index 4ab47c2f61..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar la información del lugar" name="show_place"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Teleportarse a este lugar" name="teleport_to_location"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml
deleted file mode 100644
index 8f86a91be3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teleportarse a este lugar" name="teleport"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_viewer.xml b/indra/newview/skins/minimal/xui/es/menu_viewer.xml
deleted file mode 100644
index 776ccfe21b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Ayuda" name="Help">
- <menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
- </menu>
- <menu label="Avanzado" name="Advanced">
- <menu label="Atajos de teclado" name="Shortcuts">
- <menu_item_check label="Volar" name="Fly"/>
- <menu_item_call label="Cerrar la ventana" name="Close Window"/>
- <menu_item_call label="Cerrar todas las ventanas" name="Close All Windows"/>
- <menu_item_call label="Volver a la vista por defecto" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml
deleted file mode 100644
index 4bffa689e7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Reemplazar" name="wear_replace"/>
- <menu_item_call label="Ponerme" name="wear_wear"/>
- <menu_item_call label="Añadir" name="wear_add"/>
- <menu_item_call label="Quitarme / Quitar" name="take_off_or_detach"/>
- <menu_item_call label="Quitar" name="detach"/>
- <context_menu label="Anexar a" name="wearable_attach_to"/>
- <context_menu label="Anexar al HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Quitarme" name="take_off"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Perfil del elemento" name="object_profile"/>
- <menu_item_call label="Mostrar original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml
deleted file mode 100644
index 9d9ce75e53..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Editar el vestuario" name="edit"/>
- <menu_item_call label="Quitarme" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml
deleted file mode 100644
index 64fd7ce4cf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Quitarme" name="take_off"/>
- <menu_item_call label="Quitar" name="detach"/>
- <menu_item_call label="Editar el vestuario" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/notifications.xml b/indra/newview/skins/minimal/xui/es/notifications.xml
deleted file mode 100644
index 78b617c429..0000000000
--- a/indra/newview/skins/minimal/xui/es/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <notification name="UserGiveItem">
- [NAME_SLURL] te ofrece un/a [ITEM_SLURL]. Para utilizar este ítem, cambia al modo Avanzado y búscalo en el inventario. Para cambiar al modo Avanzado, sal de la aplicación, reiníciala y cambia el ajuste de modo en la pantalla de inicio de sesión.
- <form name="form">
- <button name="Show" text="Conservar ítem"/>
- <button name="Discard" text="Rechazar ítem"/>
- <button name="Mute" text="Bloquear usuario"/>
- </form>
- </notification>
- <notification name="ObjectGiveItem">
- Un objeto de nombre &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, propiedad de [NAME_SLURL], te ofrece un/a &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Para utilizar este ítem, cambia al modo Avanzado y búscalo en el inventario. Para cambiar al modo Avanzado, sal de la aplicación, reiníciala y cambia el ajuste de modo en la pantalla de inicio de sesión.
- <form name="form">
- <button name="Keep" text="Conservar ítem"/>
- <button name="Discard" text="Rechazar ítem"/>
- <button name="Mute" text="Bloquear objeto"/>
- </form>
- </notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml
deleted file mode 100644
index 254cf58437..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Llamar" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Colgar" name="end_call_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml
deleted file mode 100644
index 0989a3d0a1..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Activa/Desactiva el micrófono"/>
- <string name="VoiceControlBtnToolTip" value="Muestra/Oculta el panel del control de voz"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Hablar" name="speak_btn" tool_tip="Activar y desactivar tu micrófono"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Cambiar tus preferencias de sonido"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gestos" name="Gesture" tool_tip="Hacer que tu avatar realice distintas acciones"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Visión" name="camera_btn" tool_tip="Controlar el ángulo de tu cámara"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinos" name="destination_btn" tool_tip="Viajar por Second Life"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Mi avatar" name="avatar_btn" tool_tip="Cambiar tu aspecto"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Gente" name="show_people_button" tool_tip="Encontrar a gente en Second Life"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Perfil" name="show_profile_btn" tool_tip="Consultar y editar tu perfil"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Indicaciones" name="show_help_btn" tool_tip="Ver la información de ayuda de Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversaciones"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notificaciones"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml
deleted file mode 100644
index e77156b0d4..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="end_call_btn_panel">
- <button label="Colgar" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Abrir los controles de la voz" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
deleted file mode 100644
index 93b6526f77..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Perfil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Añadir como amigo" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Llamar" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Colgar" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Ignorar" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="No ignorar" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Volumen de la llamada" value="0.5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_login.xml b/indra/newview/skins/minimal/xui/es/panel_login.xml
deleted file mode 100644
index 689a71e277..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/index.php?lang=es-ES
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=es
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Nombre de usuario:
- </text>
- <combo_box name="username_combo" tool_tip="El nombre de usuario que elegiste al registrarte, como bobsmith12 o Steller Sunshine"/>
- <text name="password_text">
- Contraseña:
- </text>
- <check_box label="Recordar la contraseña" name="remember_check"/>
- <button label="Iniciar sesión" name="connect_btn"/>
- <text name="mode_selection_text">
- Modo:
- </text>
- <combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
- <combo_box.item label="Básico" name="Basic"/>
- <combo_box.item label="Avanzado" name="Advanced"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Registrarme
- </text>
- <text name="forgot_password_text">
- ¿Olvidaste el nombre de usuario o la contraseña?
- </text>
- <text name="login_help">
- ¿Necesitas ayuda para conectarte?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml
deleted file mode 100644
index e8e95c3bac..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Volver a lo localización anterior"/>
- <pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
- <button name="home_btn" tool_tip="Teleportar a mi Base"/>
- <location_input label="Localización" name="location_combo"/>
- <search_combo_box label="Buscar" name="search_combo_box" tool_tip="Buscar">
- <combo_editor label="Buscar en [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
- <label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
- Barra de Favoritos
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_people.xml b/indra/newview/skins/minimal/xui/es/panel_people.xml
deleted file mode 100644
index a06f3010d7..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Gente" name="people_panel">
- <string name="no_recent_people" value="No hay gente reciente. ¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación."/>
- <string name="no_filtered_recent_people" value="No hay gente reciente con ese nombre."/>
- <string name="no_one_near" value="No hay nadie cerca. ¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación."/>
- <string name="no_one_filtered_near" value="No hay nadie cerca con ese nombre."/>
- <string name="no_friends_online" value="No hay amigos conectados"/>
- <string name="no_friends" value="No hay amigos"/>
- <string name="no_friends_msg">
- Haz clic con el botón derecho del ratón en un residente para agregarlo como amigo.
-¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación.
- </string>
- <string name="no_filtered_friends_msg">
- ¿No encuentras lo que buscas? Prueba con el botón Destinos que aparece a continuación.
- </string>
- <string name="people_filter_label" value="Filtrar a la gente"/>
- <string name="groups_filter_label" value="Filtrar a los grupos"/>
- <string name="no_filtered_groups_msg" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/groups/[SEARCH_TERM] Buscar]."/>
- <string name="no_groups_msg" value="¿Buscas grupos en que participar? Prueba la [secondlife:///app/search/groups Búsqueda]."/>
- <string name="MiniMapToolTipMsg" value="[REGIÓN](Haz doble clic para abrir el mapa y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGIÓN](Haz doble clic para teleportarte y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)"/>
- <filter_editor label="Filtrar" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="CERCANA" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel"/>
- </panel>
- <panel label="MIS AMIGOS" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Conectado"/>
- <accordion_tab name="tab_all" title="Todos"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="RECIENTE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Llamar al grupo" name="group_call_btn" tool_tip="Llama a este grupo"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 775e343dc9..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Panel lateral"/>
- <button name="undock" tool_tip="Soltar"/>
- <button name="dock" tool_tip="Fijar"/>
- <button name="show_help" tool_tip="Ver ayuda"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_status_bar.xml b/indra/newview/skins/minimal/xui/es/panel_status_bar.xml
deleted file mode 100644
index f3db35e8ec..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Pérdida de paquetes
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Ancho de banda
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- [AMT] L$
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
- <combo_box.item label="Modo Básico" name="Basic"/>
- <combo_box.item label="Modo Avanzado" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Iniciar/Parar todos los media (música, vídeo, páginas web)"/>
- <button name="volume_btn" tool_tip="Control general del volumen"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_camera.xml b/indra/newview/skins/minimal/xui/fr/floater_camera.xml
deleted file mode 100644
index 1d62a89ff2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- Faire tourner la caméra autour du point central
- </floater.string>
- <floater.string name="zoom_tooltip">
- Zoomer en direction du point central
- </floater.string>
- <floater.string name="move_tooltip">
- Déplacer la caméra vers le haut et le bas, la gauche et la droite
- </floater.string>
- <floater.string name="camera_modes_title">
- Modes
- </floater.string>
- <floater.string name="pan_mode_title">
- Rotation - Zoom - Panoramique
- </floater.string>
- <floater.string name="presets_mode_title">
- Préréglages
- </floater.string>
- <floater.string name="free_mode_title">
- Voir l&apos;objet
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Vue frontale
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Vue latérale
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Vue arrière
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Vue de l&apos;objet
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Vue subjective
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Zoomer en direction du point central">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Faire tourner la caméra autour du point central"/>
- <slider_bar name="zoom_slider" tool_tip="Zoomer en direction du point central"/>
- <joystick_track name="cam_track_stick" tool_tip="Déplacer la caméra vers le haut et le bas, la gauche et la droite"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Préréglages"/>
- <button label="" name="pan_btn" tool_tip="Rotation - Zoom - Panoramique"/>
- <button label="" name="avatarview_btn" tool_tip="Modes"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml b/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml
deleted file mode 100644
index 09d763b809..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="AIDE RAPIDE">
- <floater.string name="loading_text">
- Chargement…
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml b/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml
deleted file mode 100644
index ba171c6363..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="NAVIGATEUR DE MÉDIAS">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Préc." name="back"/>
- <button label="Suiv." name="forward"/>
- <button label="Recharger" name="reload"/>
- <button label="OK" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="retour" name="rewind"/>
- <button label="stop" name="stop"/>
- <button label="avance" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Envoyer la page actuelle à la parcelle" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Ouvrir dans mon navigateur Web" name="open_browser"/>
- <check_box label="Toujours ouvrir dans mon navigateur Web" name="open_always"/>
- <button label="Fermer" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_web_content.xml b/indra/newview/skins/minimal/xui/fr/floater_web_content.xml
deleted file mode 100644
index 71f44b6ec3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Précédente"/>
- <button name="forward" tool_tip="Suivante"/>
- <button name="stop" tool_tip="Arrêter"/>
- <button name="reload" tool_tip="Recharger la page"/>
- <combo_box name="address" tool_tip="Saisir une URL ici"/>
- <icon name="media_secure_lock_flag" tool_tip="Navigation sécurisée"/>
- <button name="popexternal" tool_tip="Ouvrir l&apos;URL actuelle dans votre navigateur de bureau"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml b/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml
deleted file mode 100644
index 553646f8e9..0000000000
--- a/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_subtitle" value="11 mois, 3 jours"/>
- <text name="user_details">
- This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
- </text>
- <slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
- <button label="Devenir amis" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="Profil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Désactiver le chat vocal" name="disable_voice"/>
- <button label="Activer le chat vocal" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/inspect_object.xml b/indra/newview/skins/minimal/xui/fr/inspect_object.xml
deleted file mode 100644
index b66af7a2bf..0000000000
--- a/indra/newview/skins/minimal/xui/fr/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Par [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- De [CREATOR]
-Propriétaire [OWNER]
- </string>
- <string name="Price">
- [AMOUNT] L$
- </string>
- <string name="PriceFree">
- Gratuit !
- </string>
- <string name="Touch">
- Toucher
- </string>
- <string name="Sit">
- M&apos;asseoir
- </string>
- <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
- <text name="object_creator">
- par secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
- </text>
- <text name="price_text">
- 30 000 L$
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <text name="object_media_url">
- http://www.superdupertest.com
- </text>
- <button label="Acheter" name="buy_btn"/>
- <button label="Payer" name="pay_btn"/>
- <button label="Prendre une copie" name="take_free_copy_btn"/>
- <button label="Toucher" name="touch_btn"/>
- <button label="M&apos;asseoir" name="sit_btn"/>
- <button label="Ouvert" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Navigation sécurisée"/>
- <button label="Plus" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml
deleted file mode 100644
index 7e7993175e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Trier en commençant par le plus récent" name="sort_by_most_recent"/>
- <menu_item_check label="Trier par nom" name="sort_by_name"/>
- <menu_item_check label="Trier par type" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml
deleted file mode 100644
index f48513eb2b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Voir le profil" name="Profile..."/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Inviter dans le groupe" name="Invite..."/>
- <menu_item_call label="Ignorer" name="Avatar Mute"/>
- <menu_item_call label="Signaler" name="abuse"/>
- <menu_item_call label="Figer" name="Freeze..."/>
- <menu_item_call label="Expulser" name="Eject..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
- <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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml
deleted file mode 100644
index 78198fb5a8..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Toucher" name="Attachment Object Touch"/>
- <menu_item_call label="Modifier" name="Edit..."/>
- <menu_item_call label="Détacher" name="Detach"/>
- <menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
- <menu_item_call label="Me lever" name="Stand Up"/>
- <menu_item_call label="Changer de tenue" name="Change Outfit"/>
- <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
- <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
- <menu_item_call label="Mes amis" name="Friends..."/>
- <menu_item_call label="Mes groupes" name="Groups..."/>
- <menu_item_call label="Mon profil" name="Profile..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
- <menu_item_call label="Lâcher" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml
deleted file mode 100644
index 3bac25c79b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Voir le profil" name="Show Profile"/>
- <menu_item_call label="Envoyer IM..." name="Send IM"/>
- <menu_item_call label="Devenir amis..." name="Add Friend"/>
- <menu_item_call label="Supprimer cet ami..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml
deleted file mode 100644
index 08d1a20361..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Voir le profil" name="Profile..."/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Inviter dans le groupe" name="Invite..."/>
- <menu_item_call label="Ignorer" name="Avatar Mute"/>
- <menu_item_call label="Signaler" name="abuse"/>
- <menu_item_call label="Figer" name="Freeze..."/>
- <menu_item_call label="Expulser" name="Eject..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
- <menu_item_call label="Zoomer en avant" name="Zoom In"/>
- <menu_item_call label="Payer" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml
deleted file mode 100644
index c7ee2e9f88..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
- <menu_item_call label="Me lever" name="Stand Up"/>
- <context_menu label="Enlever" name="Take Off &gt;">
- <context_menu label="Habits" name="Clothes &gt;">
- <menu_item_call label="Chemise" name="Shirt"/>
- <menu_item_call label="Pantalon" name="Pants"/>
- <menu_item_call label="Jupe" name="Skirt"/>
- <menu_item_call label="Chaussures" name="Shoes"/>
- <menu_item_call label="Chaussettes" name="Socks"/>
- <menu_item_call label="Veste" name="Jacket"/>
- <menu_item_call label="Gants" name="Gloves"/>
- <menu_item_call label="Débardeur" name="Self Undershirt"/>
- <menu_item_call label="Caleçon" name="Self Underpants"/>
- <menu_item_call label="Tatouage" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Tous les habits" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Détacher" name="Object Detach"/>
- <menu_item_call label="Tout détacher" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Changer de tenue" name="Chenge Outfit"/>
- <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
- <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
- <menu_item_call label="Mes amis" name="Friends..."/>
- <menu_item_call label="Mes groupes" name="Groups..."/>
- <menu_item_call label="Mon profil" name="Profile..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml
deleted file mode 100644
index bfdc89c5bb..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Bouton Geste" name="ShowGestureButton"/>
- <menu_item_check label="Bouton Bouger" name="ShowMoveButton"/>
- <menu_item_check label="Bouton Affichage" name="ShowCameraButton"/>
- <menu_item_check label="Bouton Photo" name="ShowSnapshotButton"/>
- <menu_item_check label="Bouton Panneau latéral" name="ShowSidebarButton"/>
- <menu_item_check label="Bouton Construire" name="ShowBuildButton"/>
- <menu_item_check label="Bouton Rechercher" name="ShowSearchButton"/>
- <menu_item_check label="Bouton Carte" name="ShowWorldMapButton"/>
- <menu_item_check label="Bouton Mini-carte" name="ShowMiniMapButton"/>
- <menu_item_call label="Couper" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Copier" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Coller" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Supprimer" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Tout sélectionner" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml
deleted file mode 100644
index a4ead48b6b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Détacher" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml
deleted file mode 100644
index 4b6907fcc6..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Remplacer" name="replace"/>
- <menu_item_call label="Modifier" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml
deleted file mode 100644
index 03cc569704..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Enlever" name="take_off"/>
- <menu_item_call label="Modifier" name="edit"/>
- <menu_item_call label="Remplacer" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml
deleted file mode 100644
index 8276d57025..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Nouveaux habits" name="COF.Gear.New_Clothes"/>
- <menu label="Nouvelles parties du corps" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_edit.xml b/indra/newview/skins/minimal/xui/fr/menu_edit.xml
deleted file mode 100644
index 56669f31e1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Modifier" name="Edit">
- <menu_item_call label="Annuler" name="Undo"/>
- <menu_item_call label="Refaire" name="Redo"/>
- <menu_item_call label="Couper" name="Cut"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Dupliquer" name="Duplicate"/>
- <menu_item_call label="Tout sélectionner" name="Select All"/>
- <menu_item_call label="Désélectionner" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_favorites.xml b/indra/newview/skins/minimal/xui/fr/menu_favorites.xml
deleted file mode 100644
index 5f1545fde7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Téléporter" name="Teleport To Landmark"/>
- <menu_item_call label="Voir/Modifier le repère" name="Landmark Open"/>
- <menu_item_call label="Copier la SLurl" name="Copy slurl"/>
- <menu_item_call label="Voir sur la carte" name="Show On Map"/>
- <menu_item_call label="Copier" name="Landmark Copy"/>
- <menu_item_call label="Coller" name="Landmark Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml
deleted file mode 100644
index 062dd0f005..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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="Copier" name="copy_gesture"/>
- <menu_item_call label="Coller" name="paste"/>
- <menu_item_call label="Copier l&apos;UUID" name="copy_uuid"/>
- <menu_item_call label="Enregistrer dans la tenue actuelle" name="save_to_outfit"/>
- <menu_item_call label="Modifier" name="edit_gesture"/>
- <menu_item_call label="Inspecter" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml b/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml
deleted file mode 100644
index 0db5afedc7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Rejoindre des groupes..." name="item_join"/>
- <menu_item_call label="Nouveau groupe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml
deleted file mode 100644
index 20af901ddc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Afficher la mini-barre d&apos;emplacement" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml
deleted file mode 100644
index 8ef1529e6b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Tout fermer" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 4d9a103058..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml
deleted file mode 100644
index 59f97d8b48..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Profil du groupe" name="Show Profile"/>
- <menu_item_call label="Afficher la session" name="Chat"/>
- <menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml
deleted file mode 100644
index ecc8cee413..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Voir le profil" name="Show Profile"/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="Afficher la session" name="Send IM"/>
- <menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml
deleted file mode 100644
index c3240fa541..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Voir le profil" name="view_profile"/>
- <menu_item_call label="Devenir amis" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="Appeler" name="call"/>
- <menu_item_call label="Téléporter" name="teleport"/>
- <menu_item_call label="Ignorer" name="block"/>
- <menu_item_call label="Ne plus ignorer" name="unblock"/>
- <menu_item_call label="Signaler" name="report"/>
- <menu_item_call label="Figer" name="freeze"/>
- <menu_item_call label="Expulser" name="eject"/>
- <menu_item_call label="Éjecter" name="kick"/>
- <menu_item_call label="Représentant de l&apos;Assistance client" name="csr"/>
- <menu_item_call label="Déboguer les textures" name="debug"/>
- <menu_item_call label="Situer sur la carte" name="find_on_map"/>
- <menu_item_call label="Zoomer en avant" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml
deleted file mode 100644
index 074bb54cdc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Toucher" name="touch"/>
- <menu_item_call label="M&apos;asseoir" name="sit"/>
- <menu_item_call label="Payer" name="pay"/>
- <menu_item_call label="Acheter" name="buy"/>
- <menu_item_call label="Prendre" name="take"/>
- <menu_item_call label="Prendre une copie" name="take_copy"/>
- <menu_item_call label="Ouvrir" name="open"/>
- <menu_item_call label="Modifier" name="edit"/>
- <menu_item_call label="Porter" name="wear"/>
- <menu_item_call label="Ajouter" name="add"/>
- <menu_item_call label="Signaler" name="report"/>
- <menu_item_call label="Ignorer" name="block"/>
- <menu_item_call label="Zoomer en avant" name="zoom_in"/>
- <menu_item_call label="Supprimer" name="remove"/>
- <menu_item_call label="En savoir plus" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
deleted file mode 100644
index fd48aa4f7d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
- <menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
- <menu_item_call label="Me lever" name="Stand Up"/>
- <menu_item_call label="Mes amis" name="Friends..."/>
- <menu_item_call label="Mon profil" name="Profile..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml
deleted file mode 100644
index a9b2883cca..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Fermer" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory.xml
deleted file mode 100644
index a2279cf0ac..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Acheter" name="Task Buy"/>
- <menu_item_call label="Ouvrir" name="Task Open"/>
- <menu_item_call label="Jouer" name="Task Play"/>
- <menu_item_call label="Propriétés" name="Task Properties"/>
- <menu_item_call label="Renommer" name="Task Rename"/>
- <menu_item_call label="Supprimer" name="Task Remove"/>
- <menu_item_call label="Vider la corbeille" name="Empty Trash"/>
- <menu_item_call label="Vider les objets trouvés" name="Empty Lost And Found"/>
- <menu_item_call label="Nouveau dossier" name="New Folder"/>
- <menu_item_call label="Nouveau script" name="New Script"/>
- <menu_item_call label="Nouvelle note" name="New Note"/>
- <menu_item_call label="Nouveau geste" name="New Gesture"/>
- <menu label="Nouveaux habits" name="New Clothes">
- <menu_item_call label="Nouvelle chemise" name="New Shirt"/>
- <menu_item_call label="Nouveau pantalon" name="New Pants"/>
- <menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
- <menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
- <menu_item_call label="Nouvelle veste" name="New Jacket"/>
- <menu_item_call label="Nouvelle jupe" name="New Skirt"/>
- <menu_item_call label="Nouveaux gants" name="New Gloves"/>
- <menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
- <menu_item_call label="Nouveau caleçon" name="New Underpants"/>
- <menu_item_call label="Nouveau masque alpha" name="New Alpha Mask"/>
- <menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
- </menu>
- <menu label="Nouvelles parties du corps" name="New Body Parts">
- <menu_item_call label="Nouvelle silhouette" name="New Shape"/>
- <menu_item_call label="Nouvelle peau" name="New Skin"/>
- <menu_item_call label="Nouveaux cheveux" name="New Hair"/>
- <menu_item_call label="Nouveaux yeux" name="New Eyes"/>
- </menu>
- <menu label="Changer de type" name="Change Type">
- <menu_item_call label="Défaut" name="Default"/>
- <menu_item_call label="Gants" name="Gloves"/>
- <menu_item_call label="Veste" name="Jacket"/>
- <menu_item_call label="Pantalon" name="Pants"/>
- <menu_item_call label="Silhouette" name="Shape"/>
- <menu_item_call label="Chaussures" name="Shoes"/>
- <menu_item_call label="Chemise" name="Shirt"/>
- <menu_item_call label="Jupe" name="Skirt"/>
- <menu_item_call label="Caleçon" name="Underpants"/>
- <menu_item_call label="Débardeur" name="Undershirt"/>
- </menu>
- <menu_item_call label="Téléporter" name="Landmark Open"/>
- <menu_item_call label="Ouvrir" name="Animation Open"/>
- <menu_item_call label="Ouvrir" name="Sound Open"/>
- <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="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"/>
- <menu_item_call label="Ouvrir" name="Open"/>
- <menu_item_call label="Ouvrir l&apos;original" name="Open Original"/>
- <menu_item_call label="Propriétés" name="Properties"/>
- <menu_item_call label="Renommer" name="Rename"/>
- <menu_item_call label="Copier l&apos;UUID (identifiant universel unique)" name="Copy Asset UUID"/>
- <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"/>
- <menu_item_call label="Jouer" name="Sound Play"/>
- <menu_item_call label="À propos du repère" name="About Landmark"/>
- <menu_item_call label="Jouer dans Second Life" name="Animation Play"/>
- <menu_item_call label="Jouer localement" name="Animation Audition"/>
- <menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/>
- <menu_item_call label="Offrir de téléporter..." name="Offer Teleport..."/>
- <menu_item_call label="Démarrer le chat conférence" name="Conference Chat"/>
- <menu_item_call label="Activer" name="Activate"/>
- <menu_item_call label="Désactiver" name="Deactivate"/>
- <menu_item_call label="Enregistrer sous" name="Save As"/>
- <menu_item_call label="Détacher de vous" name="Detach From Yourself"/>
- <menu_item_call label="Porter" name="Wearable And Object Wear"/>
- <menu label="Attacher à" name="Attach To"/>
- <menu label="Attacher au HUD " name="Attach To HUD"/>
- <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="--aucune option--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml
deleted file mode 100644
index fe096b4a7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Importer" name="upload">
- <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/>
- <menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/>
- <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
- <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/>
- <menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/>
- </menu>
- <menu_item_call label="Nouveau dossier" name="New Folder"/>
- <menu_item_call label="Nouveau script" name="New Script"/>
- <menu_item_call label="Nouvelle note" name="New Note"/>
- <menu_item_call label="Nouveau geste" name="New Gesture"/>
- <menu label="Nouveaux habits" name="New Clothes">
- <menu_item_call label="Nouvelle chemise" name="New Shirt"/>
- <menu_item_call label="Nouveau pantalon" name="New Pants"/>
- <menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
- <menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
- <menu_item_call label="Nouvelle veste" name="New Jacket"/>
- <menu_item_call label="Nouvelle jupe" name="New Skirt"/>
- <menu_item_call label="Nouveaux gants" name="New Gloves"/>
- <menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
- <menu_item_call label="Nouveau caleçon" name="New Underpants"/>
- <menu_item_call label="Nouvel alpha" name="New Alpha"/>
- <menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
- </menu>
- <menu label="Nouvelles parties du corps" name="New Body Parts">
- <menu_item_call label="Nouvelle silhouette" name="New Shape"/>
- <menu_item_call label="Nouvelle peau" name="New Skin"/>
- <menu_item_call label="Nouveaux cheveux" name="New Hair"/>
- <menu_item_call label="Nouveaux yeux" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml
deleted file mode 100644
index f28918ae14..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nouvelle fenêtre d&apos;inventaire" name="new_window"/>
- <menu_item_check label="Trier par nom" name="sort_by_name"/>
- <menu_item_check label="Trier en commençant par le plus récent" name="sort_by_recent"/>
- <menu_item_check label="Dossiers système en premier" name="sort_system_folders_to_top"/>
- <menu_item_call label="Afficher les filtres" name="show_filters"/>
- <menu_item_call label="Réinitialiser les filtres" name="reset_filters"/>
- <menu_item_call label="Fermer tous les dossiers" name="close_folders"/>
- <menu_item_call label="Vider les objets trouvés" name="empty_lostnfound"/>
- <menu_item_call label="Enregistrer la texture sous" name="Save Texture As"/>
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Trouver l&apos;original" name="Find Original"/>
- <menu_item_call label="Trouver tous les liens" name="Find All Links"/>
- <menu_item_call label="Vider la corbeille" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_land.xml b/indra/newview/skins/minimal/xui/fr/menu_land.xml
deleted file mode 100644
index b84daee3ae..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="À propos du terrain" name="Place Information..."/>
- <menu_item_call label="M&apos;asseoir ici" name="Sit Here"/>
- <menu_item_call label="Acheter ce terrain" name="Land Buy"/>
- <menu_item_call label="Acheter un pass" name="Land Buy Pass"/>
- <menu_item_call label="Construire" name="Create"/>
- <menu_item_call label="Modifier le terrain" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_landmark.xml b/indra/newview/skins/minimal/xui/fr/menu_landmark.xml
deleted file mode 100644
index 73eaa4af7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copier la SLurl" name="copy"/>
- <menu_item_call label="Supprimer" name="delete"/>
- <menu_item_call label="Créer un favori" name="pick"/>
- <menu_item_call label="Ajouter à la barre des favoris" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_login.xml b/indra/newview/skins/minimal/xui/fr/menu_login.xml
deleted file mode 100644
index 400c77e51a..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Moi" name="File">
- <menu_item_call label="Préférences" name="Preferences..."/>
- <menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Aide" name="Help">
- <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Afficher le menu de débogage" name="Show Debug Menu"/>
- <menu label="Débogage" name="Debug">
- <menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/>
- <menu_item_call label="Paramètres de couleurs/interface" name="UI/Color Settings"/>
- <menu_item_call label="Outil d&apos;aperçu XUI" name="UI Preview Tool"/>
- <menu label="Tests de l&apos;interface" name="UI Tests"/>
- <menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/>
- <menu_item_call label="Afficher les conditions d&apos;utilisation" name="TOS"/>
- <menu_item_call label="Afficher le message critique" name="Critical"/>
- <menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/>
- <menu_item_call label="Test de la fenêtre flottante du contenu Web" name="Web Content Floater Test"/>
- <menu_item_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/minimal/xui/fr/menu_mini_map.xml b/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml
deleted file mode 100644
index b9d0a70383..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom rapproché" name="Zoom Close"/>
- <menu_item_call label="Zoom moyen" name="Zoom Medium"/>
- <menu_item_call label="Zoom éloigné" name="Zoom Far"/>
- <menu_item_call label="Zoom par défaut" name="Zoom Default"/>
- <menu_item_check label="Faire pivoter la carte" name="Rotate Map"/>
- <menu_item_check label="Centrage auto" name="Auto Center"/>
- <menu_item_call label="Arrêter de suivre" name="Stop Tracking"/>
- <menu_item_call label="Carte du monde" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_navbar.xml b/indra/newview/skins/minimal/xui/fr/menu_navbar.xml
deleted file mode 100644
index 08d810b653..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Voir les coordonnées" name="Show Coordinates"/>
- <menu_item_check label="Afficher les propriétés de la parcelle" name="Show Parcel Properties"/>
- <menu_item_call label="Repère" name="Landmark"/>
- <menu_item_call label="Couper" name="Cut"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Tout sélectionner" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml
deleted file mode 100644
index 99e22aeff7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Afficher les personnes près de vous..." name="nearby_people"/>
- <menu_item_check label="Afficher le texte ignoré" name="muted_text"/>
- <menu_item_check label="Afficher les icônes des Buddy" name="show_buddy_icons"/>
- <menu_item_check label="Afficher les noms" name="show_names"/>
- <menu_item_check label="Afficher les icônes et les noms" name="show_icons_and_names"/>
- <menu_item_call label="Taille de la police" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml
deleted file mode 100644
index 323bfdbf16..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Tout fermer" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_object.xml b/indra/newview/skins/minimal/xui/fr/menu_object.xml
deleted file mode 100644
index a50a9df4b1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Toucher" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Toucher"/>
- </menu_item_call>
- <menu_item_call label="Modifier" name="Edit..."/>
- <menu_item_call label="Construire" name="Build"/>
- <menu_item_call label="Ouvrir" name="Open"/>
- <menu_item_call label="M&apos;asseoir ici" name="Object Sit"/>
- <menu_item_call label="Me lever" name="Object Stand Up"/>
- <menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
- <menu_item_call label="Zoomer en avant" name="Zoom In"/>
- <context_menu label="Porter" name="Put On">
- <menu_item_call label="Porter" name="Wear"/>
- <menu_item_call label="Ajouter" name="Add"/>
- <context_menu label="Attacher" name="Object Attach"/>
- <context_menu label="Attacher HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Supprimer" name="Remove">
- <menu_item_call label="Signaler une infraction" name="Report Abuse..."/>
- <menu_item_call label="Ignorer" name="Object Mute"/>
- <menu_item_call label="Retour" name="Return..."/>
- <menu_item_call label="Supprimer" name="Delete"/>
- </context_menu>
- <menu_item_call label="Prendre" name="Pie Object Take"/>
- <menu_item_call label="Prendre une copie" name="Take Copy"/>
- <menu_item_call label="Payer" name="Pay..."/>
- <menu_item_call label="Acheter" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml b/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml
deleted file mode 100644
index 69f8e88a0d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Profil de l&apos;objet..." name="Object Profile"/>
- <menu_item_call label="Ignorer..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml
deleted file mode 100644
index 5db7f176b5..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Porter - Remplacer la tenue actuelle" name="wear"/>
- <menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/>
- <menu_item_call label="Enlever - Supprimer de la tenue actuelle" name="take_off"/>
- <menu label="Nouveaux habits" name="New Clothes">
- <menu_item_call label="Nouvelle chemise" name="New Shirt"/>
- <menu_item_call label="Nouveau pantalon" name="New Pants"/>
- <menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
- <menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
- <menu_item_call label="Nouvelle veste" name="New Jacket"/>
- <menu_item_call label="Nouvelle jupe" name="New Skirt"/>
- <menu_item_call label="Nouveaux gants" name="New Gloves"/>
- <menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
- <menu_item_call label="Nouveau caleçon" name="New Underpants"/>
- <menu_item_call label="Nouvel alpha" name="New Alpha"/>
- <menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
- </menu>
- <menu label="Nouvelles parties du corps" name="New Body Parts">
- <menu_item_call label="Nouvelle silhouette" name="New Shape"/>
- <menu_item_call label="Nouvelle peau" name="New Skin"/>
- <menu_item_call label="Nouveaux cheveux" name="New Hair"/>
- <menu_item_call label="Nouveaux yeux" name="New Eyes"/>
- </menu>
- <menu_item_call label="Renommer la tenue" name="rename"/>
- <menu_item_call label="Supprimer la tenue" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml
deleted file mode 100644
index 2a7f618e07..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Porter - Remplacer la tenue actuelle" name="wear_replace"/>
- <menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/>
- <menu_item_call label="Enlever - Supprimer de la tenue actuelle" name="take_off"/>
- <menu_item_call label="Modifier la tenue" name="edit"/>
- <menu_item_call label="Renommer la tenue" name="rename"/>
- <menu_item_call label="Supprimer la tenue" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml b/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml
deleted file mode 100644
index f91a30f6bb..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Trier par nom" name="SortByName"/>
- <menu_item_check label="Trier par intervenants récents" name="SortByRecentSpeakers"/>
- <menu_item_call label="Voir le profil" name="View Profile"/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Payer" name="Pay"/>
- <menu_item_check label="Afficher les icônes des résidents" name="View Icons"/>
- <menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/>
- <menu_item_check label="Ignorer le texte" name="MuteText"/>
- <context_menu label="Options du modérateur" name="Moderator Options">
- <menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/>
- <menu_item_call label="Ignorer ce participant" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Ne plus ignorer ce participant" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Ignorer les autres" name="ModerateVoiceMute"/>
- <menu_item_call label="Ne plus ignorer les autres" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml
deleted file mode 100644
index a6170a6c16..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Trier par nom" name="sort_name"/>
- <menu_item_check label="Trier par statut" name="sort_status"/>
- <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
- <menu_item_check label="Afficher les droits octroyés" name="view_permissions"/>
- <menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml b/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml
deleted file mode 100644
index eb51b4cf7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Afficher les infos" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Activer" name="Activate"/>
- <menu_item_call label="Quitter" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml
deleted file mode 100644
index 34f949cf2c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Afficher les icônes des groupes" name="Display Group Icons"/>
- <menu_item_call label="Quitter le groupe sélectionné" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml
deleted file mode 100644
index f153ed15ae..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Voir le profil" name="View Profile"/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="Supprimer cet ami" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Carte" name="Map"/>
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Payer" name="Pay"/>
- <menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
- <menu_item_call label="Téléporter" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 8400ec0a14..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Devenir amis" name="Add Friends"/>
- <menu_item_call label="Supprimer des amis" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Payer" name="Pay"/>
- <menu_item_call label="Proposer une téléportation" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 45f97e062e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Trier par intervenants récents" name="sort_by_recent_speakers"/>
- <menu_item_check label="Trier par nom" name="sort_name"/>
- <menu_item_check label="Trier par distance" name="sort_distance"/>
- <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
- <menu_item_call label="Afficher les résidents et les objets interdits" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml
deleted file mode 100644
index 93b90ae61c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Trier en commençant par le plus récent" name="sort_most"/>
- <menu_item_check label="Trier par nom" name="sort_name"/>
- <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
- <menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_picks.xml b/indra/newview/skins/minimal/xui/fr/menu_picks.xml
deleted file mode 100644
index 7d7174d43c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Infos" name="pick_info"/>
- <menu_item_call label="Modifier" name="pick_edit"/>
- <menu_item_call label="Téléporter" name="pick_teleport"/>
- <menu_item_call label="Carte" name="pick_map"/>
- <menu_item_call label="Supprimer" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml
deleted file mode 100644
index b6cde6d6e2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Nouveau favori" name="create_pick"/>
- <menu_item_call label="Nouvelle petite annonce" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_place.xml b/indra/newview/skins/minimal/xui/fr/menu_place.xml
deleted file mode 100644
index 6b0f4db752..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Enregistrer comme repère" name="landmark"/>
- <menu_item_call label="Créer un favori" name="pick"/>
- <menu_item_call label="Acheter un pass" name="pass"/>
- <menu_item_call label="Modifier" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml
deleted file mode 100644
index 92f9e7719d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Ajouter un dossier" name="add_folder"/>
- <menu_item_call label="Ajouter un repère" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml
deleted file mode 100644
index 3570bdec7f..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Ajouter un repère" name="add_landmark"/>
- <menu_item_call label="Ajouter un dossier" name="add_folder"/>
- <menu_item_call label="Couper" name="cut"/>
- <menu_item_call label="Copier" name="copy_folder"/>
- <menu_item_call label="Coller" name="paste"/>
- <menu_item_call label="Renommer" name="rename"/>
- <menu_item_call label="Supprimer" name="delete"/>
- <menu_item_call label="Agrandir" name="expand"/>
- <menu_item_call label="Réduire" name="collapse"/>
- <menu_item_call label="Développer tous les dossiers" name="expand_all"/>
- <menu_item_call label="Réduire tous les dossiers" name="collapse_all"/>
- <menu_item_check label="Trier par date" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml
deleted file mode 100644
index 5491c1b3fc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Téléporter" name="teleport"/>
- <menu_item_call label="Plus d&apos;informations" name="more_info"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Ajouter un repère" name="add_landmark"/>
- <menu_item_call label="Ajouter un dossier" name="add_folder"/>
- <menu_item_call label="Couper" name="cut"/>
- <menu_item_call label="Copier le repère" name="copy_landmark"/>
- <menu_item_call label="Copier la SLurl" name="copy_slurl"/>
- <menu_item_call label="Coller" name="paste"/>
- <menu_item_call label="Renommer" name="rename"/>
- <menu_item_call label="Supprimer" name="delete"/>
- <menu_item_call label="Développer tous les dossiers" name="expand_all"/>
- <menu_item_call label="Réduire tous les dossiers" name="collapse_all"/>
- <menu_item_check label="Trier par date" name="sort_by_date"/>
- <menu_item_call label="Créer un favori" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml
deleted file mode 100644
index ddf898b791..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Carte" name="show_on_map"/>
- <menu_item_call label="Payer" name="pay"/>
- <menu_item_call label="Partager" name="share"/>
- <menu_item_call label="Ignorer" name="block"/>
- <menu_item_call label="Ne plus ignorer" name="unblock"/>
- <menu_item_call label="Éjecter" name="kick"/>
- <menu_item_call label="Figer" name="freeze"/>
- <menu_item_call label="Libérer" name="unfreeze"/>
- <menu_item_call label="Représentant du service consommateur" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml
deleted file mode 100644
index f78db411b3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Enregistrer" name="save_outfit"/>
- <menu_item_call label="Enregistrer sous" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml
deleted file mode 100644
index 46efa30bd6..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Fermer" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_slurl.xml b/indra/newview/skins/minimal/xui/fr/menu_slurl.xml
deleted file mode 100644
index ddfa5c0849..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="À propos de l&apos;URL" name="about_url"/>
- <menu_item_call label="Téléporter vers l&apos;URL" name="teleport_to_url"/>
- <menu_item_call label="Carte" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml
deleted file mode 100644
index 3dea662cc2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Développer tous les dossiers" name="Expand all folders"/>
- <menu_item_call label="Réduire tous les dossiers" name="Collapse all folders"/>
- <menu_item_call label="Effacer l&apos;historique des téléportations" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml
deleted file mode 100644
index fb4582dbce..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Téléporter" name="Teleport"/>
- <menu_item_call label="Plus d&apos;informations" name="More Information"/>
- <menu_item_call label="Copier dans le presse-papiers" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml
deleted file mode 100644
index 369680985d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Ouvrir" name="TabOpen"/>
- <menu_item_call label="Fermer" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml b/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml
deleted file mode 100644
index b6f429aec9..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Couper" name="Cut"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Tout sélectionner" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml
deleted file mode 100644
index dc68f40fe7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Afficher les coordonnées" name="Show Coordinates"/>
- <menu_item_check label="Afficher les propriétés de la parcelle" name="Show Parcel Properties"/>
- <menu_item_call label="Repère" name="Landmark"/>
- <menu_item_call label="Copier" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml b/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml
deleted file mode 100644
index 5ed627fbc3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Voir le profil du résident" name="show_agent"/>
- <menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_group.xml b/indra/newview/skins/minimal/xui/fr/menu_url_group.xml
deleted file mode 100644
index de90c3ff7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Voir le profil du groupe" name="show_group"/>
- <menu_item_call label="Copier le groupe dans le presse-papiers" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_http.xml b/indra/newview/skins/minimal/xui/fr/menu_url_http.xml
deleted file mode 100644
index 5e96352999..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Ouvrir la page Web" name="url_open"/>
- <menu_item_call label="Ouvrir dans un navigateur interne" name="url_open_internal"/>
- <menu_item_call label="Ouvrir dans un navigateur externe" name="url_open_external"/>
- <menu_item_call label="Copier l&apos;URL dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml
deleted file mode 100644
index 8ab88b4be7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher l&apos;article d&apos;inventaire" name="show_item"/>
- <menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_map.xml b/indra/newview/skins/minimal/xui/fr/menu_url_map.xml
deleted file mode 100644
index 67e6986f5d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml
deleted file mode 100644
index f581c3ef9d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur l&apos;objet" name="show_object"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Me téléporter à l&apos;emplacement de l&apos;objet" name="teleport_to_object"/>
- <menu_item_call label="Copier le nom de l&apos;objet dans le presse-papiers" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml
deleted file mode 100644
index 07b0eeca49..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur la parcelle" name="show_parcel"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml
deleted file mode 100644
index f4b7e212ca..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Exécuter cette commande" name="run_slapp"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml
deleted file mode 100644
index e44943cf15..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur ce lieu" name="show_place"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml
deleted file mode 100644
index a5075a2740..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Me téléporter à cet endroit." name="teleport"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_viewer.xml b/indra/newview/skins/minimal/xui/fr/menu_viewer.xml
deleted file mode 100644
index bd1c077f52..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Aide" name="Help">
- <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
- </menu>
- <menu label="Avancé" name="Advanced">
- <menu label="Raccourcis" name="Shortcuts">
- <menu_item_check label="Voler" name="Fly"/>
- <menu_item_call label="Fermer la fenêtre" name="Close Window"/>
- <menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows"/>
- <menu_item_call label="Réinitialiser la vue" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml
deleted file mode 100644
index 187cb4bcd2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Remplacer" name="wear_replace"/>
- <menu_item_call label="Porter" name="wear_wear"/>
- <menu_item_call label="Ajouter" name="wear_add"/>
- <menu_item_call label="Enlever / Détacher" name="take_off_or_detach"/>
- <menu_item_call label="Détacher" name="detach"/>
- <context_menu label="Attacher à" name="wearable_attach_to"/>
- <context_menu label="Attacher au HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Enlever" name="take_off"/>
- <menu_item_call label="Modifier" name="edit"/>
- <menu_item_call label="Profil de l&apos;article" name="object_profile"/>
- <menu_item_call label="Afficher l&apos;original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml
deleted file mode 100644
index 0ca9fe1879..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Modifier la tenue" name="edit"/>
- <menu_item_call label="Enlever" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml
deleted file mode 100644
index 4d88445506..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Enlever" name="take_off"/>
- <menu_item_call label="Détacher" name="detach"/>
- <menu_item_call label="Modifier la tenue" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/notifications.xml b/indra/newview/skins/minimal/xui/fr/notifications.xml
deleted file mode 100644
index 05fa03cdc1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <notification name="UserGiveItem">
- [NAME_SLURL] vous offre [ITEM_SLURL]. Pour utiliser cet article, vous devez passer en mode Avancé. L&apos;article se trouve dans votre inventaire. Pour changer de mode, quittez l&apos;application, redémarrez-la, puis sélectionnez un autre mode sur l&apos;écran de connexion.
- <form name="form">
- <button name="Show" text="Garder l&apos;article"/>
- <button name="Discard" text="Refuser l&apos;article"/>
- <button name="Mute" text="Ignorer l&apos;utilisateur"/>
- </form>
- </notification>
- <notification name="ObjectGiveItem">
- Un objet nommé &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; appartenant à [NAME_SLURL] vous offre &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Pour utiliser cet article, vous devez passer en mode Avancé. L&apos;article se trouve dans votre inventaire. Pour changer de mode, quittez l&apos;application, redémarrez-la, puis sélectionnez un autre mode sur l&apos;écran de connexion.
- <form name="form">
- <button name="Keep" text="Garder l&apos;article"/>
- <button name="Discard" text="Refuser l&apos;article"/>
- <button name="Mute" text="Ignorer l&apos;objet"/>
- </form>
- </notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml
deleted file mode 100644
index 376a7d2b72..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Appeler" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Quitter l&apos;appel" name="end_call_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml
deleted file mode 100644
index 094d3e66de..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Active/Désactive le micro"/>
- <string name="VoiceControlBtnToolTip" value="Affiche/Masque le panneau de contrôle de la voix"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Parler" name="speak_btn" tool_tip="Activer/désactiver le micro."/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Modifier les préférences audio."/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Geste" name="Gesture" tool_tip="Faire faire des gestes à votre avatar."/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Affichage" name="camera_btn" tool_tip="Contrôler l&apos;angle de la caméra."/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinations" name="destination_btn" tool_tip="Voyager à travers Second Life."/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Mon avatar" name="avatar_btn" tool_tip="Modifier votre apparence."/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Personnes" name="show_people_button" tool_tip="Trouver des personnes dans Second Life."/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Afficher et modifier votre profil."/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Aide rapide" name="show_help_btn" tool_tip="Afficher des infos d&apos;aide sur Second Life."/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversations"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notifications"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml
deleted file mode 100644
index 676fa1d222..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="end_call_btn_panel">
- <button label="Quitter l&apos;appel" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Ouvrir contrôles vocaux" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
deleted file mode 100644
index 1643cf3229..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Devenir amis" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Téléporter" name="teleport_btn" tool_tip="Proposer de téléporter cette personne."/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Appeler" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Quitter l&apos;appel" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Ignorer" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="Ne plus ignorer" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Volume de l&apos;appel." value="0,5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_login.xml b/indra/newview/skins/minimal/xui/fr/panel_login.xml
deleted file mode 100644
index 0869778a54..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://fr.secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=fr
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Nom d&apos;utilisateur :
- </text>
- <combo_box name="username_combo" tool_tip="Nom d&apos;utilisateur que vous avez choisi lors de votre inscription (par exemple, bobsmith12 ou Steller Sunshine)."/>
- <text name="password_text">
- Mot de passe :
- </text>
- <check_box label="Enregistrer" name="remember_check"/>
- <button label="Connexion" name="connect_btn"/>
- <text name="mode_selection_text">
- Mode :
- </text>
- <combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
- <combo_box.item label="Basique" name="Basic"/>
- <combo_box.item label="Avancé" name="Advanced"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- S&apos;inscrire
- </text>
- <text name="forgot_password_text">
- Nom d&apos;utilisateur ou mot de passe oublié ?
- </text>
- <text name="login_help">
- Besoin d&apos;aide ?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml
deleted file mode 100644
index 45caf2323d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Revenir à l&apos;emplacement précédent"/>
- <pull_button name="forward_btn" tool_tip="Avancer d&apos;un emplacement"/>
- <button name="home_btn" tool_tip="Me téléporter jusqu&apos;à mon domicile"/>
- <location_input label="Emplacement" name="location_combo"/>
- <search_combo_box label="Rechercher" name="search_combo_box" tool_tip="Rechercher">
- <combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
- <label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
- Favoris
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_people.xml b/indra/newview/skins/minimal/xui/fr/panel_people.xml
deleted file mode 100644
index 427a420b91..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Résidents" name="people_panel">
- <string name="no_recent_people" value="Personne de récent. Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous."/>
- <string name="no_filtered_recent_people" value="Personne de récent portant ce nom."/>
- <string name="no_one_near" value="Personne près de vous. Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous."/>
- <string name="no_one_filtered_near" value="Personne près de vous portant ce nom."/>
- <string name="no_friends_online" value="Pas d&apos;amis connectés"/>
- <string name="no_friends" value="Pas d&apos;amis"/>
- <string name="no_friends_msg">
- Pour ajouter un résident à votre liste d&apos;amis, cliquez-droit dessus.
-Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous.
- </string>
- <string name="no_filtered_friends_msg">
- Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez avec le bouton Destinations ci-dessous.
- </string>
- <string name="people_filter_label" value="Filtrer les personnes"/>
- <string name="groups_filter_label" value="Filtrer les groupes"/>
- <string name="no_filtered_groups_msg" value="Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/groups/[SEARCH_TERM] Rechercher]."/>
- <string name="no_groups_msg" value="Vous souhaitez trouver des groupes à rejoindre ? Utilisez [secondlife:///app/search/groups Rechercher]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)"/>
- <filter_editor label="Filtre" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="PRÈS DE VOUS" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel"/>
- </panel>
- <panel label="MES AMIS" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="En ligne"/>
- <accordion_tab name="tab_all" title="Tout"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d&apos;amis."/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="RÉCENT" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM."/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Appeler" name="call_btn" tool_tip="Appeler ce résident."/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation."/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Profil du groupe" name="group_info_btn" tool_tip="Afficher les informations sur le groupe"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 45efbdc980..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Panneau latéral"/>
- <button name="undock" tool_tip="Détacher"/>
- <button name="dock" tool_tip="Attacher"/>
- <button name="show_help" tool_tip="Afficher l&apos;aide"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml b/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml
deleted file mode 100644
index 9e814ee7ab..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Perte de paquets
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Bande passante
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- [AMT] L$
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
- <combo_box.item label="Mode basique" name="Basic"/>
- <combo_box.item label="Mode avancé" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)"/>
- <button name="volume_btn" tool_tip="Contrôle du volume global"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/floater_camera.xml b/indra/newview/skins/minimal/xui/it/floater_camera.xml
deleted file mode 100644
index 3fdf4f48a2..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Ruota la telecamera Intorno all&apos;Inquadratura
- </floater.string>
- <floater.string name="zoom_tooltip">
- Avvicina la telecamera nell&apos;inquadratura
- </floater.string>
- <floater.string name="move_tooltip">
- Muovi la telecamera su e giù e a sinistra e destra
- </floater.string>
- <floater.string name="camera_modes_title">
- Modalità della fotocamera
- </floater.string>
- <floater.string name="pan_mode_title">
- Ruota visuale - Ingrandisci - Panoramica
- </floater.string>
- <floater.string name="presets_mode_title">
- Visuali predefinite
- </floater.string>
- <floater.string name="free_mode_title">
- Vedi oggetto
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Visuale frontale
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Visuale laterale
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Visuale posteriore
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Visuale oggetto
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Visuale soggettiva
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Avvicina la telecamera nell&apos;inquadratura">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Ruota la visuale intorno al punto focale"/>
- <slider_bar name="zoom_slider" tool_tip="Zoom verso il centro focale"/>
- <joystick_track name="cam_track_stick" tool_tip="Sposta la visuale in su e in giù, a sinistra e a destra"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Visuali predefinite"/>
- <button label="" name="pan_btn" tool_tip="Ruota visuale - Ingrandisci - Panoramica"/>
- <button label="" name="avatarview_btn" tool_tip="Modalità della fotocamera"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_help_browser.xml b/indra/newview/skins/minimal/xui/it/floater_help_browser.xml
deleted file mode 100644
index 18264cdd17..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ISTRUZIONI">
- <floater.string name="loading_text">
- Caricamento in corso...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_media_browser.xml b/indra/newview/skins/minimal/xui/it/floater_media_browser.xml
deleted file mode 100644
index b1e87290d2..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_media_browser.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="BROWSER MULTIMEDIA">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Indietro" name="back" width="75"/>
- <button label="Avanti" left_delta="75" name="forward" width="70"/>
- <button label="Ricarica" left_delta="75" name="reload"/>
- <combo_box left_delta="75" name="address" width="510"/>
- <button label="Vai" left_delta="515" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="indietro rapido" name="rewind"/>
- <button label="stop" name="stop"/>
- <button label="avanti" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Invia la pagina attuale al lotto" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Apri nel mio browser Web" name="open_browser"/>
- <check_box label="Apri sempre nel mio browser Web" name="open_always"/>
- <button label="Chiudi" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml
deleted file mode 100644
index 4c41df8a62..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT NEI DINTORNI">
- <check_box label="Traduci chat (tecnologia Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_web_content.xml b/indra/newview/skins/minimal/xui/it/floater_web_content.xml
deleted file mode 100644
index 5603e85417..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Naviga indietro"/>
- <button name="forward" tool_tip="Naviga avanti"/>
- <button name="stop" tool_tip="Interrompi navigazione"/>
- <button name="reload" tool_tip="Ricarica pagina"/>
- <combo_box name="address" tool_tip="Inserisci URL qui"/>
- <icon name="media_secure_lock_flag" tool_tip="Navigazione sicura"/>
- <button name="popexternal" tool_tip="Apri URL corrente nel browser del computer"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/inspect_avatar.xml b/indra/newview/skins/minimal/xui/it/inspect_avatar.xml
deleted file mode 100644
index 6f52aaef74..0000000000
--- a/indra/newview/skins/minimal/xui/it/inspect_avatar.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_name_small" value="Grumpity ProductEngine con un nome lungo"/>
- <text name="user_slid" value="james.linden"/>
- <text name="user_details">
- Questa è la mia descrizione in second life e penso che sia perfetta. Ma per qualche motivo la mia descrizione è davvero molto lunga, perché mi piace parlare a lungo
- </text>
- <slider name="volume_slider" tool_tip="Volume voce" value="0.5"/>
- <button label="Aggiungi amico" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="Profilo" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Disattiva voce" name="disable_voice"/>
- <button label="Attiva voce" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/inspect_object.xml b/indra/newview/skins/minimal/xui/it/inspect_object.xml
deleted file mode 100644
index d8ab10cfda..0000000000
--- a/indra/newview/skins/minimal/xui/it/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Di [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Di [CREATOR]
-Proprietario [OWNER]
- </string>
- <string name="Price">
- L$ [AMOUNT]
- </string>
- <string name="PriceFree">
- Gratis!
- </string>
- <string name="Touch">
- Tocca
- </string>
- <string name="Sit">
- Siediti
- </string>
- <text name="object_name" value="Nome oggetto di prova che si trova su due righe ed è molto lungo"/>
- <text name="price_text">
- L$ 30.000
- </text>
- <text name="object_description">
- Questa è una descrizione di un oggetto che è molto lunga ed è di almeno 80 caratteri, ma potrebbe essere di 120 caratteri a questo punto. Chi lo sa veramente?
- </text>
- <button label="Acquista" name="buy_btn"/>
- <button label="Paga" name="pay_btn"/>
- <button label="Prendi copia" name="take_free_copy_btn"/>
- <button label="Tocca" name="touch_btn"/>
- <button label="Siediti" name="sit_btn"/>
- <button label="Apri" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Browsing sicuro"/>
- <button label="Altro" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml
deleted file mode 100644
index 46abd7deed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Mostra prima i più recenti" name="sort_by_most_recent"/>
- <menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
- <menu_item_check label="Ordina in base al tipo" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml
deleted file mode 100644
index d4d6fd68d0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Vedi profilo" name="Profile..."/>
- <menu_item_call label="Aggiungi amico" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Invita al gruppo" name="Invite..."/>
- <menu_item_call label="Blocca" name="Avatar Mute"/>
- <menu_item_call label="Segnala" name="abuse"/>
- <menu_item_call label="Congela" name="Freeze..."/>
- <menu_item_call label="Espelli" name="Eject..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
- <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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml
deleted file mode 100644
index 0b841d591f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Tocca" name="Attachment Object Touch"/>
- <menu_item_call label="Modifica" name="Edit..."/>
- <menu_item_call label="Stacca" name="Detach"/>
- <menu_item_call label="Siedi" name="Sit Down Here"/>
- <menu_item_call label="Alzati" name="Stand Up"/>
- <menu_item_call label="Il mio aspetto" name="Change Outfit"/>
- <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
- <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
- <menu_item_call label="I miei amici..." name="Friends..."/>
- <menu_item_call label="I miei gruppi" name="Groups..."/>
- <menu_item_call label="Il mio profilo" name="Profile..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
- <menu_item_call label="Lascia" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml
deleted file mode 100644
index b93b695300..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Vedi profilo" name="Show Profile"/>
- <menu_item_call label="Manda IM..." name="Send IM"/>
- <menu_item_call label="Aggiungi come amico..." name="Add Friend"/>
- <menu_item_call label="Togli amicizia..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml
deleted file mode 100644
index c2edc32a49..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Vedi profilo" name="Profile..."/>
- <menu_item_call label="Aggiungi amico" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Invita al gruppo" name="Invite..."/>
- <menu_item_call label="Blocca" name="Avatar Mute"/>
- <menu_item_call label="Segnala" name="abuse"/>
- <menu_item_call label="Congela" name="Freeze..."/>
- <menu_item_call label="Espelli" name="Eject..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
- <menu_item_call label="Zoom avanti" name="Zoom In"/>
- <menu_item_call label="Paga" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml
deleted file mode 100644
index a4dafd7b5f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Siedi" name="Sit Down Here"/>
- <menu_item_call label="Alzati" name="Stand Up"/>
- <context_menu label="Togli" name="Take Off &gt;">
- <context_menu label="Abiti" name="Clothes &gt;">
- <menu_item_call label="Camicia" name="Shirt"/>
- <menu_item_call label="Pantaloni" name="Pants"/>
- <menu_item_call label="Gonna" name="Skirt"/>
- <menu_item_call label="Scarpe" name="Shoes"/>
- <menu_item_call label="Calzini" name="Socks"/>
- <menu_item_call label="Giacca" name="Jacket"/>
- <menu_item_call label="Guanti" name="Gloves"/>
- <menu_item_call label="Maglietta intima" name="Self Undershirt"/>
- <menu_item_call label="Slip" name="Self Underpants"/>
- <menu_item_call label="Tatuaggio" name="Self Tattoo"/>
- <menu_item_call label="Fisica" name="Self Physics"/>
- <menu_item_call label="Alpha (Trasparenza)" name="Self Alpha"/>
- <menu_item_call label="Tutti gli abiti" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Stacca" name="Object Detach"/>
- <menu_item_call label="Stacca tutto" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Il mio aspetto" name="Chenge Outfit"/>
- <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
- <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
- <menu_item_call label="I miei amici..." name="Friends..."/>
- <menu_item_call label="I miei gruppi" name="Groups..."/>
- <menu_item_call label="Il mio profilo" name="Profile..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml
deleted file mode 100644
index ddd6909136..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Pulsante Parla" name="EnableVoiceChat"/>
- <menu_item_check label="Tasto Gesture" name="ShowGestureButton"/>
- <menu_item_check label="Tasto Movimento" name="ShowMoveButton"/>
- <menu_item_check label="Tasto Visuale" name="ShowCameraButton"/>
- <menu_item_check label="Tasto Foto" name="ShowSnapshotButton"/>
- <menu_item_check label="Pulsante Costruisci" name="ShowBuildButton"/>
- <menu_item_check label="Pulsante Cerca" name="ShowSearchButton"/>
- <menu_item_check label="Pulsante Mappa" name="ShowWorldMapButton"/>
- <menu_item_check label="Pulsante Mini mappa" name="ShowMiniMapButton"/>
- <menu_item_call label="Taglia" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Copia" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Incolla" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Elimina" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Seleziona tutto" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml
deleted file mode 100644
index 699490c8f1..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Stacca" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml
deleted file mode 100644
index 1e3658ef45..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Sostituisci" name="replace"/>
- <menu_item_call label="Modifica" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml
deleted file mode 100644
index 1e16ce8ed1..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Togli" name="take_off"/>
- <menu_item_call label="Modifica" name="edit"/>
- <menu_item_call label="Sostituisci" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml
deleted file mode 100644
index 10524ba92d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Nuovi abiti" name="COF.Gear.New_Clothes"/>
- <menu label="Nuove parti del corpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_edit.xml b/indra/newview/skins/minimal/xui/it/menu_edit.xml
deleted file mode 100644
index ffb20a02e9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Modifica" name="Edit">
- <menu_item_call label="Annulla" name="Undo"/>
- <menu_item_call label="Ripeti" name="Redo"/>
- <menu_item_call label="Taglia" name="Cut"/>
- <menu_item_call label="Copia" name="Copy"/>
- <menu_item_call label="Incolla" name="Paste"/>
- <menu_item_call label="Elimina" name="Delete"/>
- <menu_item_call label="Duplica" name="Duplicate"/>
- <menu_item_call label="Seleziona tutto" name="Select All"/>
- <menu_item_call label="Deseleziona" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_favorites.xml b/indra/newview/skins/minimal/xui/it/menu_favorites.xml
deleted file mode 100644
index 7813ef44b5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleport" name="Teleport To Landmark"/>
- <menu_item_call label="Vedi/Modifica punto di riferimento" name="Landmark Open"/>
- <menu_item_call label="Copia SLurl" name="Copy slurl"/>
- <menu_item_call label="Mostra sulla mappa" name="Show On Map"/>
- <menu_item_call label="Copia" name="Landmark Copy"/>
- <menu_item_call label="Incolla" name="Landmark Paste"/>
- <menu_item_call label="Elimina" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml
deleted file mode 100644
index 7cfcc6287e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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="Copia" name="copy_gesture"/>
- <menu_item_call label="Incolla" name="paste"/>
- <menu_item_call label="Copia UUID" name="copy_uuid"/>
- <menu_item_call label="Salva vestiario" name="save_to_outfit"/>
- <menu_item_call label="Modifica" name="edit_gesture"/>
- <menu_item_call label="Ispeziona" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_group_plus.xml b/indra/newview/skins/minimal/xui/it/menu_group_plus.xml
deleted file mode 100644
index 3b76fb94a9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Aderisci al gruppo..." name="item_join"/>
- <menu_item_call label="Nuovo gruppo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml
deleted file mode 100644
index 2c2c6c4bc5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Mostra la barra dei Preferiti" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Mostra mini barra del luogo" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml
deleted file mode 100644
index 9e471b771c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Chiudi tutto" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml
deleted file mode 100644
index f78ed8489f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml
deleted file mode 100644
index baa4e671b0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Informazioni sul gruppo" name="Show Profile"/>
- <menu_item_call label="Mostra sessione" name="Chat"/>
- <menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml
deleted file mode 100644
index 2eacbb09ad..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Vedi profilo" name="Show Profile"/>
- <menu_item_call label="Aggiungi amico" name="Add Friend"/>
- <menu_item_call label="Mostra sessione" name="Send IM"/>
- <menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 1f10734c4a..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Vedi profilo" name="view_profile"/>
- <menu_item_call label="Aggiungi amico" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="Chiama" name="call"/>
- <menu_item_call label="Teleport" name="teleport"/>
- <menu_item_call label="Invita al gruppo" name="invite_to_group"/>
- <menu_item_call label="Blocca" name="block"/>
- <menu_item_call label="Sblocca" name="unblock"/>
- <menu_item_call label="Segnala" name="report"/>
- <menu_item_call label="Congela" name="freeze"/>
- <menu_item_call label="Espelli" name="eject"/>
- <menu_item_call label="Espelli" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Debug delle texture" name="debug"/>
- <menu_item_call label="Trova sulla mappa" name="find_on_map"/>
- <menu_item_call label="Zoom avanti" name="zoom_in"/>
- <menu_item_call label="Paga" name="pay"/>
- <menu_item_call label="Condividi" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml
deleted file mode 100644
index ede4a507c0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Tocca" name="touch"/>
- <menu_item_call label="Siediti" name="sit"/>
- <menu_item_call label="Paga" name="pay"/>
- <menu_item_call label="Acquista" name="buy"/>
- <menu_item_call label="Prendi" name="take"/>
- <menu_item_call label="Prendi copia" name="take_copy"/>
- <menu_item_call label="Apri" name="open"/>
- <menu_item_call label="Modifica" name="edit"/>
- <menu_item_call label="Indossa" name="wear"/>
- <menu_item_call label="Aggiungi" name="add"/>
- <menu_item_call label="Segnala" name="report"/>
- <menu_item_call label="Blocca" name="block"/>
- <menu_item_call label="Zoom avanti" name="zoom_in"/>
- <menu_item_call label="Rimuovi" name="remove"/>
- <menu_item_call label="Maggiori informazioni" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml
deleted file mode 100644
index 4f62ccaa9c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Siedi" name="Sit Down Here"/>
- <menu_item_call label="Alzati" name="Stand Up"/>
- <context_menu label="Togli" name="Take Off &gt;">
- <context_menu label="Abiti" name="Clothes &gt;">
- <menu_item_call label="Camicia" name="Shirt"/>
- <menu_item_call label="Pantaloni" name="Pants"/>
- <menu_item_call label="Gonna" name="Skirt"/>
- <menu_item_call label="Scarpe" name="Shoes"/>
- <menu_item_call label="Calzini" name="Socks"/>
- <menu_item_call label="Giacca" name="Jacket"/>
- <menu_item_call label="Guanti" name="Gloves"/>
- <menu_item_call label="Maglietta intima" name="Self Undershirt"/>
- <menu_item_call label="Slip" name="Self Underpants"/>
- <menu_item_call label="Tatuaggio" name="Self Tattoo"/>
- <menu_item_call label="Alpha (Trasparenza)" name="Self Alpha"/>
- <menu_item_call label="Tutti gli abiti" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Stacca" name="Object Detach"/>
- <menu_item_call label="Stacca tutto" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Cambia vestiario" name="Chenge Outfit"/>
- <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
- <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
- <menu_item_call label="I miei amici" name="Friends..."/>
- <menu_item_call label="I miei gruppi" name="Groups..."/>
- <menu_item_call label="Il mio profilo" name="Profile..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 471640eff5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Chiudi" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory.xml b/indra/newview/skins/minimal/xui/it/menu_inventory.xml
deleted file mode 100644
index f18ddb595c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Compra" name="Task Buy"/>
- <menu_item_call label="Apri" name="Task Open"/>
- <menu_item_call label="Esegui" name="Task Play"/>
- <menu_item_call label="Proprietà" name="Task Properties"/>
- <menu_item_call label="Rinomina" name="Task Rename"/>
- <menu_item_call label="Elimina" name="Task Remove"/>
- <menu_item_call label="Svuota il Cestino" name="Empty Trash"/>
- <menu_item_call label="Svuota gli oggetti persi e ritrovati" name="Empty Lost And Found"/>
- <menu_item_call label="Nuova cartella" name="New Folder"/>
- <menu_item_call label="Nuovo script" name="New Script"/>
- <menu_item_call label="Nuovo biglietto" name="New Note"/>
- <menu_item_call label="Nuova gesture" name="New Gesture"/>
- <menu label="Maglietta intima" name="New Clothes">
- <menu_item_call label="Nuova maglietta" name="New Shirt"/>
- <menu_item_call label="Nuovi pantaloni" name="New Pants"/>
- <menu_item_call label="Nuove scarpe" name="New Shoes"/>
- <menu_item_call label="Nuove calze" name="New Socks"/>
- <menu_item_call label="Nuova giacca" name="New Jacket"/>
- <menu_item_call label="Nuova gonna" name="New Skirt"/>
- <menu_item_call label="Nuovi guanti" name="New Gloves"/>
- <menu_item_call label="Nuova canottiera" name="New Undershirt"/>
- <menu_item_call label="Nuove mutande" name="New Underpants"/>
- <menu_item_call label="Nuovo Alfa Mask" name="New Alpha Mask"/>
- <menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
- <menu_item_call label="Nuova fisica" name="New Physics"/>
- </menu>
- <menu label="Nuove parti del corpo" name="New Body Parts">
- <menu_item_call label="Nuova forma del corpo" name="New Shape"/>
- <menu_item_call label="Nuova pelle" name="New Skin"/>
- <menu_item_call label="Nuovi capelli" name="New Hair"/>
- <menu_item_call label="Nuovi occhi" name="New Eyes"/>
- </menu>
- <menu label="Cambia tipo" name="Change Type">
- <menu_item_call label="Predefinito" name="Default"/>
- <menu_item_call label="Guanti" name="Gloves"/>
- <menu_item_call label="Giacca" name="Jacket"/>
- <menu_item_call label="Pantaloni" name="Pants"/>
- <menu_item_call label="Figura corporea" name="Shape"/>
- <menu_item_call label="Scarpe" name="Shoes"/>
- <menu_item_call label="Camicia" name="Shirt"/>
- <menu_item_call label="Gonna" name="Skirt"/>
- <menu_item_call label="Slip" name="Underpants"/>
- <menu_item_call label="Maglietta intima" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teletrasportati" name="Landmark Open"/>
- <menu_item_call label="Apri" name="Animation Open"/>
- <menu_item_call label="Apri" name="Sound Open"/>
- <menu_item_call label="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="Trova originale" name="Find Original"/>
- <menu_item_call label="Elimina oggetto" name="Purge Item"/>
- <menu_item_call label="Ripristina oggetto" name="Restore Item"/>
- <menu_item_call label="Apri" name="Open"/>
- <menu_item_call label="Apri originale" name="Open Original"/>
- <menu_item_call label="Proprietà" name="Properties"/>
- <menu_item_call label="Rinomina" name="Rename"/>
- <menu_item_call label="Copia UUID dell&apos;oggetto" name="Copy Asset UUID"/>
- <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"/>
- <menu_item_call label="Esegui" name="Sound Play"/>
- <menu_item_call label="Informazioni sul punto di riferimento" name="About Landmark"/>
- <menu_item_call label="Riproduci in Second Life" name="Animation Play"/>
- <menu_item_call label="Esegui localmente" name="Animation Audition"/>
- <menu_item_call label="Invia un Instant Message" name="Send Instant Message"/>
- <menu_item_call label="Offri teletrasporto..." name="Offer Teleport..."/>
- <menu_item_call label="Inizia una conferenza chat" name="Conference Chat"/>
- <menu_item_call label="Attiva" name="Activate"/>
- <menu_item_call label="Disattiva" name="Deactivate"/>
- <menu_item_call label="Salva con nome" name="Save As"/>
- <menu_item_call label="Stacca da te" name="Detach From Yourself"/>
- <menu_item_call label="Indossa" name="Wearable And Object Wear"/>
- <menu label="Attacca a" name="Attach To"/>
- <menu label="Attacca all&apos;HUD" name="Attach To HUD"/>
- <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="--nessuna opzione--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml
deleted file mode 100644
index a2535ce48d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Carica nel server" name="upload">
- <menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/>
- <menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/>
- <menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/>
- <menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/>
- <menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/>
- </menu>
- <menu_item_call label="Nuova cartella" name="New Folder"/>
- <menu_item_call label="Nuovo script" name="New Script"/>
- <menu_item_call label="Nuovo biglietto" name="New Note"/>
- <menu_item_call label="Nuova gesture" name="New Gesture"/>
- <menu label="Maglietta intima" name="New Clothes">
- <menu_item_call label="Nuova camicia" name="New Shirt"/>
- <menu_item_call label="Nuovi pantaloni" name="New Pants"/>
- <menu_item_call label="Nuove scarpe" name="New Shoes"/>
- <menu_item_call label="Nuove calze" name="New Socks"/>
- <menu_item_call label="Nuova giacca" name="New Jacket"/>
- <menu_item_call label="Nuova gonna" name="New Skirt"/>
- <menu_item_call label="Nuovi guanti" name="New Gloves"/>
- <menu_item_call label="Nuova maglietta intima" name="New Undershirt"/>
- <menu_item_call label="Nuovi slip" name="New Underpants"/>
- <menu_item_call label="Nuovo Alfa (trasparenza)" name="New Alpha"/>
- <menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
- <menu_item_call label="Nuova fisica" name="New Physics"/>
- </menu>
- <menu label="Nuove parti del corpo" name="New Body Parts">
- <menu_item_call label="Nuova figura corporea" name="New Shape"/>
- <menu_item_call label="Nuova pelle" name="New Skin"/>
- <menu_item_call label="Nuovi capelli" name="New Hair"/>
- <menu_item_call label="Nuovi occhi" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml
deleted file mode 100644
index 3d64e4da4e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nuova finestra inventario" name="new_window"/>
- <menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
- <menu_item_check label="Mostra prima i più recenti" name="sort_by_recent"/>
- <menu_item_check label="Ordina le cartelle sempre in base al nome" name="sort_folders_by_name"/>
- <menu_item_check label="Ordina cartelle di sistema all&apos;inizio" name="sort_system_folders_to_top"/>
- <menu_item_call label="Mostra filtri" name="show_filters"/>
- <menu_item_call label="Ripristina filtri" name="reset_filters"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="close_folders"/>
- <menu_item_call label="Svuota oggetti smarriti" name="empty_lostnfound"/>
- <menu_item_call label="Salva texture come" name="Save Texture As"/>
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Trova originale" name="Find Original"/>
- <menu_item_call label="Trova tutti i link" name="Find All Links"/>
- <menu_item_call label="Svuota cestino" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_land.xml b/indra/newview/skins/minimal/xui/it/menu_land.xml
deleted file mode 100644
index f510078e14..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Informazioni sui terreni" name="Place Information..."/>
- <menu_item_call label="Siediti qui" name="Sit Here"/>
- <menu_item_call label="Acquista questo terreno" name="Land Buy"/>
- <menu_item_call label="Acquista Permesso" name="Land Buy Pass"/>
- <menu_item_call label="Costruisci" name="Create"/>
- <menu_item_call label="Modifica terreno" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_landmark.xml b/indra/newview/skins/minimal/xui/it/menu_landmark.xml
deleted file mode 100644
index b3cddab783..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copia SLurl" name="copy"/>
- <menu_item_call label="Elimina" name="delete"/>
- <menu_item_call label="Crea Luogo consigliato" name="pick"/>
- <menu_item_call label="Aggiungi alla barra dei Preferiti" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_login.xml b/indra/newview/skins/minimal/xui/it/menu_login.xml
deleted file mode 100644
index bdf7d2094f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Io" name="File">
- <menu_item_call label="Preferenze" name="Preferences..."/>
- <menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Aiuto" name="Help">
- <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Mostra menu Debug" name="Show Debug Menu"/>
- <menu label="Debug" name="Debug">
- <menu_item_call label="Mostra impostazioni di debug" name="Debug Settings"/>
- <menu_item_call label="Impostazioni colori interfaccia" name="UI/Color Settings"/>
- <menu label="Test interfaccia utente" name="UI Tests"/>
- <menu_item_call label="Imposta dimensioni della finestra..." name="Set Window Size..."/>
- <menu_item_call label="Mostra i Termini del servizio (TOS)" name="TOS"/>
- <menu_item_call label="Mostra messaggio critico" name="Critical"/>
- <menu_item_call label="Test browser multimedia" name="Web Browser Test"/>
- <menu_item_call label="Test finestra contenuti Web" name="Web Content Floater Test"/>
- <menu_item_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/minimal/xui/it/menu_mini_map.xml b/indra/newview/skins/minimal/xui/it/menu_mini_map.xml
deleted file mode 100644
index 561b80e046..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom ravvicinato" name="Zoom Close"/>
- <menu_item_call label="Zoom Medio" name="Zoom Medium"/>
- <menu_item_call label="Zoom Distante" name="Zoom Far"/>
- <menu_item_call label="Zoom predefinito" name="Zoom Default"/>
- <menu_item_check label="Ruota la mappa" name="Rotate Map"/>
- <menu_item_check label="Centra automaticamente" name="Auto Center"/>
- <menu_item_call label="Ferma il puntamento" name="Stop Tracking"/>
- <menu_item_call label="Mappa del mondo" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_navbar.xml b/indra/newview/skins/minimal/xui/it/menu_navbar.xml
deleted file mode 100644
index e42d913a6f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Mostra le coordinate" name="Show Coordinates"/>
- <menu_item_check label="Mostra proprietà lotto" name="Show Parcel Properties"/>
- <menu_item_call label="Punto di riferimento" name="Landmark"/>
- <menu_item_call label="Taglia" name="Cut"/>
- <menu_item_call label="Copia" name="Copy"/>
- <menu_item_call label="Incolla" name="Paste"/>
- <menu_item_call label="Elimina" name="Delete"/>
- <menu_item_call label="Seleziona tutto" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml
deleted file mode 100644
index 719a6d3261..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Mostra le persone vicine..." name="nearby_people"/>
- <menu_item_check label="Mostra il testo bloccato" name="muted_text"/>
- <menu_item_check label="Mostra icone amici" name="show_buddy_icons"/>
- <menu_item_check label="Mostra nomi" name="show_names"/>
- <menu_item_check label="Mostra icone e nomi" name="show_icons_and_names"/>
- <menu_item_call label="Dimensioni caratteri" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml
deleted file mode 100644
index 8c82e30f0e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Chiudi tutto" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_object.xml b/indra/newview/skins/minimal/xui/it/menu_object.xml
deleted file mode 100644
index a172cf3b26..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Tocca" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Tocca"/>
- </menu_item_call>
- <menu_item_call label="Modifica" name="Edit..."/>
- <menu_item_call label="Costruisci" name="Build"/>
- <menu_item_call label="Apri" name="Open"/>
- <menu_item_call label="Siediti qui" name="Object Sit"/>
- <menu_item_call label="Alzati" name="Object Stand Up"/>
- <menu_item_call label="Profilo dell&apos;oggetto" name="Object Inspect"/>
- <menu_item_call label="Zoom avanti" name="Zoom In"/>
- <context_menu label="Metti" name="Put On">
- <menu_item_call label="Indossa" name="Wear"/>
- <menu_item_call label="Aggiungi" name="Add"/>
- <context_menu label="Attacca" name="Object Attach"/>
- <context_menu label="Attacca HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Gestisci" name="Remove">
- <menu_item_call label="Segnala abuso" name="Report Abuse..."/>
- <menu_item_call label="Blocca" name="Object Mute"/>
- <menu_item_call label="Restituisci" name="Return..."/>
- </context_menu>
- <menu_item_call label="Prendi" name="Pie Object Take"/>
- <menu_item_call label="Prendi copia" name="Take Copy"/>
- <menu_item_call label="Paga" name="Pay..."/>
- <menu_item_call label="Acquista" name="Buy..."/>
- <menu_item_call label="Elimina" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_object_icon.xml b/indra/newview/skins/minimal/xui/it/menu_object_icon.xml
deleted file mode 100644
index 0f347b1a90..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Profilo oggetto..." name="Object Profile"/>
- <menu_item_call label="Blocca..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml
deleted file mode 100644
index 09fc867d7c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Outfit">
- <menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear"/>
- <menu_item_call label="Indossa - Aggiungi al vestiario attuale" name="wear_add"/>
- <menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/>
- <menu label="Nuovi abiti" name="New Clothes">
- <menu_item_call label="Nuova camicia" name="New Shirt"/>
- <menu_item_call label="Nuovi pantaloni" name="New Pants"/>
- <menu_item_call label="Nuove scarpe" name="New Shoes"/>
- <menu_item_call label="Nuove calze" name="New Socks"/>
- <menu_item_call label="Nuova giacca" name="New Jacket"/>
- <menu_item_call label="Nuova gonna" name="New Skirt"/>
- <menu_item_call label="Nuovi guanti" name="New Gloves"/>
- <menu_item_call label="Nuova maglietta intima" name="New Undershirt"/>
- <menu_item_call label="Nuovi slip" name="New Underpants"/>
- <menu_item_call label="Nuovo Alpha (trasparenza)" name="New Alpha"/>
- <menu_item_call label="Nuova fisica" name="New Physics"/>
- <menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
- </menu>
- <menu label="Nuove parti del corpo" name="New Body Parts">
- <menu_item_call label="Nuova figura corporea" name="New Shape"/>
- <menu_item_call label="Nuova pelle" name="New Skin"/>
- <menu_item_call label="Nuovi capelli" name="New Hair"/>
- <menu_item_call label="Nuovi occhi" name="New Eyes"/>
- </menu>
- <menu_item_call label="Cambia nome del vestiario" name="rename"/>
- <menu_item_call label="Elimina vestito" name="delete_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml
deleted file mode 100644
index 8166cf20ed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear_replace"/>
- <menu_item_call label="Indossa - Aggiungi al vestiario attuale" name="wear_add"/>
- <menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/>
- <menu_item_call label="Modifica vestiario" name="edit"/>
- <menu_item_call label="Cambia nome del vestiario" name="rename"/>
- <menu_item_call label="Elimina vestito" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_participant_list.xml b/indra/newview/skins/minimal/xui/it/menu_participant_list.xml
deleted file mode 100644
index 1b057c4077..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Ordina in base al nome" name="SortByName"/>
- <menu_item_check label="Ordina in base a intervenuti recenti" name="SortByRecentSpeakers"/>
- <menu_item_call label="Vedi profilo" name="View Profile"/>
- <menu_item_call label="Aggiungi amico" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Paga" name="Pay"/>
- <menu_item_check label="Icone persone" name="View Icons"/>
- <menu_item_check label="Blocca voce" name="Block/Unblock"/>
- <menu_item_check label="Blocca testo" name="MuteText"/>
- <context_menu label="Opzioni moderatore" name="Moderator Options">
- <menu_item_check label="Consenti chat di testo" name="AllowTextChat"/>
- <menu_item_call label="Disattiva audio di questo participante" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Riattiva audio di questo participante" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Disattiva audio di tutti" name="ModerateVoiceMute"/>
- <menu_item_call label="Riattiva audio di tutti" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml
deleted file mode 100644
index 3a799f44eb..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordina in base al nome" name="sort_name"/>
- <menu_item_check label="Ordina in base allo stato" name="sort_status"/>
- <menu_item_check label="Icone persone" name="view_icons"/>
- <menu_item_check label="Visualizza autorizzazioni concesse" name="view_permissions"/>
- <menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_groups.xml b/indra/newview/skins/minimal/xui/it/menu_people_groups.xml
deleted file mode 100644
index 30a97a1c72..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Mostra informazioni" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Attiva" name="Activate"/>
- <menu_item_call label="Chiudi" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml
deleted file mode 100644
index d31ddaf1aa..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Visualizza le icone di gruppo" name="Display Group Icons"/>
- <menu_item_call label="Lascia i gruppi selezionati" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml
deleted file mode 100644
index ab06d28c36..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Vedi profilo" name="View Profile"/>
- <menu_item_call label="Aggiungi come amico" name="Add Friend"/>
- <menu_item_call label="Rimuovi amico" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Mappa" name="Map"/>
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Paga" name="Pay"/>
- <menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
- <menu_item_call label="Offri Teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml
deleted file mode 100644
index e0b9ceb63d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Aggiungi amici" name="Add Friends"/>
- <menu_item_call label="Rimuovi amici" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Paga" name="Pay"/>
- <menu_item_call label="Offri Teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml
deleted file mode 100644
index aae2313702..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordina in base a intervenuti recenti" name="sort_by_recent_speakers"/>
- <menu_item_check label="Ordina in base al nome" name="sort_name"/>
- <menu_item_check label="Ordina in base alla distanza" name="sort_distance"/>
- <menu_item_check label="Icone persone" name="view_icons"/>
- <menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml
deleted file mode 100644
index 7fccd1621a..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Mostra prima i più recenti" name="sort_most"/>
- <menu_item_check label="Ordina in base al nome" name="sort_name"/>
- <menu_item_check label="Icone persone" name="view_icons"/>
- <menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_picks.xml b/indra/newview/skins/minimal/xui/it/menu_picks.xml
deleted file mode 100644
index 000d219ed0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Informazioni" name="pick_info"/>
- <menu_item_call label="Modifica" name="pick_edit"/>
- <menu_item_call label="Teleport" name="pick_teleport"/>
- <menu_item_call label="Mappa" name="pick_map"/>
- <menu_item_call label="Elimina" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml
deleted file mode 100644
index 7fbd5abd57..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Nuovo luogo preferito" name="create_pick"/>
- <menu_item_call label="Nuovo annuncio" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_place.xml b/indra/newview/skins/minimal/xui/it/menu_place.xml
deleted file mode 100644
index 5381a4effa..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Salva come punto di riferimento" name="landmark"/>
- <menu_item_call label="Crea Luogo consigliato" name="pick"/>
- <menu_item_call label="Acquista Permesso" name="pass"/>
- <menu_item_call label="Modifica" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml
deleted file mode 100644
index 0e783c0000..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Aggiungi cartella" name="add_folder"/>
- <menu_item_call label="Aggiungi punto di riferimento" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml
deleted file mode 100644
index 23757d47e0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
- <menu_item_call label="Aggiungi punto di riferimento" name="add_landmark"/>
- <menu_item_call label="Aggiungi cartella" name="add_folder"/>
- <menu_item_call label="Ripristina oggetto" name="restore_item"/>
- <menu_item_call label="Taglia" name="cut"/>
- <menu_item_call label="Copia" name="copy_folder"/>
- <menu_item_call label="Incolla" name="paste"/>
- <menu_item_call label="Modifica nome" name="rename"/>
- <menu_item_call label="Elimina" name="delete"/>
- <menu_item_call label="Espandi" name="expand"/>
- <menu_item_call label="Comprimi" name="collapse"/>
- <menu_item_call label="Apri tutte le cartelle" name="expand_all"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/>
- <menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml
deleted file mode 100644
index a458b1a768..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
- <menu_item_call label="Teleport" name="teleport"/>
- <menu_item_call label="Maggiori informazioni" name="more_info"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Aggiungi Punto di riferimento" name="add_landmark"/>
- <menu_item_call label="Aggiungi cartella" name="add_folder"/>
- <menu_item_call label="Ripristina oggetto" name="restore_item"/>
- <menu_item_call label="Taglia" name="cut"/>
- <menu_item_call label="Copia punto di riferimento" name="copy_landmark"/>
- <menu_item_call label="Copia SLurl" name="copy_slurl"/>
- <menu_item_call label="Incolla" name="paste"/>
- <menu_item_call label="Modifica nome" name="rename"/>
- <menu_item_call label="Elimina" name="delete"/>
- <menu_item_call label="Apri tutte le cartelle" name="expand_all"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/>
- <menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
- <menu_item_call label="Crea Luogo consigliato" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml
deleted file mode 100644
index 56b695c597..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Mappa" name="show_on_map"/>
- <menu_item_call label="Paga" name="pay"/>
- <menu_item_call label="Condividi" name="share"/>
- <menu_item_call label="Blocca" name="block"/>
- <menu_item_call label="Sblocca" name="unblock"/>
- <menu_item_call label="Espelli" name="kick"/>
- <menu_item_call label="Congela" name="freeze"/>
- <menu_item_call label="Scongela" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml
deleted file mode 100644
index 4882a8ac64..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Salva" name="save_outfit"/>
- <menu_item_call label="Salva con nome" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml
deleted file mode 100644
index 604f754ba8..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Chiudi" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_slurl.xml b/indra/newview/skins/minimal/xui/it/menu_slurl.xml
deleted file mode 100644
index be83133efc..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Informazioni sull&apos;indirizzo URL" name="about_url"/>
- <menu_item_call label="Teleportati all&apos;indirizzo URL" name="teleport_to_url"/>
- <menu_item_call label="Mappa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml
deleted file mode 100644
index 409a62c31b..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Apri tutte le cartelle" name="Expand all folders"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="Collapse all folders"/>
- <menu_item_call label="Cancella la cronologia Teleport" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml
deleted file mode 100644
index 81053fbd65..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleport" name="Teleport"/>
- <menu_item_call label="Maggiori informazioni" name="More Information"/>
- <menu_item_call label="Copia negli appunti" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml
deleted file mode 100644
index c221f141a6..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Apri" name="TabOpen"/>
- <menu_item_call label="Chiudi" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_text_editor.xml b/indra/newview/skins/minimal/xui/it/menu_text_editor.xml
deleted file mode 100644
index 4636ce9929..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Taglia" name="Cut"/>
- <menu_item_call label="Copia" name="Copy"/>
- <menu_item_call label="Incolla" name="Paste"/>
- <menu_item_call label="Elimina" name="Delete"/>
- <menu_item_call label="Seleziona tutto" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml
deleted file mode 100644
index 0beb9314de..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Mostra le coordinate" name="Show Coordinates"/>
- <menu_item_check label="Mostra proprietà del lotto" name="Show Parcel Properties"/>
- <menu_item_call label="Punto di riferimento" name="Landmark"/>
- <menu_item_call label="Copia" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_agent.xml b/indra/newview/skins/minimal/xui/it/menu_url_agent.xml
deleted file mode 100644
index 37755d5749..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra profilo residente" name="show_agent"/>
- <menu_item_call label="Copia nome negli Appunti" name="url_copy_label"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_group.xml b/indra/newview/skins/minimal/xui/it/menu_url_group.xml
deleted file mode 100644
index d9a792ebdf..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra informazioni gruppo" name="show_group"/>
- <menu_item_call label="Copia gruppo negli Appunti" name="url_copy_label"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_http.xml b/indra/newview/skins/minimal/xui/it/menu_url_http.xml
deleted file mode 100644
index e0153d9169..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Apri pagina Web" name="url_open"/>
- <menu_item_call label="Apri nel browser interno" name="url_open_internal"/>
- <menu_item_call label="Apri nel browser esterno" name="url_open_external"/>
- <menu_item_call label="Copia URL negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml
deleted file mode 100644
index a45a6bbc10..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra oggetto dell&apos;inventario" name="show_item"/>
- <menu_item_call label="Copia nome negli Appunti" name="url_copy_label"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_map.xml b/indra/newview/skins/minimal/xui/it/menu_url_map.xml
deleted file mode 100644
index cb7935b3ed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Teleport al luogo" name="teleport_to_location"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml
deleted file mode 100644
index 763e65f17c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra informazioni oggetto" name="show_object"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Teleport sul luogo dell&apos;oggetto" name="teleport_to_object"/>
- <menu_item_call label="Copia nome oggetto negli Appunti" name="url_copy_label"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml
deleted file mode 100644
index a032c33585..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra informazioni lotto" name="show_parcel"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml
deleted file mode 100644
index b368aa9141..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Esegui questo comando" name="run_slapp"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml
deleted file mode 100644
index 355c7dbed9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra informazioni del luogo" name="show_place"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Teleport al luogo" name="teleport_to_location"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml
deleted file mode 100644
index c129e61f25..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teleport a questa destinazione" name="teleport"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_viewer.xml b/indra/newview/skins/minimal/xui/it/menu_viewer.xml
deleted file mode 100644
index 8353044f37..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Aiuto" name="Help">
- <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
- </menu>
- <menu label="Avanzate" name="Advanced">
- <menu label="Scorciatoie" name="Shortcuts">
- <menu_item_check label="Vola" name="Fly"/>
- <menu_item_call label="Chiudi finestra" name="Close Window"/>
- <menu_item_call label="Chiudi tutte le finestre" name="Close All Windows"/>
- <menu_item_call label="Reimposta vista" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml
deleted file mode 100644
index c9a02d8a86..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Sostituisci" name="wear_replace"/>
- <menu_item_call label="Indossa" name="wear_wear"/>
- <menu_item_call label="Aggiungi" name="wear_add"/>
- <menu_item_call label="Togli / Stacca" name="take_off_or_detach"/>
- <menu_item_call label="Stacca" name="detach"/>
- <context_menu label="Attacca a" name="wearable_attach_to"/>
- <context_menu label="Attacca a HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Togli" name="take_off"/>
- <menu_item_call label="Modifica" name="edit"/>
- <menu_item_call label="Profilo articolo" name="object_profile"/>
- <menu_item_call label="Mostra originale" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml
deleted file mode 100644
index 7c8eef64e5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Modifica vestiario" name="edit"/>
- <menu_item_call label="Togli" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml
deleted file mode 100644
index 4a5366091f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Togli" name="take_off"/>
- <menu_item_call label="Stacca" name="detach"/>
- <menu_item_call label="Modifica vestiario" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/notifications.xml b/indra/newview/skins/minimal/xui/it/notifications.xml
deleted file mode 100644
index cf24d6cbf5..0000000000
--- a/indra/newview/skins/minimal/xui/it/notifications.xml
+++ /dev/null
@@ -1,2951 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Non mostrare più la prossima volta
- </global>
- <global name="alwayschoose">
- Scegli sempre questa opzione
- </global>
- <global name="implicitclosebutton">
- Chiudi
- </global>
- <template name="okbutton">
- <form>
- <button name="OK_okbutton" text="$yestext"/>
- </form>
- </template>
- <template name="okignore">
- <form>
- <button name="OK_okignore" text="$yestext"/>
- </form>
- </template>
- <template name="okcancelbuttons">
- <form>
- <button name="OK_okcancelbuttons" text="$yestext"/>
- <button name="Cancel_okcancelbuttons" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore">
- <form>
- <button name="OK_okcancelignore" text="$yestext"/>
- <button name="Cancel_okcancelignore" text="$notext"/>
- </form>
- </template>
- <template name="okhelpbuttons">
- <form>
- <button name="OK_okhelpbuttons" text="$yestext"/>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Messaggio di notifica sconosciuto" name="MissingAlert">
- La versione di [APP_NAME] non riesce a visualizzare la notifica appena ricevuta. Verifica di avere l&apos;ultima versione del Viewer installata.
-
-Dettagli errore: La notifica denominata &apos;[_NAME]&apos; non è stata trovata in notifications.xml.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Errore visualizzazione finestra: Non trovati i seguenti controlli:
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Nessun tutorial disponibile al momento.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
- </notification>
- <notification name="BadInstallation">
- Il programma [APP_NAME] ha riscontrato un&apos;errore durante il tentativo di aggiornamento. [http://get.secondlife.com Scarica l&apos;ultima versione] del Viewer.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Non è possibile collegarsi alla [SECOND_LIFE_GRID].
- &apos;[DIAGNOSTIC]&apos;
-Accertati che la tua connessione Internet stia funzionando correttamente.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Il modello di messaggio [PATH] non è stato trovato.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Salva i cambiamenti all&apos;attuale parte del corpo/abito?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
- </notification>
- <notification name="CompileQueueSaveText">
- C&apos;è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi.
- </notification>
- <notification name="CompileQueueSaveBytecode">
- C&apos;è stato un problema importando lo script compilato per la seguente ragione: [REASON]. Riprova più tardi.
- </notification>
- <notification name="WriteAnimationFail">
- C&apos;è stato un problema di scrittura dati dell&apos;animazione. Riprova più tardi.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- C&apos;è stato un problema importando la fotografia dell&apos;asta per la seguente ragione: [REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Non è possibile vedere il contenuto di più di un elemento per volta.
-Scegli solo un oggetto e riprova.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Salva tutte le modifiche alle parti del corpo/abiti?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non Salvare" yestext="Salva Tutto"/>
- </notification>
- <notification name="FriendsAndGroupsOnly">
- Chi non è tuo amico non saprà che hai scelto di ignorare le loro chiamate e IM.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FavoritesOnLogin">
- Nota: Se attivi questa opzione, chiunque usa questo computer può vedere l&apos;elenco di luoghi preferiti.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GrantModifyRights">
- Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare, eliminare o prendere QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto.
-Vuoi concedere i diritti di modifica a [NAME]?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto.
-Vuoi concedere i diritti di modifica ai residenti selezionati?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="RevokeModifyRights">
- Vuoi revocare i diritti di modifica di [NAME]?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Vuoi revocare i permessi di modifica dati ai residenti selezionati?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Non è possibile creare il gruppo.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Ignora le modifiche" yestext="Applica le modifiche"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- Devi specificare un oggetto per mandare una notice al gruppo.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- Stai per aggiungere dei membri al ruolo [ROLE_NAME].
-Non si possono rimuovere membri da quel ruolo.
-I membri devono dimettersi volontariamente dal ruolo.
-Confermi l&apos;operazione?
- <usetemplate ignoretext="Conferma prima di aggiungere un nuovo proprietario del gruppo" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- Stai per aggiungere il potere &apos;[ACTION_NAME]&apos; al ruolo &apos;[ROLE_NAME]&apos;.
-
- *ATTENZIONE*
- Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- ruoli che hanno più poteri di quelli che hanno correntemente, potenzialmente consentendogli di avere quasi i poteri del proprietario. Accertati di sapere quello che stai facendo prima di assegnare questo potere.
-
-Aggiungi questo potere a &apos;[ROLE_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- Stai per aggiungere il potere &apos;[ACTION_NAME]&apos; al ruolo &apos;[ROLE_NAME]&apos;.
-
- *ATTENZIONE*
- Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- tutti i poteri, elevandosi al livello di quasi proprietario.
-
-Aggiungi questo potere a &apos;[ROLE_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="AttachmentDrop">
- Stai per abbandonare il tuo accessorio.
- Vuoi continuare?
- <usetemplate ignoretext="Conferma prima di distaccare gli accessori" name="okcancelignore" notext="No" yestext="Sì"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- Iscriversi a questo gruppo costa [COST]L$.
-Vuoi proseguire?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Iscriviti"/>
- </notification>
- <notification name="JoinGroupNoCost">
- Aderisci al gruppo [NAME].
-Continuare?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Iscriviti"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Iscriversi a questo gruppo costa [COST]L$.
-Non hai abbastanza L$ per iscriverti a questo gruppo.
- </notification>
- <notification name="CreateGroupCost">
- La creazione di questo gruppo costerà L$ 100.
-I gruppi devono avere più di un partecipante, o saranno eliminati definitivamente.
-Invita altri partecipanti entro le prossime 48 ore.
- <usetemplate canceltext="Annulla" name="okcancelbuttons" notext="Annulla" yestext="Crea un gruppo per L$ 100"/>
- </notification>
- <notification name="LandBuyPass">
- Pagando [COST]L$ puoi entrare in questa terra (&apos;[PARCEL_NAME]&apos;) per [TIME] ore. Compri un pass?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- Il prezzo di vendita deve essere superiore a 0L$ se vendi a tutti.
-Seleziona una vendita individuale per vendere a 0L$.
- </notification>
- <notification name="ConfirmLandSaleChange">
- Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME].
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- ATTENZIONE: Quando selezioni &apos;vendi a tutti&apos;, rendi questo terreno disponibile all&apos;intera comunità di [SECOND_LIFE], anche alle persone che non si trovano in questa regione.
-
-Il terrendo selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il prezzo di vendità sarà [SALE_PRICE]L$ e [NAME] viene autorizzato alla vendita.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- Confermi di volere restituire tutti gli oggetti condivisi con il gruppo &apos;[NAME]&apos; di questo terreno agli inventari dei proprietari precedenti?
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- Confermi di volere restituire tutti gli oggetti posseduti dal residente &apos;[NAME]&apos; in questo terreno al suo inventario?
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- Confermi di volere restituire tutti gli oggetti posseduti da te in questo terreno, di nuovo nel tuo inventario?
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- Confermi di volere restituire tutti gli oggetti di cui NON sei proprietario in questo terreno all&apos;inventario dei rispettivi proprietari?
-Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti.
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- Confermi di volere restituire tutti gli oggetti NON posseduti da [NAME] in questo terreno nell&apos;inventario dei loro proprietari?
-Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti.
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- Confermi di volere restituire tutti gli oggetti elencati nell&apos;inventario dei loro proprietari?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- Confermi di volere disabilitare tutti gli oggetti in questa regione?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- Restituisci gli oggetti in questo terreno che NON sono condivisi con il gruppo [NAME] ai loro proprietari?
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- Non è possibile disabilitare gli script.
-L&apos;intera regione ha l&apos;abilitazione danni.
-Gli script devono essere autorizzati all&apos;esecuzione affinchè le armi funzionino.
- </notification>
- <notification name="MultipleFacesSelected">
- Sono state selezionate più facce.
-Se prosegui con questa azione, sulle diverse facce dell&apos;oggetto verranno definite sessioni multimediali distinte.
-Per collocare il media su una sola faccia, scegli Seleziona faccia, clicca su una faccia e clicca su Aggiungi.
- <usetemplate ignoretext="Il canale multimediale sarà impostato su più facce selezionate" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="MustBeInParcel">
- Devi essere dentro il terreno per impostare il suo Punto di Atterraggio.
- </notification>
- <notification name="PromptRecipientEmail">
- Introduci un indirizzo email per il destinatario/i.
- </notification>
- <notification name="PromptSelfEmail">
- Introduci il tuo indirizzo email.
- </notification>
- <notification name="PromptMissingSubjMsg">
- Invia la foto via email con soggetto o messaggio predefinito?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- Errore nell&apos;elaborazione della fotografia.
- </notification>
- <notification name="ErrorEncodingSnapshot">
- Errore nella codifica della fotografia.
- </notification>
- <notification name="ErrorUploadingPostcard">
- C&apos;è stato un problema inviando la fotografia per il seguente motivo: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- C&apos;è stato un problema importando la foto del rapporto per il seguente motivo: [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- Devi accettare i Termini di Servizio prima di proseguire il collegamento con [SECOND_LIFE].
- </notification>
- <notification name="CouldNotPutOnOutfit">
- Non è stato possibile indossare un equipaggiamento.
-La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attachment.
- </notification>
- <notification name="CannotWearTrash">
- Non puoi indossare abiti e parti del corpo che sono nel cestino
- </notification>
- <notification name="MaxAttachmentsOnOutfit">
- L&apos;oggetto non può essere collegato.
-Superato il limite di oggetti collegati [MAX_ATTACHMENTS]. Per favore prima stacca un altro oggetto.
- </notification>
- <notification name="CannotWearInfoNotComplete">
- Non puoi indossare quell&apos;elemento perchè non è ancora stato caricato. Riprova fra un minuto.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Spiacenti. Un campo è vuoto.
-Inserisci il Nome utente del tuo avatar.
-
-Devi avere un account per entrare in [SECOND_LIFE]. Vuoi crearne uno adesso?
- <url name="url">
- https://join.secondlife.com/index.php?lang=it-IT
- </url>
- <usetemplate name="okcancelbuttons" notext="Riprova" yestext="Crea un nuovo account"/>
- </notification>
- <notification name="InvalidCredentialFormat">
- Immetti il nome utente oppure sia il nome che il cognome del tuo avatar nel campo del nome utente, quindi effettua nuovamente l&apos;accesso.
- </notification>
- <notification name="DeleteClassified">
- Cancella annuncio &apos;[NAME]&apos;?
-Non ci sono rimborsi per la tariffa pagata.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DeleteMedia">
- Hai selezionato la cancellazione del media associato a questa faccia.
-Vuoi continuare?
- <usetemplate ignoretext="Conferma prima di eliminare elementi multimediali dall&apos;oggetto" name="okcancelignore" notext="No" yestext="Sì"/>
- </notification>
- <notification name="ClassifiedSave">
- Salva le modifiche all&apos;annuncio [NAME]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
- </notification>
- <notification name="ClassifiedInsufficientFunds">
- Denaro insufficiente per creare un&apos;inserzione.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Elimina preferito &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DeleteOutfits">
- Elimina il vestiario selezionato?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- Vai alla pagina degli eventi di [SECOND_LIFE]?
- <url name="url">
- http://secondlife.com/events/?lang=it-IT
- </url>
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- Scegli una proposta da vedere.
- </notification>
- <notification name="SelectHistoryItemToView">
- Scegli un item storico da vedere.
- </notification>
- <notification name="CacheWillClear">
- La cache verrà cancellata dopo il riavvio di [APP_NAME].
- </notification>
- <notification name="CacheWillBeMoved">
- La cache verrà spostata dopo il riavvio di [APP_NAME].
-Nota: questa operazione cancellerà la cache.
- </notification>
- <notification name="ChangeConnectionPort">
- Le impostazioni della porta avranno effetto dopo il riavvio di [APP_NAME].
- </notification>
- <notification name="ChangeSkin">
- La nuova pelle comparirà dopo il riavvio di [APP_NAME].
- </notification>
- <notification name="ChangeLanguage">
- La modifica della lingua avrà effetto dopo il riavvio di [APP_NAME].
- </notification>
- <notification name="GoToAuctionPage">
- Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell&apos;asta oppure fai un&apos;offerta?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- Salva le modifiche?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- Il salvataggio della Gesture è fallito.
-La gesture ha troppi passi.
-Prova a togliere qualche passo e quindi risalva.
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- Il salvataggio della gesture è fallito. Riprova fra un minuto.
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- Non è possibile salvare la gesture perchè non è stato trovato l&apos;oggetto o l&apos;inventario associato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
- </notification>
- <notification name="GestureSaveFailedReason">
- C&apos;è stato un problema salvando la gesture a causa del seguente motivo: [REASON]. Riprova a salvare la gesture più tardi.
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- Non è possibile salvare la notecard perchè non è stato trovato l&apos;oggetto o l&apos;inventario associato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
- </notification>
- <notification name="SaveNotecardFailReason">
- C&apos;è stato un problema salvando la notecard a causa del seguente motivo: [REASON]. Riprova a salvare la notecard più tardi.
- </notification>
- <notification name="ScriptCannotUndo">
- Non è stato possibile annullare tutti i cambiamenti nella tua versione dello script.
-Vuoi ripristinare l&apos;ultima versione salvata sul server?
-(**Attenzione** Questa operazione non è reversibile)
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- C&apos;è stato un problema salvando lo script a causa del seguente motivo : [REASON]. Riprova a salvare lo script più tardi.
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- Non è stato possibile salvare lo script perchè l&apos;oggetto che lo contiene non è stato trovato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
- </notification>
- <notification name="SaveBytecodeFailReason">
- C&apos;è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON]. Riprova a salvare lo script più tardi.
- </notification>
- <notification name="StartRegionEmpty">
- La tua Regione di inizio non è stata definita.
-Per scegliere il luogo dove vuoi trovarti all&apos;accesso, digita il nome della regione nel campo del luogo di partenza oppure scegli La mia ultima Ubicazione o Casa mia.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- Non è stato possibile lanciare o fermare lo script perchè l&apos;oggetto che lo contiene non è stato trovato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
- </notification>
- <notification name="CannotDownloadFile">
- Non è stato possibile scaricare il file
- </notification>
- <notification name="CannotWriteFile">
- Non è stato possibile scrivere il file [[FILE]]
- </notification>
- <notification name="UnsupportedHardware">
- Ti informiamo che il tuo computer non dispone dei requisiti minimi di sistema per [APP_NAME]. Il funzionamento può pertanto risultare ridotto. Purtroppo la pagina [SUPPORT_SITE] non può fornire assistenza tecnica in caso di problemi dovuti a configurazioni di sistema non compatibili.
-
-Visitare [_URL] per ulteriori informazioni?
- <url name="url" option="0">
- http://secondlife.com/support/sysreqs.php?lang=it
- </url>
- <usetemplate ignoretext="L&apos;hardware di questo computer non è compatibile" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="UnknownGPU">
- Il tuo sistema utilizza una scheda grafica che [APP_NAME] non riconosce.
-Questo succede spesso con un nuovo hardware che non è stato ancora testato con [APP_NAME]. Probabilmente tutto andrà bene, ma devi riconfigurare le tue impostazioni grafiche.
-(Io &gt; Preferenze &gt; Grafica).
- <form name="form">
- <ignore name="ignore" text="La tua scheda grafica non è stata riconosciuta"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- L&apos;esecuzione di [APP_NAME] si è interrotta durante l&apos;inizializzazione dei driver grafici.
-La qualità grafica verrà impostata a livello basso per evitare alcuni errori comuni di driver. Alcune funzionalità grafiche saranno disattivate.
-Si consiglia di aggiornare i driver della scheda grafica.
-La qualità grafica può essere aumentata in Preferenze &gt; Grafica.
- </notification>
- <notification name="RegionNoTerraforming">
- La regione [REGION] non consente di terraformare.
- </notification>
- <notification name="CannotCopyWarning">
- Non hai l&apos;autorizzazione a copiare i seguenti oggetti:
-[ITEMS]
-e se li dai via, verranno eliminati dal tuo inventario. Sicuro di volere offrire questi oggetti?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="CannotGiveItem">
- Impossibile consegnare l&apos;elemento dell&apos;inventario.
- </notification>
- <notification name="TransactionCancelled">
- La transazione è stata annullata.
- </notification>
- <notification name="TooManyItems">
- Non è possibile dare più di 42 elementi in un singolo trasferimento di inventario.
- </notification>
- <notification name="NoItems">
- Non hai i permessi di trasferimento per gli elementi selezionati.
- </notification>
- <notification name="CannotCopyCountItems">
- Non hai i permessi di copia per copiare [COUNT]
-degli elementi selezionati. Perderai questi elementi dal tuo inventario.
-Vuoi veramente perdere questi elementi?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="CannotGiveCategory">
- Non hai i permessi per trasferire la cartella selezionata.
- </notification>
- <notification name="FreezeAvatar">
- Immobilizza questo avatar?
-Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo.
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Smobilizza" yestext="Immobilizza"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- Immobilizza [AVATAR_NAME]?
-Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo.
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Smobilizza" yestext="Immobilizza"/>
- </notification>
- <notification name="EjectAvatarFullname">
- Espelli [AVATAR_NAME] dal tuo terreno?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Espelli e blocca" yestext="Espelli"/>
- </notification>
- <notification name="EjectAvatarNoBan">
- Espelli questo avatar dal tuo terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/>
- </notification>
- <notification name="EjectAvatarFullnameNoBan">
- Espelli [AVATAR_NAME] dal tuo terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/>
- </notification>
- <notification name="EjectAvatarFromGroup">
- Hai espulso [AVATAR_NAME] dal gruppo [GROUP_NAME]
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- ERRORE DI ACQUISIZIONE: hai selezionato troppi oggetti.
- </notification>
- <notification name="AcquireErrorObjectSpan">
- ERRORE DI ACQUISIZIONE: Gli oggetti sono a cavallo di più di una regione.
-Sposta tutti gli oggetti che vuoi acquisire su una sola regione.
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-Vai su [_URL] per informazioni sull&apos;acquisto di L$?
- <url name="url">
- http://secondlife.com/app/currency/?lang=it-IT
- </url>
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- Impossibile unire questi [COUNT] oggetti.
-Puoi unire al massimo [MAX] oggetti.
- </notification>
- <notification name="CannotLinkIncompleteSet">
- Puoi unire soltanto un insieme completo di oggetti, e devi selezionare più di un oggetto.
- </notification>
- <notification name="CannotLinkModify">
- Impossibile unire perchè non hai il diritto di modifica su tutti gli oggetti.
-
-Accertati che nessuno sia bloccato e che li possiedi tutti.
- </notification>
- <notification name="CannotLinkDifferentOwners">
- Impossibile unire perche non tutti gli oggetti hanno lo stesso proprietario.
-
-Accertati di possedere tutti gli oggetti selezionati.
- </notification>
- <notification name="NoFileExtension">
- Manca l&apos;estensione per il file: &apos;[FILE]&apos;
-
-Accertati che il file abbia una estensione corretta.
- </notification>
- <notification name="InvalidFileExtension">
- L&apos;estensione [EXTENSION] del file non è valida
-Attese [VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- Impossibile aprire in lettura il file di suono importato:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- Il file audio non sembra essere di tipo RIFF WAVE:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- Il file audio non sembra essere di tipo PCM WAVE:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- Il file ha un numero sbagliato di canali (deve essere mono oppure stereo):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- Il file non sembra essere della frequenza di campionamento supportata (deve essere 44.1k):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- Il file non sembra avere una dimensione della parola supportata (deve essere a 8 o a 16 bit):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- Impossibile trovare il frammento &apos;data&apos; nell&apos;intestazione WAV:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChunkSize">
- Dimensione chunk nel file WAV:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- Il file audio è troppo lungo (deve essere al massimo 10 secondi):
-[FILE]
- </notification>
- <notification name="ProblemWithFile">
- Problemi con il file [FILE]:
-
-[ERROR]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- Impossibile aprire in scrittura il file temporaneamente compresso: [FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- Errore di codifica Vorbis sconosciuta per: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Impossibile codificare il file: [FILE]
- </notification>
- <notification name="CorruptedProtectedDataStore">
- Impossibile inserire nome utente e password. Ciò può succedere alla modifica delle impostazioni di rete.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CorruptResourceFile">
- File risorsa corrotto: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- Versione di risorsa Linden sconosciuta nel file: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- Impossibile creare il file in uscita: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- [APP_NAME] non supporta ancora il caricamento in blocco di file di animazione.
- </notification>
- <notification name="CannotUploadReason">
- Impossibile importare il file [FILE] a causa del seguente motivo: [REASON]
-Riprova più tardi.
- </notification>
- <notification name="LandmarkCreated">
- Hai aggiunto &quot;[LANDMARK_NAME]&quot; alla tua cartella [FOLDER_NAME].
- </notification>
- <notification name="LandmarkAlreadyExists">
- Hai già il punto di riferimento di questo luogo.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- Non puoi creare qui un landmark perchè il proprietario di questo terreno non lo consente.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- Impossibile fare la &apos;ricompilazione&apos;.
-Seleziona un oggetto con uno script.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- Impossibile fare la &apos;ricompilazione&apos;.
-
-Seleziona oggetti con script su cui hai i permessi di modifica.
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- Impossibile fare &apos;ripristino&apos;.
-
-Seleziona oggetti con degli script.
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- Impossibile fare &apos;ripristino&apos;.
-
-Seleziona oggetti con script su cui hai i permessi di modifica.
- </notification>
- <notification name="CannotOpenScriptObjectNoMod">
- Impossibile aprire la script dell&apos;oggetto senza i diritti di modifica.
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- Impossibile mettere &apos;in esecuzione&apos; gli script.
-
-Seleziona oggetti con script.
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- Impossibile impostare script a &apos;non in esecuzione&apos;.
-
-Seleziona oggetti con script.
- </notification>
- <notification name="NoFrontmostFloater">
- Non c&apos;è nessuna finestra in evidenza (in primo piano) da salvare.
- </notification>
- <notification name="SeachFilteredOnShortWords">
- La tua ricerca è stata modificata.
-Le parole troppo corte sono state rimosse.
-
-Ho cercato: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- Le parole che hai usato per la ricerca sono troppo corte e non è stato possibile iniziare la ricerca.
- </notification>
- <notification name="CouldNotTeleportReason">
- Teleport non riuscito.
-[REASON]
- </notification>
- <notification name="invalid_tport">
- C&apos;è stato un problema nell&apos;elaborare la tua richiesta di teleport. Potresti dover effettuare nuovamente l&apos;accesso prima di poter usare il teleport.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
- </notification>
- <notification name="invalid_region_handoff">
- Si è verificato un problema nel tentativo di attraversare regioni. È possibile che per potere attraversare le regioni, tu debba effettuare nuovamente l&apos;accesso.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
- </notification>
- <notification name="blocked_tport">
- Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
- </notification>
- <notification name="nolandmark_tport">
- Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark
- </notification>
- <notification name="timeout_tport">
- Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
- </notification>
- <notification name="noaccess_tport">
- Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
- </notification>
- <notification name="missing_attach_tport">
- Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti.
- </notification>
- <notification name="too_many_uploads_tport">
- Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un&apos;area meno affollata.
- </notification>
- <notification name="expired_tport">
- Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto.
- </notification>
- <notification name="expired_region_handoff">
- Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto.
- </notification>
- <notification name="no_host">
- Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto.
- </notification>
- <notification name="no_inventory_host">
- L&apos;inventario è temporaneamente inaccessibile.
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- Impossibile impostare il proprietario del terreno:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- Impossibile forzare la proprietà del terreno perchè la selezione si estende su diverse regioni. Seleziona una area più piccola e riprova.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Questo lotto è all&apos;asta. La designazione di un proprietario determinerà l&apos;annullamento automatico dell&apos;asta e probabilmente può scontentare qualche residente se l&apos;asta è già iniziata.
-Vuoi designare un proprietario?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- Impossibile fare la contentificazione:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotContentifyNoRegion">
- Impossibile fare la contentificazione:
-Nessuna regione selezionata.
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- Impossibile abbandonare il terreno:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- Impossibile abbandonare il terreno:
-Non riesco a trovare la regione.
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- Impossibile comprare il terreno:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Impossibile comprare il terreno:
-Non riesco a trovare la regione dove è situato il terreno.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- Non puoi chiudere la finestra Acquista terreno finché [APP_NAME] non finisce di stimare il prezzo di questa transazione.
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- Impossibile cedere il terreno:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotDeedLandNoGroup">
- Impossibile cedere il terreno:
-Nessun gruppo selezionato.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Non è possibile effettuare la cessione del terreno:
-Impossibile trovare la regione in cui si trova il terreno.
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- Impossibile cedere il terreno:
-Hai selezionato più di un terreno.
-
-Prova a selezionare un solo terreno.
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- Impossibile cedere il terreno:
-Sto aspettando il server per segnalare la proprietà.
-
-Riprova di nuovo.
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- Impossibile cedere il terreno:
-La regione [REGION] non consente il trasferimento di terreni.
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- Impossibile abbandonare il terreno:
-Sto aspettando il server per aggiornare le informazioni del terreno.
-
-Riprova fra poco.
- </notification>
- <notification name="CannotReleaseLandSelected">
- Impossibile abbandonare il terreno:
-Non possiedi tutti i terreni selezionati.
-
-Seleziona un solo terreno.
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- Impossibile abbandonare il terreno:
-Non hai i permessi per rilasciare questo terreno.
-I terreni di tua proprietà vengono visualizzati in verde.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Non è possibile abbandonare il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- Impossibile abbandonare il terreno:
-La regione [REGION] non consente il trasferimento di terreni.
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- Impossibile abbandonare il terreno:
-Devi selezionare un terreno intero per rilasciarla.
-
-Seleziona un terreno intero, oppure dividi prima il tuo terreno.
- </notification>
- <notification name="ReleaseLandWarning">
- Stai per rilasciare [AREA] m² di terreno.
-Rilasciare questo appezzamento di terreno lo toglierà dalle tue proprietà, ma non ti verranno dati L$.
-
-Rilasciare questo terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- Impossibile dividere il terreno:
-
-Non sono stati selezionati terreni.
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- Impossibile dividere il terreno:
-
-Hai selezionato unintero terreno.
-Prova a selezionare unappezzamento di terreno.
- </notification>
- <notification name="LandDivideWarning">
- La suddivisione di questo terreno lo dividerà in due parti ed ognuna potrà avere le sue impostazioni. Alcune impostazioni verranno reimpostate ai valori iniziali dopo l&apos;operazione.
-
-Dividi il terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Non è possibile suddividere il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Non è possibile unire il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- Impossibile unire il terreno:
-Non hai selezionato terreno.
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- Impossibile unire il terreno:
-Hai selezionato un solo terreno.
-
-Devi selezionare il terreno comprendendo entrambi gli appezzamenti.
- </notification>
- <notification name="CannotJoinLandSelection">
- Impossibile unire il terreno:
-Devi selezionare più di un terreno.
-
-Devi selezionare il terreno comprendendo entrambi gli appezzamenti.
- </notification>
- <notification name="JoinLandWarning">
- Unire questi appezzamenti creerà un terreno più grande a partire da tutti gli appezzamenti che si intersecano nel rettangolo selezionato.
-Dovrai reimpostare il nome e le opzioni del nuovo terreno.
-
-Unisci il terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- Questa notecard deve essere salvata prima che l&apos;elemento possa essere copiato o visualizzato. Salva la notecard?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- Copia questo elemento nel tuo inventario?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Copia"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- Non sono riuscito a cambiare la risoluzione al valore [RESX] x [RESY]
- </notification>
- <notification name="ErrorUndefinedGrasses">
- Errore: Erba sconosciuta: [SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- Errore: Alberi sconosciuti: [SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- Impossibile salvare &apos;[NAME]&apos; nel file di oggetti indossabili. Dovrai liberare dello spazio sul tuo computer e salvare di nuovo.
- </notification>
- <notification name="CannotSaveToAssetStore">
- Non è possibile salvare [NAME] nel database centrale degli asset.
-In genere si tratta di un problema temporaneo. Attendi alcuni minuti per modificare e salvare nuovamente gli elementi indossabili.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- Sei stato scollegato da [SECOND_LIFE].
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Esci" yestext="Vedi IM &amp; Chat"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- Impossibile comprare terreno per il gruppo:
-Non hai i permessi per comprare il terreno per il tuo gruppo attivo.
- </notification>
- <notification label="Aggiungi Amico" name="AddFriendWithMessage">
- Gli amici possono autorizzarsi a vedersi l&apos;un l&apos;altro sulla mappa e sapere quando sono collegati.
-
-Offri l&apos;amicizia a [NAME]?
- <form name="form">
- <input name="message">
- Vorresti essere mio amico?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Salva vestiario" name="SaveOutfitAs">
- Salva gli abiti che indosso come nuovo vestiario:
- <form name="form">
- <input name="message">
- [DESC] (nuovo)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Salva capo da indossare" name="SaveWearableAs">
- Salva oggetto nel mio inventario come:
- <form name="form">
- <input name="message">
- [DESC] (nuovo)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Cambia nome del vestiario" name="RenameOutfit">
- Nuovo nome per il vestiario:
- <form name="form">
- <input name="new_name">
- [NAME]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Vuoi rimuovere [NAME] dalla lista dei tuoi amici?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- Vuoi rimuovere gli amici selezionati dalla lista dei tuoi amici?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- Confermi di volere cancellare tutti gli oggetti scriptati della proprietà di
-** [AVATAR_NAME] **
-su tutti gli altri terreni di questa sim?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- Confermi la CANCELLAZIONE di TUTTI gli oggetti scriptati posseduti da
-** [AVATAR_NAME] **
-su TUTTI I TERRENI di questa sim?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- Confermi la CANCELLAZIONE di TUTTI gli oggetti (scriptati o no) posseduti da
-** [AVATAR_NAME] **
-su TUTTI I TERRENI di questa sim?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- Devi specificare un nome per il tuo annuncio.
- </notification>
- <notification name="MinClassifiedPrice">
- Il prezzo da pagare per essere messo in lista deve essere almeno [MIN_PRICE]L$.
-
-Introduci un prezzo più alto.
- </notification>
- <notification name="ConfirmItemDeleteHasLinks">
- Almeno uno degli oggetti selezionati è collegato tramite link ad altri oggetti. Se elimini l&apos;oggetto, i relativi link non funzioneranno più. Pertanto si consiglia vivamente di eliminare prima i link.
-
-Sei sicuro di volere eliminare gli oggetti?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- Almeno uno degli elementi selezionati è bloccato.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- Almeno uno degli elementi selezionati non è copiabile.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- Non possiedi neanche uno degli oggetti selezionati.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- Almeno un oggetto è bloccato.
-Almeno un oggetto è non copiabile.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- Almeno un oggetto è bloccato.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Cancella" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- Almeno un oggetto non è copiabile.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- Almeno un oggetto è bloccato.
-Almeno un oggetto è non copiabile.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- Almeno un oggetto è bloccato.
-
-Confermi di voler prendere questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- Non possiedi tutti gli oggetti che stai prendendo.
-Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli.
-
-Confermi di voler prendere questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- Almeno un oggetto è bloccato.
-Non possiedi tutti gli oggetti che stai prendendo.
-Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli.
-Puoi comunque prendere gli oggetti selezionati.
-
-Confermi di voler prendere questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- Impossibile comprare il terreno perchè la selezione comprende più regioni.
-
-Seleziona un&apos;area più piccola e riprova.
- </notification>
- <notification name="DeedLandToGroup">
- Cedendo questo terreno al gruppo sara richiesto ai componenti di avere e di mantenere il terreno con un credito sufficiente.
-Il prezzo di acquisto del terreno non è rifondibile al proprietario.
-Se una terreno ceduto al gruppo viene venduto, il prezzo di vendita verrà diviso in parti uguali fra i membri del gruppo.
-
-Cedi questo terreno di [AREA] m² al gruppo &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Completando la cessione del lotto, il gruppo dovrà avere e mantenere crediti sufficienti per l&apos;uso del terreno.
-La cessione includerà un contributo contemporaneo di terreno al gruppo da &apos;[NAME]&apos;.
-Il prezzo di acquisto del terreno non viene rimborsato al proprietario. Se un lotto ceduto viene venduto, il prezzo di vendita viene distribuito in maniera paritetica tra i membri del gruppo.
-
-Cedere questi [AREA] m² di terreno al gruppo &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- Le impostazioni dello schermo sono state impostate a valori di sicurezza perchè hai specificato l&apos;opzione -safe.
- </notification>
- <notification name="DisplaySetToRecommended">
- Le impostazioni dello schermo sono state impostate a valori ottimali basati sulla tua configurazione di sistema.
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarMovedDesired">
- L&apos;ubicazione prescelta non è attualmente disponibile.
-Sei stato trasferito in una regione vicina.
- </notification>
- <notification name="AvatarMovedLast">
- La tua ultima posizione non è al momento disponibile.
-Sei stato trasferito in una regione vicina.
- </notification>
- <notification name="AvatarMovedHome">
- L&apos;ubicazione di casa tua non è al momento disponibile.
-Sei stato trasferito in una regione vicina.
-Ti consigliamo di impostare una nuova posizione iniziale.
- </notification>
- <notification name="ClothingLoading">
- Gli abiti sono in corso di scaricamento.
-Puoi comunque usare [SECOND_LIFE] normalmente e gli altri residenti ti vedranno correttamente.
- <form name="form">
- <ignore name="ignore" text="Lo scaricamento sta richiedendo parecchio tempo"/>
- </form>
- </notification>
- <notification name="FirstRun">
- L&apos;installazione di [APP_NAME] è terminata.
-
-Se questa è la prima volta che usi [SECOND_LIFE], devi creare un account prima che tu possa effettuare l&apos;accesso.
-Vuoi tornare a [http://join.secondlife.com secondlife.com] per creare un nuovo account?
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Nuovo Account..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- Ci sono problemi di connessione. È possibile che ci siano problemi con la tua connessione Internet oppure sulla [SECOND_LIFE_GRID].
-
-Controlla la tua connessione Internet e riprova fra qualche minuto, oppure clicca su Aiuto per visualizzare la pagina [SUPPORT_SITE], oppure clicca su Teleport per tentare il teleport a casa tua.
- <url name="url">
- http://it.secondlife.com/support/
- </url>
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="Aiuto"/>
- <button name="Teleport" text="Teleportati"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- Il tuo avatar apparirà fra un attimo.
-
-Usa le frecce per muoverti.
-Premi F1 in qualunque momento per la guida o per apprendere altre cose di [SECOND_LIFE].
-Scegli un avatar maschile o femminile. Puoi sempre cambiare idea più tardi.
- <usetemplate name="okcancelbuttons" notext="Femminile" yestext="Maschile"/>
- </notification>
- <notification name="CantTeleportToGrid">
- Impossibile effettuare il teleport su [SLURL], in quanto si trova su una griglia ([GRID]) diversa da quella attuale ([CURRENT_GRID]). Chiudi il viewer e prova nuovamente.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GeneralCertificateError">
- Impossibile collegarsi al server.
-[REASON]
-
-Nome oggetto: [SUBJECT_NAME_STRING]
-Nome emittente: [ISSUER_NAME_STRING]
-Valido da: [VALID_FROM]
-Valido fino a: [VALID_TO]
-Impronta MD5: [SHA1_DIGEST]
-Impronta SHA1: [MD5_DIGEST]
-Uso chiave: [KEYUSAGE]
-Uso chiave estesa: [EXTENDEDKEYUSAGE]
-Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TrustCertificateError">
- Autorità di certificazione di questo server sconosciuta.
-
-Informazioni sul certificato:
-Nome oggetto: [SUBJECT_NAME_STRING]
-Nome emittente: [ISSUER_NAME_STRING]
-Valido da: [VALID_FROM]
-Valido fino a: [VALID_TO]
-Impronta MD5: [SHA1_DIGEST]
-Impronta SHA1: [MD5_DIGEST]
-Uso chiave: [KEYUSAGE]
-Uso chiave estesa: [EXTENDEDKEYUSAGE]
-Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
-
-Accettare questa autorità?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Accetta"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] [PRICE]L$ Non hai abbastanza L$ per farlo.
- </notification>
- <notification name="GrantedModifyRights">
- [NAME] ti ha dato il permesso di modificare i suoi oggetti.
- </notification>
- <notification name="RevokedModifyRights">
- Non sei più autorizzato a modificare gli oggetti di [NAME]
- </notification>
- <notification name="FlushMapVisibilityCaches">
- Questo reinizializzerà la cache della mappa di questa regione.
-Funzione usata solo per il debug.
-(Per la produzione, attendere 5 minuti, dopo di che tutte le mappe di ognuno si aggiorneranno dopo la loro riconnessione)
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- Non è possibile acquistare più di un oggetto alla volta. Riprova selezionando un solo oggetto.
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- Impossibile copiare il contenuto di più di un elemento alla volta.
-Scegli solo un oggetto e riprova.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- Teleporta a casa tutti i residenti in questa regione?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- Confermi di voler restituire gli oggetti di proprietà di [USER_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- Impossibile impostare le texture della regione:
-La texture del terreno [TEXTURE_NUM] ha una profondità di bit pari a [TEXTURE_BIT_DEPTH] non corretta.
-
-Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 o una immagine più piccola e quindi clicca nuovamente su &apos;Applica&apos;.
- </notification>
- <notification name="InvalidTerrainSize">
- Impossibile impostare le texture di regione:
-La texture del terreno [TEXTURE_NUM] è troppo grande se a [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-
-Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 oppure con una immagine più piccola e quindi clicca di nuovo &apos;Applica&apos;.
- </notification>
- <notification name="RawUploadStarted">
- Importazione iniziata. Può impiegare fino a due minuti, a seconda della velocità della tua connessione.
- </notification>
- <notification name="ConfirmBakeTerrain">
- Vuoi veramente impostare come base il terreno corrente, impostarlo come riferimento per i limiti dei rialzi/abbassamenti di tutto il territorio ed il suo valore impostato come base per lo strumento &apos;Ripristina&apos;?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- Puoi avere al massimo [MAX_AGENTS] residenti consentiti.
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- Puoi avere al massimo [MAX_BANNED] residenti bloccati.
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- E&apos; fallito il tentativo di aggiungere [NUM_ADDED] avatar:
-Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS].
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- Puoi avere al massimo [MAX_GROUPS] gruppi.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Imposta come predefinito"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- Puoi avere al massimo [MAX_MANAGER] manager della proprietà immobiliare.
- </notification>
- <notification name="OwnerCanNotBeDenied">
- Impossibile aggiungere i proprietari della proprietà immobiliare alla lista dei residenti bloccati.
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- Impossibile cambiare l&apos;aspetto fisico finchè gli abiti e i vestiti non sono caricati.
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- Il nome del tuo annuncio deve iniziare con una lettera da A a Z oppure con un numero.
-Non sono consentiti caratteri di punteggiatura.
- </notification>
- <notification name="CantSetBuyObject">
- Impossibile impostare &apos;Compra l&apos;oggetto&apos;, perchè l&apos;oggetto non è in vendita.
-Imposta l&apos;oggetto per la vendita e riprova.
- </notification>
- <notification name="FinishedRawDownload">
- Hai terminato di scaricare il file del terreno nella cartella:
-[DOWNLOAD_PATH].
- </notification>
- <notification name="DownloadWindowsMandatory">
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadWindows">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica"/>
- </notification>
- <notification name="DownloadLinux">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica"/>
- </notification>
- <notification name="DownloadMacMandatory">
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
-
-Scaricare nella cartella Applicazioni?
- <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadMac">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-
-Scaricare nella cartella Applicazioni?
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-
-Scaricare nella cartella Applicazioni?
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="FailedUpdateInstall">
- Si è verificato un errore durante l&apos;aggiornamento del viewer.
-Scarica e installa la versione più recente del viewer da
-http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FailedRequiredUpdateInstall">
- Non è stato possibile installare un aggiornamento richiesto.
-Non potrai accedere fino a quando non verrà aggiornato [APP_NAME].
-
-Scarica e installa la versione più recente del viewer da
-http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="Esci"/>
- </notification>
- <notification name="UpdaterServiceNotRunning">
- È disponibile un aggiornamento obbligatorio per l&apos;installazione di Second Life.
-
-Puoi scaricare questo aggiornamento da http://www.secondlife.com/downloads
-oppure puoi installarlo adesso.
- <usetemplate name="okcancelbuttons" notext="Esci da Second Life" yestext="Scarica e aggiorna adesso"/>
- </notification>
- <notification name="DownloadBackgroundTip">
- È stato scaricato un aggiornamento dell&apos;installazione di [APP_NAME].
-Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornamento]
- <usetemplate name="okcancelbuttons" notext="Più tardi..." yestext="Installa ora e riavvia [APP_NAME]"/>
- </notification>
- <notification name="DownloadBackgroundDialog">
- È stato scaricato un aggiornamento dell&apos;installazione di [APP_NAME].
-Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornamento]
- <usetemplate name="okcancelbuttons" notext="Più tardi..." yestext="Installa ora e riavvia [APP_NAME]"/>
- </notification>
- <notification name="RequiredUpdateDownloadedVerboseDialog">
- È stato scaricato un aggiornamento obbligatorio del software.
-Versione [VERSION]
-
-Per installare l&apos;aggiornamento è necessario riavviare [APP_NAME].
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RequiredUpdateDownloadedDialog">
- Per installare l&apos;aggiornamento è necessario riavviare [APP_NAME].
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeedObjectToGroup">
- La cessione di questo oggetto farà in modo che il gruppo:
-* Riceva i L$ pagati all&apos;oggetto
- <usetemplate ignoretext="Conferma la cessione di un oggetto al gruppo" name="okcancelignore" notext="Annulla" yestext="Cedi"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Vuoi aprire il browser per vedere questi contenuti?
- <usetemplate ignoretext="Lancia il browser per consultare una pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- Vuoi andare su [http://secondlife.com/account/ Dashboard] per gestire il tuo account?
- <usetemplate ignoretext="Lancia il browser per gestire il mio account" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza.
- <usetemplate ignoretext="Lancia il browser per imparare a segnalare un problema di sicurezza" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- Visita il controllo di qualità Wiki [SECOND_LIFE].
- <usetemplate ignoretext="Lancia il browser per vedere la pagina Wiki sul controllo di qualità" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi.
- <usetemplate ignoretext="Lancia il browser per vedere il registro pubblico di monitoraggio dei problemi" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Vai al blog ufficiale Linden, per le ultime notizie ed informazioni.
- <usetemplate ignoretext="Lancia il browser per vedere il blog" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Vuoi aprire la Guida per lo scripting per avere aiuto con lo scripting?
- <usetemplate ignoretext="Lancia il browser per vedere la Guida per lo scripting" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Vuoi visitare il Portale LSL per avere aiuto con lo scripting?
- <usetemplate ignoretext="Lancia il browser per vedere il Portale LSL" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
- </notification>
- <notification name="ReturnToOwner">
- Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti.
-
-*ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati!
- <usetemplate ignoretext="Conferma prima di restituire gli oggetti ai relativi proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- Sei attualmente un membro del gruppo [GROUP].
-Vuoi lasciare il gruppo?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Vuoi veramente espellere tutti i residenti dalla griglia?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti i residenti"/>
- </notification>
- <notification name="MuteLinden">
- Spiacenti, non puoi bloccare un Linden.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- Non è possibile mettere in vendita all&apos;asta un terreno che è già impostato per la vendita. Disabilita la vendita del terreno, se sei certo di voler avviare una vendita all&apos;asta.
- </notification>
- <notification label="Il blocco dell&apos;oggetto in base al nome non è riuscito," name="MuteByNameFailed">
- hai già bloccato questo nome.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- Sebbene consentita, la cancellazione di contenuti può danneggiare l&apos;oggetto.
-Vuoi cancellare quell&apos;elemento?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- Impossibile offrire un biglietto da visita in questo momento. Riprova fra poco.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- Impossibile offrire l&apos;amicizia in questo momento. Riprova fra poco.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- È stata impostata la modalità Non disponibile.
-La chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non disponibile. Tutte le offerte di teleport verranno rifiutate. Tutte le offerte di Inventario andranno nel Cestino.
- <usetemplate ignoretext="Cambio il mio stato sulla modalità Non disponibile" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire a questo, oppure declina l&apos;offerta.
-[NAME] ti invita ad aderire ad un gruppo.
- <usetemplate name="okcancelbuttons" notext="Declino" yestext="Unisciti"/>
- </notification>
- <notification name="JoinedTooManyGroups">
- Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire o crearne uno nuovo.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="KickUser">
- Espelli questo residente con quale messaggio?
- <form name="form">
- <input name="message">
- Un amministratore ti ha disconnesso.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- Espelli tutti quelli che sono sulla griglia con quale messaggio?
- <form name="form">
- <input name="message">
- Un amministratore ti ha disconnesso.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- Congela questo residente con quale messaggio?
- <form name="form">
- <input name="message">
- Sei stato immobilizzato. Non puoi muoverti o usare la chat. Un amministratore ti contatterà con un messaggio (IM).
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- Scongela questo residente con quale messaggio?
- <form name="form">
- <input name="message">
- Non sei più immobilizzato.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="SetDisplayNameSuccess">
- Ciao [DISPLAY_NAME]!
-
-Come nel modo reale, prima che tutti conoscano il tuo nuovo nome ci vorrà del tempo. Saranno necessari alcuni giorni per [http://wiki.secondlife.com/wiki/Setting_your_display_name l&apos;aggiornamento del nome] in oggetti, script, ricerca, ecc.
- </notification>
- <notification name="SetDisplayNameBlocked">
- Non puoi cambiare il tuo nome visualizzato. Se ritieni che si tratta di un errore, contatta l&apos;assistenza.
- </notification>
- <notification name="SetDisplayNameFailedLength">
- Il nome è troppo lungo. La lunghezza massima dei nomi visualizzati è di [LENGTH] caratteri.
-
-Riprova con un nome più corto.
- </notification>
- <notification name="SetDisplayNameFailedGeneric">
- Non è possibile impostare il tuo nome visualizzato. Riprova più tardi.
- </notification>
- <notification name="SetDisplayNameMismatch">
- I nomi visualizzati inseriti non corrispondono. Inseriscili nuovamente.
- </notification>
- <notification name="AgentDisplayNameUpdateThresholdExceeded">
- Devi aspettare prima di cambiare il nome visualizzato.
-
-Vedi http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Riprova più tardi.
- </notification>
- <notification name="AgentDisplayNameSetBlocked">
- Non è possibile impostare il nome richiesto perché contiene una parola vietata.
-
- Riprova con un altro nome.
- </notification>
- <notification name="AgentDisplayNameSetInvalidUnicode">
- Il nome visualizzato scelto contiene caratteri non validi.
- </notification>
- <notification name="AgentDisplayNameSetOnlyPunctuation">
- Il nome visualizzato deve contenere lettere, non solo segni di punteggiatura.
- </notification>
- <notification name="DisplayNameUpdate">
- [OLD_NAME] ([SLID]) ha il nuovo nome [NEW_NAME].
- </notification>
- <notification name="OfferTeleport">
- Offri un teleport nel posto dove sei con il seguente messaggio?
- <form name="form">
- <input name="message">
- Raggiungimi a [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- Chiedere, in qualità di Admin, al residente di raggiungerti?
- <form name="form">
- <input name="message">
- Raggiungimi in [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- Sei sicuro di volere il teleport a &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
- <usetemplate ignoretext="Conferma il teleport verso un punto di riferimento" name="okcancelignore" notext="Annulla" yestext="Teleportati"/>
- </notification>
- <notification name="TeleportToPick">
- Teleport a [PICK]?
- <usetemplate ignoretext="Conferma che voglio il teleport verso l&apos;ubicazione nei Luoghi preferiti" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToClassified">
- Teleport a [CLASSIFIED]?
- <usetemplate ignoretext="Conferma il teleport verso questa posizione negli annunci" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToHistoryEntry">
- Teleport a [HISTORY_ENTRY]?
- <usetemplate ignoretext="Conferma il teleport verso un luogo che compare nella cronologia" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
- </notification>
- <notification label="Manda un messaggio a tutti nella tua proprietà" name="MessageEstate">
- Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Cambia la tipologia della proprietà Linden" name="ChangeLindenEstate">
- Stai per apportare modifiche ad una proprietà che appartiene a Linden (continente, teen grid, orientamento e così via).
-
-Questa è un&apos;operazione da effettuare con molta cautela, in quanto può incidere profondamente sulla vita dei residenti in Second Life. Sul continente, l&apos;azione modificherà migliaia di regioni e creerà un grosso carico sul server.
-
-Vuoi procedere?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification label="Cambia la tipologia Linden di accesso alla proprietà" name="ChangeLindenAccess">
- Stai per cambiare la lista di accesso per una proprietà Linden (mainland, griglia minorenni, orientamento, ecc.).
-
-Questo è PERICOLOSO e dovrebbe essere fatto soltanto per poter lanciare il programma che consente agli oggetti/L$ di essere trasferiti fra griglie diverse.
-Cambierà migliaia di regioni e produrrà seri problemi ai vari server.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateAllowedAgentAdd">
- Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateAllowedAgentRemove">
- Rimuovi dalla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateAllowedGroupAdd">
- Aggiungi al gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateAllowedGroupRemove">
- Rimuovi dal gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateBannedAgentAdd">
- Rifiuta l&apos;accesso solo a questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateBannedAgentRemove">
- Rimuovi questo residente dalla lista dei residenti bloccati nell&apos;accesso solo a questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateManagerAdd">
- Aggiungi come gestore della proprietà solo a questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateManagerRemove">
- Rimuovi come gestore della proprietà solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Conferma espulsione" name="EstateKickUser">
- Espelli [EVIL_USER] da questa proprietà?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- Confermi di voler cambiare il Regolamento della proprietà?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- Non sei ammesso in questa regione a causa della tua categoria di accesso. Questo può risultare da una mancanza di informazioni necessarie per convalidare la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per ulteriori informazioni su come accedere nelle zone con tale categoria di accesso.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso.
-
-Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di accesso?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
- </url>
- <usetemplate ignoretext="Non posso entrare in questa regione a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- Non ti è consentito entrare in quella regione a causa della categoria di accesso impostata nelle preferenze.
-
-Per entrare nella regione, dovrai modificare la tua categoria di accesso. Ciò ti consentirà inoltre di effettuare ricerche di contenuti di categoria [REGIONMATURITY]. Per annullare le modifiche in un secondo momento, vai a Io &gt; Preferenze &gt; Generali.
- <form name="form">
- <button name="OK" text="Cambia preferenza"/>
- <button default="true" name="Cancel" text="Chiudi"/>
- <ignore name="ignore" text="La categoria di accesso impostata mi impedisce di entrare in una regione"/>
- </form>
- </notification>
- <notification name="PreferredMaturityChanged">
- La tua categoria di accesso attuale è [RATING].
- </notification>
- <notification name="LandClaimAccessBlocked">
- Non puoi prendere possesso di questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per informazioni sull&apos;accesso ad aree con queste categorie di accesso.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- Non puoi prendere possesso di questa terra a causa delle preferenze sulle categorie di accesso.
-
-Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
- </url>
- <usetemplate ignoretext="Non posso richiedere questo terreno a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- Non puoi prendere possesso di questa terra a causa della tua categoria di accesso.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- Non puoi richiedere questo terreno a causa della tua categoria di accesso.
-
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
- <usetemplate ignoretext="Le mie preferenze di categoria di accesso mi impediscono di richiedere terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- Non puoi acquistare questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per informazioni sull&apos;accesso ad aree con queste categorie di accesso.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- Non puoi acquistare questo terreno a causa della tua categoria di accesso.
-
-Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
- </url>
- <usetemplate ignoretext="Non posso acquistare questo terreno a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- Non puoi acquistare questa land a causa della tua categoria di accesso.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- Non puoi acquistare questo terreno a causa della tua categoria di accesso.
-
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
- <usetemplate ignoretext="Le mie Preferenze di accesso mi impediscono di acquistare terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- Hai selezionato troppi prim. Seleziona non più di [MAX_PRIM_COUNT] prim e riprova
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- Problemi nell&apos;importazione del regolamento della proprietà.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- Si sono riscontrati problemi nell&apos;aggiungere un nuovo manager della proprietà. Una o più proprietà potrebbero avere la lista dei manager piena.
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- Si sono riscontrati problemi nell&apos;aggiunta a questo elenco della proprietà. Una o più proprietà potrebbe avere una lista piena.
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Impossibile caricare la risorsa della notecard in questo momento.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NotAllowedToViewNotecard">
- Permessi insufficienti per vedere la notecard associata con l&apos;asset ID richiesto.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- L&apos;asset ID della notecard è mancante dal database.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- Ricorda: le tariffe per gli annunci non sono rimborsabili.
-
-Pubblica questo annuncio adesso per [AMOUNT]L$?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Queste inserzioni includono contenuti di tipo Moderato?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="SetGroupMature">
- Questo gruppo include contenuti di tipo Moderato?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification label="Conferma il riavvio" name="ConfirmRestart">
- Vuoi veramente far ripartire la regione in 2 minuti?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification label="Manda un messaggio a tutti in questa regione" name="MessageRegion">
- Scrivi un breve annuncio che verrà mandato a tutti in questa regione.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Cambiato il contenuto Moderato" name="RegionMaturityChange">
- La classificazione di questa regione è stata aggiornata.
-Un periodo di tempo è necessario prima che la modifica venga integrata nella mappa.
-
-Per accedere a regioni per adulti, i residenti devono avere un Account verificato, mediante verifica dell&apos;età oppure mediante verifica della modalità di pagamento.
- </notification>
- <notification label="Versione voice non compatibile" name="VoiceVersionMismatch">
- Questa versione di [APP_NAME] non è compatibile con la funzionalità di chat vocale in questa regione. Affinché la chat vocale funzioni correttamente, dovrai aggiornare [APP_NAME].
- </notification>
- <notification label="Impossibile comprare oggetti" name="BuyObjectOneOwner">
- Impossibile comprare oggetti da proprietari diversi nello stesso momento.
-Seleziona solo un oggetto e riprova.
- </notification>
- <notification label="Impossibile comprare il contenuto" name="BuyContentsOneOnly">
- Impossibile comprare il contenuto di più di un oggetto per volta.
-Seleziona solo un oggetto e riprova.
- </notification>
- <notification label="Impossibile comprare il contenuto" name="BuyContentsOneOwner">
- Impossibile comprare oggetti da proprietari differenti nello stesso momento.
-Scegli un solo oggetto e riprova.
- </notification>
- <notification name="BuyOriginal">
- Compra l&apos;oggetto originale da [OWNER] per [PRICE]L$?
-Diventerai proprietario di questo oggetto.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- Compra l&apos;oggetto originale per [PRICE]L$?
-Diventerai proprietario di questo oggetto.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- Compra una copia da [OWNER] per [PRICE]L$?
-L&apos;oggetto verrà copiato nel tuo inventario.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- Compra una copia per [PRICE]L$?
-L&apos;oggetto verrà copiato nel tuo inventario.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- Compra il contenuto da [OWNER] per [PRICE]L$?
-Il contenuto verrà copiato nel tuo inventario.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- Compra il contenuto per [PRICE]L$?
-Il contenuto verrà copiato nel tuo inventario.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- Questa transazione ti permetterà di:
-[ACTION]
-
-Confermi di voler procedere all&apos;acquisto?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- Questa transazione farà:
-[ACTION]
-
-Confermi di voler procedere all&apos;acquisto?
-Ridigita la tua password e premi OK.
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- Nota:
-Hai aggiornato l&apos;ubicazione di questo preferito ma gli altri dettagli conserveranno il loro valore originale.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- Hai selezionato elementi dall&apos;inventario &apos;non copiabili&apos;.
-Questi elementi verranno trasferiti nel tuo inventario, ma non copiati.
-
-Trasferisci gli elementi nell&apos;inventario?
- <usetemplate ignoretext="Avvertimi quando tento di rimuovore elementi per i quali non è consentita la copia da un oggetto" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- Hai selezionato elementi dell&apos;inventario non copiabili. Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati.
-Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script.
-
-Trasferisci gli elementi nell&apos;inventario?
- <usetemplate ignoretext="Avvertimi se tento di rimuovore di elementi per i quali non è consentita la copia e che potrebbero danneggiare un oggetto scriptato" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Attenzione: l&apos;azione Paga oggetto è stata impostata, ma funzionerà soltanto se inserisci uno script con un evento money().
- <form name="form">
- <ignore name="ignore" text="Ho impostato l&apos;azione Paga oggetto costruendo un oggetto senza uno script money()"/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- Non ci sono elementi in questo oggetto che tu possa copiare.
- </notification>
- <notification name="WebLaunchAccountHistory">
- Vai al [http://secondlife.com/account/ Dashboard] per vedere la cronologia del tuo account?
- <usetemplate ignoretext="Lancia il browser per vedere la cronologia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
- </notification>
- <notification name="ConfirmQuit">
- Confermi di voler uscire?
- <usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification name="DeleteItems">
- [QUESTION]
- <usetemplate ignoretext="Conferma prima di cancellare gli elementi" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Usa questo strumento per segnalare violazioni a [http://secondlife.com/corporate/tos.php Terms of Service] e [http://secondlife.com/corporate/cs.php Community Standards].
-
-Ogni abuso segnalato verrà esaminato e risolto.
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- Scegli una categoria per questa segnalazione di abuso.
-Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- Introduci il nome di chi abusa.
-Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- Inserisci il luogo dove l&apos;abuso è avvenuto.
-Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- Inserisci un yiyolo descrittivo dell&apos;abuso che è avvenuto.
-Introducendo un titolo descrittivo accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- Inserisci una descrizione dettagliata dell&apos;abuso che è avvenuto.
-Devi essere il più specifico possibile, includendo i nomi e i dettagli dell&apos;incidente che stai segnalando.
-Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Gentile residente,
-
-Ci risulta che tu stia segnalando una violazione di proprietà intellettuale. Per segnalare correttamente la violazione:
-
-(1) Definizione di abuso. Puoi inviare una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio usando CopyBot o simili strumenti di copia, per rubare i diritti di proprietà intellettuale. L&apos;Ufficio abusi investigherà e deciderà adeguate azioni disciplinari per comportamenti che violano i [http://secondlife.com/corporate/tos.php Termini del servizio] di [SECOND_LIFE] oppure gli [http://secondlife.com/corporate/cs.php Standard della comunità]. Tieni comunque presente che l&apos;Ufficio abusi non gestisce e non risponde alle richieste di rimozione di contenuti da [SECOND_LIFE].
-
-(2) DMCA o rimozione di contenuti. Per richiedere la rimozione di contenuti da [SECOND_LIFE], devi compilare una denuncia valida di violazione come definito nelle nostra [http://secondlife.com/corporate/dmca.php Regole DMCA] (leggi sul copyright).
-
-Per continuare con il procedimento di abuso, chiudi questa finestra e completa la compilazione della segnalazione. È possibile che dovrai specificare la categoria CopyBot o Sfruttamento dei diritti.
-
-Grazie,
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- I seguenti componenti obbligatori sono mancanti da [FLOATER]:
-[COMPONENTS]
- </notification>
- <notification label="Sostituisci gli oggetti indossati" name="ReplaceAttachment">
- C&apos;è già un oggetto indossato in questo punto del corpo.
-Vuoi sostituirlo con l&apos;oggetto selezionato?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Sostituisci un pezzo collegato con l&apos;elemento selezionato"/>
- <button ignore="Replace Automatically" name="Yes" text="OK"/>
- <button ignore="Never Replace" name="No" text="Annulla"/>
- </form>
- </notification>
- <notification label="Avviso di &apos;Occupato&apos;" name="BusyModePay">
- Sei in modalità &apos;Occupato&apos;, ciò significa che non riceverai ciò che attendi per questo pagamento.
-
-Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare questa transazione?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono in modalià Non disponibile"/>
- <button ignore="Always leave Busy Mode" name="Yes" text="OK"/>
- <button ignore="Never leave Busy Mode" name="No" text="Abbandona"/>
- </form>
- </notification>
- <notification name="ConfirmDeleteProtectedCategory">
- La cartella &apos;[FOLDERNAME]&apos; è una cartella di sistema. L&apos;eliminazione di cartelle di sistema può creare instabilità. Sei sicuro di volerla eliminare?
- <usetemplate ignoretext="Chiedi conferma prima di eliminare una cartella di sistema" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Vuoi veramente eliminare in modo permanente il contenuto del tuo Cestino?
- <usetemplate ignoretext="Conferma prima di svuotare la cartella del Cestino inventario" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Vuoi veramente eliminare la cronologia viaggi, web e ricerche fatte?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Confermi di volere cancellare i tuoi cookie?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- Confermi di voler cancellare la lista degli URL salvati?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Vuoi veramente eliminare in modo definitivo il contenuto dei tuoi Oggetti smarriti?
- <usetemplate ignoretext="Conferma prima di svuotare della cartella Oggetti smarriti" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="CopySLURL">
- Lo SLurl seguente è stato copiato negli Appunti:
- [SLURL]
-
-Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubicazione, o provala incollandola nella barra degli indirizzi di un browser web.
- <form name="form">
- <ignore name="ignore" text="Lo SLurl è stato copiato negli Appunti"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- Vuoi sovrascrivere le preimpostazioni salvate?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- Vuoi cancellare [SKY]?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="WLNoEditDefault">
- Non puoi modificare o cancellare una preimpostazione di fabbrica.
- </notification>
- <notification name="WLMissingSky">
- Questo file di ciclo giornaliero fa riferimento ad un file di cielo mancante: [SKY].
- </notification>
- <notification name="PPSaveEffectAlert">
- Effetto di post elaborazione già presente. Vuoi sovrascrivere?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="NewSkyPreset">
- Fornisci il nome per il nuovo cielo.
- <form name="form">
- <input name="message">
- Nuova preimpostazione
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- La preimpostazione esiste già!
- </notification>
- <notification name="NewWaterPreset">
- Fornisci il nome per la nuova preregolazione del livello dell&apos;acqua.
- <form name="form">
- <input name="message">
- Nuova preimpostazione
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- La preimpostazione esiste già!
- </notification>
- <notification name="WaterNoEditDefault">
- Non puoi modificare o cancellare una preimpostazione.
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Impossibile iniziare una nuova sessione di chat con [RECIPIENT].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- La sessione chat con [NAME] deve chiudere.
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Non puoi comprare un oggetto mentre è unito.
- </notification>
- <notification label="Informazioni sulle richieste per il permesso di addebito" name="DebitPermissionDetails">
- Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell&apos;oggetto deve cancellare l&apos;oggetto oppure reimpostare gli script nell&apos;oggetto.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- Vuoi indossare automaticamente gli indumenti che stai per creare?
- <usetemplate ignoretext="Indossare gli abiti che creo mentre modifico il mio aspetto" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="NotAgeVerified">
- Per entrare in questa zona, devi avere eseguito la verifica dell&apos;età. Vuoi andare sul sito di [SECOND_LIFE] per verificare la tua età?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php?lang=it
- </url>
- <usetemplate ignoretext="Non ho verificato la mia età" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Per poter visitare questa zona devi avere devi aver fornito informazioni di pagamento a Linden Lab. Vuoi andare sul sito di [SECOND_LIFE] ed impostarle?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/index.php?lang=it
- </url>
- <usetemplate ignoretext="Manca la registrazione delle informazioni di pagamento" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="MissingString">
- La stringa [STRING_NAME] non è presente in strings.xml
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="IMSystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Annullato
- </notification>
- <notification name="CancelledSit">
- Seduta annullata
- </notification>
- <notification name="CancelledAttach">
- Attaccamento annullato
- </notification>
- <notification name="ReplacedMissingWearable">
- Gli abiti/parti del corpo mancanti sono stati sostituiti con quelli di default .
- </notification>
- <notification name="GroupNotice">
- Oggetto: [SUBJECT], Messaggio: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [NAME] è Online
- </notification>
- <notification name="FriendOffline">
- [NAME] è Offline
- </notification>
- <notification name="AddSelfFriend">
- Anche se sei molto simpatico, non puoi aggiungere te stesso all&apos;elenco degli amici.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- Sto importando le fotografie per l&apos;uso inworld e per il web...
-(Durata circa 5 minuti.)
- </notification>
- <notification name="UploadPayment">
- Hai pagato [AMOUNT]L$ per il caricamento.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Il caricamento della fotografia nel sito web è andato a buon fine.
- </notification>
- <notification name="UploadSnapshotDone">
- Il caricamento della fotografia inworld è andato a buon fine.
- </notification>
- <notification name="TerrainDownloaded">
- Terrain.raw caricato
- </notification>
- <notification name="GestureMissing">
- Manca la gesture [NAME] dal database.
- </notification>
- <notification name="UnableToLoadGesture">
- Impossibile caricare la gesture [NAME].
- </notification>
- <notification name="LandmarkMissing">
- Landmark non trovato nel database.
- </notification>
- <notification name="UnableToLoadLandmark">
- Impossibile caricare il Landmark di riferimento. Riprova.
- </notification>
- <notification name="CapsKeyOn">
- Hai il blocco delle maiuscole attivato.
-Questo potrebbe incidere sulla tua password.
- </notification>
- <notification name="NotecardMissing">
- Notecard non trovata nel database.
- </notification>
- <notification name="NotecardNoPermissions">
- Non hai il permesso di vedere questo biglietto.
- </notification>
- <notification name="RezItemNoPermissions">
- Permessi insufficienti per creare un oggetto.
- </notification>
- <notification name="UnableToLoadNotecard">
- Impossibile caricare la notecard in questo momento.
- </notification>
- <notification name="ScriptMissing">
- Script non trovato nel database.
- </notification>
- <notification name="ScriptNoPermissions">
- Permessi insufficenti per visualizzare lo script.
- </notification>
- <notification name="UnableToLoadScript">
- Impossibile caricare lo script. Riprova.
- </notification>
- <notification name="IncompleteInventory">
- Il contenuto che stai offrendo per il momento non è localmente disponibile. Prova a rioffrire gli oggetti fra un minuto.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- Non è possibile modificare le categorie protette.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- Non è possibile rimuovere le categorie protette.
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Impossibile acquistare l&apos;oggetto durante il download dei dati.
-Riprova.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Impossibile collegare l&apos;oggetto durante il download dei dati.
-Riprova.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Puoi acquistare oggetti soltanto da un proprietario per volta.
-Seleziona solo un oggetto.
- </notification>
- <notification name="ObjectNotForSale">
- Questo oggetto non è in vendita.
- </notification>
- <notification name="EnteringGodMode">
- Entra in modalità divina, livello [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- Esci dalla modalità divina, livello [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Non hai l&apos;autorizzazione a copiare.
- </notification>
- <notification name="InventoryAccepted">
- [NAME] ha ricevuto la tua offerta di inventario.
- </notification>
- <notification name="InventoryDeclined">
- [NAME] non ha accettato la tua offerta dall&apos;inventario.
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Il tuo biglietto da visita è stato accettato.
- </notification>
- <notification name="CallingCardDeclined">
- Il tuo biglietto da visita non è stato accettato.
- </notification>
- <notification name="TeleportToLandmark">
- Puoi teleportarti alle ubicazioni come &apos;[NAME]&apos; aprendo il pannello Luoghi sul lato destro dello schermo, quindi selezionare la scheda Punti di riferimento.
-Clicca su un punto di riferimento per selezionarlo, quindi clicca su Teleport sul lato inferiore del pannello.
-(Puoi anche fare doppio clic sul punto di riferimento oppure cliccare su di esso con il tasto destro del mouse e scegliere Teleport.)
- </notification>
- <notification name="TeleportToPerson">
- Puoi contattare il residente &apos;[NAME]&apos; aprendo il pannello Persone nel lato destro del tuo schermo.
-Seleziona il residente dall&apos;elenco, clicca su &apos;IM&apos; in basso nel pannello.
-(Puoi anche fare doppio clic sul nome nell&apos;elenco oppure fare clic con il pulsante destro del mouse e selezionare &apos;IM&apos;).
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Non è possibile selezionare il terreno attraverso i confini del server.
-Prova a selezionare una parte di terreno più piccola.
- </notification>
- <notification name="SearchWordBanned">
- Alcuni termini della ricerca sono stati esclusi a causa delle restrizioni di contenuto come esposto negli Standard della comunità.
- </notification>
- <notification name="NoContentToSearch">
- Seleziona almeno un tipo di contenuto per la ricerca (Generale, Moderato o Adulti).
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="PaymentReceived">
- [MESSAGE]
- </notification>
- <notification name="PaymentSent">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Notifica eventi:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="Dettagli"/>
- <button name="Cancel" text="Cancella"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Tutti gli oggetti presenti sul terreno, che saranno trasferiti al compratore di questa terra, saranno ora evidenziati.
-
-* Gli alberi e l&apos;erba che cederai non saranno evidenziati.
- <form name="form">
- <button name="Done" text="Fatto"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Usa lo stesso tasto per disattivare la gesture:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Il software QuickTime di Apple sembra non essere installato sul tuo computer.
-Se vuoi vedere contenuto multimediale in streaming sui lotti che lo supportano, vai alla pagina [http://www.apple.com/quicktime QuickTime] e installa il Player QuickTime.
- </notification>
- <notification name="NoPlugin">
- Non è stato trovato alcun plugin multimediale per gestire il tipo mime [MIME_TYPE]. Il media di questo tipo non è disponibile.
- </notification>
- <notification name="MediaPluginFailed">
- Questo plugin multimediale non funziona:
- [PLUGIN]
-
-Reinstalla il plugin o contatta il venditore se continui ad avere questi problemi.
- <form name="form">
- <ignore name="ignore" text="Mancato funzionamento del plugin multimediale"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- Gli oggetti che possiedi sul terreno selezionato ti sono stati restituiti nell&apos;inventario.
- </notification>
- <notification name="OtherObjectsReturned">
- Sono stati restituiti all&apos;inventario di &apos;[NAME]&apos; gli oggetti sul lotto di terreno selezionato di sua proprietà.
- </notification>
- <notification name="OtherObjectsReturned2">
- Sono stati restituiti al proprietario gli oggetti selezionati sul lotto nella terra di proprietà del residente &apos;[NAME]&apos;.
- </notification>
- <notification name="GroupObjectsReturned">
- Gli oggetti selezionati sul terreno e condivisi con il gruppo [GROUPNAME] sono stati restituiti nell&apos;inventario dei propietari.
-Gli oggetti trasferibili ceduti sono stati restituiti ai proprietari precedenti.
-Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancellati.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- Gli oggetti selezionati sul terreno che non sono di tua proprietà sono stati restituiti ai loro proprietari.
- </notification>
- <notification name="ServerObjectMessage">
- Messaggio da [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
- </notification>
- <notification name="NotSafe">
- Su questo terreno sono abilitati i danni.
-Qui potresti essere ferito. Se dovessi morire verrai teleportato a casa tua.
- </notification>
- <notification name="NoFly">
- In questa zona è proibito il volo.
-Qui non puoi volare.
- </notification>
- <notification name="PushRestricted">
- Questa zona non consente le spinte. Non puoi spingere gli altri a meno che tu non sia il proprietario del terreno.
- </notification>
- <notification name="NoVoice">
- Questa zona ha la chat vocale disattivata. Non puoi sentire nessuno parlare.
- </notification>
- <notification name="NoBuild">
- In questa zona è proibita la costruzione. Qui non puoi costruire né rezzare oggetti.
- </notification>
- <notification name="ScriptsStopped">
- Un amministratore ha temporaneamente disabilitato gli script in questa regione.
- </notification>
- <notification name="ScriptsNotRunning">
- In questa terra nessuno script è attivo.
- </notification>
- <notification name="NoOutsideScripts">
- Questo terreno non consente script esterni.
-
-Qui funzionano soltanto gli script del proprietario del terreno.
- </notification>
- <notification name="ClaimPublicLand">
- Puoi solo richiedere terreni pubblici nella regione in cui sei posizionato.
- </notification>
- <notification name="RegionTPAccessBlocked">
- Non puoi entrare in quella regione a causa della tua categoria di accesso. Può essere necessario validare l&apos;età e/o installare l&apos;ultima versione del programma.
-
-Visita la Knowledge Base per informazioni sull&apos;accesso alle aree con queste categorie di accesso.
- </notification>
- <notification name="URBannedFromRegion">
- Tu hai l&apos;accesso bloccato a questa regione.
- </notification>
- <notification name="NoTeenGridAccess">
- Il tuo account non può connettersi a questa regione della griglia per Teenager.
- </notification>
- <notification name="ImproperPaymentStatus">
- Non hai una impostazioni di pagamento corrette per entrare in questa regione.
- </notification>
- <notification name="MustGetAgeParcel">
- Devi essere di età verificata per entrare in questa terra.
- </notification>
- <notification name="NoDestRegion">
- Non è stata trovata nessuna regione di destinazione.
- </notification>
- <notification name="NotAllowedInDest">
- Non hai il permesso di accedere alla regione di destinazione.
- </notification>
- <notification name="RegionParcelBan">
- Non puoi attraversare la regione passando su un terreno ad accesso interdetto. Prova in un altro modo.
- </notification>
- <notification name="TelehubRedirect">
- Sei stato rediretto ad un punto di snodo di teletrasporto.
- </notification>
- <notification name="CouldntTPCloser">
- Non è stato possibile teleportarti più vicino al luogo di destinazione.
- </notification>
- <notification name="TPCancelled">
- Teletrasporto annullato.
- </notification>
- <notification name="FullRegionTryAgain">
- La regione in cui stai tentando di accedere è attualmente piena.
-Riprova tra qualche istante.
- </notification>
- <notification name="GeneralFailure">
- Fallimento generale.
- </notification>
- <notification name="RoutedWrongRegion">
- Sei stato instradato verso la regione sbagliata. Riprova.
- </notification>
- <notification name="NoValidAgentID">
- Nessun ID valido.
- </notification>
- <notification name="NoValidSession">
- Nessun ID valido.
- </notification>
- <notification name="NoValidCircuit">
- Nessun codice circuito valido.
- </notification>
- <notification name="NoValidTimestamp">
- Nessuna data/timestamp valido.
- </notification>
- <notification name="NoPendingConnection">
- Impossibile creare la connessione in sospeso.
- </notification>
- <notification name="InternalUsherError">
- Si è verificato un errore interno durante il tentativo di trasportarti alla destinazione. Potrebbero esserci problemi in [SECOND_LIFE] al momento.
- </notification>
- <notification name="NoGoodTPDestination">
- Impossibile trovare una buona destinazione per il teletrasporto in questa regione.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Si è verificato un errore interno durante il tentativo di risolvere le coordinate per la richiesta di teletrasporto. Può darsi che ci siano problemi in [SECOND_LIFE] al momento.
- </notification>
- <notification name="NoValidLanding">
- Non è stato trovato un punto di atterraggio valido.
- </notification>
- <notification name="NoValidParcel">
- Non è stato trovato nessun territorio valido.
- </notification>
- <notification name="ObjectGiveItem">
- Un oggetto denominato &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; di proprietà di [NAME_SLURL] ti ha offerto &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Per usare questo oggetto è necessario passare alla modalità Avanzata e cercarlo nell&apos;Inventario. Per passare alla modalità Avanzata, esci e riavvia l&apos;applicazione e cambia le impostazioni della modalità nella schermata di accesso.
- <form name="form">
- <button name="Keep" text="Mantieni oggetto"/>
- <button name="Discard" text="Rifiuta oggetto"/>
- <button name="Mute" text="Blocca oggetto"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME_SLURL] ti ha offerto [ITEM_SLURL]. Per usare questo oggetto è necessario passare alla modalità Avanzata e cercarlo nell&apos;Inventario. Per passare alla modalità Avanzata, esci e riavvia l&apos;applicazione e cambia le impostazioni della modalità nella schermata di accesso.
- <form name="form">
- <button name="Show" text="Mantieni oggetto"/>
- <button name="Discard" text="Rifiuta oggetto"/>
- <button name="Mute" text="Blocca utente"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Iscriviti"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Info" text="Info"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME_SLURL] ti ha offerto il teleport alla sua ubicazione:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
- <form name="form">
- <button name="Teleport" text="Teleport"/>
- <button name="Cancel" text="Cancella"/>
- </form>
- </notification>
- <notification name="TeleportOfferSent">
- Offerta di Teleport inviata a [TO_NAME]
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Successivo"/>
- <button name="GoNow..." text="Vai ora..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME_SLURL] ti ha offerto di diventare amici.
-
-[MESSAGE]
-
-(L&apos;impostazione predefinita consente a ciascuno di vedere se l&apos;altro è online.)
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- </form>
- </notification>
- <notification name="FriendshipOffered">
- Hai offerto l&apos;amicizia a [TO_NAME]
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME_SLURL] ti ha offerto di diventare amici.
-
-(L&apos;impostazione predefinita consente a ciascuno di vedere se l&apos;altro è online.)
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- [NAME] ha accettato la tua offerta di amicizia.
- </notification>
- <notification name="FriendshipDeclined">
- [NAME] ha rifiutato la tua offerta di amicizia.
- </notification>
- <notification name="FriendshipAcceptedByMe">
- Offerta di amicizia accettata.
- </notification>
- <notification name="FriendshipDeclinedByMe">
- Offerta di amicizia rifiutata.
- </notification>
- <notification name="OfferCallingCard">
- [NOME] ti offre il suo biglietto da visita.
-Questo sarà aggiunto nel tuo inventario come segnalibro per consentirti di inviare rapidamente messaggi IM a questo residente.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- Questa regione verrà riavviata fra [MINUTES] minuti.
-Se rimani qui verrai scollegato da Second Life.
- </notification>
- <notification name="RegionRestartSeconds">
- Questa regione verrà riavviata fra [SECONDS] secondi.
-Se rimani qui verrai scollegato da Second Life.
- </notification>
- <notification name="LoadWebPage">
- Caricare la pagina Web [URL]?
-
-[MESSAGE]
-
-Dall&apos;oggetto: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, proprietario: [NAME]?
- <form name="form">
- <button name="Gotopage" text="Caricare"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- Impossibile trovare [TYPE] nel database.
- </notification>
- <notification name="FailedToFindWearable">
- Impossibile trovare [TYPE] chiamato [DESC] nel database.
- </notification>
- <notification name="InvalidWearable">
- L&apos;elemento che stai tentando di indossare usa delle caratteristiche che il tuo viewer non può leggere. Aggiorna la versione di [APP_NAME] per poterlo indossare.
- </notification>
- <notification name="ScriptQuestion">
- &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, un oggetto posseduto da &apos;[NAME]&apos; vorrebbe:
-
-[QUESTIONS]
-OK?
- <form name="form">
- <button name="Yes" text="Si"/>
- <button name="No" text="No"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- Un oggetto di nome &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, posseduto da &apos;[NAME]&apos; vorrebbe:
-
-[QUESTIONS]
-Se non ti fidi di questo oggetto e del suo ideatore, dovresti rifiutare la richiesta.
-
-Concedi questa richiesta?
- <form name="form">
- <button name="Grant" text="Accetta"/>
- <button name="Deny" text="Nega"/>
- <button name="Details" text="Dettagli..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos; di [NAME]
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignora"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos; di [GROUPNAME]
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignora"/>
- </form>
- </notification>
- <notification name="BuyLindenDollarSuccess">
- Grazie per aver inviato il pagamento.
-
-Il tuo saldo in L$ sarà aggiornato al termine dell&apos;elaborazione. Se l&apos;elaborazione dovesse impiegare più di 20 minuti, la transazione verrà annullata. In quel caso l&apos;ammontare dell&apos;acquisto verrà accreditato sul tuo saldo in US$.
-
-Potrai controllare lo stato del pagamento nella pagina della cronologia delle transazioni nel tuo [http://secondlife.com/account/ Dashboard]
- </notification>
- <notification name="FirstOverrideKeys">
- I tuoi movimenti della tastiera vengono ora gestiti da un oggetto.
-Prova i tasti freccia o AWSD per vedere quello che fanno.
-Alcuni oggetti (come pistole) richiedono di andare in mouselook per il loro utilizzo.
-Premi &apos;M&apos; per farlo.
- </notification>
- <notification name="FirstSandbox">
- Questa è una Sandbox, serve ai residenti per imparare a costruire.
-
-Gli oggetti che costruisci qui verranno eliminati dopo che te ne sei andato, perciò non dimenticare di cliccare sulle tue creazioni col tasto destro del mouse e scegliere Prendi per trasferirle nel tuo Inventario.
- </notification>
- <notification name="MaxListSelectMessage">
- È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] ti sta invitando ad una chiamata in chat vocale.
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [NAME] ha ricevuto un IM ed è stato automaticamente sbloccato.
- </notification>
- <notification name="AutoUnmuteByMoney">
- [NAME] ha ricevuto del denaro ed è stato automaticamente sbloccato.
- </notification>
- <notification name="AutoUnmuteByInventory">
- [NAME] ha ricevuto un&apos;offerta di inventario ed è stato automaticamente sbloccato.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] si è aggiunto alla chiamata in chat vocale con il gruppo [GROUP].
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] si è aggiunto alla chiamata in chat vocale con una conferenza.
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] ti sta invitando ad una conferenza in chat.
-Clicca su Accetta per unirti alla chat oppure su Declina per declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- La chiamata vocale a cui si sta cercando di unirsi, [VOICE_CHANNEL_NAME], ha raggiunto la capacità massima. Si prega di riprovare più tardi.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Siamo spiacenti. Questa area ha raggiunto la capacità massima per le chiamate voice. Si prega di provare ad usare il voice in un&apos;altra area.
- </notification>
- <notification name="VoiceChannelDisconnected">
- Sei stato scollegato da [VOICE_CHANNEL_NAME]. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] ha chiuso la chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] ha declinato la tua chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] non è disponibile per la tua chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Collegamento a [VOICE_CHANNEL_NAME] non riuscito, riprova più tardi. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="VoiceLoginRetry">
- Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto.
- </notification>
- <notification name="VoiceEffectsExpired">
- Almeno una delle manipolazioni vocali alle quali sei iscritto è scaduta.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
- </notification>
- <notification name="VoiceEffectsExpiredInUse">
- Poiché la manipolazione vocale attiva è scaduta, sono state applicate le tue impostazioni normali.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
- </notification>
- <notification name="VoiceEffectsWillExpire">
- Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
- </notification>
- <notification name="VoiceEffectsNew">
- Sono disponibili nuove manipolazioni vocali.
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Soltanto i membri di un determinato gruppo possono visitare questa zona.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Non puoi entrare nel terreno, sei stato bloccato.
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Non puoi entrare nel terreno, non fai parte della lista di accesso.
- </notification>
- <notification name="VoiceNotAllowed">
- Non hai il permesso di collegarti ad una voice chat con [VOICE_CHANNEL_NAME].
- </notification>
- <notification name="VoiceCallGenericError">
- Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME]. Riprova più tardi.
- </notification>
- <notification name="UnsupportedCommandSLURL">
- Lo SLurl su cui hai cliccato non è valido.
- </notification>
- <notification name="BlockedSLURL">
- Uno SLurl è stato ricevuto da un browser sconosciuto o non sicuro e, per sicurezza, è stato bloccato.
- </notification>
- <notification name="ThrottledSLURL">
- Sono stati ricevuti più SLurl da un browser sconosciuto o non sicuro in un breve periodo di tempo.
-Per sicurezza, verranno bloccati per alcuni secondi.
- </notification>
- <notification name="IMToast">
- [MESSAGE]
- <form name="form">
- <button name="respondbutton" text="Rispondi"/>
- </form>
- </notification>
- <notification name="ConfirmCloseAll">
- Sicuro di voler chiudere tutti gli IM?
- <usetemplate ignoretext="Conferma prima della chiusura di tutti gli IM" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="AttachmentSaved">
- L&apos;elemento da collegare è stato salvato.
- </notification>
- <notification name="UnableToFindHelpTopic">
- Impossibile trovare l&apos;argomento nell&apos;aiuto per questo elemento.
- </notification>
- <notification name="ObjectMediaFailure">
- Errore del server: mancato aggiornamento o ottenimento del media.
-&apos;[ERROR]&apos;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TextChatIsMutedByModerator">
- La tua chat di testo è stata interrotta dal moderatore.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="VoiceIsMutedByModerator">
- La tua voce è stata interrotta dal moderatore.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearTeleportHistory">
- Sei sicuro di volere cancellare la cronologia dei tuoi teleport?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BottomTrayButtonCanNotBeShown">
- Il pulsante selezionato non può essere visualizzato in questo momento.
-Il pulsante verrà visualizzato quando lo spazio sarà sufficiente.
- </notification>
- <notification name="ShareNotification">
- Scegli i residenti con i quali condividere.
- </notification>
- <notification name="ShareItemsConfirmation">
- Sei sicuro di volere condividere gli oggetti
-
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
-
-Con i seguenti residenti?
-
-[RESIDENTS]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Ok"/>
- </notification>
- <notification name="ItemsShared">
- Gli oggetti sono stati condivisi.
- </notification>
- <notification name="DeedToGroupFail">
- Cessione al gruppo non riuscita.
- </notification>
- <notification name="AvatarRezNotification">
- ( in esistenza da [EXISTENCE] secondi )
-Nuvola avatar &apos;[NAME]&apos; dileguata dopo [TIME] secondi.
- </notification>
- <notification name="AvatarRezSelfBakedDoneNotification">
- ( in esistenza da [EXISTENCE] secondi )
-Baking dei vestiti terminato dopo [TIME] secondi.
- </notification>
- <notification name="AvatarRezSelfBakedUpdateNotification">
- ( in esistenza da [EXISTENCE] secondi )
-Hai inviato un aggiornamento al tuo aspetto dopo [TIME] secondi.
-[STATUS]
- </notification>
- <notification name="AvatarRezCloudNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; trasformato in nuvola.
- </notification>
- <notification name="AvatarRezArrivedNotification">
- ( presente da [EXISTENCE] secondi )
-È comparso l&apos;avatar &apos;[NAME]&apos;.
- </notification>
- <notification name="AvatarRezLeftCloudNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; partito dopo [TIME] secondi sotto forma di nuvola.
- </notification>
- <notification name="AvatarRezEnteredAppearanceNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; è entrato nella modalità aspetto.
- </notification>
- <notification name="AvatarRezLeftAppearanceNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; ha lasciato la modalità aspetto.
- </notification>
- <notification name="NoConnect">
- Ci sono problemi di connessione tramite [PROTOCOL] [HOSTID].
-Ti consigliamo di controllare le tue impostazioni di rete e della firewall.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NoVoiceConnect">
- A causa di problemi di connessione al server vocale
-
-[HOSTID]
-
-le comunicazioni tramite voce non saranno disponibili.
-Ti consigliamo di controllare le tue impostazioni di rete e della firewall.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarRezLeftNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; è partito completamente caricato.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUploadNotification">
- ( In esistenza da [EXISTENCE] secondi)
-Hai caricato una texture [RESOLUTION] completata per &apos;[BODYREGION]&apos; dopo [TIME] secondi.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUpdateNotification">
- ( In esistenza da [EXISTENCE] secondi)
-Hai aggiornato localmente una texture [RESOLUTION] completata per &apos;[BODYREGION]&apos; dopo [TIME] secondi.
- </notification>
- <notification name="ConfirmLeaveCall">
- Sei sicuro di volere uscire dalla chiamata?
- <usetemplate ignoretext="Conferma prima di uscire dalla chiamata" name="okcancelignore" notext="No" yestext="Sì"/>
- </notification>
- <notification name="ConfirmMuteAll">
- Hai scelto di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo.
-In questo modo verrà disattivato l&apos;audio anche di tutti i residenti che si
-uniscono alla chiamata in un secondo momento, anche dopo che tu ti fossi scollegato.
-
-Disattiva audio di tutti?
- <usetemplate ignoretext="Conferma prima di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo" name="okcancelignore" notext="Annulla" yestext="Ok"/>
- </notification>
- <notification label="Chat" name="HintChat">
- Per partecipare alla conversazione, digita nel campo chat in basso.
- </notification>
- <notification label="Alzati" name="HintSit">
- Per alzarti ed uscire dalla posizione seduta, clicca sul pulsante Alzati.
- </notification>
- <notification label="Parla" name="HintSpeak">
- Clicca sul pulsante Parla per attivare o disattivare il microfono.
-
-Clicca sul tasto freccia su per visualizzare il pannello di controllo voce.
-
-Se nascondi il tasto Parla viene disattivata la funzione voce.
- </notification>
- <notification label="Esplora il mondo" name="HintDestinationGuide">
- La Guida alle destinazioni contiene migliaia di nuovi luoghi da scoprire. Seleziona una destinazione e scegli Teleport per iniziare a esplorare.
- </notification>
- <notification label="Pannello laterale" name="HintSidePanel">
- Nel pannello laterale puoi acccedere rapidamente all&apos;inventario, ai vestiti, ai profili e ad altro ancora.
- </notification>
- <notification label="Movimento" name="HintMove">
- Per camminare o correre, apri il pannello Sposta e usa le frecce direzionali per spostarti. Puoi anche usare le frecce direzionali sulla tastiera del computer.
- </notification>
- <notification label="" name="HintMoveClick">
- 1. Clicca per camminare
-Clicca dovunque sul terreno per camminare verso quella posizione.
-
-2. Clicca e trascina per ruotare la visuale
-Clicca e trascina dovunque nel mondo per ruotare la visuale
- </notification>
- <notification label="Nome visualizzato" name="HintDisplayName">
- Imposta qui il tuo nome visualizzato personalizzabile. È in aggiunta al tuo nome utente, che non può essere cambiato. Nelle preferenze puoi anche cambiare il modo in cui vedi i nomi degli altri.
- </notification>
- <notification label="Visuale" name="HintView">
- Per cambiare la visuale della fotocamera, usa i controlli Ruota visuale e Panoramica. Ripristina la visuale premendo il tasto Esc o camminando.
- </notification>
- <notification label="Inventario" name="HintInventory">
- Trova oggetti nel tuo inventario. I più recenti si trovano nella scheda Elementi recenti.
- </notification>
- <notification label="Hai dollari Linden!" name="HintLindenDollar">
- Ecco il saldo attuale in L$. Clicca su Acquista L$ per acquistare altri dollari Linden.
- </notification>
- <notification name="PopupAttempt">
- Non è stato possibile aprire una finestra pop-up.
- <form name="form">
- <ignore name="ignore" text="Attiva tutti i pop-up"/>
- <button name="open" text="Apri finestra pop-up"/>
- </form>
- </notification>
- <notification name="AuthRequest">
- Il sito &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; nel reame &apos;[REALM]&apos; richiede un nome utente e una password.
- <form name="form">
- <input name="username" text="Nome utente"/>
- <input name="password" text="Password"/>
- <button name="ok" text="Invia"/>
- <button name="cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="" name="ModeChange">
- Per cambiare la modalità è necessario uscire e riavviare.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoClassifieds">
- La creazione e la modifica degli annunci sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoGroupInfo">
- La creazione e la modifica dei gruppi sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoPicks">
- La creazione e la modifica dei luoghi preferiti sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoWorldMap">
- La visualizzazione della mappa del mondo è disponibile solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoVoiceCall">
- Le chiamate Voce sono disponibili solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoAvatarShare">
- La condivisione è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoAvatarPay">
- Il pagamento ad altri residenti è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <global name="UnsupportedCPU">
- - La velocità della tua CPU non soddisfa i requisiti minimi.
- </global>
- <global name="UnsupportedGLRequirements">
- Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo.
-
-Se continui ad avere problemi, visita la pagina [SUPPORT_SITE].
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - La tua scheda grafica non soddisfa i requisiti minimi.
- </global>
- <global name="UnsupportedRAM">
- - La memoria del tuo sistema non soddisfa i requisiti minimi.
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Se sei proprietario di un appezzamento di terreno, puoi definirlo come la tua posizione iniziale.
-In alternativa, puoi guardare sulla mappa e trovare luoghi segnalati come &quot;Infohub&quot;.
- </global>
- <global name="You died and have been teleported to your home location">
- Sei deceduto e sei stato teleportato a casa tua.
- </global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml
deleted file mode 100644
index be001d09f8..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Chiama" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Abbandona chiamata" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Regolazione voce" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml
deleted file mode 100644
index ab9b175f16..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Accende o spegne il microfono"/>
- <string name="VoiceControlBtnToolTip" value="Mostra o nasconde il pannello di regolazione voce"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Parla" name="speak_btn" tool_tip="Accendi e spegni il microfono"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Cambia le preferenze per i suoni"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesture" name="Gesture" tool_tip="Fai fare qualcosa al tuo avatar"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Visuale" name="camera_btn" tool_tip="Controlla l&apos;angolo di visualizzazione"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinazioni" name="destination_btn" tool_tip="Viaggia in Second Life"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Il mio avatar" name="avatar_btn" tool_tip="Cambia il tuo aspetto"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Persone" name="show_people_button" tool_tip="Trova persone in Second Life"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profilo" name="show_profile_btn" tool_tip="Visualizza e modifica il tuo profilo"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Istruzioni" name="show_help_btn" tool_tip="Visualizza le informazioni della guida di Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversazioni"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notifiche"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml
deleted file mode 100644
index 2d17e4a0cd..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="group_info_btn_panel">
- <button label="Profilo del gruppo" name="group_info_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Chiama il gruppo" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Abbandona chiamata" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Apri la regolazione voce" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
deleted file mode 100644
index 269931a1a4..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profilo" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Aggiungi come amico" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleport" name="teleport_btn" tool_tip="Offri teleport a questa persona"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Chiama" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Chiudi chiamata" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Blocca" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="Sblocca" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Volume chiamata" value="0.5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_login.xml b/indra/newview/skins/minimal/xui/it/panel_login.xml
deleted file mode 100644
index f88230ed11..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=it
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Nome utente:
- </text>
- <combo_box name="username_combo" tool_tip="Il nome utente che hai scelto durante la registrazione, come robby12 o Stella Soleggiato"/>
- <text name="password_text">
- Password:
- </text>
- <check_box label="Ricorda password" name="remember_check"/>
- <button label="Accedi" name="connect_btn"/>
- <text name="mode_selection_text">
- Modalità:
- </text>
- <combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità.">
- <combo_box.item label="Di base" name="Basic"/>
- <combo_box.item label="Avanzate" name="Advanced"/>
- </combo_box>
- <text name="start_location_text">
- Inizia da:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="La mia ultima ubicazione" name="MyLastLocation"/>
- <combo_box.item label="Casa mia" name="MyHome"/>
- <combo_box.item label="&lt;Scrivi nome regione&gt;" name="Typeregionname"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Iscriviti
- </text>
- <text name="forgot_password_text">
- Hai dimenticato il nome utente o la password?
- </text>
- <text name="login_help">
- Ti serve aiuto con la fase di accesso?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml
deleted file mode 100644
index 8e72167759..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Torna al luogo precedente"/>
- <pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/>
- <button name="home_btn" tool_tip="Teleport a casa"/>
- <location_input label="Posizione" name="location_combo"/>
- <search_combo_box label="Cerca" name="search_combo_box" tool_tip="Cerca">
- <combo_editor label="Cerca [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
- <label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
- Barra dei Preferiti
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mostra altri Preferiti"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_people.xml b/indra/newview/skins/minimal/xui/it/panel_people.xml
deleted file mode 100644
index 81e886acf0..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Persone" name="people_panel">
- <string name="no_recent_people" value="Nessuna persona recente. Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso."/>
- <string name="no_filtered_recent_people" value="Nessuna persona recente con quel nome."/>
- <string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso."/>
- <string name="no_one_filtered_near" value="Nessuno vicino con quel nome."/>
- <string name="no_friends_online" value="Nessun amico online"/>
- <string name="no_friends" value="Nessun amico"/>
- <string name="no_friends_msg">
- Clicca con il pulsante destro su un Residente per aggiungerlo come amico.
-Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso.
- </string>
- <string name="no_filtered_friends_msg">
- Non riesci a trovare quello che cerchi? Prova il pulsante Destinazioni in basso.
- </string>
- <string name="people_filter_label" value="Filtro persone"/>
- <string name="groups_filter_label" value="Filtro gruppi"/>
- <string name="no_filtered_groups_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/groups/[SEARCH_TERM] Cerca]."/>
- <string name="no_groups_msg" value="Stai cercando gruppi di cui far parte? Prova [secondlife:///app/search/groups Cerca]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Fai doppio clic per aprire la Mappa, premi il tasto Maiusc e trascina per la panoramica)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Fai doppio clic per teleportarti, premi il tasto Maiusc e trascina per la panoramica)"/>
- <filter_editor label="Filtro" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="NELLE VICINANZE" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="nearby_view_sort_btn" tool_tip="Opzioni"/>
- <button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
- </panel>
- </panel>
- <panel label="I MIEI AMICI" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Online"/>
- <accordion_tab name="tab_all" title="Tutto"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="options_gear_btn_panel">
- <menu_button name="friends_viewsort_btn" tool_tip="Mostra ulteriori opzioni"/>
- </layout_panel>
- <layout_panel name="add_btn_panel">
- <button name="add_btn" tool_tip="Offri amicizia a un residente"/>
- </layout_panel>
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Rimuovi la persona selezionata dalla lista degli amici"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="I MIEI GRUPPI" name="groups_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="groups_viewsort_btn" tool_tip="Opzioni"/>
- <button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
- <button name="activate_btn" tool_tip="Attiva il gruppo selezionato"/>
- </panel>
- </panel>
- <panel label="RECENTE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="recent_viewsort_btn" tool_tip="Opzioni"/>
- <button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
- </layout_panel>
- <layout_panel name="share_btn_lp">
- <button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell&apos;inventario"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Profilo del gruppo" name="group_info_btn" tool_tip="Mostra informazioni gruppo"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Chat di gruppo" name="chat_btn" tool_tip="Apri sessione chat"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Chiamata al gruppo" name="group_call_btn" tool_tip="Chiama questo gruppo"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 3c7874e093..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Pannello laterale"/>
- <button name="undock" tool_tip="Disàncora"/>
- <button name="dock" tool_tip="Àncora"/>
- <button name="show_help" tool_tip="Mostra Aiuto"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_status_bar.xml b/indra/newview/skins/minimal/xui/it/panel_status_bar.xml
deleted file mode 100644
index cde495ba97..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Perdita di pacchetti
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Larghezza di banda
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità.">
- <combo_box.item label="Modalità di base" name="Basic"/>
- <combo_box.item label="Modalità Avanzata" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Attiva/ferma tutti i media (musica, video, pagine Web)"/>
- <button name="volume_btn" tool_tip="Regolazione del volume globale"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_camera.xml b/indra/newview/skins/minimal/xui/ja/floater_camera.xml
deleted file mode 100644
index 71a20c8e18..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- フォーカスを中心にカメラを回転
- </floater.string>
- <floater.string name="zoom_tooltip">
- フォーカスに向けてカメラをズーム
- </floater.string>
- <floater.string name="move_tooltip">
- カメラを上下左右に移動
- </floater.string>
- <floater.string name="camera_modes_title">
- カメラモード
- </floater.string>
- <floater.string name="pan_mode_title">
- 旋回 - ズーム - 水平・垂直移動
- </floater.string>
- <floater.string name="presets_mode_title">
- 事前設定の視野
- </floater.string>
- <floater.string name="free_mode_title">
- オブジェクトを見る
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- 前方視界
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- グループ視界
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- 後方視界
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- オブジェクト視点
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- 一人称視点
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="向いている方法にカメラをズーム">
- <joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/>
- <slider_bar name="zoom_slider" tool_tip="向いている方向にカメラをズーム"/>
- <joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に動かします"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="事前設定の視野"/>
- <button label="" name="pan_btn" tool_tip="旋回 - ズーム - 水平・垂直移動"/>
- <button label="" name="avatarview_btn" tool_tip="カメラモード"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml b/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml
deleted file mode 100644
index 1322343903..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ハウツー">
- <floater.string name="loading_text">
- ローディング...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml b/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml
deleted file mode 100644
index 439c36dbe9..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="メディアブラウザ">
- <floater.string name="home_page_url">
- http://jp.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://jp.secondlife.com/support
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="戻る" name="back"/>
- <button label="前" name="forward"/>
- <button label="更新" name="reload"/>
- <button label="検索" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="巻き戻し" name="rewind"/>
- <button label="停止" name="stop"/>
- <button label="早送り" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="現在のページを区画に送る" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Web ブラウザで開く" name="open_browser"/>
- <check_box label="常に Web ブラウザで開く" name="open_always"/>
- <button label="閉じる" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml
deleted file mode 100644
index a29c6a0630..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="近くのチャット">
- <check_box label="チャットを翻訳(Google翻訳)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_web_content.xml b/indra/newview/skins/minimal/xui/ja/floater_web_content.xml
deleted file mode 100644
index 48fe8aee78..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="前へ"/>
- <button name="forward" tool_tip="次へ"/>
- <button name="stop" tool_tip="ナビゲーションを停止"/>
- <button name="reload" tool_tip="ページを更新"/>
- <combo_box name="address" tool_tip="ここに URL を入力"/>
- <icon name="media_secure_lock_flag" tool_tip="安全な閲覧"/>
- <button name="popexternal" tool_tip="この URL をブラウザで開く"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml b/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml
deleted file mode 100644
index 42b67cd333..0000000000
--- a/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_name_small" value="Grumpity ProductEngine with a long name"/>
- <text name="user_slid" value="james.linden"/>
- <text name="user_subtitle" value="11 Months, 3 days old"/>
- <text name="user_details">
- This is my second life description and I really think it is great.But for some reason my description is super extra long because I like to talk a whole lot
- </text>
- <slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
- <button label="フレンド登録" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="プロフィール" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="ボイスを無効" name="disable_voice"/>
- <button label="ボイスを有効" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/inspect_object.xml b/indra/newview/skins/minimal/xui/ja/inspect_object.xml
deleted file mode 100644
index e6999ac9b1..0000000000
--- a/indra/newview/skins/minimal/xui/ja/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- 制作者: [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- [CREATOR]によるチェック
-[OWNER]によるチェック
- </string>
- <string name="Price">
- L$[AMOUNT]
- </string>
- <string name="PriceFree">
- 無料です!
- </string>
- <string name="Touch">
- 触る
- </string>
- <string name="Sit">
- 座る
- </string>
- <text name="object_name" value="二行にわたる長いオブジェクト名をテスト"/>
- <text name="object_creator">
- by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
- </text>
- <text name="price_text">
- L$30,000
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <text name="object_media_url">
- http://www.superdupertest.com
- </text>
- <button label="買う" name="buy_btn"/>
- <button label="支払う" name="pay_btn"/>
- <button label="コピーを取る" name="take_free_copy_btn"/>
- <button label="触る" name="touch_btn"/>
- <button label="座る" name="sit_btn"/>
- <button label="開く" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="安全な閲覧"/>
- <button label="詳細" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml
deleted file mode 100644
index 982a03c6a8..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="新しい順に並べ替え" name="sort_by_most_recent"/>
- <menu_item_check label="名前で並べ替え" name="sort_by_name"/>
- <menu_item_check label="タイプによる並べ替え" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml
deleted file mode 100644
index 5adf0b3745..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="プロフィールの表示" name="Profile..."/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="グループに招待" name="Invite..."/>
- <menu_item_call label="ブロック" name="Avatar Mute"/>
- <menu_item_call label="報告" name="abuse"/>
- <menu_item_call label="フリーズ" name="Freeze..."/>
- <menu_item_call label="追放" name="Eject..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
- <menu_item_call label="ズームイン" name="Zoom In"/>
- <menu_item_call label="支払う" name="Pay..."/>
- <menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml
deleted file mode 100644
index 830ddc9f63..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="タッチ" name="Attachment Object Touch"/>
- <menu_item_call label="編集" name="Edit..."/>
- <menu_item_call label="取り外す" name="Detach"/>
- <menu_item_call label="座る" name="Sit Down Here"/>
- <menu_item_call label="立ち上がる" name="Stand Up"/>
- <menu_item_call label="容姿" name="Change Outfit"/>
- <menu_item_call label="アウトフィットの編集" name="Edit Outfit"/>
- <menu_item_call label="シェイプの編集" name="Edit My Shape"/>
- <menu_item_call label="フレンド" name="Friends..."/>
- <menu_item_call label="グループ" name="Groups..."/>
- <menu_item_call label="プロフィール" name="Profile..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
- <menu_item_call label="下に落とす" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml
deleted file mode 100644
index b04f602134..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="プロフィールの表示" name="Show Profile"/>
- <menu_item_call label="IMを送信..." name="Send IM"/>
- <menu_item_call label="フレンドを追加..." name="Add Friend"/>
- <menu_item_call label="フレンドを削除..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml
deleted file mode 100644
index 54dd96f5ef..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="プロフィールの表示" name="Profile..."/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="グループに招待" name="Invite..."/>
- <menu_item_call label="ブロック" name="Avatar Mute"/>
- <menu_item_call label="報告" name="abuse"/>
- <menu_item_call label="フリーズ" name="Freeze..."/>
- <menu_item_call label="追放" name="Eject..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
- <menu_item_call label="ズームイン" name="Zoom In"/>
- <menu_item_call label="支払う" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml
deleted file mode 100644
index 4709522665..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="座る" name="Sit Down Here"/>
- <menu_item_call label="立ち上がる" name="Stand Up"/>
- <context_menu label="取り外す" name="Take Off &gt;">
- <context_menu label="衣類" name="Clothes &gt;">
- <menu_item_call label="シャツ" name="Shirt"/>
- <menu_item_call label="パンツ" name="Pants"/>
- <menu_item_call label="スカート" name="Skirt"/>
- <menu_item_call label="靴" name="Shoes"/>
- <menu_item_call label="靴下" name="Socks"/>
- <menu_item_call label="ジャケット" name="Jacket"/>
- <menu_item_call label="手袋" name="Gloves"/>
- <menu_item_call label="下着シャツ" name="Self Undershirt"/>
- <menu_item_call label="下着パンツ" name="Self Underpants"/>
- <menu_item_call label="タトゥ" name="Self Tattoo"/>
- <menu_item_call label="物理作用" name="Self Physics"/>
- <menu_item_call label="アルファ" name="Self Alpha"/>
- <menu_item_call label="すべての衣類" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="取り外す" name="Object Detach"/>
- <menu_item_call label="すべて取り外す" name="Detach All"/>
- </context_menu>
- <menu_item_call label="容姿" name="Chenge Outfit"/>
- <menu_item_call label="アウトフィットを編集" name="Edit Outfit"/>
- <menu_item_call label="シェイプを編集" name="Edit My Shape"/>
- <menu_item_call label="フレンド" name="Friends..."/>
- <menu_item_call label="グループ" name="Groups..."/>
- <menu_item_call label="プロフィール" name="Profile..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml
deleted file mode 100644
index 7f106c1ab5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="スピーカーボタン" name="EnableVoiceChat"/>
- <menu_item_check label="ジェスチャーボタン" name="ShowGestureButton"/>
- <menu_item_check label="移動ボタン" name="ShowMoveButton"/>
- <menu_item_check label="視界ボタン" name="ShowCameraButton"/>
- <menu_item_check label="スナップショットボタン" name="ShowSnapshotButton"/>
- <menu_item_check label="制作ボタン" name="ShowBuildButton"/>
- <menu_item_check label="検索ボタン" name="ShowSearchButton"/>
- <menu_item_check label="地図ボタン" name="ShowWorldMapButton"/>
- <menu_item_check label="ミニマップボタン" name="ShowMiniMapButton"/>
- <menu_item_call label="切り取り" name="NearbyChatBar_Cut"/>
- <menu_item_call label="コピー" name="NearbyChatBar_Copy"/>
- <menu_item_call label="貼り付け" name="NearbyChatBar_Paste"/>
- <menu_item_call label="削除" name="NearbyChatBar_Delete"/>
- <menu_item_call label="すべて選択" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml
deleted file mode 100644
index e786d02e40..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="取り外す" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml
deleted file mode 100644
index eb5faa2545..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="交換" name="replace"/>
- <menu_item_call label="編集" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml
deleted file mode 100644
index d984342896..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="取り外す" name="take_off"/>
- <menu_item_call label="編集" name="edit"/>
- <menu_item_call label="交換" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml
deleted file mode 100644
index a071abbd2e..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="衣類" name="COF.Gear.New_Clothes"/>
- <menu label="新しい身体部位" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_edit.xml b/indra/newview/skins/minimal/xui/ja/menu_edit.xml
deleted file mode 100644
index c2ef0179b2..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="編集" name="Edit">
- <menu_item_call label="元に戻す" name="Undo"/>
- <menu_item_call label="やり直し" name="Redo"/>
- <menu_item_call label="切り取り" name="Cut"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="複製" name="Duplicate"/>
- <menu_item_call label="すべて選択" name="Select All"/>
- <menu_item_call label="選択解除" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_favorites.xml b/indra/newview/skins/minimal/xui/ja/menu_favorites.xml
deleted file mode 100644
index 4708b1446c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="テレポート" name="Teleport To Landmark"/>
- <menu_item_call label="ランドマークを表示・編集" name="Landmark Open"/>
- <menu_item_call label="SLurl をコピー" name="Copy slurl"/>
- <menu_item_call label="地図に表示" name="Show On Map"/>
- <menu_item_call label="コピー" name="Landmark Copy"/>
- <menu_item_call label="貼り付け" name="Landmark Paste"/>
- <menu_item_call label="削除" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml
deleted file mode 100644
index abf490a247..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <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"/>
- <menu_item_call label="現在のアウトフィットに保存" name="save_to_outfit"/>
- <menu_item_call label="編集" name="edit_gesture"/>
- <menu_item_call label="調べる" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml b/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml
deleted file mode 100644
index 3787f7d645..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="グループに参加..." name="item_join"/>
- <menu_item_call label="新しいグループ..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml
deleted file mode 100644
index 3a1ae49700..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="ナビゲーションバーを表示" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="お気に入りバーを表示" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="「場所」のミニフィールドを表示" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml
deleted file mode 100644
index 3397004bd7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="すべて閉じる" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 8cd6fa4a27..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml
deleted file mode 100644
index 5bcb96f083..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="グループ情報" name="Show Profile"/>
- <menu_item_call label="セッションを表示" name="Chat"/>
- <menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml
deleted file mode 100644
index 5453f998fa..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="プロフィールの表示" name="Show Profile"/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="セッションを表示" name="Send IM"/>
- <menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 9d0d0f10a6..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="プロフィールの表示" name="view_profile"/>
- <menu_item_call label="フレンド登録" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="コール" name="call"/>
- <menu_item_call label="テレポート" name="teleport"/>
- <menu_item_call label="グループに招待" name="invite_to_group"/>
- <menu_item_call label="ブロック" name="block"/>
- <menu_item_call label="ブロック解除" name="unblock"/>
- <menu_item_call label="報告" name="report"/>
- <menu_item_call label="フリーズ" name="freeze"/>
- <menu_item_call label="追放" name="eject"/>
- <menu_item_call label="追放" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="テクスチャのデバッグ" name="debug"/>
- <menu_item_call label="地図で探す" name="find_on_map"/>
- <menu_item_call label="ズームイン" name="zoom_in"/>
- <menu_item_call label="支払う" name="pay"/>
- <menu_item_call label="共有" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml
deleted file mode 100644
index 2edade70bf..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="触る" name="touch"/>
- <menu_item_call label="座る" name="sit"/>
- <menu_item_call label="支払う" name="pay"/>
- <menu_item_call label="買う" name="buy"/>
- <menu_item_call label="取る" name="take"/>
- <menu_item_call label="コピーを取る" name="take_copy"/>
- <menu_item_call label="開く" name="open"/>
- <menu_item_call label="編集" name="edit"/>
- <menu_item_call label="装着" name="wear"/>
- <menu_item_call label="追加" name="add"/>
- <menu_item_call label="報告" name="report"/>
- <menu_item_call label="ブロック" name="block"/>
- <menu_item_call label="ズームイン" name="zoom_in"/>
- <menu_item_call label="削除" name="remove"/>
- <menu_item_call label="詳細" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml
deleted file mode 100644
index e3e206f3aa..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="座る" name="Sit Down Here"/>
- <menu_item_call label="立ち上がる" name="Stand Up"/>
- <context_menu label="取り外す" name="Take Off &gt;">
- <context_menu label="衣類" name="Clothes &gt;">
- <menu_item_call label="シャツ" name="Shirt"/>
- <menu_item_call label="パンツ" name="Pants"/>
- <menu_item_call label="スカート" name="Skirt"/>
- <menu_item_call label="靴" name="Shoes"/>
- <menu_item_call label="靴下" name="Socks"/>
- <menu_item_call label="ジャケット" name="Jacket"/>
- <menu_item_call label="手袋" name="Gloves"/>
- <menu_item_call label="下着シャツ" name="Self Undershirt"/>
- <menu_item_call label="下着パンツ" name="Self Underpants"/>
- <menu_item_call label="タトゥ" name="Self Tattoo"/>
- <menu_item_call label="アルファ" name="Self Alpha"/>
- <menu_item_call label="すべての衣類" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="取り外す" name="Object Detach"/>
- <menu_item_call label="すべて取り外す" name="Detach All"/>
- </context_menu>
- <menu_item_call label="アウトフィットの変更" name="Chenge Outfit"/>
- <menu_item_call label="アウトフィットの編集" name="Edit Outfit"/>
- <menu_item_call label="シェイプの編集" name="Edit My Shape"/>
- <menu_item_call label="フレンド" name="Friends..."/>
- <menu_item_call label="グループ" name="Groups..."/>
- <menu_item_call label="プロフィール" name="Profile..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 9a4a8138f5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="閉じる" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory.xml
deleted file mode 100644
index f78ec09e5e..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="購入" name="Task Buy"/>
- <menu_item_call label="開く" name="Task Open"/>
- <menu_item_call label="再生" name="Task Play"/>
- <menu_item_call label="プロパティ" name="Task Properties"/>
- <menu_item_call label="名前の変更" name="Task Rename"/>
- <menu_item_call label="削除" name="Task Remove"/>
- <menu_item_call label="ごみ箱を空にする" name="Empty Trash"/>
- <menu_item_call label="紛失物フォルダを空にする" name="Empty Lost And Found"/>
- <menu_item_call label="新しいフォルダ" name="New Folder"/>
- <menu_item_call label="新しいスクリプト" name="New Script"/>
- <menu_item_call label="新しいノートカード" name="New Note"/>
- <menu_item_call label="新しいジェスチャー" name="New Gesture"/>
- <menu label="新しい衣類" name="New Clothes">
- <menu_item_call label="新しいシャツ" name="New Shirt"/>
- <menu_item_call label="新しいズボン" name="New Pants"/>
- <menu_item_call label="新しい靴" name="New Shoes"/>
- <menu_item_call label="新しい靴下" name="New Socks"/>
- <menu_item_call label="新しいジャケット" name="New Jacket"/>
- <menu_item_call label="新しいスカート" name="New Skirt"/>
- <menu_item_call label="新しい手袋" name="New Gloves"/>
- <menu_item_call label="新しい下着" name="New Undershirt"/>
- <menu_item_call label="新しいパンツ" name="New Underpants"/>
- <menu_item_call label="新しいアルファマスク" name="New Alpha Mask"/>
- <menu_item_call label="新しいタトゥ" name="New Tattoo"/>
- <menu_item_call label="新規の物理作用" name="New Physics"/>
- </menu>
- <menu label="新しい身体部位" name="New Body Parts">
- <menu_item_call label="新しいシェイプ(体型)" name="New Shape"/>
- <menu_item_call label="新しいスキン" name="New Skin"/>
- <menu_item_call label="新しい髪" name="New Hair"/>
- <menu_item_call label="新しい眼" name="New Eyes"/>
- </menu>
- <menu label="種類を変更" name="Change Type">
- <menu_item_call label="デフォルト" name="Default"/>
- <menu_item_call label="手袋" name="Gloves"/>
- <menu_item_call label="ジャケット" name="Jacket"/>
- <menu_item_call label="パンツ" name="Pants"/>
- <menu_item_call label="シェイプ" name="Shape"/>
- <menu_item_call label="靴" name="Shoes"/>
- <menu_item_call label="シャツ" name="Shirt"/>
- <menu_item_call label="スカート" name="Skirt"/>
- <menu_item_call label="下着パンツ" name="Underpants"/>
- <menu_item_call label="下着シャツ" name="Undershirt"/>
- </menu>
- <menu_item_call label="テレポート" name="Landmark Open"/>
- <menu_item_call label="開く" name="Animation Open"/>
- <menu_item_call label="開く" name="Sound Open"/>
- <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="Find Original"/>
- <menu_item_call label="アイテムを除外する" name="Purge Item"/>
- <menu_item_call label="アイテムを復元する" name="Restore Item"/>
- <menu_item_call label="開く" name="Open"/>
- <menu_item_call label="オリジナルを開きます" name="Open Original"/>
- <menu_item_call label="プロパティ" name="Properties"/>
- <menu_item_call label="名前を変更する" name="Rename"/>
- <menu_item_call label="UUID をコピーする" name="Copy Asset UUID"/>
- <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"/>
- <menu_item_call label="再生する" name="Sound Play"/>
- <menu_item_call label="ランドマークの情報" name="About Landmark"/>
- <menu_item_call label="インワールドで再生する" name="Animation Play"/>
- <menu_item_call label="ローカルで再生する" name="Animation Audition"/>
- <menu_item_call label="インスタントメッセージを送信する" name="Send Instant Message"/>
- <menu_item_call label="テレポートを送る..." name="Offer Teleport..."/>
- <menu_item_call label="コンファレンスチャットを開始する" name="Conference Chat"/>
- <menu_item_call label="アクティブ" name="Activate"/>
- <menu_item_call label="非アクティブ" name="Deactivate"/>
- <menu_item_call label="別名で保存する" name="Save As"/>
- <menu_item_call label="自分から取り外す" name="Detach From Yourself"/>
- <menu_item_call label="装着" name="Wearable And Object Wear"/>
- <menu label="装着先" name="Attach To"/>
- <menu label="HUD 装着先" name="Attach To HUD"/>
- <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="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml
deleted file mode 100644
index 6c754e5d08..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="アップロード" name="upload">
- <menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/>
- <menu_item_call label="サウンド (L$[COST] )..." name="Upload Sound"/>
- <menu_item_call label="アニメーション (L$ [COST] )..." name="Upload Animation"/>
- <menu_item_call label="一括 (ファイルにつき L$[COST] )..." name="Bulk Upload"/>
- <menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/>
- </menu>
- <menu_item_call label="新規フォルダ" name="New Folder"/>
- <menu_item_call label="新規スクリプト" name="New Script"/>
- <menu_item_call label="新しいノートカード" name="New Note"/>
- <menu_item_call label="新規ジェスチャー" name="New Gesture"/>
- <menu label="新しい衣類" name="New Clothes">
- <menu_item_call label="新しいシャツ" name="New Shirt"/>
- <menu_item_call label="新しいパンツ" name="New Pants"/>
- <menu_item_call label="新しい靴" name="New Shoes"/>
- <menu_item_call label="新しい靴下" name="New Socks"/>
- <menu_item_call label="新しいジャケット" name="New Jacket"/>
- <menu_item_call label="新しいスカート" name="New Skirt"/>
- <menu_item_call label="新しい手袋" name="New Gloves"/>
- <menu_item_call label="新しい下着(上)" name="New Undershirt"/>
- <menu_item_call label="新しい下着(下)" name="New Underpants"/>
- <menu_item_call label="新しいアルファ" name="New Alpha"/>
- <menu_item_call label="新しいタトゥー" name="New Tattoo"/>
- <menu_item_call label="新規の物理作用" name="New Physics"/>
- </menu>
- <menu label="新しい身体部位" name="New Body Parts">
- <menu_item_call label="新しいシェイプ(体型)" name="New Shape"/>
- <menu_item_call label="新しいスキン" name="New Skin"/>
- <menu_item_call label="新しい髪" name="New Hair"/>
- <menu_item_call label="新しい目" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml
deleted file mode 100644
index 1f425df83c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="新しい持ち物ウィンドウ" name="new_window"/>
- <menu_item_check label="名前で並べ替え" name="sort_by_name"/>
- <menu_item_check label="新しい順に並べ替え" name="sort_by_recent"/>
- <menu_item_check label="フォルダを常に名前順に並べる" name="sort_folders_by_name"/>
- <menu_item_check label="システムフォルダを上にソートする" name="sort_system_folders_to_top"/>
- <menu_item_call label="フィルターを表示" name="show_filters"/>
- <menu_item_call label="フィルターをリセット" name="reset_filters"/>
- <menu_item_call label="すべてのフォルダを閉じる" name="close_folders"/>
- <menu_item_call label="紛失物を空にする" name="empty_lostnfound"/>
- <menu_item_call label="別名でテクスチャを保存" name="Save Texture As"/>
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="オリジナルを表示" name="Find Original"/>
- <menu_item_call label="すべてのリンクを表示" name="Find All Links"/>
- <menu_item_call label="ごみ箱を空にする" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_land.xml b/indra/newview/skins/minimal/xui/ja/menu_land.xml
deleted file mode 100644
index 89c122f14f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="土地情報" name="Place Information..."/>
- <menu_item_call label="ここに座る" name="Sit Here"/>
- <menu_item_call label="この土地を購入" name="Land Buy"/>
- <menu_item_call label="入場許可を購入" name="Land Buy Pass"/>
- <menu_item_call label="制作" name="Create"/>
- <menu_item_call label="地形を編集" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_landmark.xml b/indra/newview/skins/minimal/xui/ja/menu_landmark.xml
deleted file mode 100644
index c134422955..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="SLurl をコピー" name="copy"/>
- <menu_item_call label="削除" name="delete"/>
- <menu_item_call label="ピックを作成" name="pick"/>
- <menu_item_call label="お気に入りバーに追加" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_login.xml b/indra/newview/skins/minimal/xui/ja/menu_login.xml
deleted file mode 100644
index 265f3ebcd0..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="ミー" name="File">
- <menu_item_call label="環境設定" name="Preferences..."/>
- <menu_item_call label="[APP_NAME] を終了" name="Quit"/>
- </menu>
- <menu label="ヘルプ" name="Help">
- <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
- <menu_item_call label="[APP_NAME] について" name="About Second Life"/>
- </menu>
- <menu_item_check label="デバッグメニューを表示する" name="Show Debug Menu"/>
- <menu label="デバッグ" name="Debug">
- <menu_item_call label="デバッグ設定を表示" name="Debug Settings"/>
- <menu_item_call label="UI/色の設定" name="UI/Color Settings"/>
- <menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/>
- <menu label="UI テスト" name="UI Tests"/>
- <menu_item_call label="ウィンドウのサイズを設定..." name="Set Window Size..."/>
- <menu_item_call label="利用規約を表示" name="TOS"/>
- <menu_item_call label="クリティカルメッセージを表示" name="Critical"/>
- <menu_item_call label="メディアブラウザのテスト" name="Web Browser Test"/>
- <menu_item_call label="Web コンテンツフローターのテスト" name="Web Content Floater Test"/>
- <menu_item_check label="グリッドピッカーを表示する" name="Show Grid Picker"/>
- <menu_item_call label="通知コンソールを表示する" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml b/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml
deleted file mode 100644
index 2e733ee24b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="ズーム(近)" name="Zoom Close"/>
- <menu_item_call label="ズーム(中)" name="Zoom Medium"/>
- <menu_item_call label="ズーム(遠)" name="Zoom Far"/>
- <menu_item_call label="ズーム(デフォルト)" name="Zoom Default"/>
- <menu_item_check label="地図を回転" name="Rotate Map"/>
- <menu_item_check label="中央へ自動移動" name="Auto Center"/>
- <menu_item_call label="追跡をやめる" name="Stop Tracking"/>
- <menu_item_call label="世界地図" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_navbar.xml b/indra/newview/skins/minimal/xui/ja/menu_navbar.xml
deleted file mode 100644
index 9ae2e58198..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="座標を表示" name="Show Coordinates"/>
- <menu_item_check label="区画のプロパティを表示" name="Show Parcel Properties"/>
- <menu_item_call label="ランドマーク" name="Landmark"/>
- <menu_item_call label="切り取り" name="Cut"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="すべて選択" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml
deleted file mode 100644
index c2e4a27686..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="近くの人を表示する..." name="nearby_people"/>
- <menu_item_check label="ブロックされた文字を表示" name="muted_text"/>
- <menu_item_check label="バディアイコンを表示" name="show_buddy_icons"/>
- <menu_item_check label="名前を表示" name="show_names"/>
- <menu_item_check label="アイコンと名前を表示" name="show_icons_and_names"/>
- <menu_item_call label="文字の大きさ" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml
deleted file mode 100644
index 913bae8958..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="すべて閉じる" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_object.xml b/indra/newview/skins/minimal/xui/ja/menu_object.xml
deleted file mode 100644
index 4cee8089ee..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="触る" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="触る"/>
- </menu_item_call>
- <menu_item_call label="編集" name="Edit..."/>
- <menu_item_call label="制作" name="Build"/>
- <menu_item_call label="開く" name="Open"/>
- <menu_item_call label="ここに座る" name="Object Sit"/>
- <menu_item_call label="立ち上がる" name="Object Stand Up"/>
- <menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
- <menu_item_call label="ズームイン" name="Zoom In"/>
- <context_menu label="装着" name="Put On">
- <menu_item_call label="装着" name="Wear"/>
- <menu_item_call label="追加" name="Add"/>
- <context_menu label="取り付ける" name="Object Attach"/>
- <context_menu label="HUD を取り付ける" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="管理" name="Remove">
- <menu_item_call label="嫌がらせの報告" name="Report Abuse..."/>
- <menu_item_call label="ブロック" name="Object Mute"/>
- <menu_item_call label="返却" name="Return..."/>
- </context_menu>
- <menu_item_call label="取る" name="Pie Object Take"/>
- <menu_item_call label="コピーを取る" name="Take Copy"/>
- <menu_item_call label="支払う" name="Pay..."/>
- <menu_item_call label="買う" name="Buy..."/>
- <menu_item_call label="削除" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml b/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml
deleted file mode 100644
index 8c4f328661..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="オブジェクトのプロフィール..." name="Object Profile"/>
- <menu_item_call label="ブロック..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml
deleted file mode 100644
index 2bcbe1915b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Outfit">
- <menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear"/>
- <menu_item_call label="着る - 着用中のアウトフィットに追加する" name="wear_add"/>
- <menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/>
- <menu label="衣類" name="New Clothes">
- <menu_item_call label="シャツ" name="New Shirt"/>
- <menu_item_call label="パンツ" name="New Pants"/>
- <menu_item_call label="靴" name="New Shoes"/>
- <menu_item_call label="靴下" name="New Socks"/>
- <menu_item_call label="ジャケット" name="New Jacket"/>
- <menu_item_call label="スカート" name="New Skirt"/>
- <menu_item_call label="手袋" name="New Gloves"/>
- <menu_item_call label="下着(上)" name="New Undershirt"/>
- <menu_item_call label="下着(下)" name="New Underpants"/>
- <menu_item_call label="アルファ" name="New Alpha"/>
- <menu_item_call label="新規の物理作用" name="New Physics"/>
- <menu_item_call label="新しいタトゥ" name="New Tattoo"/>
- </menu>
- <menu label="新しい身体部位" name="New Body Parts">
- <menu_item_call label="新しいシェイプ" name="New Shape"/>
- <menu_item_call label="スキン" name="New Skin"/>
- <menu_item_call label="髪" name="New Hair"/>
- <menu_item_call label="目" name="New Eyes"/>
- </menu>
- <menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
- <menu_item_call label="アウトフィットを削除する" name="delete_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml
deleted file mode 100644
index 9491c22f31..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear_replace"/>
- <menu_item_call label="着る - 着用中のアウトフィットに追加する" name="wear_add"/>
- <menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/>
- <menu_item_call label="アウトフィットの編集" name="edit"/>
- <menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
- <menu_item_call label="アウトフィットを削除する" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml b/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml
deleted file mode 100644
index 64d8ded722..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="名前で並べ替え" name="SortByName"/>
- <menu_item_check label="最近の発言者で並べ替え" name="SortByRecentSpeakers"/>
- <menu_item_call label="プロフィールの表示" name="View Profile"/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="支払う" name="Pay"/>
- <menu_item_check label="人のアイコン表示" name="View Icons"/>
- <menu_item_check label="ボイスをブロック" name="Block/Unblock"/>
- <menu_item_check label="文字をブロック" name="MuteText"/>
- <context_menu label="モデレーターのオプション" name="Moderator Options">
- <menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
- <menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="この参加者のミュートを解除する" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="全員をミュート" name="ModerateVoiceMute"/>
- <menu_item_call label="全員のミュート解除" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml
deleted file mode 100644
index 76340e4d76..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="名前で並べ替え" name="sort_name"/>
- <menu_item_check label="オンライン状態で並べ替え" name="sort_status"/>
- <menu_item_check label="人のアイコン表示" name="view_icons"/>
- <menu_item_check label="与えられた権限を表示" name="view_permissions"/>
- <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml b/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml
deleted file mode 100644
index 842d79dc4b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="情報を表示" name="View Info"/>
- <menu_item_call label="チャット" name="Chat"/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="アクティブ" name="Activate"/>
- <menu_item_call label="脱退" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml
deleted file mode 100644
index bfc7d15017..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="グループアイコンを表示" name="Display Group Icons"/>
- <menu_item_call label="選択したグループから脱退" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml
deleted file mode 100644
index 8d84b0e521..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="プロフィールの表示" name="View Profile"/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="フレンドを削除" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="地図" name="Map"/>
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="支払う" name="Pay"/>
- <menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
- <menu_item_call label="テレポートを送る" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 3f20e5d3ab..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="フレンド登録" name="Add Friends"/>
- <menu_item_call label="フレンドを削除" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="支払う" name="Pay"/>
- <menu_item_call label="テレポートを送る" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml
deleted file mode 100644
index a31480158a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="最近の発言者で並べ替え" name="sort_by_recent_speakers"/>
- <menu_item_check label="名前で並べ替え" name="sort_name"/>
- <menu_item_check label="距離で並べ替え" name="sort_distance"/>
- <menu_item_check label="人のアイコン表示" name="view_icons"/>
- <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml
deleted file mode 100644
index b4f177a068..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="新しい順に並べ替え" name="sort_most"/>
- <menu_item_check label="名前で並べ替え" name="sort_name"/>
- <menu_item_check label="人のアイコン表示" name="view_icons"/>
- <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_picks.xml b/indra/newview/skins/minimal/xui/ja/menu_picks.xml
deleted file mode 100644
index 011d3d2526..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="情報" name="pick_info"/>
- <menu_item_call label="編集" name="pick_edit"/>
- <menu_item_call label="テレポート" name="pick_teleport"/>
- <menu_item_call label="地図" name="pick_map"/>
- <menu_item_call label="削除" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml
deleted file mode 100644
index 84bf90fea0..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="新しいピック" name="create_pick"/>
- <menu_item_call label="新しいクラシファイド広告" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_place.xml b/indra/newview/skins/minimal/xui/ja/menu_place.xml
deleted file mode 100644
index a9f05e126d..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="ランドマークを作成" name="landmark"/>
- <menu_item_call label="ピックを作成" name="pick"/>
- <menu_item_call label="入場許可を購入" name="pass"/>
- <menu_item_call label="編集" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml
deleted file mode 100644
index d5ce88b055..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="フォルダを追加" name="add_folder"/>
- <menu_item_call label="ランドマークを追加" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml
deleted file mode 100644
index e64f97fda5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
- <menu_item_call label="ランドマークを追加" name="add_landmark"/>
- <menu_item_call label="フォルダを追加" name="add_folder"/>
- <menu_item_call label="商品を復元" name="restore_item"/>
- <menu_item_call label="切り取り" name="cut"/>
- <menu_item_call label="コピー" name="copy_folder"/>
- <menu_item_call label="貼り付け" name="paste"/>
- <menu_item_call label="名前の変更" name="rename"/>
- <menu_item_call label="削除" name="delete"/>
- <menu_item_call label="拡大" name="expand"/>
- <menu_item_call label="戻す" name="collapse"/>
- <menu_item_call label="フォルダをすべて開く" name="expand_all"/>
- <menu_item_call label="フォルダをすべて閉じる" name="collapse_all"/>
- <menu_item_check label="日付で並べ替え" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml
deleted file mode 100644
index f416b5b1f6..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
- <menu_item_call label="テレポート" name="teleport"/>
- <menu_item_call label="もっと詳しく" name="more_info"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="ランドマークを追加" name="add_landmark"/>
- <menu_item_call label="フォルダを追加" name="add_folder"/>
- <menu_item_call label="商品を復元" name="restore_item"/>
- <menu_item_call label="切り取り" name="cut"/>
- <menu_item_call label="ランドマークをコピー" name="copy_landmark"/>
- <menu_item_call label="SLurl をコピー" name="copy_slurl"/>
- <menu_item_call label="貼り付け" name="paste"/>
- <menu_item_call label="名前の変更" name="rename"/>
- <menu_item_call label="削除" name="delete"/>
- <menu_item_call label="フォルダをすべて開く" name="expand_all"/>
- <menu_item_call label="フォルダをすべて閉じる" name="collapse_all"/>
- <menu_item_check label="日付で並べ替え" name="sort_by_date"/>
- <menu_item_call label="ピックを作成" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml
deleted file mode 100644
index 9d3a5dda1c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="地図" name="show_on_map"/>
- <menu_item_call label="支払う" name="pay"/>
- <menu_item_call label="共有" name="share"/>
- <menu_item_call label="ブロック" name="block"/>
- <menu_item_call label="ブロック解除" name="unblock"/>
- <menu_item_call label="追放" name="kick"/>
- <menu_item_call label="フリーズ" name="freeze"/>
- <menu_item_call label="フリーズ解除" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml
deleted file mode 100644
index 6513d9264a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="保存" name="save_outfit"/>
- <menu_item_call label="別名で保存" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml
deleted file mode 100644
index a89dd0bcbe..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="閉じる" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_slurl.xml b/indra/newview/skins/minimal/xui/ja/menu_slurl.xml
deleted file mode 100644
index 61ba3085d9..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="URL について" name="about_url"/>
- <menu_item_call label="URL にテレポートする" name="teleport_to_url"/>
- <menu_item_call label="地図" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml
deleted file mode 100644
index 901eab9166..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="フォルダをすべて開く" name="Expand all folders"/>
- <menu_item_call label="フォルダをすべて閉じる" name="Collapse all folders"/>
- <menu_item_call label="テレポートの履歴をクリア" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml
deleted file mode 100644
index 66bc32214f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="テレポート" name="Teleport"/>
- <menu_item_call label="もっと詳しく" name="More Information"/>
- <menu_item_call label="クリップボードにコピー" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml
deleted file mode 100644
index 4dd44d2ec8..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="開く" name="TabOpen"/>
- <menu_item_call label="閉じる" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml b/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml
deleted file mode 100644
index fcb1038a6a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="切り取り" name="Cut"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="すべて選択" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml
deleted file mode 100644
index 1a67a2a8f7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="座標を表示" name="Show Coordinates"/>
- <menu_item_check label="区画のプロパティを表示" name="Show Parcel Properties"/>
- <menu_item_call label="ランドマーク" name="Landmark"/>
- <menu_item_call label="コピー" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml b/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml
deleted file mode 100644
index 92d118a5ae..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="住人のプロフィールを表示" name="show_agent"/>
- <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_group.xml b/indra/newview/skins/minimal/xui/ja/menu_url_group.xml
deleted file mode 100644
index 1dd3d79438..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="グループ情報を表示" name="show_group"/>
- <menu_item_call label="グループをクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_http.xml b/indra/newview/skins/minimal/xui/ja/menu_url_http.xml
deleted file mode 100644
index c3da8a8686..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Web ページを開く" name="url_open"/>
- <menu_item_call label="内蔵ブラウザで開く" name="url_open_internal"/>
- <menu_item_call label="外部ブラウザで開く" name="url_open_external"/>
- <menu_item_call label="URLをクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml
deleted file mode 100644
index 7af2f9e2cd..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="持ち物アイテムを表示" name="show_item"/>
- <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_map.xml b/indra/newview/skins/minimal/xui/ja/menu_url_map.xml
deleted file mode 100644
index 8d41e1a571..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="現地にテレポート" name="teleport_to_location"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml
deleted file mode 100644
index d6a048dcfc..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="オブジェクトの情報を表示" name="show_object"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
- <menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml
deleted file mode 100644
index 8d264059d3..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="区画情報を表示" name="show_parcel"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml
deleted file mode 100644
index a516c5a075..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="このコマンドを実行" name="run_slapp"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml
deleted file mode 100644
index 2c857ec915..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="場所の情報を表示" name="show_place"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="現地にテレポート" name="teleport_to_location"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml
deleted file mode 100644
index c3507a9a33..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="この場所にテレポート" name="teleport"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_viewer.xml b/indra/newview/skins/minimal/xui/ja/menu_viewer.xml
deleted file mode 100644
index 52dec2b282..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="ヘルプ" name="Help">
- <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
- </menu>
- <menu label="アドバンス" name="Advanced">
- <menu label="ショートカット" name="Shortcuts">
- <menu_item_check label="飛ぶ" name="Fly"/>
- <menu_item_call label="ウィンドウを閉じる" name="Close Window"/>
- <menu_item_call label="全てのウィンドウを閉じる" name="Close All Windows"/>
- <menu_item_call label="表示をリセットする" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml
deleted file mode 100644
index c402fa0b6d..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="交換" name="wear_replace"/>
- <menu_item_call label="装着" name="wear_wear"/>
- <menu_item_call label="追加" name="wear_add"/>
- <menu_item_call label="取り外す" name="take_off_or_detach"/>
- <menu_item_call label="取り外す" name="detach"/>
- <context_menu label="装着:" name="wearable_attach_to"/>
- <context_menu label="HUD に装着" name="wearable_attach_to_hud"/>
- <menu_item_call label="取り外す" name="take_off"/>
- <menu_item_call label="編集" name="edit"/>
- <menu_item_call label="アイテムのプロフィール" name="object_profile"/>
- <menu_item_call label="オリジナルを表示" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml
deleted file mode 100644
index 7a97538117..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="アウトフットの編集" name="edit"/>
- <menu_item_call label="取り外す" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml
deleted file mode 100644
index 9effed1f42..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="取り外す" name="take_off"/>
- <menu_item_call label="取り外す" name="detach"/>
- <menu_item_call label="アウトフットの編集" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/notifications.xml b/indra/newview/skins/minimal/xui/ja/notifications.xml
deleted file mode 100644
index 43934c9317..0000000000
--- a/indra/newview/skins/minimal/xui/ja/notifications.xml
+++ /dev/null
@@ -1,2995 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- 今後は表示しない
- </global>
- <global name="alwayschoose">
- 常にこのオプションを選択
- </global>
- <global name="implicitclosebutton">
- 閉じる
- </global>
- <template name="okbutton">
- <form>
- <button name="OK_okbutton" text="$yestext"/>
- </form>
- </template>
- <template name="okignore">
- <form>
- <button name="OK_okignore" text="$yestext"/>
- </form>
- </template>
- <template name="okcancelbuttons">
- <form>
- <button name="OK_okcancelbuttons" text="$yestext"/>
- <button name="Cancel_okcancelbuttons" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore">
- <form>
- <button name="OK_okcancelignore" text="$yestext"/>
- <button name="Cancel_okcancelignore" text="$notext"/>
- </form>
- </template>
- <template name="okhelpbuttons">
- <form>
- <button name="OK_okhelpbuttons" text="$yestext"/>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="不明の通知メッセージ" name="MissingAlert">
- あなたの [APP_NAME] のバージョンでは今受け取った通知メッセージを表示することができません。 最新ビューワがインストールされているかご確認ください。
-
-エラー詳細: 「 [_NAME] 」という通知は notifications.xml にありませんでした。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- フロータエラー:下記のコントロールが見つかりませんでした:
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- 現在利用可能なチュートリアルはありません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="はい"/>
- </notification>
- <notification name="BadInstallation">
- [APP_NAME] をアップデート中にエラーが発生しました。 ビューワの [http://get.secondlife.com 最新バージョンをダウンロード] してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- [SECOND_LIFE_GRID] に接続できませんでした。
-「[DIAGNOSTIC]」
-インターネット接続が正常かご確認ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- メッセージテンプレート [PATH] がありませんでした。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- 現在の衣類、身体部位の変更を保存しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="CompileQueueSaveText">
- 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。
-[REASON]
-後でもう一度お試しください。
- </notification>
- <notification name="CompileQueueSaveBytecode">
- 次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。
-[REASON]
-後でもう一度お試しください。
- </notification>
- <notification name="WriteAnimationFail">
- アニメーションデータの書き込みに問題があります。後でもう一度お試しください。
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。
-[REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- 一度に複数のアイテムの中身を表示できません。
-アイテムを 1 つだけ選択して、もう一度お試しください。
- </notification>
- <notification name="SaveClothingBodyChanges">
- 衣服、身体部位に対する変更をすべて保存しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/>
- </notification>
- <notification name="FriendsAndGroupsOnly">
- フレンド以外からのコールやインスタントメッセージを無視する設定にしたことを、相手に知られることはありません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FavoritesOnLogin">
- 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GrantModifyRights">
- 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。
-[NAME] に修正権限を与えますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更することができます。 この権限を与える際には十分に注意してください。
-選択した住人に修正権限を与えますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="RevokeModifyRights">
- [NAME] の修正権限を解約しますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- 選択した住人から変更権限を取り下げますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="UnableToCreateGroup">
- グループを作成できません。
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="変更を無視" yestext="変更を適用"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- グループ通知の送信には、件名の記入が必要です。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- あなたは [ROLE_NAME] の役割にメンバーを与えようとしています。
-任命されたメンバーが自ら退任しない限り、
-役柄から削除できません。
-操作を続行しますか?
- <usetemplate ignoretext="グループオーナーを新しく追加する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- あなたは [ROLE_NAME] に [ACTION_NAME] の能力を
-与えようとしています。
-
- *警告*
-この能力を持つ役割のメンバーは、
-自分と他のメンバーに現在より強力な権限を割り当て、
-自分をオーナーとほぼ同様の立場に任命することもできるようになります。
-この行為の意味をよく理解してから実行してください。
-
-この能力を [ROLE_NAME] に割り当てますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- あなたは [ROLE_NAME] に [ACTION_NAME] の能力を
-与えようとしています。
-
- *警告*
-この能力をもつ役割のメンバーは、
-自分と他のメンバーにすべての能力を割り当て、
-自分をオーナーとほぼ同様の立場に任命できます。
-
-この能力を [ROLE_NAME] に割り当てますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="AttachmentDrop">
- アタッチメントを下に置こうとしています。
-続けますか?
- <usetemplate ignoretext="アタッチメントを下に落とす前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- このグループに参加するには、L$ [COST] かかります。
-続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="参加"/>
- </notification>
- <notification name="JoinGroupNoCost">
- [NAME] というグループに入ろうとしています。
-続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="参加"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- このグループに加入するには、L$ [COST] 必要です。
-L$ が不足しているのでこのグループに参加することができません。
- </notification>
- <notification name="CreateGroupCost">
- このグループを作るには L$ 100 かかります。
-一人ではグループにならないので、永久に削除されてしまいます。
-48 時間以内にメンバーを勧誘し、入会してもらってください。
- <usetemplate canceltext="キャンセル" name="okcancelbuttons" notext="キャンセル" yestext="L$100 でグループを作成"/>
- </notification>
- <notification name="LandBuyPass">
- L$ [COST] で [TIME] 時間 [PARCEL_NAME] に入ることができます。
-入場許可を購入しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- 不特定の人に売却する場合には、
-売却価格はL$ 0 以上に設定する必要があります。
-売却価格をL$ 0 に設定する場合は、
-売却する個人を選択してください。
- </notification>
- <notification name="ConfirmLandSaleChange">
- 選択した [LAND_SIZE] 平方メートルの土地は、売り出し中に設定されています。
-売却価格 L$ [SALE_PRICE] で、[NAME] に売却を認可します。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- 注意: 「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず [SECOND_LIFE] コミュニティ全体で利用可能となります。
-
-選択した [LAND_SIZE] 平方メートルの土地は、販売対象に設定されました。
-販売価格 L$ [SALE_PRICE] で、[NAME] が販売対象者となります。
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- この区画のグループ [NAME] 共有のすべてのオブジェクトを、以前の所有者の「持ち物」に戻そうとしています。
-操作を続行しますか?
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- この区画で、
-住人 [NAME] が所有する全てのオブジェクトを
-本人の「持ち物」に本当に返却してもよいですか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- この土地区画内にある、あなたが所有するすべてのオブジェクトを、
-あなたの「持ち物」に戻そうとしています。続けますか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、
-それぞれの所有者の「持ち物」に戻そうとしています。
-操作を続行しますか?
-グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- この土地区画内にある、
-[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者の「持ち物」に返却しようとしています。
-操作を続行しますか?グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- 全てのリストされたオブジェクトを所有者に本当に返却しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- この土地の区画上のオブジェクトのうち、グループ [NAME] との間で共有していないオブジェクトを所有者に返却しますか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- スクリプトを無効にできません。
-このリージョン(地域)全体が「ダメージ有効」に設定されています。
-武器を使用するにはスクリプトの実行を許可する必要があります。
- </notification>
- <notification name="MultipleFacesSelected">
- 現在複数の面が選択されています。
-このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。
-メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。
- <usetemplate ignoretext="メディアが選択した複数の面にセットされるとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="MustBeInParcel">
- 着地点を設定するには、この区画の内側に
-立ってください。
- </notification>
- <notification name="PromptRecipientEmail">
- 受信者の有効なメールアドレスを入力してください。
- </notification>
- <notification name="PromptSelfEmail">
- あなたのメールアドレスを入力してください。
- </notification>
- <notification name="PromptMissingSubjMsg">
- デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- スナップショットデータの処理エラー
- </notification>
- <notification name="ErrorEncodingSnapshot">
- スナップショットのエンコード化でエラーが出ました!
- </notification>
- <notification name="ErrorUploadingPostcard">
- 次の理由で、スナップショットの送信時に問題が起こりました: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- 次の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました。 [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- [SECOND_LIFE] へのログインを続けるには、利用規約に同意してください。
- </notification>
- <notification name="CouldNotPutOnOutfit">
- アウトフィットを装着できません。
-アウトフィットフォルダに衣類、身体部位、アタッチメントがありません。
- </notification>
- <notification name="CannotWearTrash">
- ごみ箱にある衣類や身体部位の着用はできません。
- </notification>
- <notification name="MaxAttachmentsOnOutfit">
- オブジェクトを付けられませんでした。
-最大数の [MAX_ATTACHMENTS] 個を越えています。 どれか取り外してからお試しください。
- </notification>
- <notification name="CannotWearInfoNotComplete">
- まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。
- </notification>
- <notification name="MustHaveAccountToLogIn">
- 注意:記入漏れの箇所があります。
-アバターのユーザー名を入力してください。
-
-[SECOND_LIFE] に入るにはアカウントが必要です。今すぐアカウントを作成しますか?
- <url name="url">
- https://join.secondlife.com/index.php?lang=ja-JP
- </url>
- <usetemplate name="okcancelbuttons" notext="もう一度試す" yestext="新しいアカウントを作成"/>
- </notification>
- <notification name="InvalidCredentialFormat">
- ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。
- </notification>
- <notification name="DeleteClassified">
- クラシファイド広告 [NAME] を削除しますか?
-支払い済みの料金は返金されません。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DeleteMedia">
- この面にあるメディアを削除する選択をしました。
-続けますか?
- <usetemplate ignoretext="オブジェクトからメディアを削除する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="ClassifiedSave">
- クラシファイド広告 [NAME] への変更を保存しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="ClassifiedInsufficientFunds">
- クラシファイド広告を出すには、資金が足りません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeleteAvatarPick">
- &lt;nolink&gt;[PICK]&lt;/nolink&gt; を削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DeleteOutfits">
- 選択したアウトフィットを削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- [SECOND_LIFE] イベント Web ページに移動しますか?
- <url name="url">
- http://secondlife.com/events/?lang=ja-JP
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- 表示する提案を選択してください。
- </notification>
- <notification name="SelectHistoryItemToView">
- 表示する履歴アイテムを選択してください。
- </notification>
- <notification name="CacheWillClear">
- [APP_NAME] を再起動後にキャッシュがクリアされます。
- </notification>
- <notification name="CacheWillBeMoved">
- [APP_NAME] を再起動後にキャッシュが移動されます。
-ご注意: キャッシュがクリアされます。
- </notification>
- <notification name="ChangeConnectionPort">
- ポートの設定は [APP_NAME] を再起動後に反映されます。
- </notification>
- <notification name="ChangeSkin">
- 新しいスキンは [APP_NAME] を再起動後に表示されます。
- </notification>
- <notification name="ChangeLanguage">
- 言語の変更は [APP_NAME] を再起動後に反映されます。
- </notification>
- <notification name="GoToAuctionPage">
- [SECOND_LIFE]の Web ページに移動し、入札あるいはオークションの詳細を確認しますか?
- <url name="url">
- http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- 変更を保存しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- ジェスチャーの保存に失敗しました。
-ステップが多すぎます。
-ステップをいくつか削除してから再保存してください
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- ジェスチャーの保存に失敗しました。少し待ってからもう一度試してください。
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="GestureSaveFailedReason">
- 次の理由で、ジェスチャーの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="SaveNotecardFailReason">
- 次の理由で、ノートカードの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="ScriptCannotUndo">
- あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。
-サーバーの最新保存バージョンをロードしますか?
-(**警告**:この操作後元に戻すことはできません)
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- 次の理由で、スクリプトの保存に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。
-オブジェクトは範囲外か、または削除されているかもしれません。
- </notification>
- <notification name="SaveBytecodeFailReason">
- 次の理由で、コンパイルしたスクリプトの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="StartRegionEmpty">
- ログイン位置が指定されていません。
-ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「ホーム」を選択してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="CannotDownloadFile">
- ファイルをダウンロードできません。
- </notification>
- <notification name="CannotWriteFile">
- ファイル [[FILE]] を書き込めません。
- </notification>
- <notification name="UnsupportedHardware">
- お使いのコンピューターは [APP_NAME] の必要最低限の動作環境を満たしていません。 パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。
-
-[_URL] に移動して確認をしますか?
- <url name="url" option="0">
- http://secondlife.com/support/sysreqs.php?lang=ja
- </url>
- <usetemplate ignoretext="使用中のコンピューターのハードウェアがサポートされていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="UnknownGPU">
- お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。
-[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。
-(ミー > 環境設定 > グラフィック)
- <form name="form">
- <ignore name="ignore" text="使用中のグラフックカードが認識されないとき"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- グラフィックドライバを初期化中に [APP_NAME] がクラッシュしました。
-ドライバの一般的なエラーを防ぐために、画質が低に設定されます。 そのため、一部のグラフィック特性に制限が出ます。
-お使いのグラフィックカードのドライバをアップデートするようおすすめします。
-画質は、環境設定 > グラフィック で設定できます。
- </notification>
- <notification name="RegionNoTerraforming">
- [REGION] では、地形の変更ができません。
- </notification>
- <notification name="CannotCopyWarning">
- あなたには[ITEMS]というアイテムをコピーする許可がありません。他の住人に提供すると、そのアイテムはあなたの「持ち物」から削除されます。本当にこれらのアイテムを譲りますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CannotGiveItem">
- 持ち物のアイテムを渡せません。
- </notification>
- <notification name="TransactionCancelled">
- 取引がキャンセルされました。
- </notification>
- <notification name="TooManyItems">
- 一度に 42 個以上のアイテムは渡せません。
- </notification>
- <notification name="NoItems">
- 選択したアイテムを渡す権限がありません。
- </notification>
- <notification name="CannotCopyCountItems">
- あなたは選択した [COUNT] 個のアイテムののコピーを許されていません。
-これらのアイテムはあなたの「持ち物」から失われます。
-本当にアイテムを渡したいですか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CannotGiveCategory">
- 選択したフォルダを渡す権限がありません
- </notification>
- <notification name="FreezeAvatar">
- このアバターをフリーズしますか?
-アバターは一時的に動けなくなり、チャットを含めインワールドで何もできなくなります。
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- [AVATAR_NAME]をフリーズしますか?
-フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/>
- </notification>
- <notification name="EjectAvatarFullname">
- あなたの土地から [AVATAR_NAME] を追放しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="追放と禁止" yestext="追放"/>
- </notification>
- <notification name="EjectAvatarNoBan">
- このアバターをあなたの土地から追放しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
- </notification>
- <notification name="EjectAvatarFullnameNoBan">
- [AVATAR_NAME] をあなたの土地から追放しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
- </notification>
- <notification name="EjectAvatarFromGroup">
- [GROUP_NAME] から [AVATAR_NAME] を追放しました
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- 取得エラー:選択したオブジェクトの数が多すぎます。
- </notification>
- <notification name="AcquireErrorObjectSpan">
- 取得エラー:
-オブジェクトが複数のリージョン(地域)にまたがって存在しています。
-すべて同じリージョン内に移動させてから取得してください。
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-[_URL] に移動してリンデンドル購入に関する情報を確認しますか?
- <url name="url">
- http://secondlife.com/app/currency/?lang=ja-JP
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- [COUNT] 個のオブジェクトをリンクできません。
-リンクできるのは最大 [MAX] 個です。
- </notification>
- <notification name="CannotLinkIncompleteSet">
- セットで揃っているオブジェクトのみリンクできます。
-複数のオブジェクトを選択してください。
- </notification>
- <notification name="CannotLinkModify">
- すべてのオブジェクトの修正許可がないためリンクできません。
-
-どのオブジェクトもロックされておらず、あなたのものであることを確認してください。
- </notification>
- <notification name="CannotLinkDifferentOwners">
- 所有者が異なるため、オブジェクトをリンクできません。
-
-自分が所有しているオブジェクトだけを選択してください。
- </notification>
- <notification name="NoFileExtension">
- 「 [FILE] 」の拡張子が無効です。
-
-このファイルの拡張子が正しいかどうかを確認してください。
- </notification>
- <notification name="InvalidFileExtension">
- [EXTENSION] は無効です。
-正しい拡張子:[VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- 読み込みのためにアップロードされたサウンドファイルを開けません:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- RIFF WAVE ファイルとして認識されません:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- PCM WAVE オーディオファイルとして認識されません:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- ファイルのチャンネル数が無効です(モノラルまたはステレオを使用する必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- ファイルのサンプルレートがサポートされていません(44.1k である必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- ファイルのワードサイズがサポートされていません(8 または 16 ビットである必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- WAV ヘッダーにデータチャンクが見つかりません:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChunkSize">
- WAV ファイルのチャンクサイズが間違っています:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- オーディオファイルが長すぎます。(最大 10 秒):
-[FILE]
- </notification>
- <notification name="ProblemWithFile">
- 「 [FILE] 」に問題があります。
-
-[ERROR]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- 書き込み用の一時圧縮サウンドファイルを開くことができません:[FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- 不明の Vorbis のエンコードに失敗: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- 次のファイルのエンコードができません: [FILE]
- </notification>
- <notification name="CorruptedProtectedDataStore">
- ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CorruptResourceFile">
- 破損したリソースファイル: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- 不明のリンデンリソースファイルのバージョン: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- 出力ファイルを作成できません: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- 現在 [APP_NAME] では、アニメーションの一括アップロードはサポートされていません。
- </notification>
- <notification name="CannotUploadReason">
- 次の理由で、「 [FILE] 」をアップロードできません: [REASON]
-あとでもう一度試してください。
- </notification>
- <notification name="LandmarkCreated">
- 「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。
- </notification>
- <notification name="LandmarkAlreadyExists">
- 現在地のランドマークを既に持っています。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- 土地の所有者が許可していないため、ランドマークを作成することはできません。
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- 「リコンパイル」できません。
-スクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- 「リコンパイル」できません。
-
-修正修正権限のあるスクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- 「再設定」ができません。
-
-スクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- 「再設定」ができません。
-
-修正権限のあるスクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotOpenScriptObjectNoMod">
- 修正権限のないオブジェクトのスクリプトは開くことはできません。
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- スクリプトの「実行」ができません。
-
-スクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- スクリプトを「実行しない」設定にできません。
-
-スクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="NoFrontmostFloater">
- 保存する frontmost フロータがありません。
- </notification>
- <notification name="SeachFilteredOnShortWords">
- 指定した検索クエリは変更され、短すぎる語句は取り除かれています。
-
-検索語句: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- 指定した検索語句が短すぎたため、検索は行われませんでした。
- </notification>
- <notification name="CouldNotTeleportReason">
- テレポートに失敗しました。
-[REASON]
- </notification>
- <notification name="invalid_tport">
- テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。
- </notification>
- <notification name="invalid_region_handoff">
- リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。
- </notification>
- <notification name="blocked_tport">
- 申し訳ございません。テレポートは現在、ブロックされています。しばらくしてから再度お試しください。
-それでもテレポートできない場合は、ログアウトし、ログインし直して問題を解決してください。
- </notification>
- <notification name="nolandmark_tport">
- 申し訳ございません。ランドマークの目的地が見つかりませんでした。
- </notification>
- <notification name="timeout_tport">
- 申し訳ございません。システムによるテレポート接続が完了できませんでした。
-しばらくしてから再度お試しください。
- </notification>
- <notification name="noaccess_tport">
- 残念ながら、目的地へアクセスが許可されていないため、テレポートできません。
- </notification>
- <notification name="missing_attach_tport">
- 添付物がまだ届いていません。テレポートをする前にあと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてください。
- </notification>
- <notification name="too_many_uploads_tport">
- このリージョンのアセットキューが現在混み合っているため、テレポートのリクエストをすぐに処理することが難しい状況です。
-数分後にやり直すか、混雑していない他のリージョンでお試しください。
- </notification>
- <notification name="expired_tport">
- 申し訳ございません。システムはテレポートのリクエストを時間どおりに完了できませんでした。数分後にやり直してください。
- </notification>
- <notification name="expired_region_handoff">
- 申し訳ございません。システムはリージョン間の移動を時間どおりに完了できませんでした。
-数分後にやり直してください。
- </notification>
- <notification name="no_host">
- テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、すでに消滅している可能性があります。数分後にやり直してください。
- </notification>
- <notification name="no_inventory_host">
- 持ち物システムは現在利用できません。
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- 土地所有者設定ができません:
-区画が選定されていません。
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- 複数のリージョンが選択されたため、土地の所有権を取得できません。
-選択する面積を小さくして、もう一度お試しください。
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。
-所有権を変更しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- コンテンツ化は不可能です:
-区画が選定されていません。
- </notification>
- <notification name="CannotContentifyNoRegion">
- コンテンツ化は不可能です:
-土地が選択されていません。
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- 土地を破棄できません:
-区画が選定されていません。
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- 土地を破棄できません:
-リージョンが見つかりません。
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- 土地を購入できません:
-区画が選定されていません。
- </notification>
- <notification name="CannotBuyLandNoRegion">
- 土地を購入できません:
-この土地があるリージョンを見つけることができません
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- [APP_NAME] がこの取引価格を見積もるまでは、土地の購入ウィンドウを閉じることはできません。
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- 土地を譲渡できません:
-区画が選定されていません。
- </notification>
- <notification name="CannotDeedLandNoGroup">
- 土地を譲渡できません:
-グループが選択されていません。
- </notification>
- <notification name="CannotDeedLandNoRegion">
- 土地を譲渡できません:
-この土地があるリージョンが見つかりません。
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- 土地を譲渡できません:
-複数の区画が選択されています。
-
-区画を 1 つ選択してください。
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- 土地を譲渡できません:
-サーバーからの所有権情報を待っています。
-
-再度、試みてください。
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- 土地を譲渡できません:
-[REGION] では土地の譲渡が許されていません。
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- 土地を破棄できません:
-サーバーが区画情報を更新するのを待っています。
-
-もう少し後でやり直してください。
- </notification>
- <notification name="CannotReleaseLandSelected">
- 土地を破棄できません:
-あなたは、選択した区画のすべてを所有していません。
-
-区画を 1 つ選択してください。
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- 土地を破棄できません:
-あなたはこの土地を手放すことを許可されていません。
-あなたの区画は緑色で表示されています。
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- 土地を放棄できません:
-この土地があるリージョンが見つかりません。
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- 土地を破棄できません:
-[REGION] では土地の譲渡が許されていません。
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- 土地を破棄できません:
-区画全体を選択して破棄する必要があります。
-
-区画全体を選択するか、または、まず最初に区画を分割してください。
- </notification>
- <notification name="ReleaseLandWarning">
- あなたは、[AREA] 平方メートルの土地を破棄しようとしています。
-この区画を破棄するとあなたの土地ではなくなりますが、
-L$ は返金されません。
-
-土地を破棄しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- 土地を分割できません:
-
-区画が選定されていません。
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- 土地を分割できません:
-
-区画全体が選択されています。
-区画の一部を選択してください。
- </notification>
- <notification name="LandDivideWarning">
- この土地を分割すると、2 つの区画に別れます。
-区画ごとの設定が可能になります。 この操作を行うと、一部の設定がデフォルトにリセットされます。
-
-土地の分割操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- 土地を分割できません:
-この土地があるリージョンが見つかりません。
- </notification>
- <notification name="CannotJoinLandNoRegion">
- 土地を統合できません:
-この土地があるリージョンが見つかりません。
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- 土地を統合できませんでした:
-区画が選定されていません。
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- 土地を統合できません:
-区画が 1 つしか選択されていません。
-
-両方の区画をまたいで土地を選択してください。
- </notification>
- <notification name="CannotJoinLandSelection">
- 土地を統合できません:
-区画を 1 つ以上選択する必要があります。
-
-両方の区画をまたいで土地を選択してください。
- </notification>
- <notification name="JoinLandWarning">
- この土地を統合すると、選択された長方形に交差する全ての区画を基にして、大きな区画が 1 つ作成されます。
-新しい区画の名前とオプションを再設定する必要があります。
-
-土地を統合しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- このアイテムをコピー、表示する前に、ノートカードの保存が必要です。 保存しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- このアイテムをあなたの持ち物にコピーしますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="コピー"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- 解像度を [RESX]x[RESY] に切り替えることができませんでした。
- </notification>
- <notification name="ErrorUndefinedGrasses">
- エラー:未定義の植物:[SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- エラー:未定義の樹木:[SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- 「 [NAME] 」を衣類のファイルに保存できません。
-コンピューターのディスクスペースを少し増やしてから、もう一度保存してみてください。
- </notification>
- <notification name="CannotSaveToAssetStore">
- 「 [NAME] 」を保存できません。
-通常これは一時的なエラーです。 数分後にもう一度着用物をカスタマイズ・保存してください。
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- しまった、 [SECOND_LIFE] からログアウトされてしまいました。
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="終了" yestext="IMとチャットを表示"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- グループ用の土地の購入ができません:
-あなたにはアクティブなグループのために土地を購入する権限がありません。
- </notification>
- <notification label="フレンド登録" name="AddFriendWithMessage">
- フレンド登録すると、お互いの現在地の地図への表示許可、オンライン状態の表示設定ができます。
-
-[NAME] にフレンドシップを申し出ますか?
- <form name="form">
- <input name="message">
- フレンド登録してくれますか?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification label="アウトフィットを保存する" name="SaveOutfitAs">
- 着用中のアウトフィットを新しいアウトフットとして保存:
- <form name="form">
- <input name="message">
- [DESC] (新)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification label="着用物を保存" name="SaveWearableAs">
- アイテムを別名で持ち物に保存:
- <form name="form">
- <input name="message">
- [DESC](新規)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="アウトフィットの名前を変更する" name="RenameOutfit">
- 新しいアウトフィットの名前:
- <form name="form">
- <input name="new_name">
- [NAME]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- フレンドリストから [NAME] を削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- フレンドリストから複数のフレンドを削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのスクリプトオブジェクトをこのシム内の他のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのスクリプトオブジェクトをこのシム内のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのオブジェクト(スクリプトオブジェクトと非スクリプトオブジェクト)を
-このシム内のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- クラシファイドの名前を指定してください。
- </notification>
- <notification name="MinClassifiedPrice">
- 広告料は最低 L$ [MIN_PRICE] 必要です。
-
-金額を増やしてください。
- </notification>
- <notification name="ConfirmItemDeleteHasLinks">
- ここにリンクされたアイテムが少なくとも1つあります。 このアイテムを削除するとここにリンクされたものが機能しなくなります。 リンクを先に削除することを強くお勧めします。
-
-これらのアイテムを削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- 選択したアイテムのうち、少なくとも 1 つがロックされています。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- 選択したアイテムのうち、少なくとも 1 つがコピーできません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- 選択したアイテムのうち、少なくとも 1 つがあなたの所有物ではありません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- 少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトがコピーできません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- 少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- 少なくとも 1 つのオブジェクトがコピーできません。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- 少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトがコピーできません。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- 少なくとも 1 つのオブジェクトがロックされています。
-
-本当にこのまま取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- 取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。
-そのため、将来、修正やコピーの能力が制限される可能性があります。
-
-本当にこのまま取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- 少なくとも 1 つのオブジェクトがロックされています。
-取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。
-そのため、将来、編集やコピーの能力が制限される可能性があります。
-この選択内容のままで続行することは可能ですが、
-
-本当にこのまま取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- 複数のリージョンが選択されたため、土地を購入できません。
-
-選択する面積を小さくしてもう一度試してください。
- </notification>
- <notification name="DeedLandToGroup">
- この区画の譲渡に際しては、
-このグループが十分な土地クレジットを保有および維持している必要があります。
-土地の購入価格は、所有者に返金されません。譲渡された区画が売れると、売上金額はグループメンバーに均等に分配されます。
-
-この [AREA] 平方メートルの土地を、グループ
-「 [GROUP_NAME] 」に譲渡しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- この区画が譲渡されると、グループはその土地利用料として十分な残高を維持していく必要があります。
-譲渡には同時に [NAME] からグループへの土地の貢献が含まれます。
-土地の購入価格は所有者に返金されません。譲渡された区画が売却されると、販売価格はグループメンバーの間で均等に分配されます。
-
-この [AREA] m² の土地を [GROUP_NAME] というグループに譲渡しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- -safe オプションを指定したので、
-表示設定はセーフレベルに設定されています。
- </notification>
- <notification name="DisplaySetToRecommended">
- 表示設定は、あなたのシステム構成に基づいて推奨されたレベルに設定されています。
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarMovedDesired">
- 目的地は現在ご利用いただけません。
-近くのリージョンに移動しました。
- </notification>
- <notification name="AvatarMovedLast">
- 前回いた場所は現在ご利用いただけません。
-近くのリージョンに移動しました。
- </notification>
- <notification name="AvatarMovedHome">
- ホームロケーションは現在ご利用いただけません。
-近くのリージョンに移動しました。
-新たにホームを設定し直す必要があるかもしれません。
- </notification>
- <notification name="ClothingLoading">
- 現在衣類をダウンロード中です。
-このまま [SECOND_LIFE] を通常通りご使用いただけます。他人からはあなたは正しく表示されます。
- <form name="form">
- <ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっているとき"/>
- </form>
- </notification>
- <notification name="FirstRun">
- [APP_NAME] のインストールが完了しました。
-
-[SECOND_LIFE] を使ったことがない場合は、ログインする前にアカウントの作成を行ってください。
-[http://join.secondlife.com/?lang=ja-JP] で新しいアカウントを作成しますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="新規アカウント..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- 接続がなかなかできません。 お使いのインターネット接続か、[SECOND_LIFE_GRID] の問題と考えられます。
-
-インターネット接続を確認してから数分後に再接続するか、ヘルプをクリックして [SUPPORT_SITE] をご覧になるか、テレポートをクリックしてホームに移動してみてください。
- <url name="url">
- http://jp.secondlife.com/support/
- </url>
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="ヘルプ"/>
- <button name="Teleport" text="テレポート"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- まもなくあなたのアバターが表示されます。
-
-矢印キーを使用して歩きます。
-ヘルプが必要なときや [SECOND_LIFE] について知りたいときは、
-F1 キーを押してください。
-男性あるいは女性のアバターを選択してください。
-あなたの決定は後で変更できます。
- <usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/>
- </notification>
- <notification name="CantTeleportToGrid">
- 現在のグリッド([CURRENT_GRID])とはグリッド([GRID])が異なるため、[SLURL] にテレポートできませんでした。 ビューワを閉じてからもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GeneralCertificateError">
- サーバーに接続できませんでした。
-[REASON]
-
-サブジェクト名: [SUBJECT_NAME_STRING]
-発行元: [ISSUER_NAME_STRING]
-有効日: [VALID_FROM]
-次の更新日: [VALID_TO]
-MD5 フィンガープリント: [SHA1_DIGEST]
-SHA1 フィンガープリント: [MD5_DIGEST]
-キー使用法: [KEYUSAGE]
-拡張キー使用法: [EXTENDEDKEYUSAGE]
-サブジェクトキー認識別子: [SUBJECTKEYIDENTIFIER]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TrustCertificateError">
- このサーバーの認証機関は不明です。
-
-認証情報:
-サブジェクト名: [SUBJECT_NAME_STRING]
-発行元: [ISSUER_NAME_STRING]
-有効日: [VALID_FROM]
-次の更新日: [VALID_TO]
-MD5 フィンガープリント: [SHA1_DIGEST]
-SHA1 フィンガープリント: [MD5_DIGEST]
-キー使用法: [KEYUSAGE]
-拡張キー使用法: [EXTENDEDKEYUSAGE]
-サブジェクトキー認識別子: [SUBJECTKEYIDENTIFIER]
-
-この認証局を信頼しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="信用する"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] L$[PRICE] 残高不足のため実行不可です。
- </notification>
- <notification name="GrantedModifyRights">
- [NAME] は、あなたにオブジェクトの編集権限を与えました。
- </notification>
- <notification name="RevokedModifyRights">
- [NAME] のオブジェクトを編集する権限は取り消されました。
- </notification>
- <notification name="FlushMapVisibilityCaches">
- このリージョンの地図のキャッシュを消去します。
-デバッグ目的のみに便利な操作です。
-(作成中は 5 分間経つと、全員の地図が再度ログイン後に更新されます)
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- 一度に 1 つ以上のオブジェクトを買うことはできません。 オブジェクトを 1 つだけ選んでもう一度お試しください。
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- 一度に複数のアイテムの中身をコピーできません。
-オブジェクトを 1 つだけ選択して、もう一度お試しください。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- このリージョンにいる全ての住人をホームにテレポートしますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- [USER_NAME] が所有しているオブジェクトを返却しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- 地域テクスチャを設定できませんでした:
-地形テクスチャ[TEXTURE_NUM]は、無効のビット深度[TEXTURE_BIT_DEPTH]です。
-
-テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
- </notification>
- <notification name="InvalidTerrainSize">
- 地域テクスチャを設定できませんでした:
-地形テクスチャ「 [TEXTURE_NUM] 」は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] では大きすぎます。
-
-「 [TEXTURE_NUM] 」を 24 ビット 512x512 かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
- </notification>
- <notification name="RawUploadStarted">
- アップロードを開始しました。 接続速度によっては、最大 2 分間かかります。
- </notification>
- <notification name="ConfirmBakeTerrain">
- 現在の地形を構築しようとしています。
-この操作を行うと、現在の地形が上昇・下降の制限範囲の中心となり、「復元」ツールのデフォルトになります。
-操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- 許可住人は [MAX_AGENTS] 人までです。
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- 禁止住人は [MAX_BANNED] 人までです。
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- [NUM_ADDED] 個のエージェントを追加しようとして失敗しました: [MAX_AGENTS] [LIST_TYPE] 制限を [NUM_EXCESS] 個超過しています。
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- 許可グループは [MAX_GROUPS] グループまでです。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="構築する"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- 不動産マネージャーは [MAX_MANAGER] 人までです。
- </notification>
- <notification name="OwnerCanNotBeDenied">
- 不動産オーナーを不動産の「禁止住人」リストに追加できません。
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- 衣類およびシェイプが読み込まれるまでは、容姿の変更はできません。
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- クラシファイド広告の名前は、アルファベットか数字で始めます。句読点では始められません。
- </notification>
- <notification name="CantSetBuyObject">
- オブジェクトが販売対象ではないため、オブジェクトの購入ができません。
-販売対象のオブジェクトを指定してもう一度試してください。
- </notification>
- <notification name="FinishedRawDownload">
- 未加工の地形ファイルをダウンロードしました:
-[DOWNLOAD_PATH]
- </notification>
- <notification name="DownloadWindowsMandatory">
- [APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadWindows">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- [APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinux">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMacMandatory">
- [APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMac">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="FailedUpdateInstall">
- ビューワのアップデートをインストール中にエラーが発生しました。
-http://secondlife.com/download から最新バージョンをダウンロードしてインストールしてください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FailedRequiredUpdateInstall">
- 必要なアップデートをインストールできませんでした。
-[APP_NAME] がアップデートされるまでログインできません。
-
-http://secondlife.com/download から最新バージョンをダウンロードしてインストールしてください。
- <usetemplate name="okbutton" yestext="終了"/>
- </notification>
- <notification name="UpdaterServiceNotRunning">
- お使いの Second Life に必要なアップデートがインストールされていません。
-
-このアップデートは、http://www.secondlife.com/downloads からダウンロードして、今すぐインストールできます。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="今すぐダウンロードしてインストール"/>
- </notification>
- <notification name="DownloadBackgroundTip">
- お使いの [APP_NAME] に必要なアップデートをダウンロードしました。
-バージョン [VERSION] [[RELEASE_NOTES_FULL_URL] このアップデートに関する情報]
- <usetemplate name="okcancelbuttons" notext="後で実行" yestext="今すぐインストールして [APP_NAME] を再起動"/>
- </notification>
- <notification name="DownloadBackgroundDialog">
- お使いの [APP_NAME] に必要なアップデートをダウンロードしました。
-バージョン [VERSION] [[RELEASE_NOTES_FULL_URL] このアップデートに関する情報]
- <usetemplate name="okcancelbuttons" notext="後で実行" yestext="今すぐインストールして [APP_NAME] を再起動"/>
- </notification>
- <notification name="RequiredUpdateDownloadedVerboseDialog">
- 必要なソフトウェアのアップデートをダウンロードしました。
-バージョン [VERSION]
-
-アップデートをインストールするには [APP_NAME] を再起動する必要があります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RequiredUpdateDownloadedDialog">
- アップデートをインストールするには [APP_NAME] を再起動する必要があります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeedObjectToGroup">
- このオブジェクトを譲渡するとグループは以下のことが可能です:
-* オブジェクトに支払われた L$ を受領します。
- <usetemplate ignoretext="オブジェクトをグループに譲渡する前の確認" name="okcancelignore" notext="取り消し" yestext="譲渡"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Web ブラウザを開いてこのコンテンツを表示しますか?
- <usetemplate ignoretext="ブラウザを起動して Web ページを見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- [http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウントを管理しますか?
- <usetemplate ignoretext="ブラウザを起動してアカウントを管理するとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- [SECOND_LIFE] Wiki で、セキュリティ問題を報告する方法をご覧ください。
- <usetemplate ignoretext="ブラウザを起動してセキュリティ問題の報告の仕方を確認するとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- [SECOND_LIFE] 品質保証関連 Wiki をご覧ください。
- <usetemplate ignoretext="ブラウザを起動して QA Wiki を見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- [SECOND_LIFE] のパブリック問題トラッカーで、
-バグやその他の問題を報告できます。
- <usetemplate ignoretext="ブラウザを起動してパブリック問題トラッカーを使用するとき" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Linden 公式ブログで、最新のニュースや情報を入手してください。
- <usetemplate ignoretext="ブラウザを起動して公式ブログを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- スクリプトガイドを開きますか?
- <usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- LSL ポータルでスクリプトに関する情報を確認しますか?
- <usetemplate ignoretext="ブラウザを起動して LSL ポータルを見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
- </notification>
- <notification name="ReturnToOwner">
- 選択したオブジェクトを、所有者に返却しますか?
-「再販・プレゼント可」の譲渡されたオブジェクトは、以前の所有者に返却されます。
-
-*警告* 「再販・プレゼント不可」の譲渡されたオブジェクトは、削除されます!
- <usetemplate ignoretext="オブジェクトを所有者に返却する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- 現在あなたは [GROUP] のメンバーです。
-このグループを抜けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- 本当に住人全員をグリッドから追い出しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="住人全員を追い出す"/>
- </notification>
- <notification name="MuteLinden">
- リンデンをブロックすることはできません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- 既に売り出し中の区画なのでオークションにかけることはできません。 オークションにかけたい場合は売り出し設定を解除してから行ってください。
- </notification>
- <notification label="名前でのオブジェクトのブロックに失敗しました" name="MuteByNameFailed">
- この名前は既にブロック済みです。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- コンテンツを削除すると、許可があってもオブジェクトに損傷を与えることがあります。
-削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- 現在コーリングカードを送れません。数分後にもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- 現在フレンドシップを送れません。数分後にもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- 取り込み中モードになりました。
-チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてごみ箱に入ります。
- <usetemplate ignoretext="ログイン状態を取り込み中モードに変更するとき" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- 加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
-[NAME] があなたをグループのメンバーとして勧誘しています。
- <usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/>
- </notification>
- <notification name="JoinedTooManyGroups">
- 加入できるグループの最大限に達しました。 新しくグループに参加、または作成する前に、どれかグループから抜けてください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="KickUser">
- どのようなメッセージを添えてこの住人を追い出しますか?
- <form name="form">
- <input name="message">
- あなたは管理者によりログオフされました。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- どのようなメッセージをつけてグリッドにいる全員を追い出しますか?
- <form name="form">
- <input name="message">
- あなたは管理者によりログオフされました。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- どのようなメッセージを添えてこの住人をフリーズしますか?
- <form name="form">
- <input name="message">
- あなたはフリーズされています。 動くこともチャットすることもできません。 管理者が IM であなたに連絡します。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- どのようなメッセージを添えてこの住人のフリーズを解除しますか?
- <form name="form">
- <input name="message">
- もうフリーズされていません。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="SetDisplayNameSuccess">
- [DISPLAY_NAME] さん、
-
-現実の世界と同じく、Second Life でも新しい名前が浸透するには時間がかかります。オブジェクト、スクリプト、検索などで名前が更新されるまでに([http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update])数日かかりますのでご了承ください。
- </notification>
- <notification name="SetDisplayNameBlocked">
- 申し訳ありませんが、現在表示名は変更できません。システムのエラーだと思われる場合は、サポートにお問い合わせください。
- </notification>
- <notification name="SetDisplayNameFailedLength">
- 申し訳ありませんが、その名前は長すぎます。表示名は最長 [LENGTH] 文字までです。
-
-もう少し短い名前をお試しください。
- </notification>
- <notification name="SetDisplayNameFailedGeneric">
- 申し訳ありませんが、表示名を設定できませんでした。あとでもう一度お試しください。
- </notification>
- <notification name="SetDisplayNameMismatch">
- 入力した表示名が一致しません。もう一度入力してください。
- </notification>
- <notification name="AgentDisplayNameUpdateThresholdExceeded">
- しばらくは表示名を変更できません。
-
-http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してください。
-
-あとでもう一度お試しください。
- </notification>
- <notification name="AgentDisplayNameSetBlocked">
- 申し訳ありませんが、リクエストされた名前は禁句を含むために設定できませんでした。
-
-別の名前をお試しください。
- </notification>
- <notification name="AgentDisplayNameSetInvalidUnicode">
- 設定しようとする表示名には使えない文字が含まれます。
- </notification>
- <notification name="AgentDisplayNameSetOnlyPunctuation">
- 表示名には句読点以外の文字を含む必要があります。
- </notification>
- <notification name="DisplayNameUpdate">
- [OLD_NAME] ([SLID]) は [NEW_NAME] に変更されました。
- </notification>
- <notification name="OfferTeleport">
- 次のメッセージを添えて現在地にテレポートを送りますか?
- <form name="form">
- <input name="message">
- [REGION] に来ませんか?
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- 現在地に住人をゴッドサモンしますか?
- <form name="form">
- <input name="message">
- [REGION] に来ませんか?
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- このまま &lt;nolink&gt;[LOCATION]&lt;/nolink&gt; にテレポートしますか?
- <usetemplate ignoretext="ランドマークにテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification name="TeleportToPick">
- [PICK] にテレポートしますか?
- <usetemplate ignoretext="ピックの場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification name="TeleportToClassified">
- [CLASSIFIED] にテレポートしますか?
- <usetemplate ignoretext="クラシファイド広告の場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification name="TeleportToHistoryEntry">
- [HISTORY_ENTRY] にテレポートしますか?
- <usetemplate ignoretext="履歴の場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification label="あなたの不動産内の全員にメッセージを送信" name="MessageEstate">
- 今あなたの不動産にいる人全員に送る、短いメッセージを入力してください。
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="Lindenの不動産を変更" name="ChangeLindenEstate">
- リンデンが所有するエステート(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
-
-住人の体験に根本的に影響を与えるため、非常に危険な行為です。 メインランドでは、何千というリージョンが変更による影響を受け、そのためスペースサーバーに負担をかけることになります。
-
-それでも続けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess">
- あなたはリンデン所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。
-
-この行為は「危険」であり、グリッドからオブジェクトやお金の転送をもたらすハッキングを引き起こす可能性があるため、完全にそれを意図した場合のみ行うべきものです。
-これにより多数のリージョン(地域)が変更され、スペースサーバーに悪影響が生じます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedAgentAdd">
- この不動産限定の許可リストに追加しますか? それとも [ALL_ESTATES] の許可リストに追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedAgentRemove">
- この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedGroupAdd">
- この不動産限定のグループ許可リストに追加しますか? それとも [ALL_ESTATES] のグループ許可リストに追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedGroupRemove">
- この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateBannedAgentAdd">
- この不動産限定でアクセスを拒否しますか? それとも [ALL_ESTATE] へのアクセスを拒否しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateBannedAgentRemove">
- この住人が、この不動産限定、または [ALL_ESTATES] にアクセスできるように、禁止リストから削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateManagerAdd">
- この不動産限定、または [ALL_ESTATES] の不動産マネージャーを追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateManagerRemove">
- 不動産マネージャーを、この不動産限定、または [ALL_ESTATES] から、削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="キックを確認" name="EstateKickUser">
- この不動産から [EVIL_USER] を追い出しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- 不動産約款を変更しようとしています。続けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、リージョンに入ることができないとき" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- レーティング区分に関する設定により、その地域(リージョン)には立ち入れません。
-
-その地域に入るには、あなたのレーティング区分の設定を変更してください。変更すると、[REGIONMATURITY]のコンテンツの検索やアクセスが可能になります。変更内容を元に戻すには、ミー &gt; 環境設定 &gt; 一般を選択してください。
- <form name="form">
- <button name="OK" text="環境設定の変更"/>
- <button default="true" name="Cancel" text="閉じる"/>
- <ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入れないとき"/>
- </form>
- </notification>
- <notification name="PreferredMaturityChanged">
- あなたのレーティング区分設定は現在 [RATING] です。
- </notification>
- <notification name="LandClaimAccessBlocked">
- あなたのレーティング区分により、この土地を取得することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- あなたのレーティング区分により、この土地を取得することはできません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、この土地を取得できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- あなたのレーティング区分により、この土地を取得することはできません。
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- あなたのレーティング区分設定により、この土地を取得することはできません。
-
-「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
- <usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- あなたのレーティング区分により、この土地を購入することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- あなたのレーティング区分により、この土地を購入することはできません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、この土地を購入できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- あなたのレーティング区分により、この土地を購入することはできません。
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- あなたのレーティング区分設定により、この土地を購入することができません。
-
-「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
- <usetemplate ignoretext="選択したレーティング区分が原因で、土地を購入できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- 選択したプリムが多すぎます。 [MAX_PRIM_COUNT] 個選択するか、プリム数を減らしてもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- 不動産約款のインポート時に問題が発生しました。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- 新しい不動産マネージャーの追加に関する問題:
-いずれかの不動産のマネージャーリストが満杯になっています。
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- 不動産リストの追加に関する問題:
-いずれかの不動産のリストが満杯になっています。
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- 現在ノートカードのアセット ID を読み込むことができません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NotAllowedToViewNotecard">
- 要求したアセット ID に関するノートカードを閲覧するには、権限が不十分です。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- ノートカード用のアセット ID がデータベースに登録されていません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- 注意:クラシファイド広告の料金は払い戻しされません。
-
-L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- この広告に「Moderate」コンテンツは含まれていますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="SetGroupMature">
- このグループに「Moderate」コンテンツが含まれていますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification label="再起動を確認" name="ConfirmRestart">
- このリージョンを 2 分後に再起動しようとしています。
-続けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="このリージョンにメッセージを送信" name="MessageRegion">
- このリージョンにいる人全員に送る短いメッセージを入力してください。
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange">
- このリージョン(地域)のレーティング区分がアップデートされました。
-地図に変更が反映されるまで数分かかることがあります。
-
-Adult 専用リージョンに入るには、住人のアカウントが年齢確認か支払方法のいずれかで「確認済み」でなければなりません。
- </notification>
- <notification label="ボイスバージョンの不一致" name="VoiceVersionMismatch">
- [APP_NAME] のこのバージョンは、このリージョンにおけるボイスチャットの互換性がありません。 ボイスチャットを正常に行うためには、[APP_NAME] のアップデートが必要です。
- </notification>
- <notification label="オブジェクトを購入できません" name="BuyObjectOneOwner">
- 複数の所有者から同時にオブジェクトを購入することはできません。
-単一のオブジェクトを選択し、もう一度試してください。
- </notification>
- <notification label="コンテンツを購入できません" name="BuyContentsOneOnly">
- 一度に複数のオブジェクトのコンテンツは購入できません。
-選択するオブジェクトを1つだけにして、もう一度試してください。
- </notification>
- <notification label="コンテンツを購入できません" name="BuyContentsOneOwner">
- 複数の所有者から同時にオブジェクトを購入することはできません。
-単一のオブジェクトを選択し、もう一度試してください。
- </notification>
- <notification name="BuyOriginal">
- オリジナルのオブジェクトを [OWNER] から L$ [PRICE] で購入しますか?
-購入すると、あなたがオブジェクトの所有者となります。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- L$ [PRICE] でオリジナルのオブジェクトを購入しますか?
-購入すると、あなたがオブジェクトの所有者となります。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- コピーを [OWNER] から L$ [PRICE] で購入しますか?
-購入したオブジェクトは、あなたの「持ち物」にコピーされます。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- L$ [PRICE] でコピーを購入しますか?
-購入したオブジェクトは、あなたの「持ち物」にコピーされます。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- 中身を [OWNER] から L$ [PRICE] で購入しますか?
-購入した中身は、あなたの「持ち物」にコピーされます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- L$ [PRICE] で中身を購入しますか?
-購入した中身は、あなたの「持ち物」にコピーされます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- この取引は以下のとおり行われます:
-[ACTION]
-
-購入を続けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- この取引は以下のとおり行われます:
-[ACTION]
-
-購入を続けますか?
-パスワードを再入力し、「 OK 」をクリックしてください。
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- メモ:
-本ピックの位置を更新しましたが、
-他の詳細は元の値のままになります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- 「コピー不可」の持ち物アイテムを選択しました。
-これらのアイテムはコピーされないまま、あなたの「持ち物」に移動されます。
-
-
-アイテムを動かしますか?
- <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- 「コピー不可」の持ち物アイテムを選択しました。
-これらのアイテムはコピーされずに、あなたの「持ち物」に移動されます。
-このオブジェクトはスクリプト付きなので、「持ち物」に移動させると
-スクリプトに誤動作が起きる可能性があります。
-
-持ち物アイテムを移動しますか?
- <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- 警告: クリックで「オブジェクトに支払う」設定をしました。スクリプトに money()イベントが追加されると動作します。
- <form name="form">
- <ignore name="ignore" text="オブジェクトを作成中に、money() スクリプトを入れずに「オブジェクトに支払う」アクションを設定したとき"/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- このオブジェクトには、あなたがコピーできるアイテムはありません。
- </notification>
- <notification name="WebLaunchAccountHistory">
- [http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウント履歴を確認しますか?
- <usetemplate ignoretext="ブラウザを起動してアカウント履歴を見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
- </notification>
- <notification name="ConfirmQuit">
- 終了しようとしています。続けますか?
- <usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
- </notification>
- <notification name="DeleteItems">
- [QUESTION]
- <usetemplate ignoretext="アイテムを削除する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- このツールを利用して [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] の違反を報告してください。
-
-報告された嫌がらせはすべて調査・解決されます。
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- 嫌がらせ報告のカテゴリを選択してください。
-カテゴリを選択することにより、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- 嫌がらせ行為をした人の名前を入力してください。
-正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- 嫌がらせがあった場所を入力してください。
-正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- 嫌がらせの概要を入力してください。
-正確な概要の入力により、
-嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- 嫌がらせの詳細な説明を入力してください。
-名前や嫌がらせの詳細を、できるだけ具体的に入力してください。
-
-正確な説明の入力により、
-嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- こんにちは、
-
-知的財産権の侵害を報告しようとしています。 正確に報告するために、以下をご確認ください:
-
-(1) 嫌がらせの報告の手順 住人が [SECOND_LIFE] の権限システムを悪用しているのを見つけたら、嫌がらせの報告をすることができます。例えば、CopyBot や似たようなコピーツールを使用して知的財産権を侵害している場合です。 担当チームは調査を行い、[SECOND_LIFE] [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] に違反する行為に対する適切な処罰を下します。 ただし、担当チームは [SECOND_LIFE] の世界からコンテンツを削除して欲しいというリクエストには応じません。
-
-(2) DMCA またはコンテンツの撤去の手順 コンテンツを [SECOND_LIFE] から削除して欲しいというリクエストをするには、弊社 [http://secondlife.com/corporate/dmca.php DMCA ポリシー] で提示されているとおり、有効な侵害の通知を提出しなければなりません。.
-
-このまま嫌がらせの報告を続けたい場合は、このウィンドウを閉じて報告を送ってください。 「コピー Bot 及び権限の悪用」のカテゴリを選んだ方が適切の場合があります。
-
-ご協力ありがとうございます。
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- 以下の必要なコンポーネントが、[FLOATER] から抜け落ちています
-[COMPONENTS]
- </notification>
- <notification label="既存の付属品を置換" name="ReplaceAttachment">
- 体のこの部位には既にオブジェクトが装着されています。
-選択されたオブジェクトと置き換えますか?
- <form name="form">
- <ignore name="ignore" save_option="true" text="装着しているアイテムと選択したアイテムを入れ替えるとき"/>
- <button ignore="自動的に交換" name="Yes" text="OK"/>
- <button ignore="交換しない" name="No" text="キャンセル"/>
- </form>
- </notification>
- <notification label="取り込み中の警告" name="BusyModePay">
- 現在、「取り込み中」モードのため、支払いと引き換えにアイテムを受け取ることができません。
-
-この取引を行うために「取り込み中」の設定を解除しますか?
- <form name="form">
- <ignore name="ignore" save_option="true" text="取り込み中モード時に支払をするとき"/>
- <button ignore="常に「取り込み中」の設定を解除" name="Yes" text="OK"/>
- <button ignore="常に「取り込み中」の設定を継続" name="No" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ConfirmDeleteProtectedCategory">
- 「 [FOLDERNAME] 」 は、システムフォルダです。 システムフォルダを削除すると不安定になることがあります。 続けますか?
- <usetemplate ignoretext="システムフォルダを削除する前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmEmptyTrash">
- ごみ箱の中身をすべて削除しますか?
- <usetemplate ignoretext="持ち物のごみ箱フォルダを空にする前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- トラベル、Web、検索の履歴をすべて削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearCookies">
- 本当にクッキーをクリアしますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- 保存された URL のリストを消去します。よろしいですか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- 紛失物の中身をすべて削除しますか?
- <usetemplate ignoretext="紛失物フォルダを空にする前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CopySLURL">
- 次の SLurl がクリップボードにコピーされました:
- [SLURL]
-
-Web ページにリンクすると、他人がこの場所に簡単にアクセスできます。Web ブラウザのアドレスバーに貼り付けて試してみてください。
- <form name="form">
- <ignore name="ignore" text="クリップボードに SLurl をコピーするとき"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- 保存された事前設定を上書きしますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- 「 [SKY] 」を削除しますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="WLNoEditDefault">
- デフォルトの設定を編集したり削除したりすることはできません。
- </notification>
- <notification name="WLMissingSky">
- このデイサイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。
- </notification>
- <notification name="PPSaveEffectAlert">
- ポストプロセス効果が存在します。 上書きしますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="NewSkyPreset">
- 新しい空の名前を指定してください。
- <form name="form">
- <input name="message">
- 新しい事前設定
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- 事前設定がすでに存在します!
- </notification>
- <notification name="NewWaterPreset">
- 新しい水の事前設定の名前を指定してください。
- <form name="form">
- <input name="message">
- 新しい事前設定
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- 事前設定がすでに存在します!
- </notification>
- <notification name="WaterNoEditDefault">
- デフォルトの設定を編集したり削除したりすることはできません。
- </notification>
- <notification name="ChatterBoxSessionStartError">
- [RECIPIENT] と新しいチャットを開始することができません。
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- [NAME] とのチャットセッションを閉じます。
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- オブジェクトが取り付けられているままでは購入できません。
- </notification>
- <notification label="引き出し許可のリクエストについて" name="DebitPermissionDetails">
- このリクエストを許可すると、スクリプトであなたのアカウントからリンデンドルを引き出せるようになります。
-この許可を取り消すには、オブジェクトの所有者がオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- 作成する衣類を自動的に装着しますか?
- <usetemplate ignoretext="「容姿」を編集中に、作成する衣類を装着するとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="NotAgeVerified">
- 年齢確認を済ませていないとこの区画を訪れることができません。 [SECOND_LIFE] サイトで年齢の確認を行いますか?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php?lang=ja
- </url>
- <usetemplate ignoretext="年齢の確認を済ませていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- 支払情報が登録されていないとこのエリアを訪れることができません。 [SECOND_LIFE] サイトで登録を行いますか?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/index.php?lang=ja
- </url>
- <usetemplate ignoretext="支払情報が登録されていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="MissingString">
- 文字列 [STRING_NAME] が strings.xml に含まれていません。
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="IMSystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- 取り消されました。
- </notification>
- <notification name="CancelledSit">
- 座るのをやめました。
- </notification>
- <notification name="CancelledAttach">
- 添付が取り消されました。
- </notification>
- <notification name="ReplacedMissingWearable">
- 欠落している衣類や身体部位をデフォルトに置き換えます。
- </notification>
- <notification name="GroupNotice">
- 件名: [SUBJECT]、メッセージ: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [NAME] はオンライン中です
- </notification>
- <notification name="FriendOffline">
- [NAME] はオフライン中です
- </notification>
- <notification name="AddSelfFriend">
- 残念ながら自分自身をフレンド登録することはできません。
- </notification>
- <notification name="UploadingAuctionSnapshot">
- インワールドと Web サイトのスナップショットをアップロード中です...
-(所要時間:約 5 分)
- </notification>
- <notification name="UploadPayment">
- アップロードに L$ [AMOUNT] 支払いました。
- </notification>
- <notification name="UploadWebSnapshotDone">
- Web サイトのスナップショットがアップロードされました。
- </notification>
- <notification name="UploadSnapshotDone">
- インワールドでのスナップショットのアップロードが完了しました。
- </notification>
- <notification name="TerrainDownloaded">
- raw 地形がダウンロードされました
- </notification>
- <notification name="GestureMissing">
- ジェスチャーの [NAME] がデータベースに見つかりません。
- </notification>
- <notification name="UnableToLoadGesture">
- [NAME] というジェスチャーを読み込むことができませんでした。
- </notification>
- <notification name="LandmarkMissing">
- データベースにランドマークがありません。
- </notification>
- <notification name="UnableToLoadLandmark">
- ランドマークを読み込めません。 もう一度お試しください。
- </notification>
- <notification name="CapsKeyOn">
- CapsLock キーが有効になっています。
-パスワードに影響するかもしれません。
- </notification>
- <notification name="NotecardMissing">
- ノートカードがデータベースにありません。
- </notification>
- <notification name="NotecardNoPermissions">
- このノートカードを見る権限がありません。
- </notification>
- <notification name="RezItemNoPermissions">
- オブジェクトを Rez するには権限が不足しています。
- </notification>
- <notification name="UnableToLoadNotecard">
- ノートカードを読み込めません。あとで再度お試しください。
- </notification>
- <notification name="ScriptMissing">
- データベースにスクリプトがありません。
- </notification>
- <notification name="ScriptNoPermissions">
- スクリプトを閲覧するには権限が不十分です。
- </notification>
- <notification name="UnableToLoadScript">
- スクリプトをロードできません。 もう一度試してください。
- </notification>
- <notification name="IncompleteInventory">
- あなたの提供するコンテンツは、ローカルではまだ全部揃っていません。
-しばらくしてからもう一度お試しください。
- </notification>
- <notification name="CannotModifyProtectedCategories">
- 保護されたカテゴリは修正できません。
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- 保護されたカテゴリは削除できません。
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- オブジェクトデータのダウンロード中は購入できません。
-もう一度お試しください。
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- オブジェクトデータのウンロード中はリンクできません。
-もう一度お試しください。
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- オブジェクトは一度に一人の所有者から購入できます。
-オブジェクトを 1 つだけ選んでください。
- </notification>
- <notification name="ObjectNotForSale">
- このオブジェクトは販売対象ではありません。
- </notification>
- <notification name="EnteringGodMode">
- レベル [LEVEL] のゴッドモードに入ります
- </notification>
- <notification name="LeavingGodMode">
- レベル [LEVEL] のゴッドモードを解除します
- </notification>
- <notification name="CopyFailed">
- これをコピーする権限がありません。
- </notification>
- <notification name="InventoryAccepted">
- [NAME] は、あなたが渡したアイテムを受け取りました。
- </notification>
- <notification name="InventoryDeclined">
- [NAME] は、持ち物の提供を断りました。
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- コーリングカードが受理されました。
- </notification>
- <notification name="CallingCardDeclined">
- コーリングカードが拒否されました。
- </notification>
- <notification name="TeleportToLandmark">
- 画面右の「場所」パネルを開いて、「ランドマーク」タブを選ぶと、[NAME] といった場所にテレポートできます。
-好きなランドマークをクリックして選び、次にパネル下の「テレポート」をクリックします。
-(ランドマークをダブルクリック、または右クリックして「テレポート」を選んでも同じです。)
- </notification>
- <notification name="TeleportToPerson">
- 画面右の「人」パネルを開いて、[NAME] といった住人に連絡を取ることができます。
-リストから住人を選択して、パネル下の「IM」をクリックします。
-(リストの名前をダブルクリック、または右クリックして「IM」を選んでも同じです。)
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- サーバーの境界を越えて土地を選択することできません。
-もっと小さな土地を選択してください。
- </notification>
- <notification name="SearchWordBanned">
- コミュニティスタンダードに明記されているコンテンツ制限により、あなたの検索語の一部が除外されました。
- </notification>
- <notification name="NoContentToSearch">
- 少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(General、Moderate、Adult)
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="PaymentReceived">
- [MESSAGE]
- </notification>
- <notification name="PaymentSent">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- イベント通知:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="詳細"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- この区画の購入者に受け渡されるオブジェクトは、すべて区画上で強調表示されています。
-
-
-*受け渡される樹木や植物は、強調表示されていません。
- <form name="form">
- <button name="Done" text="完了"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- 同じトリガーでアクティブにしないジェスチャー:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Apple の QuickTime ソフトウェアがお使いのシステムにインストールされていないようです。
-ストリーミングメディアをサポートする区画で見たい場合は、[http://www.apple.com/jp/quicktime QuickTime サイト] から QuickTime プレイヤーをインストールしてください。
- </notification>
- <notification name="NoPlugin">
- 「 [MIME_TYPE] 」の MIME タイプを扱うメディアプラグインが見つかりませんでした。 このタイプのメディアはご利用いただけません。
- </notification>
- <notification name="MediaPluginFailed">
- 次のメディアプラグインが実行できませんでした:
- [PLUGIN]
-
-プラグインをインストールしなおすか、問題が解決しない場合はメーカーにお問い合わせください。
- <form name="form">
- <ignore name="ignore" text="メディアプラグインの実行に失敗したとき"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- 選択した土地の区画上にあったあなたのオブジェクトは、すべてあなたの「持ち物」に返却されました。
- </notification>
- <notification name="OtherObjectsReturned">
- [NAME] が所有する、選択した区画にあるオブジェクトは、所有者の持ち物に返却されました。
- </notification>
- <notification name="OtherObjectsReturned2">
- 「 [NAME] 」という名前の住人が所有する、選択した区画上のオブジェクトは、本人に返却されました。
- </notification>
- <notification name="GroupObjectsReturned">
- 選択した区画上の、[GROUPNAME] というグループと共有していたオブジェクトは、それぞれの所有者の「持ち物」に返却されました。
-譲渡されていた「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されました。
-グループに譲渡されていた「再販・プレゼント不可」のオブジェクトは、削除されました。
- </notification>
- <notification name="UnOwnedObjectsReturned">
- 選択した土地の区画上の、あなたの所有物では「なかった」オブジェクトは、本来の所有者に返却されました。
- </notification>
- <notification name="ServerObjectMessage">
- [NAME] からのメッセージ:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
- </notification>
- <notification name="NotSafe">
- この土地ではダメージが有効です。
-ケガをするかもしれません。 死んでしまった場合は「ホーム」にテレポートされます。
- </notification>
- <notification name="NoFly">
- このエリアでは飛行が禁止されています。
-ここでは飛べません。
- </notification>
- <notification name="PushRestricted">
- このエリアではプッシュが禁止されています。 土地所有者以外は他人をプッシュすることはできません。
- </notification>
- <notification name="NoVoice">
- このエリアではボイスチャットが無効です。 誰かが話しているのを聞くことはできません。
- </notification>
- <notification name="NoBuild">
- このエリアでは制作が禁止されています。 オブジェクトを制作したり Rez することはできません。
- </notification>
- <notification name="ScriptsStopped">
- 管理者がこのリージョンのスクリプトを一時停止しました。
- </notification>
- <notification name="ScriptsNotRunning">
- このリージョンではスクリプトの使用が禁止されています。
- </notification>
- <notification name="NoOutsideScripts">
- この土地では、外部のスクリプトが禁止されています。
-
-土地所有者のもの以外はスクリプトが実行されません。
- </notification>
- <notification name="ClaimPublicLand">
- そのリージョンにいないと公共の土地を取得することはできません。
- </notification>
- <notification name="RegionTPAccessBlocked">
- あなたのレーティング区分によりそのリージョンへは入ることができません。 年齢確認を行うか、最新ビューワをインストールしてください。
-
-現在のレーティング区分でアクセス可能なエリアに関する詳細はナレッジベースを参照してください。
- </notification>
- <notification name="URBannedFromRegion">
- あなたはリージョンへの立入が禁止されています。
- </notification>
- <notification name="NoTeenGridAccess">
- あなたのアカウントではティーングリッドに接続できません。
- </notification>
- <notification name="ImproperPaymentStatus">
- このリージョンに入るために適した支払いステータスがありません。
- </notification>
- <notification name="MustGetAgeRgion">
- このリージョンに入るためには、年齢確認を済ませる必要があります。
- </notification>
- <notification name="MustGetAgeParcel">
- この区画に入るためには、年齢確認を済ませる必要があります。
- </notification>
- <notification name="NoDestRegion">
- 目的地のリージョンが見つかりませんでした。
- </notification>
- <notification name="NotAllowedInDest">
- 目的地に入る許可がありません。
- </notification>
- <notification name="RegionParcelBan">
- 立入禁止された区画を横断することはできません。 別の方法をお試しください。
- </notification>
- <notification name="TelehubRedirect">
- テレハブに転送されました。
- </notification>
- <notification name="CouldntTPCloser">
- これ以上目的地に近い場所にテレポートができませんでした。
- </notification>
- <notification name="TPCancelled">
- テレポートがキャンセルされました。
- </notification>
- <notification name="FullRegionTryAgain">
- 入ろうとしているリージョンは現在満員です。
-しばらくしてから再度お試しください。
- </notification>
- <notification name="GeneralFailure">
- よくある失敗
- </notification>
- <notification name="RoutedWrongRegion">
- 異なるリージョンに迂回されました。 もう一度お試しください。
- </notification>
- <notification name="NoValidAgentID">
- エージェント ID が無効です。
- </notification>
- <notification name="NoValidSession">
- セッション ID が無効です。
- </notification>
- <notification name="NoValidCircuit">
- 回路コードが無効です。
- </notification>
- <notification name="NoValidTimestamp">
- タイムスタンプが無効です。
- </notification>
- <notification name="NoPendingConnection">
- 接続を生成できません。
- </notification>
- <notification name="InternalUsherError">
- 内部エラーが発生しました。
- </notification>
- <notification name="NoGoodTPDestination">
- このリージョンでは、適切なテレポート目的地が見つかりませんでした。
- </notification>
- <notification name="InternalErrorRegionResolver">
- 内部エラーが発生しました。
- </notification>
- <notification name="NoValidLanding">
- 有効な着地点が見つかりませんでした。
- </notification>
- <notification name="NoValidParcel">
- 有効な区画が見つかりませんでした。
- </notification>
- <notification name="ObjectGiveItem">
- [NAME_SLURL] が所有する &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; という名前のオブジェクトが、あなたに &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; を渡そうとしています。このアイテムを使うにはアドバンスモードへの切り替えが必要です。アドバンスモードでログインしなおすと、あなたの持ち物にこのアイテムが見つかります。アドバンスモードに切り替えるには、このアプリケーションを終了して再起動し、ログイン画面でモード設定を変更してください。
- <form name="form">
- <button name="Keep" text="アイテムを受け取る"/>
- <button name="Discard" text="アイテムを拒否する"/>
- <button name="Mute" text="オブジェクトをブロックする"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME_SLURL] は [ITEM_SLURL] を渡そうとしています。このアイテムを使うにはアドバンスモードへの切り替えが必要です。アドバンスモードでログインしなおすと、あなたの持ち物にこのアイテムが見つかります。アドバンスモードに切り替えるには、このアプリケーションを終了して再起動し、ログイン画面でモード設定を変更してください。
- <form name="form">
- <button name="Show" text="アイテムを受け取る"/>
- <button name="Discard" text="アイテムを拒否する"/>
- <button name="Mute" text="ユーザーをブロックする"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="参加"/>
- <button name="Decline" text="辞退"/>
- <button name="Info" text="情報"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME_SLURL] はテレポートであなたを呼んでいます。
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
- <form name="form">
- <button name="Teleport" text="テレポート"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="TeleportOfferSent">
- [TO_NAME] にテレポートを送りました。
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="あとで"/>
- <button name="GoNow..." text="今すぐ行く"/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME_SLURL] はフレンド登録を申し込んでいます。
-
-[MESSAGE]
-
-(デフォルト設定だとお互いのオンライン状態を見ることができます)
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="辞退"/>
- </form>
- </notification>
- <notification name="FriendshipOffered">
- [TO_NAME] にフレンド登録を申し出ました。
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME_SLURL] はフレンド登録を申し込んでいます。
-
-(デフォルト設定だとお互いのオンライン状態を見ることができます)
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- [NAME]は、フレンド登録を受け入れました。
- </notification>
- <notification name="FriendshipDeclined">
- [NAME]は、フレンド登録を断りました。
- </notification>
- <notification name="FriendshipAcceptedByMe">
- フレンドの登録依頼が承認されました。
- </notification>
- <notification name="FriendshipDeclinedByMe">
- フレンドの登録依頼が拒否されました。
- </notification>
- <notification name="OfferCallingCard">
- [NAME] がコーリングカードを渡そうとしています。
-あなたの持ち物にブックマークが追加され、この住人に素早く IM を送ることができます。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="辞退"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- このリージョンは [SECONDS] 分後に再起動されます。
-このままここにいるとログアウトされます。
- </notification>
- <notification name="RegionRestartSeconds">
- このリージョンは [SECONDS] 秒後に再起動されます。.
-このままここにいるとログアウトされます。
- </notification>
- <notification name="LoadWebPage">
- Web ページ [URL] をロードしますか?
-
-[MESSAGE]
-
-送信元のオブジェクト:&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;、所有者:[NAME]?
- <form name="form">
- <button name="Gotopage" text="ページに移動"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- データベースに [TYPE] が見つかりませんでした
- </notification>
- <notification name="FailedToFindWearable">
- データベースに [DESC] という名前の [TYPE] が見つかりませんでした。
- </notification>
- <notification name="InvalidWearable">
- 着用しようとしているアイテムはあなたのビューワでは読み込むことができません。 [APP_NAME] のバージョンをアップグレードしてからこのアイテムを着用してください。
- </notification>
- <notification name="ScriptQuestion">
- [NAME] が所有する「&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;」 というオブジェクトが、次のことをしようとしています:
-
-[QUESTIONS]
-よろしいですか?
- <form name="form">
- <button name="Yes" text="はい"/>
- <button name="No" text="いいえ"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- [NAME] が所有する「&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;」 というオブジェクトが、次のことをしようとしています:
-
-[QUESTIONS]
-このオブジェクトや制作者を信用できない場合は、このリクエストを拒否してください。
-
-リクエストを受けますか?
- <form name="form">
- <button name="Grant" text="許可"/>
- <button name="Deny" text="拒否"/>
- <button name="Details" text="詳細..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [NAME] の「&lt;nolink&gt;[TITLE]&lt;/nolink&gt;」
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="無視する"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME] の「&lt;nolink&gt;[TITLE]&lt;/nolink&gt;」
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="無視する"/>
- </form>
- </notification>
- <notification name="BuyLindenDollarSuccess">
- お支払ありがとうございます。
-
-あなたの L$ 残高は、処理が完了するとアップデートされます。 処理に 20 分以上かかった場合、お取り引きがキャンセルされることがあります。 その場合は、購入金額はあなたの US$ 残高に追加されます。
-
-[http://secondlife.com/account/ マイアカウント] の取引履歴ページで、支払状況を確認できます。
- </notification>
- <notification name="FirstOverrideKeys">
- あなたの移動キーをオブジェクトが操作しています。
-矢印か AWSD のキーで動作を確認してください。
-銃などのオブジェクトだと、一人称視点に変更する必要があります。
-M キーを押して変更します。
- </notification>
- <notification name="FirstSandbox">
- ここはサンドボックスエリアです。住人が制作を学ぶことができます。
-
-ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。
- </notification>
- <notification name="MaxListSelectMessage">
- このリストから [MAX_SELECT] 個までのアイテムを選択できます。
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] があなたをボイスチャットコールに招待しています。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [NAME] はインスタントメッセージを受け取り、自動的にブロックが解除されました。
- </notification>
- <notification name="AutoUnmuteByMoney">
- [NAME] はお金を受け取り、自動的にブロックが解除されました。
- </notification>
- <notification name="AutoUnmuteByInventory">
- [NAME] は持ち物を受け取り、自動的にブロックが解除されました。
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] は [GROUP] のボイスチャットコールに参加しました。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] は コンファレンスチャットののボイスチャットコールに参加しました。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] があなたをコンファレンスチャットに招待しています。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- あなたが参加しようとしているボイスコール [VOICE_CHANNEL_NAME] は、参加者が最大限に達しました。後でもう一度お試しください。
- </notification>
- <notification name="ProximalVoiceChannelFull">
- このエリアのボイスチャットは、混雑のため容量を超えてしまっています。申し訳ありませんが、他のエリアでボイスチャットをお試しください。
- </notification>
- <notification name="VoiceChannelDisconnected">
- [VOICE_CHANNEL_NAME] への接続が切れました。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] がコールを終了しました。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] があなたのコールを拒否しました。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] はあなたのコールを受けることができません。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="VoiceChannelJoinFailed">
- [VOICE_CHANNEL_NAME] への接続に失敗しました。あとで再度お試しください。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="VoiceLoginRetry">
- ボイスチャンネルを作成しています。1 分ほどかかります。
- </notification>
- <notification name="VoiceEffectsExpired">
- ボイスモーフィング効果の1つまたは複数の有効期限が終了しました。期限を延長・更新するには[[URL]こちらをクリック]してください。
- </notification>
- <notification name="VoiceEffectsExpiredInUse">
- ボイスモーフィング効果の有効期限が終了したため、あなたの通常のボイス設定が適用されました。期限を延長・更新するには[[URL]こちらをクリック]してください。
- </notification>
- <notification name="VoiceEffectsWillExpire">
- ボイスモーフィング効果の1つまたは複数の有効期限が[INTERVAL]日以内に終了します。期限を延長・更新するには[[URL]こちらをクリック]してください。
- </notification>
- <notification name="VoiceEffectsNew">
- 新しいボイスモーフィング効果が登場!
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- 特定のグループメンバーのみこのエリアを訪問することができます。
- </notification>
- <notification name="Cannot enter parcel: banned">
- 立入禁止されているため、区画に入ることができません。
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- アクセスリストに含まれていないため、区画に入ることができません。
- </notification>
- <notification name="VoiceNotAllowed">
- あなたには [VOICE_CHANNEL_NAME] のボイスチャットに接続する権限がありません。
- </notification>
- <notification name="VoiceCallGenericError">
- [VOICE_CHANNEL_NAME] のボイスチャットに接続中に、エラーが発生しました。後でもう一度お試しください。
- </notification>
- <notification name="UnsupportedCommandSLURL">
- クリックした SLurl はサポートされていません。
- </notification>
- <notification name="BlockedSLURL">
- 信用できないブラウザから SLurl が送られてきたので、セキュリティのためブロックされました。
- </notification>
- <notification name="ThrottledSLURL">
- 短期間のあいだに、信用できないブラウザから複数の SLurls が送られてきました。
-安全のために数秒間ブロックされます。
- </notification>
- <notification name="IMToast">
- [MESSAGE]
- <form name="form">
- <button name="respondbutton" text="返答"/>
- </form>
- </notification>
- <notification name="ConfirmCloseAll">
- すべての IM を閉じますか?
- <usetemplate ignoretext="すべての IM を閉じる前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="AttachmentSaved">
- アタッチメントが保存されました。
- </notification>
- <notification name="UnableToFindHelpTopic">
- ヘルプトピックが見つかりませんでした。
- </notification>
- <notification name="ObjectMediaFailure">
- サーバーエラー: メディアのアップデートまたは失敗。
-「[ERROR]」
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TextChatIsMutedByModerator">
- モデレーターがあなたの文字チャットをミュートしました。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="VoiceIsMutedByModerator">
- モデレーターがあなたのボイスをミュートしました。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearTeleportHistory">
- テレポート履歴を削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="BottomTrayButtonCanNotBeShown">
- 選択したボタンを現在表示することができません。
-じゅうぶんなスペースができればボタンは表示されます。
- </notification>
- <notification name="ShareNotification">
- 共有する住人を選択します。
- </notification>
- <notification name="ShareItemsConfirmation">
- 次のアイテムを共有しますか?
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-次の住人と共有しますか?
-
-[RESIDENTS]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ItemsShared">
- アイテムが共有されました。
- </notification>
- <notification name="DeedToGroupFail">
- グループへの譲渡に失敗しました。
- </notification>
- <notification name="AvatarRezNotification">
- (作成後[EXISTENCE]秒経過)
-&apos;[NAME]&apos;というアバターは[TIME]秒後に姿を現わしました。
- </notification>
- <notification name="AvatarRezSelfBakedDoneNotification">
- (作成後[EXISTENCE]秒経過)
-アウトフィットのベークは[TIME]秒後に完了しました。
- </notification>
- <notification name="AvatarRezSelfBakedUpdateNotification">
- (作成後[EXISTENCE]秒経過)
-容姿の更新は[TIME]秒後に送信されました。
-[STATUS]
- </notification>
- <notification name="AvatarRezCloudNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」がクラウドになりました。
- </notification>
- <notification name="AvatarRezArrivedNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」が現れました。
- </notification>
- <notification name="AvatarRezLeftCloudNotification">
- ( [EXISTENCE] 秒)
-アバター「 [NAME] 」が [TIME] 秒でクラウド状態から出現します。
- </notification>
- <notification name="AvatarRezEnteredAppearanceNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」が容姿編集モードに入りました。
- </notification>
- <notification name="AvatarRezLeftAppearanceNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」が容姿編集モードを解除しました。
- </notification>
- <notification name="NoConnect">
- [PROTOCOL] [HOSTID]を使って接続できません。
-お使いのネットワークやファイアウォールの設定を確認してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NoVoiceConnect">
- ボイスサーバーに接続できません:
-
-[HOSTID]
-
-ボイスチャットによるコミュニケーションが利用できません。
-お使いのネットワークやファイアウォールの設定を確認してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarRezLeftNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」が完全に読み込まれました。
- </notification>
- <notification name="AvatarRezSelfBakedTextureUploadNotification">
- ( 作成後[EXISTENCE]秒経過)
-&apos;[BODYREGION]&apos;の[RESOLUTION]のベークドテクスチャは[TIME]秒後にアップロードされました。
- </notification>
- <notification name="AvatarRezSelfBakedTextureUpdateNotification">
- ( 作成後[EXISTENCE]秒経過)
-&apos;[BODYREGION]&apos;の[RESOLUTION]のベークドテクスチャは[TIME]秒後にローカルに更新されました。
- </notification>
- <notification name="ConfirmLeaveCall">
- このコールから抜けますか?
- <usetemplate ignoretext="コールから抜ける前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="ConfirmMuteAll">
- グループコールの参加者全員をミュートしました。
-あとからこのコールに参加する住人も
-ミュートされます。あなたがコールを終了しても他の参加者のミュート状態が続きます。
-
-全員をミュートしますか?
- <usetemplate ignoretext="グループコールの参加者全員をミュートする前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="チャット" name="HintChat">
- チャットに参加するには、画面下のチャットフィールドにテキストを入力します。
- </notification>
- <notification label="立ち上がる" name="HintSit">
- 座る姿勢から立ち上がるには、「立ち上がる」ボタンをクリックします。
- </notification>
- <notification label="話す" name="HintSpeak">
- 「スピーカー」ボタンをクリックすると、マイクのオン・オフが切り替わります。
-
-上矢印をクリックすると、ボイスコントロールパネルが表示されます。
-
-「スピーカー」ボタンを非表示にすると、ボイス機能も無効になります。
- </notification>
- <notification label="世界を探検" name="HintDestinationGuide">
- 行き先ガイドには数多くの探索場所が含まれます。どこか行き先を決めたら、テレポートして探索に出かけましょう。
- </notification>
- <notification label="サイドパネル" name="HintSidePanel">
- サイドパネルでインベントリ、服、プロフィールなどにすばやくアクセスできます。
- </notification>
- <notification label="移動" name="HintMove">
- 歩行や走行は、「移動」パネルを開き、矢印コントロールによって操作します。この操作はキーボードの矢印キーで実行することも可能です。
- </notification>
- <notification label="" name="HintMoveClick">
- 1. クリックして歩行
-地面の一箇所をクリックすると、その場所まで歩きます。
-
-2. クリック・ドラッグで視界を回転
-世界の一箇所をクリックしてドラッグすると、視界の向きが変わります。
- </notification>
- <notification label="表示名" name="HintDisplayName">
- 表示名(カスタマイズ可能)を設定します。ユーザー名は固有で変更できませんが、ここで追加する表示名は変更可能です。他の住人の名前の表示方法は環境設定で変更してください。
- </notification>
- <notification label="表示" name="HintView">
- カメラの視点を変更するには、水平・垂直コントロールを使います。Escape を押すか、または歩行すると、視点がリセットされます。
- </notification>
- <notification label="インベントリ" name="HintInventory">
- 持ち物にはあなたのアイテムがすべて含まれます。新しく追加されたアイテムは「最新」タブに一覧表示されています。
- </notification>
- <notification label="あなたのリンデンドル" name="HintLindenDollar">
- これがあなたの L$ 残高です。リンデンドルを購入するには「L$ の購入」をクリックします。
- </notification>
- <notification name="PopupAttempt">
- ポップアップがブロックされました。
- <form name="form">
- <ignore name="ignore" text="全てのポップアップを有効にする"/>
- <button name="open" text="ポップアップウィンドウを開く"/>
- </form>
- </notification>
- <notification name="AuthRequest">
- 「[REALM]」にある「&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;」のサイトにはユーザー名とパスワードが必要です。
- <form name="form">
- <input name="username" text="ユーザー名"/>
- <input name="password" text="パスワード"/>
- <button name="ok" text="送信"/>
- <button name="cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="" name="ModeChange">
- モードを変更するには終了して再起動する必要があります。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoClassifieds">
- クラシファイド広告の作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoGroupInfo">
- グループの作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoPicks">
- ピックの作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoWorldMap">
- 世界地図の表示はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoVoiceCall">
- ボイスコールはアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoAvatarShare">
- 共有はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoAvatarPay">
- 他の住人への支払いはアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <global name="UnsupportedCPU">
- - あなたの CPU の速度は必須動作環境の条件を満たしていません。
- </global>
- <global name="UnsupportedGLRequirements">
- [APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。
-
-この問題が何度も起きる場合は、[SUPPORT_SITE] をご確認ください。
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - あなたのグラフィックカードは必須動作環境の条件を満たしていません。
- </global>
- <global name="UnsupportedRAM">
- - あなたのシステムメモリは必須動作環境の条件を満たしていません。
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- 自分の土地をお持ちの場合、「ホーム」に設定できます。
-お持ちでない場合は、地図で「インフォハブ」をお探しください。
- </global>
- <global name="You died and have been teleported to your home location">
- 死んでしまったので、ホームにテレポートされました。
- </global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml
deleted file mode 100644
index 17e1283d24..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="コール" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="コール終了" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="ボイスコントロール" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml
deleted file mode 100644
index 13be2cea0a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="マイクのオン・オフ"/>
- <string name="VoiceControlBtnToolTip" value="ボイスコントロールパネルの表示・非表示"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="話す" name="speak_btn" tool_tip="マイクのオン・オフを切り替える"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="サウンド環境設定を変更する"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="アバターの動作を起こす"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="視界" name="camera_btn" tool_tip="カメラの角度をコントロール"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="行き先" name="destination_btn" tool_tip="Second Life 内を旅行する"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="マイ アバター" name="avatar_btn" tool_tip="容姿を変更する"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="人" name="show_people_button" tool_tip="Second Life で人を探す"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="プロフィール" name="show_profile_btn" tool_tip="プロフィールを表示・編集"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="ハウツー" name="show_help_btn" tool_tip="Second Life のヘルプ情報を見る"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="会話"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="通知"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml
deleted file mode 100644
index f7f575206a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="group_info_btn_panel">
- <button label="グループ情報" name="group_info_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="グループコール" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="コール終了" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="ボイスコントロールを開く" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
deleted file mode 100644
index 14c38c796f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="プロフィール" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="フレンド登録" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="テレポート" name="teleport_btn" tool_tip="この人にテレポートを送ります"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="コール" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="コール終了" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="ブロック" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="ブロック解除" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="コールの音量" value="0.5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_login.xml b/indra/newview/skins/minimal/xui/ja/panel_login.xml
deleted file mode 100644
index ac1fe455c7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://jp.secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=ja
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- ユーザーネーム:
- </text>
- <combo_box name="username_combo" tool_tip="登録時に自分で選んだユーザー名(例:bobsmith12、Steller Sunshineなど)"/>
- <text name="password_text">
- パスワード:
- </text>
- <check_box label="パスワードを記憶" name="remember_check"/>
- <button label="ログイン" left_pad="30" name="connect_btn" width="60"/>
- <text name="mode_selection_text">
- モード:
- </text>
- <combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
- <combo_box.item label="ベーシック" name="Basic"/>
- <combo_box.item label="アドバンス" name="Advanced"/>
- </combo_box>
- <text name="start_location_text">
- 開始地点:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/>
- <combo_box.item label="ホーム" name="MyHome"/>
- <combo_box.item label="<地域名を入力>" name="Typeregionname"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- お申し込み
- </text>
- <text name="forgot_password_text">
- ユーザー名またはパスワードをお忘れですか?
- </text>
- <text name="login_help">
- ログインの方法
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml
deleted file mode 100644
index 0426c4fe9a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="前の場所へ戻ります"/>
- <pull_button name="forward_btn" tool_tip="次の場所へ進みます"/>
- <button name="home_btn" tool_tip="「ホーム」にテレポート"/>
- <location_input label="場所" name="location_combo"/>
- <search_combo_box label="検索" name="search_combo_box" tool_tip="検索">
- <combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
- <label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
- お気に入りバー
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_people.xml b/indra/newview/skins/minimal/xui/ja/panel_people.xml
deleted file mode 100644
index 5caeebc151..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="人" name="people_panel">
- <string name="no_recent_people" value="最近交流した人はいません。一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。"/>
- <string name="no_filtered_recent_people" value="その名前で最近交流した人はいません。"/>
- <string name="no_one_near" value="近くに誰もいません。一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。"/>
- <string name="no_one_filtered_near" value="その名前の人は近くにいません。"/>
- <string name="no_friends_online" value="オンラインのフレンドはいません"/>
- <string name="no_friends" value="フレンドはいません"/>
- <string name="no_friends_msg">
- 住人を右クリックすると、フレンド登録できます。
-一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。
- </string>
- <string name="no_filtered_friends_msg">
- お探しのものは見つかりましたか?下の「行き先ガイド」ボタンをクリックしてください。
- </string>
- <string name="people_filter_label" value="人をフィルター"/>
- <string name="groups_filter_label" value="グループをフィルター"/>
- <string name="no_filtered_groups_msg" value="お探しのものは見つかりましたか? [secondlife:///app/search/groups/[SEARCH_TERM] 検索] をお試しください。"/>
- <string name="no_groups_msg" value="グループをお探しですか? [secondlife:///app/search/groups 検索] をお試しください。"/>
- <string name="MiniMapToolTipMsg" value="[地域](ダブルクリックで地図を開く。Shift‐ドラッグで水平・垂直移動)"/>
- <string name="AltMiniMapToolTipMsg" value="[地域](ダブルクリックでテレポート。Shift‐ドラッグで水平・垂直移動)"/>
- <filter_editor label="フィルター" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="近く" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="nearby_view_sort_btn" tool_tip="オプション"/>
- <button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
- </panel>
- </panel>
- <panel label="マイ フレンド" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="オンライン"/>
- <accordion_tab name="tab_all" title="全員"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="options_gear_btn_panel">
- <menu_button name="friends_viewsort_btn" tool_tip="オプションを表示します"/>
- </layout_panel>
- <layout_panel name="add_btn_panel">
- <button name="add_btn" tool_tip="フレンド登録を申し出る"/>
- </layout_panel>
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="選択した人をフレンドリストから削除"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="マイ グループ" name="groups_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="groups_viewsort_btn" tool_tip="オプション"/>
- <button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
- <button name="activate_btn" tool_tip="選択したグループをアクティブにします"/>
- </panel>
- </panel>
- <panel label="最新" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="recent_viewsort_btn" tool_tip="オプション"/>
- <button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
- </layout_panel>
- <layout_panel name="share_btn_lp">
- <button label="共有" name="share_btn" tool_tip="「持ち物」のアイテムを共有する"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示します"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="グループチャット" name="chat_btn" tool_tip="チャットを開始します"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="グループコール" name="group_call_btn" tool_tip="このグループにコールする"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml
deleted file mode 100644
index d06db8ccb1..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="サイドパネル"/>
- <button name="undock" tool_tip="切り離す"/>
- <button name="dock" tool_tip="ドッキング"/>
- <button name="show_help" tool_tip="ヘルプを表示"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml b/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml
deleted file mode 100644
index 7d1298c6c0..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- パケット損失
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- 帯域幅
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt])
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
- <combo_box.item label="ベーシックモード" name="Basic"/>
- <combo_box.item label="アドバンスモード" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="すべてのメディアを開始・停止(音楽、ビデオ、Web ページ)"/>
- <button name="volume_btn" tool_tip="グローバル音量設定"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_camera.xml b/indra/newview/skins/minimal/xui/pl/floater_camera.xml
deleted file mode 100644
index 5b9dd47616..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Obracaj kamerę wokół obiektu
- </floater.string>
- <floater.string name="zoom_tooltip">
- Najedź kamerą w kierunku obiektu
- </floater.string>
- <floater.string name="move_tooltip">
- Poruszaj kamerą w dół/górę oraz w prawo/lewo
- </floater.string>
- <floater.string name="camera_modes_title">
- Ustawienia
- </floater.string>
- <floater.string name="pan_mode_title">
- W prawo lub w lewo
- </floater.string>
- <floater.string name="presets_mode_title">
- Ustaw widok
- </floater.string>
- <floater.string name="free_mode_title">
- Zobacz obiekt
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Widok z przodu
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Podgląd grupy
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Widok z tyłu
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Widok obiektu
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Widok panoramiczny
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Najedź kamerą w kierunku obiektu">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Obracaj kamerę wokoł osi"/>
- <slider_bar name="zoom_slider" tool_tip="Przybliż kamerę do ogniskowej"/>
- <joystick_track name="cam_track_stick" tool_tip="Poruszaj kamerą w górę, w dół, w lewo i w prawo"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Ustaw widok"/>
- <button label="" name="pan_btn" tool_tip="Kamera horyzontalna"/>
- <button label="" name="avatarview_btn" tool_tip="Ustawienia"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml b/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml
deleted file mode 100644
index 66fde04f88..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="POMOC">
- <floater.string name="loading_text">
- Ładowanie...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml b/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml
deleted file mode 100644
index 02b7c6bc2b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="PRZEGLĄDARKA MEDIÓW">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Wstecz" name="back"/>
- <button label="Dalej" name="forward"/>
- <button label="Odśwież" name="reload"/>
- <button label="Idź" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="przewiń" name="rewind"/>
- <button label="zatrzymaj" name="stop"/>
- <button label="dalej" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Wyślij bieżącą stronę do parceli" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Otwórz w przeglądarce zewnętrznej" name="open_browser"/>
- <check_box label="Zawsze otwieraj w przeglądarce zewnętrznej" name="open_always"/>
- <button label="Zamknij" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml
deleted file mode 100644
index 7dc3e1f22e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CZAT LOKALNY">
- <check_box label="Tłumaczenie czatu (wspierane przez Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_web_content.xml b/indra/newview/skins/minimal/xui/pl/floater_web_content.xml
deleted file mode 100644
index e3096f1e54..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Wstecz"/>
- <button name="forward" tool_tip="Dalej"/>
- <button name="stop" tool_tip="Zatrzymaj"/>
- <button name="reload" tool_tip="Odśwież stronę"/>
- <combo_box name="address" tool_tip="Wpisz URL tutaj"/>
- <icon name="media_secure_lock_flag" tool_tip="Zabezpieczona przeglądarka"/>
- <button name="popexternal" tool_tip="Otwórz bieżący URL w zewnętrznej przeglądarce"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml b/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml
deleted file mode 100644
index 5e982c0185..0000000000
--- a/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_details">
- To jest mój opis w Second Life.
- </text>
- <slider name="volume_slider" tool_tip="Poziom głośności" value="0.5"/>
- <button label="Dodaj znajomość" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="Profil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Wyłącz komunikację głosową" name="disable_voice"/>
- <button label="Włącz komunikację głosową" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/inspect_object.xml b/indra/newview/skins/minimal/xui/pl/inspect_object.xml
deleted file mode 100644
index 23d8ce7700..0000000000
--- a/indra/newview/skins/minimal/xui/pl/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Przez [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Twórca [CREATOR]
-Właściciel [OWNER]
- </string>
- <string name="Price">
- L$[AMOUNT]
- </string>
- <string name="PriceFree">
- Darmowe!
- </string>
- <string name="Touch">
- Dotknij
- </string>
- <string name="Sit">
- Usiądź tutaj
- </string>
- <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
- <text name="price_text">
- L$30,000
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <button label="Kup" name="buy_btn"/>
- <button label="Zapłać" name="pay_btn"/>
- <button label="Weź kopię" name="take_free_copy_btn"/>
- <button label="Dotknij" name="touch_btn"/>
- <button label="Usiądź tutaj" name="sit_btn"/>
- <button label="Otwórz" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Zabezpiecz przeglądanie"/>
- <button label="Więcej" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml
deleted file mode 100644
index 7c572b4fc9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Porządkuj według daty" name="sort_by_most_recent"/>
- <menu_item_check label="Porządkuj według nazwy" name="sort_by_name"/>
- <menu_item_check label="Porządkuj według typu" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml
deleted file mode 100644
index aacdad97e3..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Zobacz profil" name="Profile..."/>
- <menu_item_call label="Dodaj znajomość" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Zaproś do grupy" name="Invite..."/>
- <menu_item_call label="Zablokuj" name="Avatar Mute"/>
- <menu_item_call label="Raport" name="abuse"/>
- <menu_item_call label="Unieruchom" name="Freeze..."/>
- <menu_item_call label="Wyrzuć" name="Eject..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
- <menu_item_call label="Przybliż" name="Zoom In"/>
- <menu_item_call label="Zapłać" name="Pay..."/>
- <menu_item_call label="Sprawdź" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml
deleted file mode 100644
index 163b3a231e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Dotknij" name="Attachment Object Touch"/>
- <menu_item_call label="Edytuj" name="Edit..."/>
- <menu_item_call label="Odłącz" name="Detach"/>
- <menu_item_call label="Usiądź tutaj" name="Sit Down Here"/>
- <menu_item_call label="Wstań" name="Stand Up"/>
- <menu_item_call label="Mój wygląd" name="Change Outfit"/>
- <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
- <menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
- <menu_item_call label="Moi znajomi" name="Friends..."/>
- <menu_item_call label="Moje grupy" name="Groups..."/>
- <menu_item_call label="Mój profil" name="Profile..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
- <menu_item_call label="Opuść" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml
deleted file mode 100644
index e8d2b14231..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Profil" name="Show Profile"/>
- <menu_item_call label="Czat/IM..." name="Send IM"/>
- <menu_item_call label="Dodaj znajomość..." name="Add Friend"/>
- <menu_item_call label="Usuń..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml
deleted file mode 100644
index dcf7921bad..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Zobacz profil" name="Profile..."/>
- <menu_item_call label="Dodaj znajomość" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Zaproś do grupy" name="Invite..."/>
- <menu_item_call label="Zablokuj" name="Avatar Mute"/>
- <menu_item_call label="Raport" name="abuse"/>
- <menu_item_call label="Unieruchom" name="Freeze..."/>
- <menu_item_call label="Wyrzuć" name="Eject..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
- <menu_item_call label="Przybliż" name="Zoom In"/>
- <menu_item_call label="Zapłać" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml
deleted file mode 100644
index d481475803..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Usiądź tu" name="Sit Down Here"/>
- <menu_item_call label="Wstań" name="Stand Up"/>
- <context_menu label="Zdejmij" name="Take Off &gt;">
- <context_menu label="Ubrania" name="Clothes &gt;">
- <menu_item_call label="Koszulę" name="Shirt"/>
- <menu_item_call label="Spodnie" name="Pants"/>
- <menu_item_call label="Spódnicę" name="Skirt"/>
- <menu_item_call label="Buty" name="Shoes"/>
- <menu_item_call label="Skarpetki" name="Socks"/>
- <menu_item_call label="Kurtkę" name="Jacket"/>
- <menu_item_call label="Rękawiczki" name="Gloves"/>
- <menu_item_call label="Podkoszulek" name="Self Undershirt"/>
- <menu_item_call label="Bieliznę" name="Self Underpants"/>
- <menu_item_call label="Tatuaż" name="Self Tattoo"/>
- <menu_item_call label="Ubranie alpha" name="Self Alpha"/>
- <menu_item_call label="Wszystko" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Odłącz" name="Object Detach"/>
- <menu_item_call label="Odłącz wszystko" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Mój wygląd" name="Chenge Outfit"/>
- <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
- <menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
- <menu_item_call label="Moi znajomi" name="Friends..."/>
- <menu_item_call label="Moje grupy" name="Groups..."/>
- <menu_item_call label="Mój profil" name="Profile..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml
deleted file mode 100644
index 8da40dcedf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Rozmowy głosowe aktywne" name="EnableVoiceChat"/>
- <menu_item_check label="Przycisk gesturki" name="ShowGestureButton"/>
- <menu_item_check label="Przycisk ruchu" name="ShowMoveButton"/>
- <menu_item_check label="Przycisk widoku" name="ShowCameraButton"/>
- <menu_item_check label="Przycisk zdjęć" name="ShowSnapshotButton"/>
- <menu_item_check label="Buduj" name="ShowBuildButton"/>
- <menu_item_check label="Szukaj" name="ShowSearchButton"/>
- <menu_item_check label="Mapa" name="ShowWorldMapButton"/>
- <menu_item_check label="Mini-Mapa" name="ShowMiniMapButton"/>
- <menu_item_call label="Wytnij" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Kopiuj" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Wklej" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Usuń" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Zaznacz wszystko" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml
deleted file mode 100644
index 4e5407601b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Odłącz" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml
deleted file mode 100644
index ee60d3feb6..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Zastąp" name="replace"/>
- <menu_item_call label="Edytuj" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml
deleted file mode 100644
index ad43900137..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Zdejmij" name="take_off"/>
- <menu_item_call label="Edytuj" name="edit"/>
- <menu_item_call label="Zastąp" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml
deleted file mode 100644
index 9fba39be1a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Nowe ubranie" name="COF.Gear.New_Clothes"/>
- <menu label="Nowe części ciała" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_edit.xml b/indra/newview/skins/minimal/xui/pl/menu_edit.xml
deleted file mode 100644
index 578e270fed..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Edycja" name="Edit">
- <menu_item_call label="Cofnij" name="Undo"/>
- <menu_item_call label="Powtórz" name="Redo"/>
- <menu_item_call label="Wytnij" name="Cut"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
- <menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Usuń" name="Delete"/>
- <menu_item_call label="Powiel" name="Duplicate"/>
- <menu_item_call label="Zaznacz wszystko" name="Select All"/>
- <menu_item_call label="Odznacz" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_favorites.xml b/indra/newview/skins/minimal/xui/pl/menu_favorites.xml
deleted file mode 100644
index 7310ff5c27..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportuj" name="Teleport To Landmark"/>
- <menu_item_call label="Zobacz/Edytuj Ulubione miejsce" name="Landmark Open"/>
- <menu_item_call label="Kopiuj SLurl" name="Copy slurl"/>
- <menu_item_call label="Pokaż na mapie" name="Show On Map"/>
- <menu_item_call label="Kopiuj" name="Landmark Copy"/>
- <menu_item_call label="Wklej" name="Landmark Paste"/>
- <menu_item_call label="Usuń" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml
deleted file mode 100644
index a72dec22fc..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Dodaj/Usuń z Ulubionych" name="activate"/>
- <menu_item_call label="Kopiuj" name="copy_gesture"/>
- <menu_item_call label="Wklej" name="paste"/>
- <menu_item_call label="Kopiuj UUID" name="copy_uuid"/>
- <menu_item_call label="Zapisz do obecnego zestawu ubrania" name="save_to_outfit"/>
- <menu_item_call label="Edytuj" name="edit_gesture"/>
- <menu_item_call label="Sprawdź" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml b/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml
deleted file mode 100644
index 83be4d38c5..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Dołącz do grupy..." name="item_join"/>
- <menu_item_call label="Nowa grupa..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml
deleted file mode 100644
index 19d9510cd3..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Pokaż pasek Nawigacji" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Pokaż pasek Ulubionych" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Pokaż pasek mini-lokalizacji" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml
deleted file mode 100644
index 207bc2211b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Zamknij wszystkie" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 4ead44878a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml
deleted file mode 100644
index 2b9a362123..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="O grupie" name="Show Profile"/>
- <menu_item_call label="Pokaż sesję" name="Chat"/>
- <menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml
deleted file mode 100644
index 8924d6db3e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Zobacz profil" name="Show Profile"/>
- <menu_item_call label="Dodaj znajomość" name="Add Friend"/>
- <menu_item_call label="Pokaż sesję" name="Send IM"/>
- <menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 59560f236c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Zobacz profil" name="view_profile"/>
- <menu_item_call label="Dodaj znajomość" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="Zadzwoń" name="call"/>
- <menu_item_call label="Teleportuj" name="teleport"/>
- <menu_item_call label="Zaproś do grupy" name="invite_to_group"/>
- <menu_item_call label="Zablokuj" name="block"/>
- <menu_item_call label="Odblokuj" name="unblock"/>
- <menu_item_call label="Raport" name="report"/>
- <menu_item_call label="Unieruchom" name="freeze"/>
- <menu_item_call label="Wyrzuć" name="eject"/>
- <menu_item_call label="Kopnij" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Debugowanie tekstur" name="debug"/>
- <menu_item_call label="Znajdź na mapie" name="find_on_map"/>
- <menu_item_call label="Przybliż" name="zoom_in"/>
- <menu_item_call label="Zapłać" name="pay"/>
- <menu_item_call label="Udostępnij" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml
deleted file mode 100644
index c12bd490ff..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Dotknij" name="touch"/>
- <menu_item_call label="Usiądź" name="sit"/>
- <menu_item_call label="Zapłać" name="pay"/>
- <menu_item_call label="Kup" name="buy"/>
- <menu_item_call label="Weź" name="take"/>
- <menu_item_call label="Weź kopię" name="take_copy"/>
- <menu_item_call label="Otwórz" name="open"/>
- <menu_item_call label="Edytuj" name="edit"/>
- <menu_item_call label="Ubierz" name="wear"/>
- <menu_item_call label="Dodaj" name="add"/>
- <menu_item_call label="Raport" name="report"/>
- <menu_item_call label="Zablokuj" name="block"/>
- <menu_item_call label="Przybliż" name="zoom_in"/>
- <menu_item_call label="Usuń" name="remove"/>
- <menu_item_call label="Więcej informacji" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml
deleted file mode 100644
index c4ef9761d9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Usiądź tutaj" name="Sit Down Here"/>
- <menu_item_call label="Wstań" name="Stand Up"/>
- <context_menu label="Zdejmij" name="Take Off &gt;">
- <context_menu label="Ubranie" name="Clothes &gt;">
- <menu_item_call label="Bluzka" name="Shirt"/>
- <menu_item_call label="Spodnie" name="Pants"/>
- <menu_item_call label="Spódnica" name="Skirt"/>
- <menu_item_call label="Buty" name="Shoes"/>
- <menu_item_call label="Skarpetki" name="Socks"/>
- <menu_item_call label="Kurtka" name="Jacket"/>
- <menu_item_call label="Rękawiczki" name="Gloves"/>
- <menu_item_call label="Podkoszulek" name="Self Undershirt"/>
- <menu_item_call label="Bielizna" name="Self Underpants"/>
- <menu_item_call label="Tatuaż" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Ubranie" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Odłącz" name="Object Detach"/>
- <menu_item_call label="Odłącz wszystko" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Zmień strój" name="Chenge Outfit"/>
- <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
- <menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
- <menu_item_call label="Znajomi" name="Friends..."/>
- <menu_item_call label="Moje grupy" name="Groups..."/>
- <menu_item_call label="Mój profil" name="Profile..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 5ef0f2f7a4..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Zamknij" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory.xml
deleted file mode 100644
index e47ffa0e18..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Kupuj" name="Task Buy"/>
- <menu_item_call label="Otwórz" name="Task Open"/>
- <menu_item_call label="Odtwarzaj" name="Task Play"/>
- <menu_item_call label="Właściwości" name="Task Properties"/>
- <menu_item_call label="Zmień nazwę" name="Task Rename"/>
- <menu_item_call label="Usuń" name="Task Remove"/>
- <menu_item_call label="Opróżnij Kosz" name="Empty Trash"/>
- <menu_item_call label="Opróżnij Folder Zgubione i odnalezione" name="Empty Lost And Found"/>
- <menu_item_call label="Nowy folder" name="New Folder"/>
- <menu_item_call label="Nowy skrypt" name="New Script"/>
- <menu_item_call label="Nowa nota" name="New Note"/>
- <menu_item_call label="Nowa gesturka" name="New Gesture"/>
- <menu label="Nowe Ubranie" name="New Clothes">
- <menu_item_call label="Nowa koszula" name="New Shirt"/>
- <menu_item_call label="Nowe spodnie" name="New Pants"/>
- <menu_item_call label="Nowe buty" name="New Shoes"/>
- <menu_item_call label="Nowe skarpety" name="New Socks"/>
- <menu_item_call label="Nowa kurtka" name="New Jacket"/>
- <menu_item_call label="Nowa spódnica" name="New Skirt"/>
- <menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
- <menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
- <menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha Mask"/>
- <menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
- </menu>
- <menu label="Nowa Część Ciała" name="New Body Parts">
- <menu_item_call label="Nowy kształt" name="New Shape"/>
- <menu_item_call label="Nowa skórka" name="New Skin"/>
- <menu_item_call label="Nowe włosy" name="New Hair"/>
- <menu_item_call label="Nowe oczy" name="New Eyes"/>
- </menu>
- <menu label="Zmień Czcionkę" name="Change Type">
- <menu_item_call label="Domyślna" name="Default"/>
- <menu_item_call label="Rękawiczki" name="Gloves"/>
- <menu_item_call label="Kurtka" name="Jacket"/>
- <menu_item_call label="Spodnie" name="Pants"/>
- <menu_item_call label="Kształt" name="Shape"/>
- <menu_item_call label="Buty" name="Shoes"/>
- <menu_item_call label="Koszula" name="Shirt"/>
- <menu_item_call label="Spódnica" name="Skirt"/>
- <menu_item_call label="Bielizna" name="Underpants"/>
- <menu_item_call label="Podkoszulek" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleportuj" name="Landmark Open"/>
- <menu_item_call label="Otwórz" name="Animation Open"/>
- <menu_item_call label="Otwórz" name="Sound Open"/>
- <menu_item_call label="Zmień strój" name="Replace Outfit"/>
- <menu_item_call label="Dodaj do stroju" name="Add To Outfit"/>
- <menu_item_call label="Usuń obiekt" name="Purge Item"/>
- <menu_item_call label="Przywróć obiekt" name="Restore Item"/>
- <menu_item_call label="Otwórz" name="Open"/>
- <menu_item_call label="Otwórz oryginalne" name="Open Original"/>
- <menu_item_call label="Właściwości" name="Properties"/>
- <menu_item_call label="Zmień nazwę" name="Rename"/>
- <menu_item_call label="Kopiuj dane UUID" name="Copy Asset UUID"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
- <menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Wklej jako link" name="Paste As Link"/>
- <menu_item_call label="Usuń" name="Remove Link"/>
- <menu_item_call label="Usuń" name="Delete"/>
- <menu_item_call label="Skasuj folder systemu" name="Delete System Folder"/>
- <menu_item_call label="Rozpocznij konferencję czatową" name="Conference Chat Folder"/>
- <menu_item_call label="Odtwarzaj" name="Sound Play"/>
- <menu_item_call label="O Miejscu" name="About Landmark"/>
- <menu_item_call label="Używaj in-world" name="Animation Play"/>
- <menu_item_call label="Odtwarzaj lokalnie" name="Animation Audition"/>
- <menu_item_call label="Wyślij IM" name="Send Instant Message"/>
- <menu_item_call label="Teleportuj..." name="Offer Teleport..."/>
- <menu_item_call label="Rozpocznij konferencję czatową" name="Conference Chat"/>
- <menu_item_call label="Aktywuj" name="Activate"/>
- <menu_item_call label="Deaktywuj" name="Deactivate"/>
- <menu_item_call label="Zapisz jako" name="Save As"/>
- <menu_item_call label="Odłącz od siebie" name="Detach From Yourself"/>
- <menu_item_call label="Załóż" name="Wearable And Object Wear"/>
- <menu label="Dołącz do" name="Attach To"/>
- <menu label="Dołącz do załączników HUD" name="Attach To HUD"/>
- <menu_item_call label="Edytuj" name="Wearable Edit"/>
- <menu_item_call label="Dodaj" name="Wearable Add"/>
- <menu_item_call label="Zdejmij" name="Take Off"/>
- <menu_item_call label="--brak opcji--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml
deleted file mode 100644
index 4a56586aaf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Załaduj" name="upload">
- <menu_item_call label="obraz (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="animację (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
- <menu_item_call label="Ustaw domyślne pozwolenia ładowania" name="perm prefs"/>
- </menu>
- <menu_item_call label="Nowy folder" name="New Folder"/>
- <menu_item_call label="Nowy skrypt" name="New Script"/>
- <menu_item_call label="Nowa nota" name="New Note"/>
- <menu_item_call label="Nowa gesturka" name="New Gesture"/>
- <menu label="Nowe Ubranie" name="New Clothes">
- <menu_item_call label="Nowa koszula" name="New Shirt"/>
- <menu_item_call label="Nowe spodnie" name="New Pants"/>
- <menu_item_call label="Nowe buty" name="New Shoes"/>
- <menu_item_call label="Nowe skarpetki" name="New Socks"/>
- <menu_item_call label="Nowa kurtka" name="New Jacket"/>
- <menu_item_call label="Nowa spódnica" name="New Skirt"/>
- <menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
- <menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
- <menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha"/>
- <menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
- </menu>
- <menu label="Nowa Część Ciała" name="New Body Parts">
- <menu_item_call label="Nowy kształt" name="New Shape"/>
- <menu_item_call label="Nowa skórka" name="New Skin"/>
- <menu_item_call label="Nowe włosy" name="New Hair"/>
- <menu_item_call label="Nowe oczy" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml
deleted file mode 100644
index 591c3a81d5..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nowe okno Szafy" name="new_window"/>
- <menu_item_check label="Porządkuj według nazwy" name="sort_by_name"/>
- <menu_item_check label="Porządkuj według daty" name="sort_by_recent"/>
- <menu_item_check label="Sortuj foldery zawsze według nazwy" name="sort_folders_by_name"/>
- <menu_item_check label="Posortuj foldery systemowe od góry" name="sort_system_folders_to_top"/>
- <menu_item_call label="Pokaż filtry" name="show_filters"/>
- <menu_item_call label="Zresetuj filtry" name="reset_filters"/>
- <menu_item_call label="Zamknij wszystkie foldery" name="close_folders"/>
- <menu_item_call label="Opróżnij Zagubione i odnalezione" name="empty_lostnfound"/>
- <menu_item_call label="Zapisz teksturę jako" name="Save Texture As"/>
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Znajdź oryginał" name="Find Original"/>
- <menu_item_call label="Znajdź wszystkie linki" name="Find All Links"/>
- <menu_item_call label="Opróżnij Kosz" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_land.xml b/indra/newview/skins/minimal/xui/pl/menu_land.xml
deleted file mode 100644
index cbfecaee56..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="O Posiadłości" name="Place Information..."/>
- <menu_item_call label="Usiądź tutaj" name="Sit Here"/>
- <menu_item_call label="Kup posiadłość" name="Land Buy"/>
- <menu_item_call label="Kup przepustkę" name="Land Buy Pass"/>
- <menu_item_call label="Buduj" name="Create"/>
- <menu_item_call label="Edytuj teren" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_landmark.xml b/indra/newview/skins/minimal/xui/pl/menu_landmark.xml
deleted file mode 100644
index aa5808390c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Kopiuj SLurl" name="copy"/>
- <menu_item_call label="Usuń" name="delete"/>
- <menu_item_call label="Utwórz" name="pick"/>
- <menu_item_call label="Dodaj do paska Ulubionych" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_login.xml b/indra/newview/skins/minimal/xui/pl/menu_login.xml
deleted file mode 100644
index e50b694641..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Ja" name="File">
- <menu_item_call label="Ustawienia" name="Preferences..."/>
- <menu_item_call label="Wyłącz [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Pomoc" name="Help">
- <menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/>
- <menu_item_call label="O [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Pokaż ustawienia debugowania" name="Show Debug Menu"/>
- <menu label="Debug" name="Debug">
- <menu_item_call label="Ustawienia debugowania" name="Debug Settings"/>
- <menu_item_call label="Ustawienia UI/kolor" name="UI/Color Settings"/>
- <menu label="UI Testy" name="UI Tests"/>
- <menu_item_call label="Ustaw rozmiar interfejsu..." name="Set Window Size..."/>
- <menu_item_call label="Wyświetl TOS" name="TOS"/>
- <menu_item_call label="Wyświetl wiadomość krytyczną" name="Critical"/>
- <menu_item_call label="Test przeglądarki mediów" name="Web Browser Test"/>
- <menu_item_call label="Test zawartości strony" name="Web Content Floater Test"/>
- <menu_item_check label="Pokaż siatkę" name="Show Grid Picker"/>
- <menu_item_call label="Pokaż konsolę Zawiadomień" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml b/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml
deleted file mode 100644
index 8f86965416..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom blisko" name="Zoom Close"/>
- <menu_item_call label="Zoom średnio" name="Zoom Medium"/>
- <menu_item_call label="Zoom daleko" name="Zoom Far"/>
- <menu_item_call label="Zoom domyślny" name="Zoom Default"/>
- <menu_item_check label="Obróć mapę" name="Rotate Map"/>
- <menu_item_check label="Autocentrowanie" name="Auto Center"/>
- <menu_item_call label="Zatrzymaj" name="Stop Tracking"/>
- <menu_item_call label="Mapa Świata" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_navbar.xml b/indra/newview/skins/minimal/xui/pl/menu_navbar.xml
deleted file mode 100644
index 1d434670ee..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Pokaż współrzędne" name="Show Coordinates"/>
- <menu_item_check label="Pokaż właściwości posiadłości" name="Show Parcel Properties"/>
- <menu_item_call label="Landmark" name="Landmark"/>
- <menu_item_call label="Wytnij" name="Cut"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
- <menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Usuń" name="Delete"/>
- <menu_item_call label="Zaznacz wszystko" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml
deleted file mode 100644
index fe5bc6ba6f..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Pokaż osoby w pobliżu..." name="nearby_people"/>
- <menu_item_check label="Pokaż zablokowany tekst" name="muted_text"/>
- <menu_item_check label="Wyświetlaj ikonki znajomych" name="show_buddy_icons"/>
- <menu_item_check label="Wyświetlaj imiona" name="show_names"/>
- <menu_item_check label="Wyświetlaj ikonki i imiona" name="show_icons_and_names"/>
- <menu_item_call label="Rozmiar czcionki" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml
deleted file mode 100644
index bd3d42f9b1..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Zamknij" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_object.xml b/indra/newview/skins/minimal/xui/pl/menu_object.xml
deleted file mode 100644
index 3da6c5c890..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Dotknij" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Dotknij"/>
- </menu_item_call>
- <menu_item_call label="Edytuj" name="Edit..."/>
- <menu_item_call label="Buduj" name="Build"/>
- <menu_item_call label="Otwórz" name="Open"/>
- <menu_item_call label="Usiądź tutaj" name="Object Sit"/>
- <menu_item_call label="Wstań" name="Object Stand Up"/>
- <menu_item_call label="Sprawdź" name="Object Inspect"/>
- <menu_item_call label="Przybliż" name="Zoom In"/>
- <context_menu label="Załóż na" name="Put On">
- <menu_item_call label="Załóż" name="Wear"/>
- <menu_item_call label="Dodaj" name="Add"/>
- <context_menu label="Dołącz" name="Object Attach"/>
- <context_menu label="Dołącz HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Zarządzaj" name="Remove">
- <menu_item_call label="Raport" name="Report Abuse..."/>
- <menu_item_call label="Zablokuj" name="Object Mute"/>
- <menu_item_call label="Zwróć" name="Return..."/>
- </context_menu>
- <menu_item_call label="Weź" name="Pie Object Take"/>
- <menu_item_call label="Weź kopię" name="Take Copy"/>
- <menu_item_call label="Zapłać" name="Pay..."/>
- <menu_item_call label="Kup" name="Buy..."/>
- <menu_item_call label="Skasuj" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml b/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml
deleted file mode 100644
index b499bca2db..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Sprawdź..." name="Object Profile"/>
- <menu_item_call label="Zablokuj..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml
deleted file mode 100644
index 1a70e76ec7..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Załóż - Zastąp obecny strój" name="wear"/>
- <menu_item_call label="Załóż - Dodaj do bieżącego stroju" name="wear_add"/>
- <menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off"/>
- <menu label="Nowe ubranie" name="New Clothes">
- <menu_item_call label="Nowa koszula" name="New Shirt"/>
- <menu_item_call label="Nowe spodnie" name="New Pants"/>
- <menu_item_call label="Nowe buty" name="New Shoes"/>
- <menu_item_call label="Nowe skarpetki" name="New Socks"/>
- <menu_item_call label="Nowa kurtka" name="New Jacket"/>
- <menu_item_call label="Nowa spódnica" name="New Skirt"/>
- <menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
- <menu_item_call label="Nowa podkoszulka" name="New Undershirt"/>
- <menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha"/>
- <menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
- </menu>
- <menu label="Nowe części ciała" name="New Body Parts">
- <menu_item_call label="Nowy kształt" name="New Shape"/>
- <menu_item_call label="Nowa skórka" name="New Skin"/>
- <menu_item_call label="Nowe włosy" name="New Hair"/>
- <menu_item_call label="Nowe oczy" name="New Eyes"/>
- </menu>
- <menu_item_call label="Zmień nazwę stroju" name="rename"/>
- <menu_item_call label="Usuń strój" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml
deleted file mode 100644
index 998e25f38e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Załóż - Zastąp obecny strój" name="wear_replace"/>
- <menu_item_call label="Załóż - Dodaj do obecnego stroju" name="wear_add"/>
- <menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off"/>
- <menu_item_call label="Edytuj strój" name="edit"/>
- <menu_item_call label="Zmień nazwę stroju" name="rename"/>
- <menu_item_call label="Usuń strój" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml b/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml
deleted file mode 100644
index 9e59102788..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Sortuj według imienia" name="SortByName"/>
- <menu_item_check label="Sortuj według ostatniego mówcy" name="SortByRecentSpeakers"/>
- <menu_item_call label="Zobacz profil" name="View Profile"/>
- <menu_item_call label="Dodaj znajomość" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Zapłać" name="Pay"/>
- <menu_item_check label="Przeglądaj ikonki" name="View Icons"/>
- <menu_item_check label="Zablokuj głos" name="Block/Unblock"/>
- <menu_item_check label="Zablokuj tekst" name="MuteText"/>
- <context_menu label="Opcje Moderatora" name="Moderator Options">
- <menu_item_check label="Czat/IM dozwolony" name="AllowTextChat"/>
- <menu_item_call label="Wycisz tego uczestnika" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Odblokuj wyciszenie tego uczestnika" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Wycisz wszystkich" name="ModerateVoiceMute"/>
- <menu_item_call label="Cofnij wyciszenie wszystkim" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml
deleted file mode 100644
index b62b85d30a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
- <menu_item_check label="Porządkuj według statusu" name="sort_status"/>
- <menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
- <menu_item_check label="Zobacz udzielone prawa" name="view_permissions"/>
- <menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml b/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml
deleted file mode 100644
index ace5ebf888..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Zobacz info" name="View Info"/>
- <menu_item_call label="Czat" name="Chat"/>
- <menu_item_call label="Rozmowa" name="Call"/>
- <menu_item_call label="Aktywuj" name="Activate"/>
- <menu_item_call label="Opuść" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml
deleted file mode 100644
index c70ea2315f..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Wyświetlaj ikonki grupy" name="Display Group Icons"/>
- <menu_item_call label="Opuść zaznaczone grupy" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml
deleted file mode 100644
index 0111e0fd51..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Zobacz profil" name="View Profile"/>
- <menu_item_call label="Dodaj do znajomych" name="Add Friend"/>
- <menu_item_call label="Usuń z listy znajomych" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Mapa" name="Map"/>
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Zapłać" name="Pay"/>
- <menu_item_check label="Zablokuj/Odblokuj" name="Block/Unblock"/>
- <menu_item_call label="Teleportuj" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml
deleted file mode 100644
index dcfc48fb60..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Dodaj znajomych" name="Add Friends"/>
- <menu_item_call label="Usuń znajomych" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Zapłać" name="Pay"/>
- <menu_item_call label="Teleportuj" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 8ec3820f84..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Porządkuj według ostatnich rozmówców" name="sort_by_recent_speakers"/>
- <menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
- <menu_item_check label="Porządkuj według odległości" name="sort_distance"/>
- <menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
- <menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml
deleted file mode 100644
index b474a556bd..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Porządkuj według daty" name="sort_most"/>
- <menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
- <menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
- <menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_picks.xml b/indra/newview/skins/minimal/xui/pl/menu_picks.xml
deleted file mode 100644
index 6f6e4b7fa8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Edytuj" name="pick_edit"/>
- <menu_item_call label="Teleportuj" name="pick_teleport"/>
- <menu_item_call label="Mapa" name="pick_map"/>
- <menu_item_call label="Usuń" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml
deleted file mode 100644
index e9c00f51a9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Stwórz" name="create_pick"/>
- <menu_item_call label="Nowa reklama" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_place.xml b/indra/newview/skins/minimal/xui/pl/menu_place.xml
deleted file mode 100644
index c3b72d6abb..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Zapisz landmark" name="landmark"/>
- <menu_item_call label="Utwórz" name="pick"/>
- <menu_item_call label="Kup przepustkę" name="pass"/>
- <menu_item_call label="Edytuj" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml
deleted file mode 100644
index 3d0c1c87fb..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Dodaj folder" name="add_folder"/>
- <menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml
deleted file mode 100644
index d1f283b7aa..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
- <menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
- <menu_item_call label="Dodaj folder" name="add_folder"/>
- <menu_item_call label="Przywróć obiekt" name="restore_item"/>
- <menu_item_call label="Wytnij" name="cut"/>
- <menu_item_call label="Kopiuj" name="copy_folder"/>
- <menu_item_call label="Wklej" name="paste"/>
- <menu_item_call label="Zmień nazwę" name="rename"/>
- <menu_item_call label="Usuń" name="delete"/>
- <menu_item_call label="Rozwiń" name="expand"/>
- <menu_item_call label="Schowaj" name="collapse"/>
- <menu_item_call label="Rozwiń wszystkie foldery" name="expand_all"/>
- <menu_item_call label="Schowaj wszystkie foldery" name="collapse_all"/>
- <menu_item_check label="Sortuj według daty" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml
deleted file mode 100644
index 0139d3a987..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportuj" name="teleport"/>
- <menu_item_call label="Więcej informacji" name="more_info"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
- <menu_item_call label="Dodaj folder" name="add_folder"/>
- <menu_item_call label="Przywróć obiekt" name="restore_item"/>
- <menu_item_call label="Wytnij" name="cut"/>
- <menu_item_call label="Kopiuj landmark" name="copy_landmark"/>
- <menu_item_call label="Kopiuj SLurl" name="copy_slurl"/>
- <menu_item_call label="Wklej" name="paste"/>
- <menu_item_call label="Zmień nazwę" name="rename"/>
- <menu_item_call label="Usuń" name="delete"/>
- <menu_item_call label="Rozwiń wszystkie foldery" name="expand_all"/>
- <menu_item_call label="Schowaj wszystkie foldery" name="collapse_all"/>
- <menu_item_check label="Sortuj według daty" name="sort_by_date"/>
- <menu_item_call label="Stwórz Ulubione" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml
deleted file mode 100644
index ef836c8ecf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Mapa" name="show_on_map"/>
- <menu_item_call label="Zapłać" name="pay"/>
- <menu_item_call label="Udostępnij" name="share"/>
- <menu_item_call label="Zablokuj" name="block"/>
- <menu_item_call label="Odblokuj" name="unblock"/>
- <menu_item_call label="Wyrzuć" name="kick"/>
- <menu_item_call label="Unieruchom" name="freeze"/>
- <menu_item_call label="Uruchom" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml
deleted file mode 100644
index 4bc65eca38..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Zapisz" name="save_outfit"/>
- <menu_item_call label="Zapisz jako" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml
deleted file mode 100644
index 256500a402..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Zamknij" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_slurl.xml b/indra/newview/skins/minimal/xui/pl/menu_slurl.xml
deleted file mode 100644
index 862f538aa7..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="O miejscu" name="about_url"/>
- <menu_item_call label="Teleportuj do miejsca" name="teleport_to_url"/>
- <menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml
deleted file mode 100644
index 0e58592d46..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Rozwiń wszystkie foldery" name="Expand all folders"/>
- <menu_item_call label="Schowaj wszystkie foldery" name="Collapse all folders"/>
- <menu_item_call label="Wyczyść historię teleportacji" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml
deleted file mode 100644
index cd36c116b0..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleportuj" name="Teleport"/>
- <menu_item_call label="Więcej szczegółów" name="More Information"/>
- <menu_item_call label="Kopiuj do schowka" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml
deleted file mode 100644
index b12df08d6a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Otwórz" name="TabOpen"/>
- <menu_item_call label="Zamknij" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml b/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml
deleted file mode 100644
index 812f87bc1a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Wytnij" name="Cut"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
- <menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Usuń" name="Delete"/>
- <menu_item_call label="Zaznacz wszystko" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml
deleted file mode 100644
index 53536c8f1c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Pokaż współprzędne" name="Show Coordinates"/>
- <menu_item_check label="Pokaż O Posiadłości" name="Show Parcel Properties"/>
- <menu_item_call label="Landmark" name="Landmark"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml b/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml
deleted file mode 100644
index db729be725..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż profil Rezydenta" name="show_agent"/>
- <menu_item_call label="Kopiuj nazwę do schowka" name="url_copy_label"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_group.xml b/indra/newview/skins/minimal/xui/pl/menu_url_group.xml
deleted file mode 100644
index f340b3296a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż szczegóły o grupie" name="show_group"/>
- <menu_item_call label="Kopiuj grupę do schowka" name="url_copy_label"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_http.xml b/indra/newview/skins/minimal/xui/pl/menu_url_http.xml
deleted file mode 100644
index e73f7b6745..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Otwórz przeglądarkę internetową" name="url_open"/>
- <menu_item_call label="Otwórz w wewnętrzenej przeglądarce" name="url_open_internal"/>
- <menu_item_call label="Otwórz w zewnętrznej przeglądarce" name="url_open_external"/>
- <menu_item_call label="Kopiuj URL do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml
deleted file mode 100644
index e36fa0dd2b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż obiekt w szafie" name="show_item"/>
- <menu_item_call label="Kopiuj nazwę do schowka" name="url_copy_label"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_map.xml b/indra/newview/skins/minimal/xui/pl/menu_url_map.xml
deleted file mode 100644
index 179ab1f676..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml
deleted file mode 100644
index 7576208a9e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż szczegóły o obiekcie" name="show_object"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Teleportuj to miejsca obiektu" name="teleport_to_object"/>
- <menu_item_call label="Kopiuj nazwę obiektu do schowka" name="url_copy_label"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml
deleted file mode 100644
index 1b8dd62137..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż szczegóły o miejscu" name="show_parcel"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml
deleted file mode 100644
index eb83245c48..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Uruchom tę komendę" name="run_slapp"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml
deleted file mode 100644
index 4d4a5b4c4d..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż szczegóły o miejscu" name="show_place"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml
deleted file mode 100644
index e225546930..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teleportuj do tego miejsca" name="teleport"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_viewer.xml b/indra/newview/skins/minimal/xui/pl/menu_viewer.xml
deleted file mode 100644
index 0196dc8613..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Pomoc" name="Help">
- <menu_item_call label="[SECOND_LIFE] Portal Pomocy" name="Second Life Help"/>
- </menu>
- <menu label="Zaawansowane" name="Advanced">
- <menu label="Skróty" name="Shortcuts">
- <menu_item_check label="Zacznij latać" name="Fly"/>
- <menu_item_call label="Zamknij okno" name="Close Window"/>
- <menu_item_call label="Zamknij wszystkie okna" name="Close All Windows"/>
- <menu_item_call label="Reset widoku" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml
deleted file mode 100644
index bf85246be8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Zastąp" name="wear_replace"/>
- <menu_item_call label="Załóż" name="wear_wear"/>
- <menu_item_call label="Dodaj" name="wear_add"/>
- <menu_item_call label="Zdejmij/Odłącz" name="take_off_or_detach"/>
- <menu_item_call label="Odłącz" name="detach"/>
- <context_menu label="Dołącz do" name="wearable_attach_to"/>
- <context_menu label="Dołącz do załączników HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Zdejmij" name="take_off"/>
- <menu_item_call label="Edytuj" name="edit"/>
- <menu_item_call label="Profil obiektu" name="object_profile"/>
- <menu_item_call label="Pokaż oryginalny" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml
deleted file mode 100644
index 47cafdbd99..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Edytuj strój" name="edit"/>
- <menu_item_call label="Zdejmij" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml
deleted file mode 100644
index 7531437043..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Zdejmij" name="take_off"/>
- <menu_item_call label="Odłącz" name="detach"/>
- <menu_item_call label="Edytuj strój" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/notifications.xml b/indra/newview/skins/minimal/xui/pl/notifications.xml
deleted file mode 100644
index 6475a37465..0000000000
--- a/indra/newview/skins/minimal/xui/pl/notifications.xml
+++ /dev/null
@@ -1,2907 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Nie pokazuj tej opcji następnym razem
- </global>
- <global name="alwayschoose">
- Pozwalaj na wybór tej opcji
- </global>
- <global name="implicitclosebutton">
- Zamknij
- </global>
- <template name="okbutton">
- <form>
- <button name="OK_okbutton" text="$yestext"/>
- </form>
- </template>
- <template name="okignore">
- <form>
- <button name="OK_okignore" text="$yestext"/>
- </form>
- </template>
- <template name="okcancelbuttons">
- <form>
- <button name="OK_okcancelbuttons" text="$yestext"/>
- <button name="Cancel_okcancelbuttons" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore">
- <form>
- <button name="OK_okcancelignore" text="$yestext"/>
- <button name="Cancel_okcancelignore" text="$canceltext"/>
- </form>
- </template>
- <template name="okhelpbuttons">
- <form>
- <button name="OK_okhelpbuttons" text="$yestext"/>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Nieznany rodzaj komunikatu" name="MissingAlert">
- Twoja wersja klienta [APP_NAME] nie może wyświetlić odebranej wiadomości. Upewnij się, że posiadasz najnowszą wersję klienta.
-
-Szczegóły błędu: Błąd o nazwie &apos;[_NAME]&apos; nie został odnaleziony w pliku notifications.xml.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Błąd: nie można znaleźć następujących elementów:
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Brak samouczka na ten temat
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
- </notification>
- <notification name="BadInstallation">
- Podczas aktualizacji [APP_NAME] wystąpił błąd. Proszę odwiedzić stronę [http://get.secondlife.com pobierz najnowsza wersję] aby ściągnąć ostatnią wersję klienta.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Nie można połączyć z [SECOND_LIFE_GRID].
- &apos;[DIAGNOSTIC]&apos;
-Upewnij się, że Twoje połączenie z internetem działa.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Wzór komunikatu dla [PATH] nie został odnaleziony.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Zapisać zmiany dotyczące ubrania/części ciała?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
- </notification>
- <notification name="CompileQueueSaveText">
- W trakcie ładwania tekstu dla skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
- </notification>
- <notification name="CompileQueueSaveBytecode">
- W trakcie ładowania skompilowanego skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
- </notification>
- <notification name="WriteAnimationFail">
- Problem w zapisywaniu danych animacji. Spróbuj ponownie za kilka minut.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- W trakcie ładwania obrazu aukcji pojawił się problem z następującego powodu: [REASON].
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Nie można przeglądać zawartości więcej niż jednego obiektu naraz.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Zapisać wszystkie zmiany dotyczące ubrania/cześci ciała?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/>
- </notification>
- <notification name="FriendsAndGroupsOnly">
- Osoby spoza listy znajomych, których rozmowy głosowe i IM są ignorowane, nie wiedzą o tym.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FavoritesOnLogin">
- Pamiętaj: kiedy wyłączysz tą opcję, każdy kto używa tego komputera, może zobaczyć Twoją listę ulubionych miejsc.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GrantModifyRights">
- Udzielenie praw modyfikacji innemu Rezydentowi umożliwia modyfikację, usuwanie lub wzięcie JAKIEGOKOLWIEK z Twoich obiektów. Używaj tej opcji z rozwagą!
-Czy chcesz udzielić prawa do modyfikacji [NAME]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- Udzielenie praw modyfikacji innym Rezydentom umożliwia im modyfikację, usuwanie lub wzięcie JAKIEGOKOLWIEK z Twoich obiektów. Używaj tej opcji z rozwagą!
-Czy chcesz dać prawa modyfikacji wybranym osobom?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="RevokeModifyRights">
- Czy chcesz odebrać prawa do modyfikacji [NAME]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Czy chcesz odebrać prawa modyfikacji wybranym Rezydentom?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Założenie grupy nie jest możliwe.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Ignoruj zmiany" yestext="Zastosuj zmiany"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- Aby wysłać ogłoszenie do grupy musisz nadać mu tytuł.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- Dodajesz członków do funkcji [ROLE_NAME].
-Ta funkcja nie może być odebrana.
-Członkowie muszą sami zrezygnować z pełnienia tej funkcji.
-Chcesz kontynuować?
- <usetemplate ignoretext="Przed dodaniem nowego właściciela do grupy, proszę potwierdzić swoją decyzję." name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME].
-
-*UWAGA*
-Członek w funkcji z tym przywilejem może przypisać siebie i innych członków nie będących właścicielami do funkcji dających więcej przywilejów niż posiadane obecnie potencjalnie dające możliwości zbliżone do możliwości właściciela.
-Udzielaj tego przywileju z rozwagą.&quot;
-
-Dodać ten przywilej do funkcji [ROLE_NAME]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME]
-
-*UWAGA*
-Członek w funkcji z tym przywilejem może przypisać sobie i innychm członkom nie będącym właścicielami wszystkie przywileje potencjalnie dające możliwości zbliżone do możliwości właściciela.
-Udzielaj tego przywileju z rozwagą.
-
-Dodać ten przywilej do funkcji [ROLE_NAME]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="AttachmentDrop">
- Wybrałeś opcję opuszczenia swojego załącznika.
- Czy chcesz kontynuować?
- <usetemplate ignoretext="Potwierdź przed zdjęciem załącznika." name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- Dołączenie do tej grupy kosztuje [COST]L$.
-Chcesz kontynuować?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Dołącz"/>
- </notification>
- <notification name="JoinGroupNoCost">
- Dołączasz do grupy [NAME].
-Czy chcesz kontynuować?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Akceptuj"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Członkostwo w tej grupie kosztuje [COST]L$
-Masz za mało L$ żeby zostać członkiem.
- </notification>
- <notification name="CreateGroupCost">
- Stworzenie tej grupy kosztuje 100L$.
-W grupie powinien być więcej niż jeden członek, albo zostanie na zawsze skasowana.
-Zaproś proszę członków w ciągu 48 godzin.
- <usetemplate canceltext="Anuluj" name="okcancelbuttons" notext="Anuluj" yestext="Stwórz grupę za 100L$"/>
- </notification>
- <notification name="LandBuyPass">
- Za [COST]L$ możesz odwiedzić tą posiadłość (&apos;[PARCEL_NAME]&apos;) na [TIME] godzin. Chcesz kupić przepustkę?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- Cena sprzedaży musi być wyższa niż 0L$ jeżeli sprzedajesz komukolwiek.
-Musisz wybrać kupca jeżeli chcesz sprzedać za 0L$.
- </notification>
- <notification name="ConfirmLandSaleChange">
- Posiadłość o powierzchni [LAND_SIZE] m zostaje wystawiona na sprzedaż.
-Cena wynosi [SALE_PRICE]L$ i sprzedaż będzie autoryzowana dla [NAME].
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- UWAGA: Wybierając opcję &quot;Sprzedaj Każdemu&quot; udostępniasz swoją posiadłość do sprzedaży dla jakiegokolwiek Rezydenta [SECOND_LIFE] , nawet osób nieobecnych w tym regionie.
-
-Posiadłość o powierzchni [LAND_SIZE] m² zostaje wystawiona na sprzedaż.
-Cena wynosi [SALE_PRICE]L$ i sprzedaż będzie autoryzowana dla [NAME].
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- Czy na pewno chcesz zwrócić wszystkie obiekty udostępnione grupie [NAME] na tej posiadłości do szafy ich poprzednich właścicieli?
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów
-udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- Czy na pewno chcesz zwrócić wszystkie obiekty należące do Rezydenta [NAME] znajdujące się na tej posiadłości do szafy właściciela?
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- Czy na pewno chcesz zwrócić wszystkie Twoje obiekty znajdujące się na tej posiadłości do swojej szafy?
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- Czy na pewno chcesz zwrócić wszystkie obiekty, których nie jesteś właścicielem znajdujące się na tej posiadłości do szaf właścicieli? Wszystkie obiekty udostępnione grupie z prawem transferu, zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- Czy na pewno chcesz zwrócić wszystkie obiekty, które nie należą do [NAME] znajdujące się na tej posiadłości do szaf właścicieli? Wszystkie obiekty udostępnione grupie z prawem transferu, zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- Czy na pewno chcesz zwrócić wszystkie wymienione obiekty znajdujące się na tej posiadłości do szaf ich właścicieli?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- Czy na pewno chcesz deaktywować wszystkie obiekty w tym Regionie?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- Zwrócić obiekty z tej posiadłości, które nie są udosępnione grupie [NAME] do ich właścicieli?
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- Nie można deaktywować skryptów.
-Ten region pozwala na uszkodzenia.
-Skrypty muszą pozostać aktywne dla prawidłowego działania broni.
- </notification>
- <notification name="MultipleFacesSelected">
- Obecnie zaznaczono wiele powierzchni.
-Jeśli działanie będzie kontynuowane, oddzielne media będą ustawione na wielu powierzchniach obiektu.
-W celu umieszczenia mediów tylko na jednej powierzchni skorzystaj z Wybierz powierzchnię i kliknij na wybranej powierzchni obiektu oraz kliknij Dodaj.
- <usetemplate ignoretext="Media zostaną ustawione na wielu zaznaczonych powierzchniach" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="MustBeInParcel">
- Musisz znajdować się wewnątrz posiadłości żeby wybrać punkt lądowania.
- </notification>
- <notification name="PromptRecipientEmail">
- Proszę wpisać adres emailowy odbiorcy.
- </notification>
- <notification name="PromptSelfEmail">
- Proszę wpisać swój adres emailowy.
- </notification>
- <notification name="PromptMissingSubjMsg">
- Wysłać widokówkę z domyślnym tematem i wiadomością?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- Błąd w trakcie przetwarzania danych zdjęcia.
- </notification>
- <notification name="ErrorEncodingSnapshot">
- Błąd w kodowaniu zdjęcia.
- </notification>
- <notification name="ErrorUploadingPostcard">
- W trakcie ładowania zdjęcia pojawił się problem z następującego powodu: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- W trakcie ładowania zdjęcia ekranu do raportu pojawił się problem z następującego powodu: [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- Musisz zaakceptować Warunki Umowy (Terms of Service) by kontynuować logowanie się do [SECOND_LIFE].
- </notification>
- <notification name="CouldNotPutOnOutfit">
- Założenie stroju nie powiodło się.
-Folder stroju nie zawiera żadnego ubrania, części ciała ani załączników.
- </notification>
- <notification name="CannotWearTrash">
- Nie możesz założyć ubrania, które znajduje się w koszu.
- </notification>
- <notification name="MaxAttachmentsOnOutfit">
- Nie można dołączyć obiektu.
-Limit [MAX_ATTACHMENTS] załączników został przekroczony. Proszę najpierw odłączyć inny obiekt.
- </notification>
- <notification name="CannotWearInfoNotComplete">
- Nie możesz założyć tego artkułu ponieważ nie załadował się poprawnie. Spróbuj ponownie za kilka minut.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Oops! Brakuje czegoś.
-Należy wprowadzić nazwę użytkownika.
-
-Potrzebujesz konta aby się zalogować do [SECOND_LIFE]. Czy chcesz utworzyć je teraz?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="InvalidCredentialFormat">
- Należy wprowadzić nazwę użytkownika lub imię oraz nazwisko Twojego awatara w pole nazwy użytkownika a następnie ponownie się zalogować.
- </notification>
- <notification name="DeleteClassified">
- Usunąć reklamę &apos;[NAME]&apos;?
-Pamiętaj! Nie ma rekompensaty za poniesione koszta.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DeleteMedia">
- Wybrano usunięcie mediów związanych z tą powierzchnią.
-Czy na pewno chcesz kontynuować?
- <usetemplate ignoretext="Potwierdź przed usunięciem mediów z obiektu" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="ClassifiedSave">
- Zapisać zmiany w reklamie [NAME]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
- </notification>
- <notification name="ClassifiedInsufficientFunds">
- Nie posiadasz wystarczających środków aby dodać reklamę.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Usuń zdjęcie &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DeleteOutfits">
- Skasować wybrane stroje?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- Odwiedzić internetową stronę Imprez [SECOND_LIFE]?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- Wybierz propozycję, którą chcesz zobaczyć.
- </notification>
- <notification name="SelectHistoryItemToView">
- Wybierz obiekt z historii, który chcesz zobaczyć.
- </notification>
- <notification name="CacheWillClear">
- Bufor danych zostanie wyczyszczony po restarcie aplikacji [APP_NAME].
- </notification>
- <notification name="CacheWillBeMoved">
- Bufor danych zostanie przeniesiony po restarcie aplikacji [APP_NAME].
-Pamiętaj: Opcja ta wyczyszcza bufor danych.
- </notification>
- <notification name="ChangeConnectionPort">
- Ustawienia portu zostają zaktualizowane po restarcie aplikacji [APP_NAME].
- </notification>
- <notification name="ChangeSkin">
- Nowa skórka zostanie wczytana po restarcie aplikacji [APP_NAME].
- </notification>
- <notification name="ChangeLanguage">
- Zmiana języka zadziała po restarcie [APP_NAME].
- </notification>
- <notification name="GoToAuctionPage">
- Odwiedzić stronę internetową [SECOND_LIFE] żeby zobaczyć szczgóły aukcji lub zrobić ofertę?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- Zapisać zmiany?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- Nie można zapisać gesturki.
-Ta gesturka ma zbyt wiele etapów.
-Usuń kilka etapów i zapisz jeszcze raz.
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- Zapis gesturki nie powiódł się. Spróbuj jeszcze raz za kilka minut.
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- Nie można zapisać gesturki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
- </notification>
- <notification name="GestureSaveFailedReason">
- Nie można zapisać gesturki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- Nie można zapisać notki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
- </notification>
- <notification name="SaveNotecardFailReason">
- Nie można zapisać notki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
- </notification>
- <notification name="ScriptCannotUndo">
- Nie można cofnąć wszystkich zmian w Twojej wersji skryptu.
-Czy chcesz załadować ostatnią wersję zapisaną na serwerze?
-(*UWAGA* Ta operacja jest nieodwracalna.)
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- Nie można zapisać skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- Nie można zapisać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
- </notification>
- <notification name="SaveBytecodeFailReason">
- Nie można zapisać skompilowanego skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej.
- </notification>
- <notification name="StartRegionEmpty">
- Oops, Twoje miejsce startu nie zostało określone.
-Wpisz proszę nazwę regionu w lokalizację startu w polu Lokalizacja Startu lub wybierz Moja ostatnia lokalizacja albo Miejsce Startu.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- Nie można uruchomić lub zatrzymać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
- </notification>
- <notification name="CannotDownloadFile">
- Nie można załadować pliku
- </notification>
- <notification name="CannotWriteFile">
- Nie można zapisać pliku [[FILE]]
- </notification>
- <notification name="UnsupportedHardware">
- Niestety Twój komputer nie spełnia minimalnych wymogów sprzętowych dla poprawnego działania [APP_NAME]. Możesz odczuwać bardzo niską wydajność operacyjną. Niestety portal pomocy, [SUPPORT_SITE] nie posiada informacji na temat poprawnej konfiguracji technicznej Twojego systemu.
-
-Po więcej info, odwiedź stronę [_URL] .
- <url name="url" option="0">
- http://www.secondlife.com/corporate/sysreqs.php
- </url>
- <usetemplate ignoretext="Dysk twardy mojego komputera nie jest wspomagany" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="UnknownGPU">
- Twój system jest wyposażony w kartę graficzną, która nie jest rozpoznana przez [APP_NAME].
-Zdarza się to często w przypadku nowego sprzętu, który nie był testowany z [APP_NAME]. Prawdopodobnie wystarczy dostosowanie ustawień grafiki aby działanie było poprawne.
-(Ja &gt; Właściwości &gt; Grafika).
- <form name="form">
- <ignore name="ignore" text="Karta graficzna nie została zidentyfikowana."/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- [APP_NAME] zawiesił się podczas inicjalizacji sterowników graficznych.
-Jakość grafiki została zmniejszona - może to pomóc.
-Pewne funkcje graficzne zostały wyłączone. Zalecamy aktualizcje sterowników graficznych.
-Możesz podnieść jakość grafiki pod Ustawienia &gt; Grafika.
- </notification>
- <notification name="RegionNoTerraforming">
- Region [REGION] nie pozwala na formowanie powierzchni ziemi.
- </notification>
- <notification name="CannotCopyWarning">
- Nie masz pozwolenia na kopiowanie następujących obiektów:
-[ITEMS]
-i stracisz je w momencie przekazania. Czy na pewno chcesz oddać te obiekty?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="CannotGiveItem">
- Podarowanie obiektu nie powiodło się.
- </notification>
- <notification name="TransactionCancelled">
- Transakcja anulowana
- </notification>
- <notification name="TooManyItems">
- Jednorazowo możesz podarować maksymalnie 42 obiekty z szafy.
- </notification>
- <notification name="NoItems">
- Nie masz praw do transferu wybranych obiektów.
- </notification>
- <notification name="CannotCopyCountItems">
- Nie masz praw do skopiowania [COUNT] wybranych obiektów. Obiekty znikną z Twojej szafy.
-Na pewno chcesz oddać te obiekty?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="CannotGiveCategory">
- Nie masz praw do transferu wybranego foldera.
- </notification>
- <notification name="FreezeAvatar">
- Unieruchomić tego awatara?
-Awatar tymczasowo nie będzie mógł się poruszać, nie będzie mógł używać czatu (IM) i nie będzie w stanie odziaływać na świat.
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Odblokuj" yestext="Unieruchom"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- Unieruchowmić [AVATAR_NAME]?
-Ta osoba tymczasowo nie będzie mógła się poruszać, nie będzie mógł używać czatu (IM) i nie będzie w stanie odziaływać na świat.
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Odblokuj" yestext="Unieruchom"/>
- </notification>
- <notification name="EjectAvatarFullname">
- Wyrzucić [AVATAR_NAME] z Twojej posiadłości?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wyrzuć i zabroń wstępu (ban)" yestext="Wyrzuć"/>
- </notification>
- <notification name="EjectAvatarFromGroup">
- Wyrzuć [AVATAR_NAME] z grupy [GROUP_NAME]
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- BŁĄD OTRZYMYWANIA: Zbyt wiele wybranych obiektów.
- </notification>
- <notification name="AcquireErrorObjectSpan">
- BŁĄD OTRZYMYWANIA: Obiekty przekraczają granicę regionów. Przemieść wszystkie otrzymywane obiekty do jednego regionu.
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-Odwiedź stronę [_URL] po więcej informacji na temat zakupu L$?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- Nie można połączyć [COUNT] obiektów.
-Maksymalnie można połączyć [MAX] obiektów.
- </notification>
- <notification name="CannotLinkIncompleteSet">
- Możesz łączyć tylko kompletne zbiory obiektów i musisz wybrać więcej niż jeden obiekt.
- </notification>
- <notification name="CannotLinkModify">
- Nie możesz połączyć obiektów ponieważ nie masz praw modyfikacji dla wszystkich obiektów.
-
-Upewnij się, że żaden z obiktów nie jest zablokowany i że wszystkie obiekty należą do Ciebie.
- </notification>
- <notification name="CannotLinkDifferentOwners">
- Nie możesz połączyć obiektów ponieważ należą one do różnych osób.
-
-Upewnij sie, że wszystkie wybrane obiekty należą do Ciebie.
- </notification>
- <notification name="NoFileExtension">
- Niepoprawna końcówka nazwy pliku: &apos;[FILE]&apos;
-
-Upewnij się, że nazwa pliku ma poprawaną końcówkę.
- </notification>
- <notification name="InvalidFileExtension">
- Niepoprawna końcówka nazwy pliku - [EXTENSION]
-Oczekiwana - [VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- Nie można otworzyć załadowanego pliku dźwiękowego:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- Plik nie jest w formacie RIFF WAVE:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- Plik nie jest w formacie PCM WAVE:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- Plik zawiera niewłaściwą liczbę kanałów (musi być mono albo stereo):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- Plik zawiera niewłaścią częstotliwość (musi być 44.1k):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- Plik zawiera niewłaściwą szerokość danych (musi być 8 albo 16 bitów):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- Brak bloku &apos;data&apos; w nagłówku pliku WAV:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChunkSize">
- Niewłaściwy rozmiar &quot;chunk&quot; w pliku WAV:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- Plik audio jest zbyt długi (10 sekund maksimum):
-[FILE]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- Nie można otworzyć tymczasowego skompresowango pliku dźwiękowego w celu zapisu: [FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- Nieznany błąd kodowania Vorbis w: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Kodowanie pliku: [FILE] nie powidło się.
- </notification>
- <notification name="CorruptedProtectedDataStore">
- Nie można wpisać Twojego imienia użytkownika ani hasła. To może się zdarzyć kiedy zmieniasz ustawienia sieci.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CorruptResourceFile">
- Skorumpowany plik zasobów: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- Nieznana wersja pliku zasobów Linden w pliku: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- Nie można utworzyć pliku wyjściowego: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- [APP_NAME] obecnie nie wspomaga ładowania grupowego plików animacji.
- </notification>
- <notification name="CannotUploadReason">
- Ładowanie pliku [FILE] nie powiodło się z powodu: [REASON]
-Spróbuj jeszcze raz póżniej.
- </notification>
- <notification name="LandmarkCreated">
- Dodano &quot;[LANDMARK_NAME]&quot; do folderu [FOLDER_NAME].
- </notification>
- <notification name="LandmarkAlreadyExists">
- Posiadasz już landmark dla tej lokalizacji.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- Nie możesz zapamiętać tego miejsca (LM) ponieważ właściciel posiadłości nie pozwala na to.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- &apos;Rekompilacja&apos; nie powiodła się.
-
-Wybierz obiekty zawierające skrypty.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- &apos;Rekompilacja&apos; nie powiodła się.
-
-Wybierz skryptowane obiekty do których masz prawa modyfikacji.
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- &apos;Resetowanie&apos; nie powiodło się.
-
-Wybierz obiekty zawierające skrypty.
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- &apos;Resetowanie&apos; nie powiodło się.
-
-Wybierz skryptowane obiekty do których masz prawa modyfikacji.
- </notification>
- <notification name="CannotOpenScriptObjectNoMod">
- Nie można otworzyć skryptu bez prawa do modyfikacji obiektu.
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- &apos;Uruchomienie&apos; skryptów nie powiodło się.
-
-Wybierz obiekty zawierające skrypty.
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- &apos;Zatrzymanie&apos; skryptów nie powiodło się.
-
-Wybierz obiekty zawierające skrypty.
- </notification>
- <notification name="NoFrontmostFloater">
- Brak górnego okna do zapisu.
- </notification>
- <notification name="SeachFilteredOnShortWords">
- Twoje zapytanie wyszukiwania zostło zmienione - zbyt krótkie słowa zostały usunięte.
-
-Nowe zapytanie: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- Użyte terminy wyszukiwania były zbyt krótkie - wyszukiwanie zostało anulowane.
- </notification>
- <notification name="CouldNotTeleportReason">
- Teleportacja nie powiodła się.
-[REASON]
- </notification>
- <notification name="invalid_tport">
- Niestety, pojawił się błąd podczas próby teleportacji. Proponujemy wylogowanie się i spróbowanie teleportacji ponownie.
-Jeżeli nadal otrzymujesz tę wiadomość proponujemy odwiedzić stronę [SUPPORT_SITE].
- </notification>
- <notification name="invalid_region_handoff">
- Niestety, pojawił się błąd podczas próby przedostania się na drugi region. Proponujemy wylogowanie się i spróbowanie przedostania się na drugi region ponownie.
-Jeżeli nadal otrzymujesz tę wiadomość proponujemy odwiedzić stronę [SUPPORT_SITE].
- </notification>
- <notification name="blocked_tport">
- Przepraszamy, teleportacja jest chwilowo niedostępna. Spróbuj jeszcze raz.
-Jeśli nadal nie możesz się teleportować wyloguj się i ponownie zaloguj.
- </notification>
- <notification name="nolandmark_tport">
- Przepraszamy, ale nie możemy znaleźć miejsca docelowego.
- </notification>
- <notification name="timeout_tport">
- Przepraszamy, ale nie udało się przeprowadzić teleportacji. Spróbuj jeszcze raz.
- </notification>
- <notification name="noaccess_tport">
- Przepraszamy, ale nie masz dostępu do miejsca docelowego.
- </notification>
- <notification name="missing_attach_tport">
- Czekamy na Twoje akcesoria. Możesz poczekać kilka minut lub zrobić relog przed następną próbą teleportacji.
- </notification>
- <notification name="too_many_uploads_tport">
- Obecnie ten region ma problemy z ładowaniem obiektów w związku z czym teleportacja bardzo sie opóźnia.
-Spróbuj jeszcze raz za kilka minut albo teleportuj się do mniej zatłoczonego miejsca.
- </notification>
- <notification name="expired_tport">
- Przepraszamy, ale nie udało się przeprowadzić teleportacji wystarczająco szybko. Spróbuj jeszcze raz za kilka minut.
- </notification>
- <notification name="expired_region_handoff">
- Przepraszamy, ale nie udało się przeprowadzić zmiany regionu wystarczająco szybko. Spróbuj jeszcze raz za kilka minut.
- </notification>
- <notification name="no_host">
- Nie możemy znaleść miejsca docelowego. To miejsce może być chwilowo nieosiągalne albo przestało istnieć.
-Spróbuj jeszcze raz za kilka minut.
- </notification>
- <notification name="no_inventory_host">
- Szafa chwilowo nie działa.
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- Nie można wybrać właściciela posiadłości.
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- Nie można wybrać właściciela posiadłości ponieważ wybrany obszar przekracza granicę regionów. Wybierz mniejszy obszar i spróbuj jeszcze raz.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Ta posiadłość jest wystawiona na aukcję. Wymuszenie własności anuluje aukcję i potencjalnie może zdenerwować zainteresowanych Rezydentów, jeżeli licytacja już się rozpoczęła.
-Wymusić własność?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- Nie można sfinalizować:
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotContentifyNoRegion">
- Nie można sfinalizować:
-Region nie znaleziony.
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- Nie można porzucić posiadłości:
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- Nie można porzucić posiadłości:
-Region nie znaleziony.
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- Nie można kupić posiadłości:
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Nie można kupić posiadłości:
-Region nie znaleziony.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- Okno zakupu landu nie może zostać zamknięte dopóki aplikacja [APP_NAME] nie określi ceny dla tej transkacji.
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- Nie można przekazać posiadłości:
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotDeedLandNoGroup">
- Nie można przekazać posiadłości:
-Grupa nie została wybrana.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Brak możliwości przepisania posiadłości grupie:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- Nie można przekazać posiadłości:
-Wiele posiadłości jest wybranych.
-
-Spróbuj wybrać pojedynczą posiadłość.
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- Nie można przekazać posiadłości:
-Serwer aktualizuje dane własności.
-
-Spróbuj jeszcze raz póżniej.
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- Nie możesz przekazać posiadłości:
-Region [REGION] nie pozwala na transfer posiadłości.
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- Nie można porzucić posiadłości:
-Serwer aktualizuje dane posiadłości.
-
-Spróbuj jeszcze raz póżniej.
- </notification>
- <notification name="CannotReleaseLandSelected">
- Nie możesz porzucić posiadłości:
-Nie jesteś właścicielem wszystkich wybranych posiadłości.
-
-Wybierz pojedynczą posiadłość.
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- Nie możesz porzucić posiadłości:
-Nie masz praw do porzucenia tej posiadłości.
-
-Twoje posiadłości są podkreślone na zielono.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Brak możliwości porzucenia posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- Nie możesz porzucić posiadłości:
-Region [REGION] nie pozwala na transfer posiadłości.
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- Nie można porzucić posiadłości:
-Musisz wybrać całą posiadłość by ją porzucić.
-Wybierz całą posiadłość albo najpierw ją podziel.
- </notification>
- <notification name="ReleaseLandWarning">
- Porzucasz posiadłość o powierzchni [AREA] m².
-Porzucenie tej posiadłości usunie ją z Twoich własności.
-Nie otrzymasz za to żadnej opłaty.
-
-Porzucić posiadłość?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- Nie można podzielić posiadłości:
-
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- Nie można podzielić posiadłości:
-
-Posiadłość została wybrana w całości.
-Spróbuj wybrać część posiadłości.
- </notification>
- <notification name="LandDivideWarning">
- Podział tej posiadłości stworzy dwie posiadłości z których każda będzie mogła mieć indywidualne ustawienia.
-Niektóre ustawienia zostaną zmienione na domyślne po tej operacji.
-
-Podzielić posiadłość?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Brak możliwości podziału posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Brak możliwości złączenia posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- Nie można połączyć posiadłości:
-Posiadłości nie zostały wybrane.
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- Nie można połączyć posiadłości:
-Tylko jedna posiadłość została wybrana.
-
-Wybierz obaszar usytuowany na obu posiadłościach.
- </notification>
- <notification name="CannotJoinLandSelection">
- Nie można połączyć posiadłości:
-Musisz wybrać więcej niż jedną posiadłość.
-
-Wybierz obaszar usytuowany na obu posiadłościach.
- </notification>
- <notification name="JoinLandWarning">
- Połączenie tego obszaru utworzy jedną większą posiadłość ze wszystkich posiadłości przecinających wybrany prostokąt. Nazwa i opcje posiadłości bedą musiały zostać skonfigurowane.
-
-Połączyć posiadłości?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- Ta notka musi być zapisana żeby mogła być skopiowana lub zobaczona. Zapisać notkę?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- Skopiować ten obiekt do Twojej szafy?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Skopiuj"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- Zmiana rozdzielczości do [RESX] x [RESY] nie powidła się
- </notification>
- <notification name="ErrorUndefinedGrasses">
- Błąd: niezdefiniowane trawy: [SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- Bład: niezdefiniowane drzewa: [SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- Nie można zapisać &apos;[NAME]&apos; do pliku stroju. Musisz zwolnić trochę miejsca na Twoim komputerze i zapisać strój jeszcze raz.
- </notification>
- <notification name="CannotSaveToAssetStore">
- Nie można zapisać [NAME] w centralnym zbiorze danych.
-Zazwyczaj jest to tymczasowy problem. Możesz kontynuować modyfikacje i zapisać strój ponownie za kilka minut.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- Nastąpiło wylogowanie z [SECOND_LIFE]
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Wyłącz" yestext="Kontynuuj"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- Nie możesz kupić posiadłości dla grupy.
-Nie masz praw kupowania posiadłości dla Twojej aktywnej grupy.
- </notification>
- <notification label="Add Friend" name="AddFriendWithMessage">
- Znajomi mogą pozwalać na odnajdywanie się wzajemnie na mapie i na otrzymywanie notyfikacji o logowaniu do [SECOND_LIFE].
-
-Zaproponować znajomość [NAME]?
- <form name="form">
- <input name="message">
- Chcesz zawrzeć znajomość?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zapisz strój" name="SaveOutfitAs">
- Zapisz to co noszę jako nowy strój:
- <form name="form">
- <input name="message">
- [DESC] (nowe)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zapisz część stroju" name="SaveWearableAs">
- Zapisz obiekt w mojej Szafie jako:
- <form name="form">
- <input name="message">
- [DESC] (nowy)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zmień nazwę stroju" name="RenameOutfit">
- Nowa nazwa stroju:
- <form name="form">
- <input name="new_name">
- [NAME]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Czy chcesz usunąć [NAME] z listy znajomych?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- Chcesz usunąć grupę osób z listy Twoich znajomych?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do
-** [AVATAR_NAME] **
-z posiadłości innych w tym symulatorze?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do
-** [AVATAR_NAME] **
-ze wszystkich posiadłości w tym symulatorze?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- Na pewno chcesz usunąć wszystkie obiekty (skryptowane i nie) należące do
-** [AVATAR_NAME] **
-ze wszystkich posiadłości w tym symulatorze?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- Musisz nadać tytuł Twojej reklamie.
- </notification>
- <notification name="MinClassifiedPrice">
- Minimalna cena za publikację wynosi [MIN_PRICE]L$.
-
-Wybierz wyższą cenę.
- </notification>
- <notification name="ConfirmItemDeleteHasLinks">
- Co najmiej jeden z elementów, które masz posiada połączone z nim obiekty. Jeśli go usuniesz połączenia zostaną usunięte na stałe. Zaleca się usunięcie połączeń w pierwszej kolejności.
-
-Jesteś pewnien/pewna, że chcesz usunąć te elementy?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- Przynajmniej jeden z wybranych obiektów jest niekopiowalny.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów jest niekopiwalny.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- Przynajmniej jeden z wybranych obiektów jest niekopiowalny.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów jest niekopiwalny.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- Przynajmnie jeden obiekt jest zablokowany.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- Przynajmniej jeden obiekt nie należy do Ciebie.
-Jeżeli będziesz kontynuować prawa następnego właściciela zostaną przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów.
-
-Na pewno chcesz wziąść te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- Przynajmnie jeden obiekt jest zablokowany.
-Przynajmniej jeden obiekt nie należy do Ciebie.
-Jeżeli będziesz kontynuować prawa następnego właściciela zostaną przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów.
-
-Na pewno chcesz wziąść te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- Nie możesz kupić posiadłości ponieważ wybrany obszar przekracza granicę regionów.
-
-Wybierz mniejszy obszar i spróbuj jeszcze raz.
- </notification>
- <notification name="DeedLandToGroup">
- Po przekazaniu tej posiadłości grupa będzia musiała mieć i utrzymywać wystarczający kredyt na używanie posiadłości. Cena zakupu posiadłości nie jest zwracana właścicielowi. Jeżeli przekazana posiadłość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiędzy członków grupy.
-
-Przekazać tą posiadłość o powierzchni [AREA] m² grupie &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Po przekazaniu tej posiadłości grupa będzia musiała mieć i utrzymywać wystarczający kredyt na używanie posiadłości.
-Przekazanie będzie zawierać równoczesne przypisanie posiadłości do grupy od &apos;[NAME]&apos;.
-Cena zakupu posiadłości nie jest zwracana właścicielowi. Jeżeli przekazana posiadłość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiędzy członków grupy.
-
-Przekazać tą posiadłość o powierzchni [AREA] m² grupie &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- Ustawienia grafiki zostały zmienione do bezpiecznego poziomu ponieważ opcja -safe została wybrana.
- </notification>
- <notification name="DisplaySetToRecommended">
- Ustawienia grafiki zostały zmienione do zalecanego poziomu na podstawie konfiguracji Twojego systemu.
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarMovedDesired">
- Miejsce, do którego chcesz się teleportować jest chwilowo nieobecne.
-Zostałeś przeniesiony do regionu sąsiedniego.
- </notification>
- <notification name="AvatarMovedLast">
- Twoje miejsce startu jest obecnie niedostępne.
-Zostałeś przeniesiony do sąsiedniego regionu.
- </notification>
- <notification name="AvatarMovedHome">
- Twoje miejsce startu jest obecnie niedostępne.
-Zostałeś przeniesiony do pobliskiego regionu.
-Możesz ustawić nowe miejsce startu.
- </notification>
- <notification name="ClothingLoading">
- Twoje ubranie wciąż się ładuje.
-Możesz normalnie używać [SECOND_LIFE], inni użytkownicy będą Cię widzieli poprawnie.
- <form name="form">
- <ignore name="ignore" text="Ładowanie ubrań nadal trwa"/>
- </form>
- </notification>
- <notification name="FirstRun">
- Instalacja [APP_NAME] zakończona.
-
-Jeżeli używasz [SECOND_LIFE] po raz pierwszy to musisz stworzyć konto żeby móc się zalogować.
-Czy chcesz przejść na stronę [http://join.secondlife.com secondlife.com] żeby stworzyć nowe konto?
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Nowe konto..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- Problemy z połączeniem. Problem może być spowodowany Twoim połączeniem z Internetem albo może istnieć po stronie [SECOND_LIFE_GRID].
-
-Możesz sprawdzić swoje połączenie z Internetem i spróbować ponownie za kilka minut lub połączyć się ze stroną pomocy technicznej tutaj [SUPPORT_SITE] lub wybrać Teleportuj by teleportować się do swojego miejsca startu.
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="Pomoc"/>
- <button name="Teleport" text="Teleportuj"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- Twoja postać pojawi się za moment.
-
-Używaj strzałek żeby sie poruszać.
-Naciśnij F1 w dowolnej chwili po pomoc albo żeby dowiedzieć się więcej o [SECOND_LIFE].
-Wybierz awatara właściwej płci.
-Ten wybór będzie można później zmienić.
- <usetemplate name="okcancelbuttons" notext="Kobieta" yestext="Mężczyzna"/>
- </notification>
- <notification name="CantTeleportToGrid">
- Nie można teleportować do [SLURL], ponieważ jest na innym gridzie ([GRID]) niż obecny grid ([CURRENT_GRID]). Proszę zamknąć przeglądarkę i spróbować ponownie.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GeneralCertificateError">
- Połączenie z serwerem nie mogło zostać nawiązane.
-[REASON]
-
-SubjectName: [SUBJECT_NAME_STRING]
-IssuerName: [ISSUER_NAME_STRING]
-Valid From: [VALID_FROM]
-Valid To: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TrustCertificateError">
- Wydawca certyfikatu dla tego serwera nie jest znany.
-
-Informacje o certyfikacie:
-SubjectName: [SUBJECT_NAME_STRING]
-IssuerName: [ISSUER_NAME_STRING]
-Valid From: [VALID_FROM]
-Valid To: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-Czy chcesz zaufać temu wydawcy?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Zaufaj"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] [PRICE]L$ Masz za mało L$.
- </notification>
- <notification name="GrantedModifyRights">
- Masz teraz prawa modyfikacji obiektów należących do [NAME].
- </notification>
- <notification name="RevokedModifyRights">
- Prawa modyfikacji obiektów należących do [NAME] zostały Ci odebrane.
- </notification>
- <notification name="FlushMapVisibilityCaches">
- To spowoduje wyczyszczenie buforów map regionu.
-Jest to użyteczne wyłącznie podczas szukania błędów.
-(Podczas produkcji poczekaj 5 minut i mapy wszystkich zostaną uaktualnione po relogu.)
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- Nie możesz zakupić więcej niż jednego obiektu w tym samym czasie. Proszę wybrać tylko jeden obiekt i spróbować ponowanie.
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- Nie można kopiować zawartości więcej niż jednego obiektu naraz.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- Teleportować wszystkich Rezydentów z tego regionu to ich miejsca startu?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- Na pewno chcesz odesłać wszystkie obiekty należące do
-[USER_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- Nie można ustawić tekstur regionu:
-Tekstura terenu [TEXTURE_NUM] ma niewłaściwą głębię koloru - [TEXTURE_BIT_DEPTH].
-Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub mniejszą i ponownie kliknij Zastosuj.
- </notification>
- <notification name="InvalidTerrainSize">
- Nie można ustawić tekstur regionu:
-Tekstura terenu [TEXTURE_NUM] jest za duża - [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub mniejszą i ponownie kliknij Zastosuj.
- </notification>
- <notification name="RawUploadStarted">
- Ładowanie rozpoczęte. Może potrwać do dwóch minut zależnie od prędkości Twojego połączenia.
- </notification>
- <notification name="ConfirmBakeTerrain">
- Na pewno chcesz zapisać obecne ukształtowanie terenu jako punkt odniesienia dla górnego i dolnego limitu terenu i jako domyślą wartość dla opcji Odtwórz?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- Maksymalna liczba gości wynosi [MAX_AGENTS].
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- Maksymalna liczba niepożądanych Rezydentów (banów) wynosi [MAX_BANNED].
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- Próba dodania [NUM_ADDED] osób nie powiodła się:
-[MAX_AGENTS] [LIST_TYPE] limit przekroczony o [NUM_EXCESS].
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- Możesz mieć maksymalnie [MAX_GROUPS] dozwolonych grup.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Ustal"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- Możesz mieć maksymalnie [MAX_MANAGER] zarządców Majątku.
- </notification>
- <notification name="OwnerCanNotBeDenied">
- Nie możesz dodać właściciela majątku do listy &apos;Niepożądanych Rezydentów (banów)&apos; majątku.
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- Nie możesz zmienić wyglądu podczas ładowania ubrań i kształtów.
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- Tytuł Twojej reklamy musi zaczynać się od litery (A-Z) albo cyfry. Znaki przestankowe są niedozwolone.
- </notification>
- <notification name="CantSetBuyObject">
- Nie możesz wybrać Kup obiekt ponieważ obiekt nie jest na sprzedaż.
-Wybierz obiekt na sprzedaż i spróbuj jeszcze raz.
- </notification>
- <notification name="FinishedRawDownload">
- Plik surowego terenu załadowany pod:
-[DOWNLOAD_PATH].
- </notification>
- <notification name="DownloadWindowsMandatory">
- Nowa wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Musisz zainstalować nową wersję żeby używać [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Wyłącz program" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadWindows">
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- Nowa wersja [APP_NAME] jest dostępna.
-[MESSAGE]
-Musisz pobrać aktualizację aby korzystać z [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Wyjdź" yestext="Pobieranie"/>
- </notification>
- <notification name="DownloadLinux">
- Aktualizacja [APP_NAME] jest dostępna.
-[MESSAGE]
-Ta aktualizacja nie jest wymagana ale zaleca się jej instalację w celu poprawienia szybkości i stabilności.
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Pobieranie"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- Uaktualniona wersja [APP_NAME]została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Pobieranie"/>
- </notification>
- <notification name="DownloadMacMandatory">
- Nowa wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Musisz zainstalować nową wersję żeby używać [APP_NAME].
-
-Pobrać i zapisać w folderze Aplikacji?
- <usetemplate name="okcancelbuttons" notext="Wyłącz program" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadMac">
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-Pobrać i zapisać w folderze Aplikacji?
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-Pobrać i zapisać w folderze Aplikacji?
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
- </notification>
- <notification name="FailedUpdateInstall">
- Podczas aktualizacji pojawił się błąd. Proszę pobrać i zainstalować najnowszego klienta z http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FailedRequiredUpdateInstall">
- Nie można zainstalować wymaganej aktualizacji. Nie będzie można zalogować się dopóki [APP_NAME] nie zostanie zaktualizowana.
- Proszę pobrać i zainstalować najnowszą wersję z http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="Rezygnuj"/>
- </notification>
- <notification name="UpdaterServiceNotRunning">
- Istnieje obowiązkowa aktualizacja dla Second Life. Możesz ją pobrać z http://www.secondlife.com/downloads lub zainstalować teraz.
- <usetemplate name="okcancelbuttons" notext="Opuść Second Life" yestext="Pobierz i zainstaluj teraz"/>
- </notification>
- <notification name="DownloadBackgroundTip">
- Aktualizacja dla [APP_NAME] została pobrana.
-Wersja [VERSION] [[RELEASE_NOTES_FULL_URL] Informacja o tej aktualizacji]
- <usetemplate name="okcancelbuttons" notext="Później..." yestext="Zainstaluj teraz i restartuj [APP_NAME]"/>
- </notification>
- <notification name="DownloadBackgroundDialog">
- Aktualizacja [APP_NAME] została pobrana.
-Wersja [VERSION] [[RELEASE_NOTES_FULL_URL] Informacja o aktualizacji]
- <usetemplate name="okcancelbuttons" notext="Później..." yestext="Zainstaluj teraz i restartuj [APP_NAME]"/>
- </notification>
- <notification name="RequiredUpdateDownloadedVerboseDialog">
- Pobrano wymaganą aktualizację.
-Wersja [VERSION]
-
-W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RequiredUpdateDownloadedDialog">
- W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeedObjectToGroup">
- Przekazanie tego obiektu spowoduje, że grupa:
-* Otrzyma L$ zapłacone temu obiektowi
- <usetemplate ignoretext="Proszę potwierdzić decyzję przed przepisaniem obiektu do grupy" name="okcancelignore" notext="Anuluj" yestext="Przekaż"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Czy chcesz otworzyć swoją przeglądarkę internetową by zobaczyć zawartość?
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć stronę internetową" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- By dokonać zmian i aktualizacji swojego konta, odwiedź [http://secondlife.com/account/ Dashboard].
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by dokonać zmian w konfiguracji mojego konta" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- Odwiedź [SECOND_LIFE] Wiki i zobacz jak zgłaszać problemy z bezpieczeństwem danych.
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by dowiedzieć się więcej na temat zgłaszania problemów bezpieczeństwa" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- Odwiedź [SECOND_LIFE] Wiki pytań i odpowiedzi.
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć QA Wiki" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- Odwiedź [SECOND_LIFE] katalog publicznych problemów, gdzie możesz zgłaszać błędy i inne problemy.
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by wysłać Błędy klienta" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Otwórz oficjalny blog Lindenów żeby zobaczyć nowe wiadomości i informacje.
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć blog" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Czy chcesz otworzyć samouczek Języka skryptowania?
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by samouczek Języka skryptowania" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Czy napewno chcesz odwiedzić portal LSL Portal?
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by LSL Portal" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnToOwner">
- Czy na pewno chcesz zwrócić wybrane obiekty do ich właścicieli? Wszystkie udostępnione obiekty z prawem transferu zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wszystkie udostępnione obiekty bez prawa transferu zostaną usunięte!
- <usetemplate ignoretext="Potwierdź zanim zwrócisz obiekty do ich właścicieli" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- Jesteś członkiem grupy [GROUP].
-Chcesz opuścić grupę?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Napewno chcesz wyrzucić wszystkich Rezydentów z gridu?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Wyrzuć wszystkich Rezydentów"/>
- </notification>
- <notification name="MuteLinden">
- Przepraszamy, ale nie możesz zablokować Lindena.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- Aukcja nie może zostać rozpoczęta w posiadłości, która została już wcześniej wystawiona na aukcję. Deaktywuj opcję sprzedaży posiadłości jeżeli chcesz rozpocząć aukcję.
- </notification>
- <notification label="Zablokuj obiekty według wpisanej nazwy" name="MuteByNameFailed">
- Rezydent/obiekt jest już zablokowany.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- Pomimo, że jest to dozwolone, usunięcie zawartości może zniszczyć obiekt. Chcesz usunąć?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- Nie możesz dać wizytówki w tym momencie. Spróbuj jeszcze raz za chwilę.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- Nie możesz zaoferować znajomości w tym momencie. Spróbuj jeszcze raz za chwilę.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- Tryb Pracy jest włączony.
-Czat i IM będą ukryte. Wysłane IM będą otrzymywały Twoją odpowiedź Trybu Pracy. Propozycje teleportacji będą odrzucone.
-Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywane w folderze &quot;Kosz&quot; w Twojej szafie.
- <usetemplate ignoretext="Status zmieniony na Tryb pracy" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- Należysz już do maksymalnej ilości grup. Opuść proszę przynajmniej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów.
-[NAME] oferuje Ci członkostwo w grupie.
- <usetemplate name="okcancelbuttons" notext="Odmów" yestext="Przyjmij"/>
- </notification>
- <notification name="JoinedTooManyGroups">
- Należysz już do maksymalnej ilości grup. Opuść proszę przynajmiej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="KickUser">
- Wyrzuć tego Rezydenta, wysyłając następujący komunikat.
- <form name="form">
- <input name="message">
- Administrator wylogował Cię.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- Z jakim komunikatem wyrzucić wszystkich użytkowników z regionu?
- <form name="form">
- <input name="message">
- Administrator wylogował Cię.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- Unieruchom tego Rezydenta, wysyłając następujący komunikat.
- <form name="form">
- <input name="message">
- Unieruchomiono Cię. Nie możesz się ruszać ani rozmawiać. Administrator skontaktuje się z Tobą poprzez IM.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- Cofnij unieruchomienie tego Rezydenta, wysyłając następujący komunikat.
- <form name="form">
- <input name="message">
- Odblokowano Cię.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="SetDisplayNameSuccess">
- Witaj [DISPLAY_NAME]!
-
-Podobnie jak w realnym życiu potrzeba trochę czasu zanim wszyscy dowiedzą się o nowej nazwie. Kolejne kilka dni zajmie [http://wiki.secondlife.com/wiki/Setting_your_display_name aktualizacja nazwy] w obiektach, skryptach, wyszukiwarce, etc.
- </notification>
- <notification name="SetDisplayNameBlocked">
- Przepraszamy, nie można zmienić Twojej wyświetlanej nazwy. Jeśli uważasz ze jest to spowodowane błędem skontaktuj się z obsługą klienta.
- </notification>
- <notification name="SetDisplayNameFailedLength">
- Przepraszamy, ta nazwa jest zbyt długa. Wyświetlana nazwa może mieć maksymalnie [LENGTH] znaków.
-
-Proszę wprowadzić krótszą nazwę.
- </notification>
- <notification name="SetDisplayNameFailedGeneric">
- Przepraszamy, nie można ustawić Twojej wyświetlanej nazwy. Spróbuj ponownie później.
- </notification>
- <notification name="SetDisplayNameMismatch">
- Podana wyświetlana nazwa nie pasuje. Proszę wprowadzić ją ponownie.
- </notification>
- <notification name="AgentDisplayNameUpdateThresholdExceeded">
- Przepraszamy, musisz jeszcze poczekać zanim będzie można zmienić Twoją wyświetlaną nazwę.
-
-Zobacz http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Proszę spróbować ponownie później.
- </notification>
- <notification name="AgentDisplayNameSetBlocked">
- Przepraszamy, nie można ustawić wskazanej nazwy, ponieważ zawiera zabronione słowa.
-
- Proszę spróbować wprowadzić inną nazwę.
- </notification>
- <notification name="AgentDisplayNameSetInvalidUnicode">
- Wyświetlana nazwa, którą chcesz ustawić zawiera niepoprawne znaki.
- </notification>
- <notification name="AgentDisplayNameSetOnlyPunctuation">
- Twoje wyświetlane imię musi zawierać litery inne niż znaki interpunkcyjne.
- </notification>
- <notification name="DisplayNameUpdate">
- [OLD_NAME] ([SLID]) jest od tej pory znana/znany jako [NEW_NAME].
- </notification>
- <notification name="OfferTeleport">
- Zaproponować teleportację do miejsca Twojego pobytu z tą wiadomością?
- <form name="form">
- <input name="message">
- Zapraszam do siebie. Region: [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- Wysłać propozycję teleportacji do Twojego miejsca?
- <form name="form">
- <input name="message">
- Zapraszam do siebie. Region: [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- Na pewno chcesz się teleportować do &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
- <usetemplate ignoretext="Potwierdź próbę teleportacji do zapisanego miejsca" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
- </notification>
- <notification name="TeleportToPick">
- Teleportuj do [PICK]?
- <usetemplate ignoretext="Potwierdź, że chcesz teleportować się do miejsca w Ulubionych" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
- </notification>
- <notification name="TeleportToClassified">
- Teleportuj do [CLASSIFIED]?
- <usetemplate ignoretext="Potwierdź, że chcesz teleportować się do lokalizacji z reklamy" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
- </notification>
- <notification name="TeleportToHistoryEntry">
- Teleportuj do [HISTORY_ENTRY]?
- <usetemplate ignoretext="Potwierdź teleportację do lokalizacji z historii" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
- </notification>
- <notification label="Wiadomość do Wszystkich w Twoim Majątku" name="MessageEstate">
- Wpisz krótką wiadomość która zostanie wysłana do wszystkich osób w Twoim majątku.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zmiana Majątku Lindenów" name="ChangeLindenEstate">
- Czy napewno chcesz zmienić ustawienia majątku Linden (mainland, teen grid, orientacja, itp).
-
-Jest to wyjątkowo niebezpieczna decyzja, odczuwalna przez wszystkich Rezydentów. Dla mainland, spowoduje to zmianę tysięcy regionów oraz ich przestrzeń serwerową.
-
-Kontynuować?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification label="Zmiana Dostępu do Majątku Lindenów" name="ChangeLindenAccess">
- Dokonujesz zmiany w liście dostępu Regionu głównego należącego do Lindenów (Regiony Główne, Teen Grid, Orientacja).
-
-Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalającej na przeniesienie obiektów/L$ do/z sieci.
-Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów.
-
-Kontynuować?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateAllowedAgentAdd">
- Dodać do listy dostępu do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateAllowedAgentRemove">
- Usunąć z listy dostępu do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateAllowedGroupAdd">
- Dodać do listy dostępu grup do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateAllowedGroupRemove">
- Usunąć z listy dostępu grup do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateBannedAgentAdd">
- Zablokować dostęp do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateBannedAgentRemove">
- Zdjąć tego Rezydenta z listy niepożądanych (bany) dla tego majątku czy dla [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateManagerAdd">
- Dodać zarządce majątku do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateManagerRemove">
- Usunąć zarządce majątku z tego majątku czy z [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Potwierdź Wyrzucenie" name="EstateKickUser">
- Wyrzucić [EVIL_USER] z tego majątku?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- Na pewno chcesz zminić treść umowy dla tego majątku?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- Nie masz zezwolenia na przebywanie w tym Regionie z powodu Twojego statusu ustawień wieku.
-
-W celu uzyskania dostępu do tego regiony zmień proszę swój status ustawień wieku. Będziesz mógł/mogła szukać i mieć dostęp do treści [REGIONMATURITY]. W celu cofnięcia zmian wybierz z menu Ja &gt; Ustawienia &gt; Ogólne.
- <form name="form">
- <button name="OK" text="Zmień ustawienia"/>
- <button default="true" name="Cancel" text="Zamknij"/>
- <ignore name="ignore" text="Moje ustawienia wieku nie dopuszczają do regionu"/>
- </form>
- </notification>
- <notification name="PreferredMaturityChanged">
- Twoja obecna klasyfikacja wieku to [RATING].
- </notification>
- <notification name="LandClaimAccessBlocked">
- W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości. Możesz potrzebować weryfikacji wieku bądź instalacji najnowszej wersji klienta.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości.
-
-Możesz wybrać &apos;Zmień Ustawienia&apos; by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja &gt; Ustawienia &gt; Główne.
- <usetemplate ignoretext="Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="Zmień Ustawienia"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Ze względu na Twój wiek, nie możesz kupić tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości.
-
-Możesz wybrać &apos;Zmień Ustawienia&apos; by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja &gt; Ustawienia &gt; Główne.
- <usetemplate ignoretext="W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="Zmień Ustawienia"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- Zbyt wiele wybranych obiektów. Wybierz [MAX_PRIM_COUNT] lub mniej i spróbuj ponownie
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- Problem z importem umowy majątku.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- Problemy z dodawaniem nowego zarządcy majątku. Jeden lub więcaj majątk może mieć wypełnioną listę zarządców.
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- Problemy z dodawaniem do listy majątku. Jeden lub więcaj majątk może mieć wypełnioną listę.
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Brak możliwości załadowania noty w tej chwili.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NotAllowedToViewNotecard">
- Niewystarczające prawa do zobaczenia notki przypisanej do wybranego ID.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- ID notki nie znalezione w bazie danych.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- Pamiętaj: Opłaty za reklamę są bezzwrotne.
-
-Zamieścić tą reklamę za [AMOUNT]L$?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Czy ta reklama zawiera treść &apos;Mature&apos;?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="SetGroupMature">
- Czy ta grupa zawiera treść &apos;Mature&apos;?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification label="Potwierdź Restart" name="ConfirmRestart">
- Na pewno chcesz zrobić restart tego regionu za 2 minuty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification label="Wiadomość do Wszystkich w tym Regionie" name="MessageRegion">
- Wpisz krótką wiadomość która zostanie wysłana do wszystkich osób w tym regionie.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zmienione Restrykcje Wieku dla Regionu" name="RegionMaturityChange">
- Ustawienie restrykcji wieku dla regionu zostało zmienione.
-Zazwyczaj musi upłynąć nieco czasu zanim ta zmiana zostanie odzwierciedlona na mapie.
-
-Aby wejść do regionu Adult, Rezydenci muszą posiadać zweryfikowane konto, albo w wyniku weryfikacji wieku albo płatości.
- </notification>
- <notification label="Wersja Niezgodna z Systemem Rozmów" name="VoiceVersionMismatch">
- Ta wersja [APP_NAME] nie jest kompatybilna z systemem rozmów w tym Regionie. Musisz zainstalować aktualną wersję [APP_NAME] aby komunikacja głosowa działała poprawnie.
- </notification>
- <notification label="Nie Można Kupić Obiektów" name="BuyObjectOneOwner">
- Jednorazowo możesz kupować tylko od jednego właściciela.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- </notification>
- <notification label="Nie Można Kupić Zawartości" name="BuyContentsOneOnly">
- Jednorazowo możesz kupić zawartość tylko jednego obiektu.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- </notification>
- <notification label="Nie Można Kupić Zawartości" name="BuyContentsOneOwner">
- Jednorazowo możesz kupować tylko od jednego właściciela.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- </notification>
- <notification name="BuyOriginal">
- Kupić oryginalny obiekt od [OWNER] za [PRICE]L$?
-Zostaniesz właścicielem tego obiektu z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- Kupić oryginalny obiekt za [PRICE]L$?
-Zostaniesz właścicielem tego obiektu z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- Kupić kopię obiektu od [OWNER] za [PRICE]L$?
-Obiekt zostanie skopiowany do Twojej szafy z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- Kupić kopię obiektu za [PRICE]L$?
-Obiekt zostanie skopiowany do Twojej szafy z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- Kupić zawartość od [OWNER] za [PRICE]L$?
-Zawartość zostanie skopiowana do Twojej szafy.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- Kupić zawartość za [PRICE]L$?
-Zawartość zostanie skopiowana do Twojej szafy.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- Ta transakcja spowoduje:
-[ACTION]
-
-Na pewno chcesz dokonać tego zakupu?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- Ta transakcja spowoduje:
-[ACTION]
-
-Na pewno chcesz dokonać tego zakupu?
-Wpisz hasło ponownie i kliknij OK.
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- Uwaga:
-Lokalizacja tego wyboru została zaktualizowana ale pozostałe szczegóły zachowają oryginalne wartości.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- Wybrane obiekty Szafy nie mają praw kopiowania.
-Obiekty zostaną przeniesione do Twojej Szafy, nie zostaną skopiowane.
-
-Przenieść obiekty Szafy?
- <usetemplate ignoretext="Uprzedź przed przeniesieniem zawartości niekopiowalnej z obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- Wybrane obiekty Szafy nie mają praw kopiowania.
-Obiekty zostaną przeniesione do Twojej Szafy, nie zostaną skopiowane.
-Ponieważ obiekty zawierają skrypty, przeniesienie obiektów do Twojej Szafy może spowodować niepoprawne działanie skryptów.
-
-Przenieść obiekty szafy?
- <usetemplate ignoretext="Uprzedź przed przeniesieniem zawartości niekopiowalnej z obiektu, która może uszkodzić skrypty obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Uwaga: Opcja Zapłać obiektowi została wybrana, ale żeby ta opcja działała musi być dodany skrypt z funkcją money().
- <form name="form">
- <ignore name="ignore" text="Opcja Zapłać Obiektowi została aktywowana podczas budowania obiektów bez skryptu z funkcją money()."/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- W tym obiekcie nie ma elementów które możesz skopiować.
- </notification>
- <notification name="WebLaunchAccountHistory">
- Przejść na stronę [http://secondlife.com/account/ Dashboard] żeby zobaczyć historię konta?
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć historię konta" name="okcancelignore" notext="Anuluj" yestext="Idź na stronę"/>
- </notification>
- <notification name="ConfirmQuit">
- Na pewno chcesz skończyć?
- <usetemplate ignoretext="Na pewno chcesz skończyć?" name="okcancelignore" notext="Nie kończ" yestext="Wyłącz"/>
- </notification>
- <notification name="DeleteItems">
- [QUESTION]
- <usetemplate ignoretext="Potwierdź, że na pewno chcesz skasować obiekty" name="okcancelignore" notext="Cofnij" yestext="OK"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Używaj tej opcji do zgłaszania nadużyć [http://secondlife.com/corporate/tos.php Warunków Umowy (Terms of Service)] i [http://secondlife.com/corporate/cs.php Standardów Społeczeństwa (Community Standards)].
-
-Wszystkie zgłoszone nadużycia są badane i rozwiązywane.
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- Wybierz kategorię dla tego raportu o nadużyciu.
-Określenie kategorii pomoże nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- Wprowadź imię i nazwisko osoby popełniającej nadużycie.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- Wprowadź nazwę miejsca gdzie popełniono nadużycie.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- Wprowadź opis popełnionego nadużycia.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- Wprowadź szczgółowy opis popełnionego nadużycia.
-Podaj maksymalną ilość szczgółów oraz imiona i nazwiska osób związanych z nadużyciem które zgłaszasz.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Szanowny Rezydencie,
-
-Jeżeli składasz raport dotyczący naruszenia praw autorskich proszę się upewnić, że robisz to poprawnie:
-
-(1) Przypadek Nadużycia. Możesz złożyć raport jeżeli sądzisz, że Rezydent narusza system przywilejów [SECOND_LIFE], na przykład używając CopyBot lub podobnych narzędzi robiących kopie, naruszając prawa autorskie. Komisja Nadużyć bada wykroczenia i stosuje akcje dyscyplinarne za zachowania sprzeczne z zasadami Warunków Umowy [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Terms of Service] i Standardów Społeczeństwa [http://secondlife.com/corporate/cs.php Community Standards]. Komisja Nadużyć nie zajmuje się i nie odpowiada na żądania usunięcia treści ze środowiska [SECOND_LIFE].
-
-(2) Przypadek DMCA lub Usuwanie Treści. Aby wystąpić z żądaniem o usunięcie treści ze środowiska [SECOND_LIFE] MUSISZ przedłożyć ważne zawiadomienie o nadużyciu zgodne z naszą polityką DMCA [http://secondlife.com/corporate/dmca.php DMCA Policy].
-
-Jeżeli chcesz kontynuować dalej zamknij to okno i dokończ wysyłanie raportu. Może być potrzebny wybór kategorii &apos;CopyBot albo Nadużycie Przywilejów&apos;.
-
-Dziękujemy,
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- Brak następujących wymaganych komponentów w [FLOATER]:
-[COMPONENTS]
- </notification>
- <notification label="Zamień Istniejący Dodatek" name="ReplaceAttachment">
- Obecnie masz już dołączony obiekt do tej części Twojego ciała.
-Chcesz go zamienić na wybrany obiekt?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Obecnie masz już dołączony obiekt do tej części Twojego ciała.Chcesz go zamienić na wybrany obiekt?"/>
- <button ignore="Zamień automatycznie" name="Yes" text="OK"/>
- <button ignore="Nie zamieniaj" name="No" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Ostrzeżenie Trybu Pracy" name="BusyModePay">
- Jesteś w Trybie pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę.
-
-Chcesz wyłączyć Tryb pracy przed zakończeniem tej tranzakcji?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Jesteś w Trybie Pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę. Chcesz wyłączyć Tryb Pracy przed zakończeniem tej transakcji?"/>
- <button ignore="Zawsz wyłączaj tryb pracy" name="Yes" text="OK"/>
- <button ignore="Nie wyłączaj trybu pracy" name="No" text="Anuluj"/>
- </form>
- </notification>
- <notification name="ConfirmDeleteProtectedCategory">
- Ten folder &apos;[FOLDERNAME]&apos; to folder systemowy. Usunięcie foldera systemowego spowoduje niestabilność. Czy na pewno chcesz go skasować?
- <usetemplate ignoretext="Potwierdź zanim folder systemu zostanie skasowany" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Na pewno chcesz permanentnie usunąć zawartość Kosza?
- <usetemplate ignoretext="Potwierdź przed usunięciem zawartości Kosza" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Na pewno chcesz wyczyścić bufor przeglądarki?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Na pewno chcesz wyczyścić ciasteczka?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- Na pewno chcesz wyczyścić listę zapisanych linków?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Na pewno chcesz permanentnie usunąć zawartość Twojego foldera Zgubione i odnalezione?
- <usetemplate ignoretext="Potwierdź przed usunięciem zawartości foldera Zagubione i odnalezione" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="CopySLURL">
- Następujący link SLURL został skopiowany do schowka:
- [SLURL]
-
-Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do tego miejsca, albo wklej go do panela adresu Twojej przeglądarki żeby go otworzyć.
- <form name="form">
- <ignore name="ignore" text="SLurl skopiowany do schowka"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- Chcesz zmienić zapisane ustawienia?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- Chcesz usunąć [SKY]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="WLNoEditDefault">
- Nie możesz edytować lub usunąć domyślnych ustawień.
- </notification>
- <notification name="WLMissingSky">
- Ten plik cyklu dziennego używa brakującego pliku nieba: [SKY].
- </notification>
- <notification name="PPSaveEffectAlert">
- Efekt post-procesu już istnieje. Chcesz zapisać nowy na jego miejsce?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="NewSkyPreset">
- Nazwij nowe niebo.
- <form name="form">
- <input name="message">
- Nowe ustawienie
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- Ustawienie już istnieje!
- </notification>
- <notification name="NewWaterPreset">
- Nazwij nowe ustawienie wody.
- <form name="form">
- <input name="message">
- Nowe ustawienie
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- Ustawienie już istnieje!
- </notification>
- <notification name="WaterNoEditDefault">
- Domyślne ustawienie nie może być zmienione ani usunięte.
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Błąd podczas rozpoczynania czatu/IM z [RECIPIENT].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- Twój czat/IM z [NAME] zostanie zamknięty.
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Rzeczy nie mogą być kupione jeżeli są częścią załącznika.
- </notification>
- <notification label="Prośba o Zgodę na Pobieranie L$" name="DebitPermissionDetails">
- Akceptując tą prośbę wyrażasz zgodę na ciągłe pobieranie Lindenów (L$) z Twojego konta. Żeby cofnąć to pozwolenie właściciel obiektu będzie musiał usunąć ten obiekt albo zresetowć skrypty obieku.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- Czy chcesz automatycznie nosić ubranie które tworzysz?
- <usetemplate ignoretext="Załóż ubranie automatycznie będąc w trybie Edycji Wyglądu" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="NotAgeVerified">
- Nie masz dostępu do tej posiadłości ze względu na brak weryfikacji Twojego wieku. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php
- </url>
- <usetemplate ignoretext="Brak weryfikacji wieku" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Nie masz dostępu do tej posiadłości ze względu na brak danych o Twoim koncie. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/
- </url>
- <usetemplate ignoretext="Brak danych o koncie" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="MissingString">
- Zdanie [STRING_NAME] nie znalezione w strings.xml
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="IMSystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Anulowane
- </notification>
- <notification name="CancelledSit">
- Siadanie anulowane
- </notification>
- <notification name="CancelledAttach">
- Dołączenie anulowane
- </notification>
- <notification name="ReplacedMissingWearable">
- Barkujące ubranie/części ciała zastąpiono domyślnymi obiektami.
- </notification>
- <notification name="GroupNotice">
- Temat: [SUBJECT], Treść: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [NAME] jest w Second Life
- </notification>
- <notification name="FriendOffline">
- [NAME] opuszcza Second Life
- </notification>
- <notification name="AddSelfFriend">
- Nie możesz dodać siebie do listy znajomych.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- Ładowanie obrazu z Internetu...
-(Zajmuje około 5 minut.)
- </notification>
- <notification name="UploadPayment">
- Ładowanie kosztowało [AMOUNT]L$.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Ładowanie obrazu z Internetu zakończne pomyślnie.
- </notification>
- <notification name="UploadSnapshotDone">
- Ładowanie zdjęcia zakończone pomyślnie.
- </notification>
- <notification name="TerrainDownloaded">
- Plik terrain.raw ściągniety.
- </notification>
- <notification name="GestureMissing">
- Gesturka [NAME] nie znaleziony w bazie danych.
- </notification>
- <notification name="UnableToLoadGesture">
- Ładowanie gesturki [NAME] nie powiodło się.
- </notification>
- <notification name="LandmarkMissing">
- Miejsce (LM) nie znalezione w bazie danych.
- </notification>
- <notification name="UnableToLoadLandmark">
- Ładowanie miejsca (LM) nie powiodło się.
-Spróbuj jeszcze raz.
- </notification>
- <notification name="CapsKeyOn">
- Twój Caps Lock jest włączony.
-Ponieważ to ma wpływ na wpisywane hasło, możesz chcieć go wyłączyć.
- </notification>
- <notification name="NotecardMissing">
- Notka nie została znaleziona w bazie danych.
- </notification>
- <notification name="NotecardNoPermissions">
- Nie masz pozwolenia na zobaczenie notki.
- </notification>
- <notification name="RezItemNoPermissions">
- Nie masz pozwolenia na stworzenie obiektu.
- </notification>
- <notification name="UnableToLoadNotecard">
- Nie można załadować danych notki w tym momencie.
- </notification>
- <notification name="ScriptMissing">
- Skrypt nie znaleziony w bazie danych.
- </notification>
- <notification name="ScriptNoPermissions">
- Nie masz pozwolenia na zobaczenie skryptu.
- </notification>
- <notification name="UnableToLoadScript">
- Ładowanie skryptu nie powiodło się.
-Spróbuj jeszcze raz.
- </notification>
- <notification name="IncompleteInventory">
- Zawartość obiektów którą chcesz podarować nie jest dostępna lokalnie. Spróbuj podarować te obiekty jeszcze raz za jakiś czas.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- Nie możesz zmienić chronionych kategorii.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- Nie możesz usunąć chronionych kategorii.
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Nie można kupować w trakcie ładowania danych obiektu.
-Spróbuj jeszcze raz.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Nie można łączyć w trakcie ładowania danych obiektu.
-Spróbuj jeszcze raz.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Nie możesz jednocześnie kupować obiektów od różnych osób.
-Wybierz jeden obiekt.
- </notification>
- <notification name="ObjectNotForSale">
- Obiekt nie jest na sprzedaż.
- </notification>
- <notification name="EnteringGodMode">
- Włącznie trybu boskiego, poziom [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- Wyłączanie trybu boskiego, poziom [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Nie masz praw do skopiowania wybranych obiektów.
- </notification>
- <notification name="InventoryAccepted">
- Podarunek od Ciebie został przyjęty przez [NAME].
- </notification>
- <notification name="InventoryDeclined">
- Podarunek od Ciebie został odrzucony przez [NAME].
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Twoja wizytówka została przyjęta.
- </notification>
- <notification name="CallingCardDeclined">
- Twoja wizytówka została odrzucona.
- </notification>
- <notification name="TeleportToLandmark">
- Jesteś w Głównym Regionie i możesz się stąd teleportować do innych miejsc jak &apos;[NAME]&apos; wybierając Moja Szafa w prawym dolnym rogu ekranu
-i wybierając folder Zapisane Miejsca (LM).
-(Kliknij dwa razy na miejsce (LM) i wybierz &apos;Teleport&apos; żeby tam się przenieść.)
- </notification>
- <notification name="TeleportToPerson">
- Możesz skontaktować się z Rezydentem &apos;[NAME]&apos; poprzez otworzenie panelu Ludzie po prawej stronie ekranu.
-Wybierz Rezydenta z listy, następnie kliknij &apos;IM&apos; na dole panelu.
-(Możesz także kliknąć podwójnie na ich imię na liście, lub prawym przyciskiem i wybrać &apos;IM&apos;).
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Nie możesz przekraczać granic serwera wybierając obszar.
-Spróbuj wybrać mniejszy obszar.
- </notification>
- <notification name="SearchWordBanned">
- Pewne frazy podczas wyszukiwania zostały usunięte w związku z restrykcjami zawartymi w Standardach Społecznościowych (Community Standards).
- </notification>
- <notification name="NoContentToSearch">
- Proszę wybrać przynajmiej jeden z podanych rodzajów treści jaką zawiera region podczas wyszukiwania (&apos;General&apos;, &apos;Moderate&apos;, lub &apos;Adult&apos;).
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="PaymentReceived">
- [MESSAGE]
- </notification>
- <notification name="PaymentSent">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Zawiadomienie o imprezie:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="Szczegóły"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Obiekty na tej posiadłości które zostaną przekazane kupcowi tej posiadłości są teraz rozjaśnione.
-
-* Drzewa i trawy które zostaną przekazne nie są rozjaśnione.
- <form name="form">
- <button name="Done" text="Zastosuj"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Zablokowane gesturki z jednakowym aktywowaniem:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Wygląda na to, że QuickTime z Apple nie jest zainstalowany na Twoim komputerze.
-Jeżeli chcesz odtwarzać media na tej posiadłości które używają QuickTime idź do [http://www.apple.com/quicktime strona QuickTime] i zainstaluj odtwarzacz.
- </notification>
- <notification name="NoPlugin">
- Nie znaleziono wtyczki mediów dla &quot;[MIME_TYPE]&quot; typu mime. Media tego typu będą niedostępne.
- </notification>
- <notification name="MediaPluginFailed">
- Następujące wtyczki mediów nie działają:
- [PLUGIN]
-
-Zainstaluj proszę wtyczki ponownie lub skontaktuj się z dostawcą jeśli nadal problem będzie występował.
- <form name="form">
- <ignore name="ignore" text="Wtyczka mediów nie działa"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- Twoje obiekty z wybranej posiadłości zostały zwrócone do Twojej Szafy.
- </notification>
- <notification name="OtherObjectsReturned">
- Obiekty należące do [NAME] na wybranej posiadłości zostały zwrócone do Szafy tej osoby.
- </notification>
- <notification name="OtherObjectsReturned2">
- Obiekty z posiadłości należącej do Rezydenta&apos;[NAME]&apos; zostały zwrócone do właściciela.
- </notification>
- <notification name="GroupObjectsReturned">
- Obiekty z wybranej posiadłości przypisane do grupy [GROUPNAME] zostały zwrócone do szafy ich właścicieli.
-Przekazywalne obiekty przekazne grupie zostały zwrócone do ich poprzednich właścicieli.
-Nieprzekazywalne obiekty przekazane grupie zostały usunięte.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- Obiekty z wybranej posiadłości które nie należą do Ciebie zostały zwrócone do ich właścicieli.
- </notification>
- <notification name="ServerObjectMessage">
- Wiadomość od [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
- </notification>
- <notification name="NotSafe">
- Ta posiadłość pozwala na uszkodzenia.
-Możesz doznać tutaj urazu. Jeżeli zginiesz nastąpi teleportacja do Twojego miejsca startu.
- </notification>
- <notification name="NoFly">
- Ta posiadłość nie pozwala na latanie.
-Nie możesz tutaj latać.
- </notification>
- <notification name="PushRestricted">
- Popychanie niedozwolone. Nie możesz tutaj popychać innych, chyba, że jesteś właścicielem tej posiadłości.
- </notification>
- <notification name="NoVoice">
- Ta posiadłość nie pozwala na rozmowy.
- </notification>
- <notification name="NoBuild">
- Ta posiadłość nie pozwala na budowanie. Nie możesz tworzyć tutaj obiektów.
- </notification>
- <notification name="ScriptsStopped">
- Administrator czasowo zatrzymał skrypty w tym regionie.
- </notification>
- <notification name="ScriptsNotRunning">
- Żadne skrypty nie działają w tym regionie.
- </notification>
- <notification name="NoOutsideScripts">
- Ta posiadłość nie pozwala na zewnętrzne skrypty.
-
-Żadne skrypty nie będą tutaj działać za wyjątkiem skryptów należących do właściciela posiadłości.
- </notification>
- <notification name="ClaimPublicLand">
- Tylko publiczne posiadłości w tym regionie mogą być przejęte.
- </notification>
- <notification name="RegionTPAccessBlocked">
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Możesz potrzebować weryfikacji wieku bądź instalacji najnowszej wersji klienta.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- </notification>
- <notification name="URBannedFromRegion">
- Zostałeś zbanowany w regionie.
- </notification>
- <notification name="NoTeenGridAccess">
- Twoje konto nie może zostać połączone z podanym regionem Teen Grid.
- </notification>
- <notification name="ImproperPaymentStatus">
- Nie posiadasz odpowiedniego statusu płatniczego by uzyskać dostęp do regionu.
- </notification>
- <notification name="MustGetAgeParcel">
- By móc przebywać na tej posiadłości wymagana jest weryfikacja Twojego wieku.
- </notification>
- <notification name="NoDestRegion">
- Żądana lokalizacja regionu nie została odnaleziona.
- </notification>
- <notification name="NotAllowedInDest">
- Brak dostępu do podanej lokalizacji.
- </notification>
- <notification name="RegionParcelBan">
- Nie możesz przejść przez zamkniętą posiadłość. Spróbuj skorzystać z innej drogi.
- </notification>
- <notification name="TelehubRedirect">
- Zostałeś przeniesiony do teleportera.
- </notification>
- <notification name="CouldntTPCloser">
- Brak możliwości teleportacji do bliższej lokacji.
- </notification>
- <notification name="TPCancelled">
- Teleportacja anulowana.
- </notification>
- <notification name="FullRegionTryAgain">
- Region, który chcesz odwiedzić jest w tej chwili pełny.
-Spróbuj ponowanie za kilka minut.
- </notification>
- <notification name="GeneralFailure">
- Nieudana próba.
- </notification>
- <notification name="RoutedWrongRegion">
- Wysłano niewłaściwe połączenie do regionu. Proszę spróbować ponownie.
- </notification>
- <notification name="NoValidAgentID">
- Nieważny identyfikator agenta.
- </notification>
- <notification name="NoValidSession">
- Nieważny identyfikator sesji.
- </notification>
- <notification name="NoValidCircuit">
- Nieważny obwód kodowania.
- </notification>
- <notification name="NoValidTimestamp">
- Niewłaściwy czas zapisu.
- </notification>
- <notification name="NoPendingConnection">
- Brak możliwości wykonania połączenia.
- </notification>
- <notification name="InternalUsherError">
- Podczas teleportacji nastąpił błąd wewnętrzny, który może być wynikiem problemów serwera.
- </notification>
- <notification name="NoGoodTPDestination">
- Brak lokalizacji punktu do teleportacji w podanym regionie.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Podczas próby odnalezienia globalnych współrzędych dla żądanej teleportacji pojawił się wewnętrzny błąd. Może być to wynikiem problemów serwera.
- </notification>
- <notification name="NoValidLanding">
- Nieważny punkt lądowania.
- </notification>
- <notification name="NoValidParcel">
- Nieważana posiadłość.
- </notification>
- <notification name="ObjectGiveItem">
- Obiekt o nazwie &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, którego właścicielem jest [NAME_SLURL] oferuje Tobie &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Korzystanie z tego obieku wymaga przelączenia się na tryb zaawansowany, w którym będzie można odszukać obiekt w Twojej Szafie. W celu przełączenia trybu życia na zaawansowany, zamknij i uruchom ponownie aplikację. Przed ponownym zalogowaniem zmień tryb życia na ekranie logowania.
- <form name="form">
- <button name="Keep" text="Zaakceptuj obiekt"/>
- <button name="Discard" text="Odrzuć obiekt"/>
- <button name="Mute" text="Zablokuj obiekt"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME_SLURL] proponuje Tobie [ITEM_SLURL]. Korzystanie z tego obieku wymaga przelączenia się na tryb zaawansowany, w którym będzie można odszukać obiekt w Twojej Szafie. W celu przełączenia trybu życia na zaawansowany, zamknij i uruchom ponownie aplikację. Przed ponownym zalogowaniem zmień tryb życia na ekranie logowania.
- <form name="form">
- <button name="Show" text="Zaakceptuj obiekt"/>
- <button name="Discard" text="Odrzuć obiekt"/>
- <button name="Mute" text="Zablokuj użytkownika"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Info" text="Info"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME_SLURL] proponuje Ci teleportację do siebie:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
- <form name="form">
- <button name="Teleport" text="Teleportuj"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="TeleportOfferSent">
- Oferta teleportacji wysłana do [TO_NAME]
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Póżniej"/>
- <button name="GoNow..." text="Teraz..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME_SLURL] proponuje znajomość.
-
-[MESSAGE]
-
-(Będziecie mogli widzieć swój status online)
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- </form>
- </notification>
- <notification name="FriendshipOffered">
- Oferta znajomości dla [TO_NAME]
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME_SLURL] proponuje Ci znajomość.
-
-(Z zalożenia będzie widzić swój status online.)
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- Twoja propozycja znajomości została przyjęta przez [NAME].
- </notification>
- <notification name="FriendshipDeclined">
- Twoja propozycja znajomości została odrzucona przez [NAME].
- </notification>
- <notification name="FriendshipAcceptedByMe">
- Propozycja znajomości została zaakceptowana.
- </notification>
- <notification name="FriendshipDeclinedByMe">
- Propozycja znajomości została odrzucona.
- </notification>
- <notification name="OfferCallingCard">
- [NAME] oferuje swoją wizytówkę.
-Wizytówka w Twojej Szafie umożliwi szybki kontakt IM z tym Rezydentem.
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- Restart regionu za [MINUTES] min.
-Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
- </notification>
- <notification name="RegionRestartSeconds">
- Restart regionu za [SECONDS] sec.
-Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
- </notification>
- <notification name="LoadWebPage">
- Załadować stronę [URL]?
-
-[MESSAGE]
-
-Od obiektu: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, właściciel właściciel: [NAME]?
- <form name="form">
- <button name="Gotopage" text="Załaduj"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- [TYPE] - nie znaleziono w bazie danych.
- </notification>
- <notification name="FailedToFindWearable">
- [TYPE] [DESC] - nie znaleziono w bazie danych.
- </notification>
- <notification name="InvalidWearable">
- Obiekt, który chcesz założyć używa narzędzia nieobecnego w wersji klienta, którą używasz. By go założyć ściągnij najnowszą wersję [APP_NAME].
- </notification>
- <notification name="ScriptQuestion">
- Obiekt &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, którego właścicielem jest &apos;[NAME]&apos;, chciałby:
-
-[QUESTIONS]
-Czy się zgadzasz?
- <form name="form">
- <button name="Yes" text="Tak"/>
- <button name="No" text="Nie"/>
- <button name="Mute" text="Zablokuj"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- Obiekt &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, którego właścicielem jest &apos;[NAME]&apos; chciałby:
-
-[QUESTIONS]
-Jeśli nie ufasz temu obiektowi i jego kreatorowi, odmów.
-
-Czy się zgadzasz?
- <form name="form">
- <button name="Grant" text="Zaakceptuj"/>
- <button name="Deny" text="Odmów"/>
- <button name="Details" text="Szczegóły..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Zignoruj"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Zignoruj"/>
- </form>
- </notification>
- <notification name="BuyLindenDollarSuccess">
- Dziękujemy za wpłatę!
-
-Twój stan konta L$ zostanie zaktualizowany w momencie zakończenia transakcji. Jeżeli w ciągu 20 minut, Twój balans konta nie ulegnie zmianie, transakcja została anulowana. W tym przypadku, pobrana kwota zostanie zwrócona na stan konta w US$.
-
-Status transkacji możesz sprawdzić odwiedzając Historię Transakcji swojego konta na [http://secondlife.com/account/ Dashboard]
- </notification>
- <notification name="FirstOverrideKeys">
- Twoje sterujące klawisze zostały przejęte przez obiekt.
-Użyj strzałek lub AWSD żeby sprawdzić ich działanie.
-Niektóre obiekty (np broń) wymagają trybu panoramicznego.
-Nacisnij &apos;M&apos; żeby go wybrać.
- </notification>
- <notification name="FirstSandbox">
- Ten region to piaskownica.
-
-Obiekty które tu zbudujesz mogą zostać usunięte jak opuścisz ten obszar - piaskownice są regularnie czyszczone, sprawdź informacje na górze ekranu obok nazwy regionu.
- </notification>
- <notification name="MaxListSelectMessage">
- Maksymalnie możesz wybrać [MAX_SELECT] rzeczy
-z tej listy.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] zaprasza Cię do rozmowy głosem.
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia.
-Wybierz Zablokuj żeby wyciszyć dzwoniącą osób
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Mute" text="Zablokuj"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- Wysłano [NAME] prywatną wiadomość i ta osoba została automatycznie odblokowana.
- </notification>
- <notification name="AutoUnmuteByMoney">
- Przekazano [NAME] pieniądze i ta osoba została automatycznie odblokowana.
- </notification>
- <notification name="AutoUnmuteByInventory">
- Zaoferowno [NAME] obiekty i ta osoba została automatycznie odblokowana.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] zaczyna rozmowę z grupą [GROUP].
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć dzwoniącą osobę.
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Mute" text="Zablokuj"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] zaczyna konferencję głosem.
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć dzwoniącą osobę.
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Mute" text="Zablokuj"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] zaprasza Cię do konferencji poprzez Czat/IM.
-Wybierz Zaakceptuj żeby zacząć czat albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć tą osobę.
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Mute" text="Block"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- Rozmowa w której chcesz uczestniczyć, [VOICE_CHANNEL_NAME], nie akceptuje więcej rozmówców. Spróbuj póżniej.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Przepraszamy. Limit rozmów został przekroczony w tym obszarze. Spróbuj w innym miejscu.
- </notification>
- <notification name="VoiceChannelDisconnected">
- [VOICE_CHANNEL_NAME] odłączył się. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] skończył rozmowę. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] odmówił połączenia. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] nie odpowiada. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Brak połączenia z [VOICE_CHANNEL_NAME], spróbuj póżniej. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="VoiceLoginRetry">
- Tworzymy kanał głosu dla Ciebie. Moze potrwać minutę.
- </notification>
- <notification name="VoiceEffectsExpired">
- Subskrypcja jednego lub więcej z Voice Morph wygasła.
-[[URL] Kliknij tutaj] oby odnowić subskrypcję.
- </notification>
- <notification name="VoiceEffectsExpiredInUse">
- Czas aktywności Voice Morph wygasł, normalne ustawienia Twojego głosu zostały zastosowane.
-[[URL] Kliknij tutaj] aby odnowić subskrypcję.
- </notification>
- <notification name="VoiceEffectsWillExpire">
- Jedno lub więcej z Twoich Voice Morph wygaśnie za mniej niż [INTERVAL] dni.
-[[URL] Klinij tutaj] aby odnowić subskrypcję.
- </notification>
- <notification name="VoiceEffectsNew">
- Nowe Voice Morph są dostępne!
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Nie masz dostępu do posiadłości, nie należysz do właściwej grupy.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Masz wzbroniony wstęp na tą posiadłości (ban).
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Nie masz dostępu do posiadłości, nie jesteś na liście dostępu.
- </notification>
- <notification name="VoiceNotAllowed">
- Nie masz pozwolenia na połączenie z rozmową [VOICE_CHANNEL_NAME].
- </notification>
- <notification name="VoiceCallGenericError">
- Błąd podczas łączenia z rozmową [VOICE_CHANNEL_NAME]. Spróbuj póżniej.
- </notification>
- <notification name="UnsupportedCommandSLURL">
- Nie można otworzyć wybranego SLurl.
- </notification>
- <notification name="BlockedSLURL">
- SLurl został otrzymany z niesprawdzonej przeglądarki i został zablokowany dla bezpieczeństwa.
- </notification>
- <notification name="ThrottledSLURL">
- Wiele SLurlów zostało otrzymanych w krótkim czasie od niesprawdzonej przeglądarki.
-Zostaną zablokowane na kilka sekund dla bezpieczeństwa.
- </notification>
- <notification name="IMToast">
- [MESSAGE]
- <form name="form">
- <button name="respondbutton" text="Odpowiedź"/>
- </form>
- </notification>
- <notification name="ConfirmCloseAll">
- Czy chcesz zamknąć wszystkie wiadomości IM?
- <usetemplate ignoretext="Potwierdź, przed zamknięciem wszystkich wiadomości prywatnych (IM)." name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="AttachmentSaved">
- Załącznik został zapisany.
- </notification>
- <notification name="UnableToFindHelpTopic">
- Nie można znależć tematu pomocy dla tego elementu.
- </notification>
- <notification name="ObjectMediaFailure">
- Błąd serwera: aktualizacja mediów nie powiodła się.
-&apos;[ERROR]&apos;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TextChatIsMutedByModerator">
- Twój czat został wyciszony przez moderatora.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="VoiceIsMutedByModerator">
- Twoja rozmowa głosowa została wyciszona przez moderatora.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearTeleportHistory">
- Czy na pewno chcesz usunąć historię teleportacji?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BottomTrayButtonCanNotBeShown">
- Wybrany przycisk nie może zostać wyświetlony w tej chwili.
-Przycisk zostanie wyświetlony w przypadku dostatecznej ilości przestrzeni.
- </notification>
- <notification name="ShareNotification">
- Zaznacz Rezydentów, z którymi chcesz się podzielić.
- </notification>
- <notification name="ShareItemsConfirmation">
- Czy na pewno chcesz udostępnić następujące obiekty:
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-następującym Rezydentom:
-
-[RESIDENTS]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Ok"/>
- </notification>
- <notification name="ItemsShared">
- Obiekty zostały udostępnione.
- </notification>
- <notification name="DeedToGroupFail">
- Przekazanie grupie nie powiodło się.
- </notification>
- <notification name="AvatarRezNotification">
- ( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; rozchmurzył się po [TIME] sekundach.
- </notification>
- <notification name="AvatarRezSelfBakedDoneNotification">
- ( [EXISTENCE] sekund w Second Life)
-You finished baking your outfit after [TIME] seconds.
- </notification>
- <notification name="AvatarRezSelfBakedUpdateNotification">
- ( [EXISTENCE] sekund w Second Life )
-Wysłano aktualizację wyglądu po [TIME] sekundach.
-[STATUS]
- </notification>
- <notification name="AvatarRezCloudNotification">
- ( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; stał się chmurą.
- </notification>
- <notification name="AvatarRezArrivedNotification">
- ( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; pojawił się.
- </notification>
- <notification name="AvatarRezLeftCloudNotification">
- ( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; pozostał [TIME] sekund chmurą.
- </notification>
- <notification name="AvatarRezEnteredAppearanceNotification">
- ( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; rozpoczął edycję wyglądu.
- </notification>
- <notification name="AvatarRezLeftAppearanceNotification">
- ( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; opuścił edycję wyglądu.
- </notification>
- <notification name="NoConnect">
- Występuje problem z połączeniem [PROTOCOL] [HOSTID].
-Proszę sprawdź swoją sieć i ustawienia firewall.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NoVoiceConnect">
- Występuje problem z Twoim połączniem głosowym:
-
-[HOSTID]
-
-Komunikacja głosowa nie będzie dostępna.
-Proszę sprawdź swoją sieć i ustawienia firewall.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarRezLeftNotification">
- ( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; pozostał w pełni załadowany.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUploadNotification">
- ( [EXISTENCE] sekund w Second Life )
-Zbakowane tekstury [RESOLUTION] dla &apos;[BODYREGION]&apos; zostały załadowane po[TIME] sekundach.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUpdateNotification">
- ( [EXISTENCE] sekund w Second Life )
-Zbakowane tekstury zostały lokalnie zaktualizowane [RESOLUTION] dla &apos;[BODYREGION]&apos; po [TIME] sekundach.
- </notification>
- <notification name="ConfirmLeaveCall">
- Czy jestes pewien/pewna, że chcesz zakończyć rozmowę?
- <usetemplate ignoretext="Potwierdź zanim rozmowa głosowa zostanie zakończona" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="ConfirmMuteAll">
- Wybrano wyciszenie wszystkich uczestników rozmowy głosowej w grupie.
-To spowoduje również wyciszenie wszystkich Rezydentów, którzy dołączą póżniej do rozmowy, nawet jeśli zakończysz rozmowę.
-
-Wyciszyć wszystkich?
- <usetemplate ignoretext="Potwierdź zanim zostaną wyciszeni wszyscy uczestnicy rozmowy głosowej w grupie" name="okcancelignore" notext="Anuluj" yestext="Ok"/>
- </notification>
- <notification label="Czat" name="HintChat">
- W celu przylączenia się do rozmowy zacznij pisać w poniższym polu czatu.
- </notification>
- <notification label="Wstań" name="HintSit">
- Aby wstać i opuścić pozycję siedzącą, kliknij przycisk Wstań.
- </notification>
- <notification label="Odkrywaj Świat" name="HintDestinationGuide">
- Destination Guide zawiera tysiące nowych miejsc do odkrycia. Wybierz lokalizację i teleportuj się aby rozpocząć zwiedzanie.
- </notification>
- <notification label="Schowek" name="HintSidePanel">
- Schowek umożliwia szybki dostęp do Twojej Szafy, ubrań, profili i innych w panelu bocznym.
- </notification>
- <notification label="Ruch" name="HintMove">
- Aby chodzić lub biegać, otwórz panel ruchu i użyj strzałek do nawigacji. Możesz także używać strzałek z klawiatury.
- </notification>
- <notification label="Wyświetlana nazwa" name="HintDisplayName">
- Ustaw wyświetlaną nazwę, którą możesz zmieniać tutaj. Jest ona dodatkiem do unikatowej nazwy użytkownika, która nie może być zmieniona. Możesz zmienić sposób w jaki widzisz nazwy innych osób w Twoich Ustawieniach.
- </notification>
- <notification label="Ruch" name="HintMoveArrows">
- Użyj przycisków ze strzałkami z klawiatury aby chodzić. Jeśli wciśniesz strzałkę &apos;do góry&apos; podwójnie, zaczniesz biec.
- </notification>
- <notification label="Widok" name="HintView">
- To change your camera view, use the Orbit and Pan controls. Zresetuj widok poprzez wciśnięcie klawisza Esc lub chodzenie.
- </notification>
- <notification label="Szafa" name="HintInventory">
- Sprawdź swoją Szafę aby znaleźć obiekty. Najnowsze obiekty mogą być łatwo odnalezione w zakładce Nowe obiekty.
- </notification>
- <notification label="Otrzymano L$!" name="HintLindenDollar">
- Tutaj znajduje się Twoj bieżący bilans L$. Kliknij Kup aby kupić więcej L$.
- </notification>
- <notification name="PopupAttempt">
- Wyskakujące okienko zostało zablokowane.
- <form name="form">
- <ignore name="ignore" text="Zezwól na wyskakujące okienka"/>
- <button name="open" text="Otwórz wyskakujące okno."/>
- </form>
- </notification>
- <notification name="AuthRequest">
- Strpna &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; w domenie &apos;[REALM]&apos; wymaga nazwy użytkownika i hasła.
- <form name="form">
- <input name="username" text="Nazwa użytkownika"/>
- <input name="password" text="Hasło"/>
- <button name="ok" text="Wyślij"/>
- <button name="cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="" name="ModeChange">
- Zmiana trybu wymaga restartu.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoClassifieds">
- Tworzenie i edycja reklam jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoGroupInfo">
- Tworzenie i edycja grup jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoPicks">
- Tworzenie i edycja Ulubionych jest możliwa jedynie w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoWorldMap">
- Oglądanie mapy świata jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoVoiceCall">
- Rozmowy głosowe są możliwe tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb?
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoAvatarShare">
- Udostępnienie jest możliwe tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoAvatarPay">
- Płacenie innym Rezydentom jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <global name="UnsupportedCPU">
- - Prędkość Twojego CPU nie spełnia minimalnych wymagań.
- </global>
- <global name="UnsupportedGLRequirements">
- Wygląda na to, że Twój system nie spełnia wymagań sprzętowych [APP_NAME]. [APP_NAME] wymaga karty graficznej kompatybilnej z OpenGL z multiteksturami. Jeżeli masz taką kartę zainstaluj najnowsze sterowniki do niej i uaktualnienia systemu operacyjnego.
-
-Jeżeli wciąż masz problemy sprawdź: [SUPPORT_SITE].
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - Twoja karta graficzna nie spełnia minimalnych wymagań.
- </global>
- <global name="UnsupportedRAM">
- - Pamięć Twojego systemu nie spełnia minimalnych wymagań.
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Jeśli jesteś właścicielem posiadłości, możesz ustawić na niej miejsce startu.
-W innym przypadku możesz poszukać na mapie miejsca oznaczone jako &quot;Infohub&quot;.
- </global>
- <global name="You died and have been teleported to your home location">
- Nastąpiła śmierć i teleportacja do Miejsca Startu.
- </global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml
deleted file mode 100644
index ba0c85e4ef..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Dzwoń" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Zakończ rozmowę" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Przełączniki głosu" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml
deleted file mode 100644
index f49d820938..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Włącza/wyłącza mikrofon"/>
- <string name="VoiceControlBtnToolTip" value="Pokazuje/Ukrywa panel kontroli głosu"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesturki" name="Gesture" tool_tip="Pokazuje/Ukrywa gesturki"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Widok" name="camera_btn" tool_tip="Pokaż/Ukryj ustawienia kamery"/>
- </layout_panel>
- <layout_panel name="avatar_and_destinations_panel">
- <bottomtray_button label="Atrakcje turystyczne" name="destination_btn" tool_tip="Pokaż okno dotyczące ludzi"/>
- </layout_panel>
- <layout_panel name="avatar_and_destinations_panel">
- <bottomtray_button label="Mój awatar" name="avatar_btn"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Ludzie" name="show_people_button" tool_tip="Pokazuje okno dotyczące ludzi"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Pokazuje okno profilu."/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="POMOC" name="show_help_btn" tool_tip="Otwiera temat pomocy Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Rozmowy"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Ogłoszenia"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml
deleted file mode 100644
index 074f572a4c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="group_info_btn_panel">
- <button label="Grupa" name="group_info_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Dzwoń" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Zakończ rozmowę" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Otwórz kontroler głosu" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml
deleted file mode 100644
index 4aadd3b93b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Poznaj" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj"/>
- </layout_panel>
- <layout_panel name="share_btn_panel">
- <button label="Udostępnij" name="share_btn"/>
- </layout_panel>
- <layout_panel name="pay_btn_panel">
- <button label="Zapłać" name="pay_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Dzwoń" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Zakończ rozmowę" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Przełączniki głosu" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_login.xml b/indra/newview/skins/minimal/xui/pl/panel_login.xml
deleted file mode 100644
index dc8e7399af..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_login.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Użytkownik:
- </text>
- <combo_box name="username_combo" tool_tip="Nazwę użytkownika wybierasz przy rejestracji, np. bobsmith12 lub Steller Sunshine"/>
- <text name="password_text">
- Hasło:
- </text>
- <check_box label="Zapamiętaj hasło" name="remember_check"/>
- <button label="Połącz" name="connect_btn"/>
- <text name="mode_selection_text">
- Tryb życia:
- </text>
- <combo_box name="mode_combo" tool_tip="Wybierz tryb życia. Wybierz tryb turystyczny dla łatwego zwiedzania i czatowania. Wybierz tryb zaawansowany aby mieć dostęp do większej ilości opcji.">
- <combo_box.item label="Turystyczny" name="Basic"/>
- <combo_box.item label="Zaawansowany" name="Advanced"/>
- </combo_box>
- <text name="start_location_text">
- Rozpocznij w:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="Ostatnie Miejsce" name="MyLastLocation"/>
- <combo_box.item label="Moje Miejsce Startu" name="MyHome"/>
- <combo_box.item label="&lt;Wpisz Region&gt;" name="Typeregionname"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Utwórz nowe konto
- </text>
- <text name="forgot_password_text">
- Zapomniałeś swojej nazwy użytkownika lub hasła?
- </text>
- <text name="login_help">
- Potrzebujesz pomocy z logowaniem się?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml
deleted file mode 100644
index b01e686c41..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Wróć do poprzedniej lokalizacji"/>
- <pull_button name="forward_btn" tool_tip="Idź do następnej lokalizacji"/>
- <button name="home_btn" tool_tip="Teleportuj do miejsca startu"/>
- <location_input label="Lokalizacja" name="location_combo"/>
- <search_combo_box label="Szukaj" name="search_combo_box" tool_tip="Szukaj">
- <combo_editor label="Szukaj [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Przeciągnij swoje landmarki tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
- <label name="favorites_bar_label" tool_tip="Przeciągnij swoje landmarki tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
- Pasek Ulubionych
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Pokaż więcej Moich Ulubionych"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_people.xml b/indra/newview/skins/minimal/xui/pl/panel_people.xml
deleted file mode 100644
index 3b3aaa0987..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Ludzie" name="people_panel">
- <string name="no_recent_people" value="Brak ostatnich rozmówców. Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej."/>
- <string name="no_filtered_recent_people" value="Brak ostatnich rozmówców posiadających wskazane imię."/>
- <string name="no_one_near" value="Nie ma nikogo w pobliżu. Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej."/>
- <string name="no_one_filtered_near" value="Nie ma nikogo o wskazanym imieniu w pobliżu."/>
- <string name="no_friends_online" value="Brak dostępnych znajomych"/>
- <string name="no_friends" value="Brak znajomych"/>
- <string name="no_friends_msg">
- Kliknij prawym przyciskiem na Rezydenta aby dodać go do listy znajomych.
-Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej.
- </string>
- <string name="no_filtered_friends_msg">
- Nie znaleziono tego czego szukasz? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej.
- </string>
- <string name="people_filter_label" value="Filtruj ludzi"/>
- <string name="groups_filter_label" value="Filtruj grupy"/>
- <string name="no_filtered_groups_msg" value="Nie znaleziono tego czego szukasz? Spróbuj [secondlife:///app/search/groups/[SEARCH_TERM] Szukaj]."/>
- <string name="no_groups_msg" value="Chcesz dołączyć do grup? Spróbuj [secondlife:///app/search/groups Szukaj]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Podwójne kliknięcie otwiera mapę, wciśnij Shift i przeciągnij myszką aby przesunąć)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Podwójne kliknięcie aktywuje teleportację, wciśnij Shift i przeciągnij myszką aby przesunąć)"/>
- <filter_editor label="Filtr" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="W POBLIŻU" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="nearby_view_sort_btn" tool_tip="Opcje"/>
- <button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
- </panel>
- </panel>
- <panel label="ZNAJOMI" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Dostępni"/>
- <accordion_tab name="tab_all" title="Wszyscy"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="options_gear_btn_panel">
- <menu_button name="friends_viewsort_btn" tool_tip="Pokaż opcje dodatkowe"/>
- </layout_panel>
- <layout_panel name="add_btn_panel">
- <button name="add_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
- </layout_panel>
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Usuń zaznaczoną osobę ze swojej listy znajomych"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="GRUPY" name="groups_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="groups_viewsort_btn" tool_tip="Opcje"/>
- <button name="plus_btn" tool_tip="Dołącz do grupy/Stwórz nową grupę"/>
- <button name="activate_btn" tool_tip="Aktywuj wybraną grupę"/>
- </panel>
- </panel>
- <panel label="OSTATNIE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="recent_viewsort_btn" tool_tip="Opcje"/>
- <button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjęcie, grupy i inne informacje o Rezydencie"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="Otwórz wiadomości IM"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Dzwoń" name="call_btn" tool_tip="Zadzwoń do tego Rezydenta"/>
- </layout_panel>
- <layout_panel name="share_btn_lp">
- <button label="Udostępnij" name="share_btn" tool_tip="Udostępnij obiekt z Szafy"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleport"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Profil grupy" name="group_info_btn" tool_tip="Pokaż informacje o grupie"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Czat grupy" name="chat_btn" tool_tip="Otwórz sesję czatu"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Rozmowa głosowa w grupie" name="group_call_btn" tool_tip="Rozmowa głosowa w tej grupie"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 95cd7c53dc..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Schowek"/>
- <button name="undock" tool_tip="Odłącz"/>
- <button name="dock" tool_tip="Przyłącz"/>
- <button name="show_help" tool_tip="Pomoc"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml b/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml
deleted file mode 100644
index 6aa0d27bb8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="StatBarDaysOfWeek">
- Niedziela:Poniedziałek:Wtorek:Środa:Czwartek:Piątek:Sobota
- </panel.string>
- <panel.string name="StatBarMonthsOfYear">
- Styczeń:Luty:Marzec:Kwiecień:Maj:Czerwiec:Lipiec:Styczeń:Wrzesień:Październik:Listopad:Grudzień
- </panel.string>
- <panel.string name="packet_loss_tooltip">
- Utracone pakiety
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Przepustowość
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <panel name="balance_bg">
- <text name="balance" tool_tip="Kliknij aby odświeżyć bilans L$" value="L$20"/>
- <button label="Kup L$" name="buyL" tool_tip="Kliknij aby kupić więcej L$"/>
- </panel>
- <text name="TimeText" tool_tip="Obecny czas (Pacyficzny)">
- 24:00 AM PST
- </text>
- <button name="media_toggle_btn" tool_tip="Start/Stop wszystkie media (Muzyka, Video, WWW)"/>
- <button name="volume_btn" tool_tip="Regulacja głośności"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_camera.xml b/indra/newview/skins/minimal/xui/pt/floater_camera.xml
deleted file mode 100644
index 4f3729c623..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Girar a Câmera ao redor do Foco
- </floater.string>
- <floater.string name="zoom_tooltip">
- Aproximar a Câmera in direção ao Foco
- </floater.string>
- <floater.string name="move_tooltip">
- Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita
- </floater.string>
- <floater.string name="camera_modes_title">
- Modos de câmera
- </floater.string>
- <floater.string name="pan_mode_title">
- Pan zoom orbital
- </floater.string>
- <floater.string name="presets_mode_title">
- Ângulos predefinidos
- </floater.string>
- <floater.string name="free_mode_title">
- Visualizar objeto
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Vista frontal
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Vista lateral
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Vista de trás
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Vista de objetos
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Vista do mouse
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Aproximar a Câmera in direção ao Foco">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Girar câmera ao redor do foco"/>
- <slider_bar name="zoom_slider" tool_tip="Zoom de câmera para focalizar"/>
- <joystick_track name="cam_track_stick" tool_tip="Move a câmera para cima e para baixo, direita e esquerda"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Ângulos predefinidos"/>
- <button label="" name="pan_btn" tool_tip="Pan zoom orbital"/>
- <button label="" name="avatarview_btn" tool_tip="Modos de câmera"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml b/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml
deleted file mode 100644
index 11428ff651..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="COMO">
- <floater.string name="loading_text">
- Carregando...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml b/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml
deleted file mode 100644
index da7428007e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="NAVEGADOR DE MÍDIA">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Atrás" name="back"/>
- <button label="Frente" name="forward"/>
- <button label="Recarregar" name="reload"/>
- <button label="OK" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="p/ trás" name="rewind"/>
- <button label="parar" name="stop"/>
- <button label="p/ frente" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Enviar esta página para lote" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Abrir no meu navegador" name="open_browser"/>
- <check_box label="Abrir sempre no meu navegador" name="open_always"/>
- <button label="Fechar" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml
deleted file mode 100644
index 60edfa505f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="Bate-papo local">
- <check_box label="Traduzir bate-papo (via Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_web_content.xml b/indra/newview/skins/minimal/xui/pt/floater_web_content.xml
deleted file mode 100644
index 5101579c6f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Navegar para trás"/>
- <button name="forward" tool_tip="Navegar para frente"/>
- <button name="stop" tool_tip="Parar a navegação"/>
- <button name="reload" tool_tip="Recarregar página"/>
- <combo_box name="address" tool_tip="Digite a URL aqui"/>
- <icon name="media_secure_lock_flag" tool_tip="Navegação segura"/>
- <button name="popexternal" tool_tip="Abrir a URL atual no navegador do seu computador"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml b/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml
deleted file mode 100644
index a199c58c15..0000000000
--- a/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [IDADE]
- </string>
- <string name="Details">
- [PERFIL_SL]
- </string>
- <text name="user_details">
- This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
- </text>
- <slider name="volume_slider" tool_tip="Volume de Voz" value="0.5"/>
- <button label="Adicionar amigo" name="add_friend_btn"/>
- <button label="MI" name="im_btn"/>
- <button label="Perfil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Disabilitar Voz" name="disable_voice"/>
- <button label="Habilitar Voz" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/inspect_object.xml b/indra/newview/skins/minimal/xui/pt/inspect_object.xml
deleted file mode 100644
index b72de7038d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Autor: [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Autor [CREATOR]
-Proprietário [OWNER]
- </string>
- <string name="Price">
- L$[AMOUNT]
- </string>
- <string name="PriceFree">
- Grátis!
- </string>
- <string name="Touch">
- Tocar
- </string>
- <string name="Sit">
- Sentar
- </string>
- <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
- <text name="price_text">
- L$30.000
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <button label="Comprar" name="buy_btn"/>
- <button label="Pagar" name="pay_btn"/>
- <button label="Pegar uma cópia" name="take_free_copy_btn"/>
- <button label="Tocar" name="touch_btn"/>
- <button label="Sentar" name="sit_btn"/>
- <button label="Abrir" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Navegação segura"/>
- <button label="Mais" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml
deleted file mode 100644
index 4b81276ab3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Ordenar por mais recente" name="sort_by_most_recent"/>
- <menu_item_check label="Ordenar por nome" name="sort_by_name"/>
- <menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml
deleted file mode 100644
index cfd69158bc..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Ver perfil" name="Profile..."/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="MI" name="Send IM..."/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Convidar para entrar no grupo" name="Invite..."/>
- <menu_item_call label="Bloquear" name="Avatar Mute"/>
- <menu_item_call label="Denunciar" name="abuse"/>
- <menu_item_call label="Congelar" name="Freeze..."/>
- <menu_item_call label="Ejetar" name="Eject..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
- <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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml
deleted file mode 100644
index 09060cf3ae..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Tocar" name="Attachment Object Touch"/>
- <menu_item_call label="Editar" name="Edit..."/>
- <menu_item_call label="Tirar" name="Detach"/>
- <menu_item_call label="Sentar" name="Sit Down Here"/>
- <menu_item_call label="Ficar de pé" name="Stand Up"/>
- <menu_item_call label="Trocar de look" name="Change Outfit"/>
- <menu_item_call label="Editar meu look" name="Edit Outfit"/>
- <menu_item_call label="Editar meu corpo" name="Edit My Shape"/>
- <menu_item_call label="Meus amigos" name="Friends..."/>
- <menu_item_call label="Meus grupos" name="Groups..."/>
- <menu_item_call label="Meu perfil" name="Profile..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
- <menu_item_call label="Largar" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml
deleted file mode 100644
index beba969b7e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Ver perfil" name="Show Profile"/>
- <menu_item_call label="Enviar MI..." name="Send IM"/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="Remover amigo..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml
deleted file mode 100644
index a4a26144c7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Ver perfil" name="Profile..."/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="MI" name="Send IM..."/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Convidar para entrar no grupo" name="Invite..."/>
- <menu_item_call label="Bloquear" name="Avatar Mute"/>
- <menu_item_call label="Denunciar" name="abuse"/>
- <menu_item_call label="Congelar" name="Freeze..."/>
- <menu_item_call label="Ejetar" name="Eject..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
- <menu_item_call label="Mais zoom" name="Zoom In"/>
- <menu_item_call label="Pagar" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml
deleted file mode 100644
index 6e203d5a25..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Sentar" name="Sit Down Here"/>
- <menu_item_call label="Ficar de pé" name="Stand Up"/>
- <context_menu label="Tirar" name="Take Off &gt;">
- <context_menu label="Roupa" name="Clothes &gt;">
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Calças" name="Pants"/>
- <menu_item_call label="Saia" name="Skirt"/>
- <menu_item_call label="Sapatos" name="Shoes"/>
- <menu_item_call label="Meias" name="Socks"/>
- <menu_item_call label="Jaqueta" name="Jacket"/>
- <menu_item_call label="Luvas" name="Gloves"/>
- <menu_item_call label="Camiseta" name="Self Undershirt"/>
- <menu_item_call label="Roupa de baixo" name="Self Underpants"/>
- <menu_item_call label="Tatuagem" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Todas as roupas" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Tirar" name="Object Detach"/>
- <menu_item_call label="Tirar tudo" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Trocar de look" name="Chenge Outfit"/>
- <menu_item_call label="Editar meu look" name="Edit Outfit"/>
- <menu_item_call label="Editar meu corpo" name="Edit My Shape"/>
- <menu_item_call label="Meus amigos" name="Friends..."/>
- <menu_item_call label="Meus grupos" name="Groups..."/>
- <menu_item_call label="Meu perfil" name="Profile..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml
deleted file mode 100644
index 479d02512f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Botão de gestos" name="ShowGestureButton"/>
- <menu_item_check label="Botão de movimento" name="ShowMoveButton"/>
- <menu_item_check label="Botão de ver" name="ShowCameraButton"/>
- <menu_item_check label="Botão de fotos" name="ShowSnapshotButton"/>
- <menu_item_check label="Botão da Barra lateral" name="ShowSidebarButton"/>
- <menu_item_check label="Botão Construir" name="ShowBuildButton"/>
- <menu_item_check label="Botão Buscar" name="ShowSearchButton"/>
- <menu_item_check label="Botão Mapa" name="ShowWorldMapButton"/>
- <menu_item_check label="Botão do Mini Mapa" name="ShowMiniMapButton"/>
- <menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Colar" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Excluir" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Selecionar tudo" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml
deleted file mode 100644
index 527e3af3c9..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Separar" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml
deleted file mode 100644
index 704fd226eb..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Trocar" name="replace"/>
- <menu_item_call label="Editar" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml
deleted file mode 100644
index 051323ae6a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Tirar" name="take_off"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Trocar" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml
deleted file mode 100644
index 8716992a5e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Roupas novas" name="COF.Gear.New_Clothes"/>
- <menu label="Nova parte do corpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_edit.xml b/indra/newview/skins/minimal/xui/pt/menu_edit.xml
deleted file mode 100644
index ff431c9a21..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Editar" name="Edit">
- <menu_item_call label="Desfazer" name="Undo"/>
- <menu_item_call label="Repetir" name="Redo"/>
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Colar" name="Paste"/>
- <menu_item_call label="Excluir" name="Delete"/>
- <menu_item_call label="Replicar" name="Duplicate"/>
- <menu_item_call label="Selecionar tudo" name="Select All"/>
- <menu_item_call label="Desfazer seleção" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_favorites.xml b/indra/newview/skins/minimal/xui/pt/menu_favorites.xml
deleted file mode 100644
index 062820fbca..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teletransportar" name="Teleport To Landmark"/>
- <menu_item_call label="Ver/Editar marco" name="Landmark Open"/>
- <menu_item_call label="Copiar SLurl" name="Copy slurl"/>
- <menu_item_call label="Mostrar no mapa" name="Show On Map"/>
- <menu_item_call label="Copiar" name="Landmark Copy"/>
- <menu_item_call label="Colar" name="Landmark Paste"/>
- <menu_item_call label="Excluir" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml
deleted file mode 100644
index 70d8ae7a8e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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="Copiar" name="copy_gesture"/>
- <menu_item_call label="Colar" name="paste"/>
- <menu_item_call label="Copiar UUID" name="copy_uuid"/>
- <menu_item_call label="Salvar para look atual" name="save_to_outfit"/>
- <menu_item_call label="Editar" name="edit_gesture"/>
- <menu_item_call label="Verificar" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml b/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml
deleted file mode 100644
index 1083845d68..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Entrar no grupo..." name="item_join"/>
- <menu_item_call label="Novo grupo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml
deleted file mode 100644
index c2b063193e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Mostrar barra de navegação" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Mostrar barra de favoritos" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Mostrar minibarra de localização" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml
deleted file mode 100644
index 2d37cefd6f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Fechar tudo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml
deleted file mode 100644
index ead949ba13..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml
deleted file mode 100644
index dd177d1b8d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Sobre o grupo" name="Show Profile"/>
- <menu_item_call label="Mostrar sessão" name="Chat"/>
- <menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml
deleted file mode 100644
index d821b3ded0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Ver perfil" name="Show Profile"/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="Mostrar sessão" name="Send IM"/>
- <menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 90b321e0a2..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Ver perfil" name="view_profile"/>
- <menu_item_call label="Adicionar amigo..." name="add_friend"/>
- <menu_item_call label="MI" name="im"/>
- <menu_item_call label="Ligar" name="call"/>
- <menu_item_call label="Teletransportar" name="teleport"/>
- <menu_item_call label="Bloquear" name="block"/>
- <menu_item_call label="Desbloquear" name="unblock"/>
- <menu_item_call label="Denunciar" name="report"/>
- <menu_item_call label="Congelar" name="freeze"/>
- <menu_item_call label="Ejetar" name="eject"/>
- <menu_item_call label="Chutar" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Depurar texturas" name="debug"/>
- <menu_item_call label="Localizar no mapa" name="find_on_map"/>
- <menu_item_call label="Mais zoom" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml
deleted file mode 100644
index 184db26538..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Tocar" name="touch"/>
- <menu_item_call label="Sentar" name="sit"/>
- <menu_item_call label="Pagar" name="pay"/>
- <menu_item_call label="Comprar" name="buy"/>
- <menu_item_call label="Pegar" name="take"/>
- <menu_item_call label="Pegar uma cópia" name="take_copy"/>
- <menu_item_call label="Abrir" name="open"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Vestir" name="wear"/>
- <menu_item_call label="Adicionar" name="add"/>
- <menu_item_call label="Denunciar" name="report"/>
- <menu_item_call label="Bloquear" name="block"/>
- <menu_item_call label="Mais zoom" name="zoom_in"/>
- <menu_item_call label="Tirar" name="remove"/>
- <menu_item_call label="Mais informações" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
deleted file mode 100644
index c1f27e765d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
- <menu_item_call label="Sentar" name="Sit Down Here"/>
- <menu_item_call label="Ficar de pé" name="Stand Up"/>
- <menu_item_call label="Meus amigos" name="Friends..."/>
- <menu_item_call label="Meu perfil" name="Profile..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml
deleted file mode 100644
index c404719c95..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Fechar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory.xml
deleted file mode 100644
index 1b1efd3270..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Comprar" name="Task Buy"/>
- <menu_item_call label="Abrir" name="Task Open"/>
- <menu_item_call label="Executar" name="Task Play"/>
- <menu_item_call label="Propriedades" name="Task Properties"/>
- <menu_item_call label="Renomear" name="Task Rename"/>
- <menu_item_call label="Apagar" name="Task Remove"/>
- <menu_item_call label="Limpar lixeira" name="Empty Trash"/>
- <menu_item_call label="Limpar Achados &amp; perdidos" name="Empty Lost And Found"/>
- <menu_item_call label="Nova pasta" name="New Folder"/>
- <menu_item_call label="Novo script" name="New Script"/>
- <menu_item_call label="Nova anotação" name="New Note"/>
- <menu_item_call label="Novo gesto" name="New Gesture"/>
- <menu label="Novas roupas" name="New Clothes">
- <menu_item_call label="Nova camisa" name="New Shirt"/>
- <menu_item_call label="Nova calça" name="New Pants"/>
- <menu_item_call label="Novos sapatos" name="New Shoes"/>
- <menu_item_call label="Novas meias" name="New Socks"/>
- <menu_item_call label="Nova jaqueta" name="New Jacket"/>
- <menu_item_call label="Nova saia" name="New Skirt"/>
- <menu_item_call label="Novas luvas" name="New Gloves"/>
- <menu_item_call label="Nova anágua" name="New Undershirt"/>
- <menu_item_call label="Nova roupa de baixo" name="New Underpants"/>
- <menu_item_call label="Nova máscara alfa" name="New Alpha Mask"/>
- <menu_item_call label="Nova tatuagem" name="New Tattoo"/>
- </menu>
- <menu label="Nova parte do corpo" name="New Body Parts">
- <menu_item_call label="Nova forma" name="New Shape"/>
- <menu_item_call label="Nova pele" name="New Skin"/>
- <menu_item_call label="Novo cabelo" name="New Hair"/>
- <menu_item_call label="Novos olhos" name="New Eyes"/>
- </menu>
- <menu label="Alterar fonte" name="Change Type">
- <menu_item_call label="Padrão" name="Default"/>
- <menu_item_call label="Luvas" name="Gloves"/>
- <menu_item_call label="Jaqueta" name="Jacket"/>
- <menu_item_call label="Calças" name="Pants"/>
- <menu_item_call label="Silhueta" name="Shape"/>
- <menu_item_call label="Sapatos" name="Shoes"/>
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Saia" name="Skirt"/>
- <menu_item_call label="Roupa de baixo" name="Underpants"/>
- <menu_item_call label="Camiseta" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teletransporte" name="Landmark Open"/>
- <menu_item_call label="Abrir" name="Animation Open"/>
- <menu_item_call label="Abrir" name="Sound Open"/>
- <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="Encontrar original" name="Find Original"/>
- <menu_item_call label="Remover item" name="Purge Item"/>
- <menu_item_call label="Restaurar item" name="Restore Item"/>
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Abrir original" name="Open Original"/>
- <menu_item_call label="Propriedades" name="Properties"/>
- <menu_item_call label="Renomear" name="Rename"/>
- <menu_item_call label="Copiar item UUID" name="Copy Asset UUID"/>
- <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"/>
- <menu_item_call label="Executar som" name="Sound Play"/>
- <menu_item_call label="Sobre o marco" name="About Landmark"/>
- <menu_item_call label="Executar animação" name="Animation Play"/>
- <menu_item_call label="Executar áudio" name="Animation Audition"/>
- <menu_item_call label="Mandar MI" name="Send Instant Message"/>
- <menu_item_call label="Oferecer teletransporte..." name="Offer Teleport..."/>
- <menu_item_call label="Bate-papo em conferência" name="Conference Chat"/>
- <menu_item_call label="Ativar" name="Activate"/>
- <menu_item_call label="Desativar" name="Deactivate"/>
- <menu_item_call label="Salvar como" name="Save As"/>
- <menu_item_call label="Tirar de si mesmo" name="Detach From Yourself"/>
- <menu_item_call label="Vestir" name="Wearable And Object Wear"/>
- <menu label="Anexar a" name="Attach To"/>
- <menu label="Anexar ao HUD" name="Attach To HUD"/>
- <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="--Sem opções--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml
deleted file mode 100644
index 2723f39287..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Upload" name="upload">
- <menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="Som (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="Volume (L$[COST] per file)..." name="Bulk Upload"/>
- <menu_item_call label="Autorizações de upload padrão" name="perm prefs"/>
- </menu>
- <menu_item_call label="Nova pasta" name="New Folder"/>
- <menu_item_call label="Novo script" name="New Script"/>
- <menu_item_call label="Nova anotação" name="New Note"/>
- <menu_item_call label="Novo gesto" name="New Gesture"/>
- <menu label="Novas roupas" name="New Clothes">
- <menu_item_call label="Nova camisa" name="New Shirt"/>
- <menu_item_call label="Novas calças" name="New Pants"/>
- <menu_item_call label="Novos sapatos" name="New Shoes"/>
- <menu_item_call label="Novas meias" name="New Socks"/>
- <menu_item_call label="Nova blusa" name="New Jacket"/>
- <menu_item_call label="Nova saia" name="New Skirt"/>
- <menu_item_call label="Novas luvas" name="New Gloves"/>
- <menu_item_call label="Nova camiseta" name="New Undershirt"/>
- <menu_item_call label="Novas roupa de baixo" name="New Underpants"/>
- <menu_item_call label="Novo alpha" name="New Alpha"/>
- <menu_item_call label="Nova tatuagem" name="New Tattoo"/>
- </menu>
- <menu label="Nova parte do corpo" name="New Body Parts">
- <menu_item_call label="Nova forma" name="New Shape"/>
- <menu_item_call label="Nova pele" name="New Skin"/>
- <menu_item_call label="Novo cabelo" name="New Hair"/>
- <menu_item_call label="Novos olhos" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml
deleted file mode 100644
index 3400578d9a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nova janela de inventário" name="new_window"/>
- <menu_item_check label="Ordenar por nome" name="sort_by_name"/>
- <menu_item_check label="Ordenar por mais recente" name="sort_by_recent"/>
- <menu_item_check label="Pastas do sistema no topo" name="sort_system_folders_to_top"/>
- <menu_item_call label="Mostrar filtros" name="show_filters"/>
- <menu_item_call label="Restabelecer filtros" name="reset_filters"/>
- <menu_item_call label="Fechar todas as pastas" name="close_folders"/>
- <menu_item_call label="Esvaziar achados e perdidos" name="empty_lostnfound"/>
- <menu_item_call label="Salvar textura como" name="Save Texture As"/>
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Encontrar original" name="Find Original"/>
- <menu_item_call label="Encontrar todos os links" name="Find All Links"/>
- <menu_item_call label="Esvaziar lixeira" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_land.xml b/indra/newview/skins/minimal/xui/pt/menu_land.xml
deleted file mode 100644
index 9182ce321a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Sobre terrenos" name="Place Information..."/>
- <menu_item_call label="Sentar aqui" name="Sit Here"/>
- <menu_item_call label="Comprar este terreno" name="Land Buy"/>
- <menu_item_call label="Comprar passe" name="Land Buy Pass"/>
- <menu_item_call label="Construir" name="Create"/>
- <menu_item_call label="Editar a topografia" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_landmark.xml b/indra/newview/skins/minimal/xui/pt/menu_landmark.xml
deleted file mode 100644
index 6accfebee7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copiar SLurl" name="copy"/>
- <menu_item_call label="Excluir" name="delete"/>
- <menu_item_call label="Criar destaque" name="pick"/>
- <menu_item_call label="Adicionar à barra de favoritos" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_login.xml b/indra/newview/skins/minimal/xui/pt/menu_login.xml
deleted file mode 100644
index 3dff3d7c8a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Eu" name="File">
- <menu_item_call label="Preferências" name="Preferences..."/>
- <menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Ajuda" name="Help">
- <menu_item_call label="Ajuda do [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Exibir menu de depuração" name="Show Debug Menu"/>
- <menu label="Depurar" name="Debug">
- <menu_item_call label="Mostrar configurações" name="Debug Settings"/>
- <menu_item_call label="Configurações da interface e cor" name="UI/Color Settings"/>
- <menu label="Testes de UI" name="UI Tests"/>
- <menu_item_call label="Definir tamanho da janela:" name="Set Window Size..."/>
- <menu_item_call label="Mostrar TOS" name="TOS"/>
- <menu_item_call label="Mostrar mensagem crítica" name="Critical"/>
- <menu_item_call label="Teste de mídia do navegador" name="Web Browser Test"/>
- <menu_item_call label="Teste de conteúdo web" name="Web Content Floater Test"/>
- <menu_item_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/minimal/xui/pt/menu_mini_map.xml b/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml
deleted file mode 100644
index 6a3fe55de5..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom Perto" name="Zoom Close"/>
- <menu_item_call label="Zoom Médio" name="Zoom Medium"/>
- <menu_item_call label="Zoom Longe" name="Zoom Far"/>
- <menu_item_call label="Zoom padrão" name="Zoom Default"/>
- <menu_item_check label="Girar mapa" name="Rotate Map"/>
- <menu_item_check label="Auto Center" name="Auto Center"/>
- <menu_item_call label="Parar Acompanhamento" name="Stop Tracking"/>
- <menu_item_call label="Mapa-múndi" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_navbar.xml b/indra/newview/skins/minimal/xui/pt/menu_navbar.xml
deleted file mode 100644
index 57c1471de3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Mostrar coordenadas" name="Show Coordinates"/>
- <menu_item_check label="Mostrar as propriedades do terreno" name="Show Parcel Properties"/>
- <menu_item_call label="Marco" name="Landmark"/>
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Colar" name="Paste"/>
- <menu_item_call label="Excluir" name="Delete"/>
- <menu_item_call label="Selecionar tudo" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml
deleted file mode 100644
index f1ea83c837..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Mostrar quem está aqui..." name="nearby_people"/>
- <menu_item_check label="Mostrar texto bloqueado" name="muted_text"/>
- <menu_item_check label="Mostrar ícones de amigos" name="show_buddy_icons"/>
- <menu_item_check label="Mostrar nomes" name="show_names"/>
- <menu_item_check label="Mostrar ícones e nomes" name="show_icons_and_names"/>
- <menu_item_call label="Tamanho da fonte" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml
deleted file mode 100644
index 43ad4134ec..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Fechar tudo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_object.xml b/indra/newview/skins/minimal/xui/pt/menu_object.xml
deleted file mode 100644
index bf94859699..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Tocar" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Tocar"/>
- </menu_item_call>
- <menu_item_call label="Editar" name="Edit..."/>
- <menu_item_call label="Construir" name="Build"/>
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Sentar aqui" name="Object Sit"/>
- <menu_item_call label="Ficar de pé" name="Object Stand Up"/>
- <menu_item_call label="Perfil do objeto" name="Object Inspect"/>
- <menu_item_call label="Mais zoom" name="Zoom In"/>
- <context_menu label="Colocar no(a)" name="Put On">
- <menu_item_call label="Vestir" name="Wear"/>
- <menu_item_call label="Adicionar" name="Add"/>
- <context_menu label="Anexar" name="Object Attach"/>
- <context_menu label="Anexar o HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Tirar" name="Remove">
- <menu_item_call label="Denunciar abuso" name="Report Abuse..."/>
- <menu_item_call label="Bloquear" name="Object Mute"/>
- <menu_item_call label="Devolver" name="Return..."/>
- <menu_item_call label="Excluir" name="Delete"/>
- </context_menu>
- <menu_item_call label="Pegar" name="Pie Object Take"/>
- <menu_item_call label="Pegar uma cópia" name="Take Copy"/>
- <menu_item_call label="Pagar" name="Pay..."/>
- <menu_item_call label="Comprar" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml b/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml
deleted file mode 100644
index 7af760a6ee..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Perfil do objeto..." name="Object Profile"/>
- <menu_item_call label="Bloquear..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml
deleted file mode 100644
index 11b3e653c6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Vestir - Substituir look atual" name="wear"/>
- <menu_item_call label="Vestir - Adicionar ao look atual" name="wear_add"/>
- <menu_item_call label="Tirar - Tirar do look atual" name="take_off"/>
- <menu label="Roupas novas" name="New Clothes">
- <menu_item_call label="Nova camisa" name="New Shirt"/>
- <menu_item_call label="Novas calças" name="New Pants"/>
- <menu_item_call label="Novos sapatos" name="New Shoes"/>
- <menu_item_call label="Novas meias" name="New Socks"/>
- <menu_item_call label="Nova blusa" name="New Jacket"/>
- <menu_item_call label="Nova saia" name="New Skirt"/>
- <menu_item_call label="Novas luvas" name="New Gloves"/>
- <menu_item_call label="Nova camiseta" name="New Undershirt"/>
- <menu_item_call label="Novas roupa de baixo" name="New Underpants"/>
- <menu_item_call label="Novo alpha" name="New Alpha"/>
- <menu_item_call label="Nova tatuagem" name="New Tattoo"/>
- </menu>
- <menu label="Nova parte do corpo" name="New Body Parts">
- <menu_item_call label="Nova silhueta" name="New Shape"/>
- <menu_item_call label="Nova pele" name="New Skin"/>
- <menu_item_call label="Novo cabelo" name="New Hair"/>
- <menu_item_call label="Novos olhos" name="New Eyes"/>
- </menu>
- <menu_item_call label="Renomear look" name="rename"/>
- <menu_item_call label="Excluir visual" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml
deleted file mode 100644
index 8db5e405b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Vestir - Substituir look atual" name="wear_replace"/>
- <menu_item_call label="Vestir - Sem tirar look atual" name="wear_add"/>
- <menu_item_call label="Tirar - Tirar do look atual" name="take_off"/>
- <menu_item_call label="Editar look" name="edit"/>
- <menu_item_call label="Renomear look" name="rename"/>
- <menu_item_call label="Excluir visual" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml b/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml
deleted file mode 100644
index 01f1d4ef80..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Ordenar por nome" name="SortByName"/>
- <menu_item_check label="Ordenar por conversas mais recentes" name="SortByRecentSpeakers"/>
- <menu_item_call label="Ver perfil" name="View Profile"/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Ver ícones de pessoas" name="View Icons"/>
- <menu_item_check label="Bloquear voz" name="Block/Unblock"/>
- <menu_item_check label="Bloquear texto" name="MuteText"/>
- <context_menu label="Opções do moderador &gt;" name="Moderator Options">
- <menu_item_check label="Pode bater papo por escrito" name="AllowTextChat"/>
- <menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Desfazer silenciar deste participante" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Silenciar todos" name="ModerateVoiceMute"/>
- <menu_item_call label="Desfazer silenciar para todos" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml
deleted file mode 100644
index e7c325010f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar por nome" name="sort_name"/>
- <menu_item_check label="Ordenar por status" name="sort_status"/>
- <menu_item_check label="Ver ícones de pessoas" name="view_icons"/>
- <menu_item_check label="Autorizações de visualização dadas" name="view_permissions"/>
- <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml b/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml
deleted file mode 100644
index 9a924ad7b9..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Ver dados" name="View Info"/>
- <menu_item_call label="Bate-papo" name="Chat"/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Ativar" name="Activate"/>
- <menu_item_call label="Sair" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml
deleted file mode 100644
index 86a9d2263f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Mostrar ícones de grupos" name="Display Group Icons"/>
- <menu_item_call label="Sair do grupo selecionado" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml
deleted file mode 100644
index b446a2fe81..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Ver perfil" name="View Profile"/>
- <menu_item_call label="Adicionar amigo" name="Add Friend"/>
- <menu_item_call label="Remover amigo" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Mapa" name="Map"/>
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
- <menu_item_call label="Teletransportar?" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 79edb96b1c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Adicionar amigo..." name="Add Friends"/>
- <menu_item_call label="Remover amigo..." name="Remove Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_call label="Teletransportar?" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 228ce46a31..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar por conversas mais recentes" name="sort_by_recent_speakers"/>
- <menu_item_check label="Ordenar por nome" name="sort_name"/>
- <menu_item_check label="Ordenar por distância" name="sort_distance"/>
- <menu_item_check label="Ver ícones de pessoas" name="view_icons"/>
- <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml
deleted file mode 100644
index f3b89e01cd..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar por mais recente" name="sort_most"/>
- <menu_item_check label="Ordenar por nome" name="sort_name"/>
- <menu_item_check label="Ver ícones de pessoas" name="view_icons"/>
- <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_picks.xml b/indra/newview/skins/minimal/xui/pt/menu_picks.xml
deleted file mode 100644
index 8b9e10fc02..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Editar" name="pick_edit"/>
- <menu_item_call label="Teletransportar" name="pick_teleport"/>
- <menu_item_call label="Mapa" name="pick_map"/>
- <menu_item_call label="Excluir" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml
deleted file mode 100644
index 95a7c05262..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Adicionar" name="create_pick"/>
- <menu_item_call label="Novo anúncio" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_place.xml b/indra/newview/skins/minimal/xui/pt/menu_place.xml
deleted file mode 100644
index 282ea20a7a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Criar marco" name="landmark"/>
- <menu_item_call label="Criar destaque" name="pick"/>
- <menu_item_call label="Comprar passe" name="pass"/>
- <menu_item_call label="Editar" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml
deleted file mode 100644
index d099d04f8d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Adicionar pasta" name="add_folder"/>
- <menu_item_call label="Adicionar marco" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml
deleted file mode 100644
index 2059a9ed2d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Adicionar marco" name="add_landmark"/>
- <menu_item_call label="Adicionar pasta" name="add_folder"/>
- <menu_item_call label="Cortar" name="cut"/>
- <menu_item_call label="Copiar" name="copy_folder"/>
- <menu_item_call label="Colar" name="paste"/>
- <menu_item_call label="Renomear" name="rename"/>
- <menu_item_call label="Excluir" name="delete"/>
- <menu_item_call label="Expanda" name="expand"/>
- <menu_item_call label="Recolher" name="collapse"/>
- <menu_item_call label="Expandir todas as pastas" name="expand_all"/>
- <menu_item_call label="Recolher todas as pastas" name="collapse_all"/>
- <menu_item_check label="Ordenar por data" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml
deleted file mode 100644
index 52a9d13735..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Teletransportar" name="teleport"/>
- <menu_item_call label="Mais informações" name="more_info"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Adicionar marco" name="add_landmark"/>
- <menu_item_call label="Adicionar pasta" name="add_folder"/>
- <menu_item_call label="Cortar" name="cut"/>
- <menu_item_call label="Copiar marco" name="copy_landmark"/>
- <menu_item_call label="Copiar SLurl" name="copy_slurl"/>
- <menu_item_call label="Colar" name="paste"/>
- <menu_item_call label="Renomear" name="rename"/>
- <menu_item_call label="Excluir" name="delete"/>
- <menu_item_call label="Expandir todas as pastas" name="expand_all"/>
- <menu_item_call label="Recolher todas as pastas" name="collapse_all"/>
- <menu_item_check label="Ordenar por data" name="sort_by_date"/>
- <menu_item_call label="Criar destaque" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml
deleted file mode 100644
index d41ecbd755..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Mapa" name="show_on_map"/>
- <menu_item_call label="Pagar" name="pay"/>
- <menu_item_call label="Compartilhar" name="share"/>
- <menu_item_call label="Bloquear" name="block"/>
- <menu_item_call label="Desbloquear" name="unblock"/>
- <menu_item_call label="Chutar" name="kick"/>
- <menu_item_call label="Congelar" name="freeze"/>
- <menu_item_call label="Descongelar" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml
deleted file mode 100644
index 61c6b9202f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Salvar" name="save_outfit"/>
- <menu_item_call label="Salvar como" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml
deleted file mode 100644
index ccf3878e14..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Fechar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_slurl.xml b/indra/newview/skins/minimal/xui/pt/menu_slurl.xml
deleted file mode 100644
index 6d4c84fc3c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Sobre a URL" name="about_url"/>
- <menu_item_call label="Teletransporte para a URL" name="teleport_to_url"/>
- <menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml
deleted file mode 100644
index f034509be8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Expandir todas as pastas" name="Expand all folders"/>
- <menu_item_call label="Recolher todas as pastas" name="Collapse all folders"/>
- <menu_item_call label="Limpar histórico de teletransporte" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml
deleted file mode 100644
index ec1e7a0950..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teletransportar" name="Teleport"/>
- <menu_item_call label="Mais informações" name="More Information"/>
- <menu_item_call label="Copiar" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml
deleted file mode 100644
index 6a633cf74c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Abrir" name="TabOpen"/>
- <menu_item_call label="Fechar" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml b/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml
deleted file mode 100644
index 31c284c6ed..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Colar" name="Paste"/>
- <menu_item_call label="Excluir" name="Delete"/>
- <menu_item_call label="Selecionar tudo" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml
deleted file mode 100644
index d9347950b1..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Mostrar coordenadas" name="Show Coordinates"/>
- <menu_item_check label="Mostrar as propriedades do terreno" name="Show Parcel Properties"/>
- <menu_item_call label="Marco" name="Landmark"/>
- <menu_item_call label="Copiar" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml b/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml
deleted file mode 100644
index ba5e055124..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar perfil de residente" name="show_agent"/>
- <menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_group.xml b/indra/newview/skins/minimal/xui/pt/menu_url_group.xml
deleted file mode 100644
index 5b67a69c9a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar informações do grupo" name="show_group"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy_label"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_http.xml b/indra/newview/skins/minimal/xui/pt/menu_url_http.xml
deleted file mode 100644
index e53a2572b8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Abrir página da web" name="url_open"/>
- <menu_item_call label="Abrir no navegador do SL" name="url_open_internal"/>
- <menu_item_call label="Abrir no navegador externo" name="url_open_external"/>
- <menu_item_call label="Copiar URL para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml
deleted file mode 100644
index 45c14355d0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar item de inventário" name="show_item"/>
- <menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_map.xml b/indra/newview/skins/minimal/xui/pt/menu_url_map.xml
deleted file mode 100644
index ba114cccaa..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Teletransportar para este lugar" name="teleport_to_location"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml
deleted file mode 100644
index c197444181..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar informações sobre o objeto" name="show_object"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/>
- <menu_item_call label="Copiar nome do objeto para área de transferência" name="url_copy_label"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml
deleted file mode 100644
index 6cc668bfd3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar informações sobre este lote" name="show_parcel"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml
deleted file mode 100644
index d0784149ac..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Executar este comando" name="run_slapp"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml
deleted file mode 100644
index 7216ccf0b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar informações sobre este lugar" name="show_place"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Teletransportar para este lugar" name="teleport_to_location"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml
deleted file mode 100644
index f007425646..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teletransportar para este lugar" name="teleport"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_viewer.xml b/indra/newview/skins/minimal/xui/pt/menu_viewer.xml
deleted file mode 100644
index 2bd1e88279..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Ajuda" name="Help">
- <menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/>
- </menu>
- <menu label="Avançado" name="Advanced">
- <menu label="Atalhos" name="Shortcuts">
- <menu_item_check label="Voar" name="Fly"/>
- <menu_item_call label="Fechar janela" name="Close Window"/>
- <menu_item_call label="Fechar todas as janelas" name="Close All Windows"/>
- <menu_item_call label="Visão padrão" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml
deleted file mode 100644
index 2487f6779f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Trocar" name="wear_replace"/>
- <menu_item_call label="Vestir" name="wear_wear"/>
- <menu_item_call label="Adicionar" name="wear_add"/>
- <menu_item_call label="Tirar / Separar" name="take_off_or_detach"/>
- <menu_item_call label="Separar" name="detach"/>
- <context_menu label="Colocar em" name="wearable_attach_to"/>
- <context_menu label="Anexar ao HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Tirar" name="take_off"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Perfil do item" name="object_profile"/>
- <menu_item_call label="Mostrar original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml
deleted file mode 100644
index 7b6ce4d87e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Editar look" name="edit"/>
- <menu_item_call label="Tirar" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml
deleted file mode 100644
index 4e6e52ebc7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Tirar" name="take_off"/>
- <menu_item_call label="Tirar" name="detach"/>
- <menu_item_call label="Editar look" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/notifications.xml b/indra/newview/skins/minimal/xui/pt/notifications.xml
deleted file mode 100644
index 69c4cb3b3e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <notification name="UserGiveItem">
- [NAME_SLURL] quer lhe dar [ITEM_SLURL]. Esta ação requer o modo Avançado. Passe para o modo avançado e você verá o item em seu inventário. Para passar para o modo avançado, feche e reinicialize esse aplicativo e mude o modo (indicado na tela de login).
- <form name="form">
- <button name="Show" text="Guardar item"/>
- <button name="Discard" text="Recusar item"/>
- <button name="Mute" text="Bloquear usuário"/>
- </form>
- </notification>
- <notification name="ObjectGiveItem">
- Um objeto chamado &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, de [NAME_SLURL], está oferecendo &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; a você. Esta ação requer o modo Avançado. Passe para o modo Avançado e você verá o item em seu Inventário. Para passar para o modo Avançado, feche e reinicialize esse aplicativo e mude o modo (indicado na tela de login).
- <form name="form">
- <button name="Keep" text="Guardar item"/>
- <button name="Discard" text="Recusar item"/>
- <button name="Mute" text="Bloquear objeto"/>
- </form>
- </notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml
deleted file mode 100644
index bd50d4953d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Ligar" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Desligar" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Controles de voz" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml
deleted file mode 100644
index 9b4eb2c2b8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Liga e desliga o microfone"/>
- <string name="VoiceControlBtnToolTip" value="Mostra/oculta os controles de voz"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Falar" name="speak_btn" tool_tip="Ligar/desligar seu microfone"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Mudar as preferências de áudio"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesto" name="Gesture" tool_tip="Fazer seu avatar agir"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Exibir" name="camera_btn" tool_tip="Controlar ângulo da câmera"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinos" name="destination_btn" tool_tip="Viajar no Second Life"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Meu avatar" name="avatar_btn" tool_tip="Trocar seu visual"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Pessoas" name="show_people_button" tool_tip="Encontrar pessoas no Second Life"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Perfil" name="show_profile_btn" tool_tip="Ver e editar seu perfil"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Como..." name="show_help_btn" tool_tip="Opções de ajuda do Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversas"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notificações"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml
deleted file mode 100644
index 177cee28a6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="end_call_btn_panel">
- <button label="Desligar" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Abrir controles de voz" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
deleted file mode 100644
index 190323c3b0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Perfil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Adicionar amigo..." name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Ligar" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Encerrar ligação" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Bloquear" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="Desbloquear" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Volume da ligação" value="0.5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_login.xml b/indra/newview/skins/minimal/xui/pt/panel_login.xml
deleted file mode 100644
index de9717874f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=pt
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Nome de usuário:
- </text>
- <combo_box name="username_combo" tool_tip="O nome de usuário que você escolheu ao fazer seu cadastro, como zecazc12 or Magia Solar"/>
- <text name="password_text">
- Senha:
- </text>
- <check_box label="Lembrar senha" name="remember_check"/>
- <button label="conectar" name="connect_btn"/>
- <text name="mode_selection_text">
- Modo:
- </text>
- <combo_box name="mode_combo" tool_tip="Selecione o modo. O modo Básico é mais rápido e ideal para explorar e conversar. Use o modo Avançado para acessar mais recursos.">
- <combo_box.item label="Básico" name="Basic"/>
- <combo_box.item label="Avançado" name="Advanced"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Cadastre-se
- </text>
- <text name="forgot_password_text">
- Esqueceu seu nome ou senha?
- </text>
- <text name="login_help">
- Precisa de ajuda ao conectar?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml
deleted file mode 100644
index 01930bf3b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Voltar para região anterior"/>
- <pull_button name="forward_btn" tool_tip="Avançar uma região"/>
- <button name="home_btn" tool_tip="Teletransportar para meu início"/>
- <location_input label="Onde" name="location_combo"/>
- <search_combo_box label="Busca" name="search_combo_box" tool_tip="Busca">
- <combo_editor label="Buscar no [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
- <label name="favorites_bar_label" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
- Barra Destaques
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mostrar mais favoritos"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_people.xml b/indra/newview/skins/minimal/xui/pt/panel_people.xml
deleted file mode 100644
index 0e98c586c6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Pessoas" name="people_panel">
- <string name="no_recent_people" value="Ninguém, recentemente. Em busca de alguém para conversar? Confira o botão Destinos abaixo."/>
- <string name="no_filtered_recent_people" value="Não há ninguém com esse nome ultimamente."/>
- <string name="no_one_near" value="Ninguém por perto Em busca de alguém para conversar? Confira o botão Destinos abaixo."/>
- <string name="no_one_filtered_near" value="Não há ninguém com esse nome por perto."/>
- <string name="no_friends_online" value="Nenhum amigo online"/>
- <string name="no_friends" value="Nenhum amigo"/>
- <string name="no_friends_msg">
- Clique em um residente com o botão direito to mouse para adicioná-lo como amigo.
-Em busca de alguém para conversar? Confira o botão Destinos abaixo.
- </string>
- <string name="no_filtered_friends_msg">
- Não encontrou o que procura? Confira o botão Destinos abaixo.
- </string>
- <string name="people_filter_label" value="Filtro de pessoas"/>
- <string name="groups_filter_label" value="Filtro de grupos"/>
- <string name="no_filtered_groups_msg" value="Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search]."/>
- <string name="no_groups_msg" value="À procura de grupos interessantes? Tente fazer uma [secondlife:///app/search/groups Busca]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Clique duplo para abrir o Mapa, botão Shift e arrastar para ver mais)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Clique duplo para se teletransportar, botão Shift e arrastar para ver mais)"/>
- <filter_editor label="Filtro" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="PROXIMIDADE" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel"/>
- </panel>
- <panel label="MEUS AMIGOS" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Online"/>
- <accordion_tab name="tab_all" title="Todos"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="RECENTE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir dados do grupo"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Bate-papo de grupo" name="chat_btn" tool_tip="Nova sessão de bate-papo"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 09444a5535..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Bandeja lateral"/>
- <button name="undock" tool_tip="Soltar janela"/>
- <button name="dock" tool_tip="Ancorar janela"/>
- <button name="show_help" tool_tip="Mostrar ajuda"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml b/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml
deleted file mode 100644
index db564d2aaa..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Perda de pacote
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Banda
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Selecione o modo. O modo Básico é mais rápido e ideal para explorar e conversar. Use o modo Avançado para acessar mais recursos.">
- <combo_box.item label="Modo básico" name="Basic"/>
- <combo_box.item label="Modo avançado" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Tocar/Pausar todas mídias (música, vídeo, páginas web)"/>
- <button name="volume_btn" tool_tip="Volume geral"/>
-</panel>
diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp
index 102294959a..acc6e814bc 100644
--- a/indra/newview/tests/llworldmap_test.cpp
+++ b/indra/newview/tests/llworldmap_test.cpp
@@ -27,6 +27,7 @@
// Dependencies
#include "linden_common.h"
+#include "llapr.h"
#include "llsingleton.h"
#include "lltrans.h"
#include "lluistring.h"
diff --git a/indra/test/lltemplatemessagebuilder_tut.cpp b/indra/test/lltemplatemessagebuilder_tut.cpp
index 532f26ee60..09beb53869 100644
--- a/indra/test/lltemplatemessagebuilder_tut.cpp
+++ b/indra/test/lltemplatemessagebuilder_tut.cpp
@@ -29,6 +29,7 @@
#include "linden_common.h"
#include "lltut.h"
+#include "llapr.h"
#include "llmessagetemplate.h"
#include "llquaternion.h"
#include "lltemplatemessagebuilder.h"
@@ -52,6 +53,7 @@ namespace tut
static bool init = false;
if(! init)
{
+ ll_init_apr();
const F32 circuit_heartbeat_interval=5;
const F32 circuit_timeout=100;
diff --git a/indra/test/message_tut.cpp b/indra/test/message_tut.cpp
index 9a6ccd4d68..d971b33475 100644
--- a/indra/test/message_tut.cpp
+++ b/indra/test/message_tut.cpp
@@ -29,6 +29,7 @@
#include "linden_common.h"
#include "lltut.h"
+#include "llapr.h"
#include "llmessageconfig.h"
#include "llsdserialize.h"
#include "llversionserver.h"
@@ -61,6 +62,7 @@ namespace tut
static bool init = false;
if(!init)
{
+ ll_init_apr();
//init_prehash_data();
init = true;
}
diff --git a/indra/test/test.cpp b/indra/test/test.cpp
index 45e8aef99a..ffdb0cb976 100644
--- a/indra/test/test.cpp
+++ b/indra/test/test.cpp
@@ -37,8 +37,8 @@
#include "linden_common.h"
#include "llerrorcontrol.h"
#include "lltut.h"
-#include "llaprpool.h"
+#include "apr_pools.h"
#include "apr_getopt.h"
// the CTYPE_WORKAROUND is needed for linux dev stations that don't
@@ -349,12 +349,17 @@ int main(int argc, char **argv)
ctype_workaround();
#endif
- LLAPRPool pool;
- pool.create();
+ apr_initialize();
+ apr_pool_t* pool = NULL;
+ if(APR_SUCCESS != apr_pool_create(&pool, NULL))
+ {
+ std::cerr << "Unable to initialize pool" << std::endl;
+ return 1;
+ }
apr_getopt_t* os = NULL;
- if(APR_SUCCESS != apr_getopt_init(&os, pool(), argc, argv))
+ if(APR_SUCCESS != apr_getopt_init(&os, pool, argc, argv))
{
- std::cerr << "Unable to initialize the arguments for parsing by apr_getopt()." << std::endl;
+ std::cerr << "Unable to pool" << std::endl;
return 1;
}
@@ -472,6 +477,8 @@ int main(int argc, char **argv)
s.close();
}
+ apr_terminate();
+
int retval = (success ? 0 : 1);
return retval;
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp
index d5ee09c5bc..884b00f0cc 100644
--- a/indra/test_apps/llplugintest/llmediaplugintest.cpp
+++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp
@@ -27,6 +27,7 @@
#include "linden_common.h"
#include "indra_constants.h"
+#include "llapr.h"
#include "llerrorcontrol.h"
#include <math.h>
@@ -185,6 +186,9 @@ LLMediaPluginTest::LLMediaPluginTest( int app_window, int window_width, int wind
std::cout << "Unable to read bookmarks from file: " << bookmarks_filename << std::endl;
};
+ // initialize linden lab APR module
+ ll_init_apr();
+
// Set up llerror logging
{
LLError::initForApplication(".");
diff --git a/indra/viewer_components/updater/llupdateinstaller.cpp b/indra/viewer_components/updater/llupdateinstaller.cpp
index 24ba00ad8e..c7b70c2de8 100644
--- a/indra/viewer_components/updater/llupdateinstaller.cpp
+++ b/indra/viewer_components/updater/llupdateinstaller.cpp
@@ -26,7 +26,6 @@
#include "linden_common.h"
#include <apr_file_io.h>
#include "llapr.h"
-#include "llscopedvolatileaprpool.h"
#include "llprocesslauncher.h"
#include "llupdateinstaller.h"
#include "lldir.h"
@@ -46,8 +45,7 @@ namespace {
{
std::string scriptFile = gDirUtilp->getBaseFileName(path);
std::string newPath = gDirUtilp->getExpandedFilename(LL_PATH_TEMP, scriptFile);
- LLScopedVolatileAPRPool pool;
- apr_status_t status = apr_file_copy(path.c_str(), newPath.c_str(), APR_FILE_SOURCE_PERMS, pool);
+ apr_status_t status = apr_file_copy(path.c_str(), newPath.c_str(), APR_FILE_SOURCE_PERMS, gAPRPoolp);
if(status != APR_SUCCESS) throw RelocateError();
return newPath;
diff --git a/indra/win_crash_logger/StdAfx.h b/indra/win_crash_logger/StdAfx.h
index ce70fe2994..35976658ac 100644
--- a/indra/win_crash_logger/StdAfx.h
+++ b/indra/win_crash_logger/StdAfx.h
@@ -38,7 +38,6 @@
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-
// Windows Header Files:
#include <windows.h>