summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/cmake/00-Common.cmake4
-rw-r--r--indra/cmake/APR.cmake9
-rw-r--r--indra/cmake/Boost.cmake12
-rw-r--r--indra/cmake/DragDrop.cmake23
-rw-r--r--indra/cmake/GStreamer010Plugin.cmake1
-rw-r--r--indra/cmake/PulseAudio.cmake28
-rw-r--r--indra/linux_crash_logger/CMakeLists.txt11
-rw-r--r--indra/linux_updater/CMakeLists.txt11
-rw-r--r--indra/llaudio/llaudiodecodemgr.cpp2
-rw-r--r--indra/llaudio/llaudioengine.cpp6
-rw-r--r--indra/llaudio/llaudioengine.h11
-rw-r--r--indra/llcharacter/llcharacter.cpp4
-rw-r--r--indra/llcharacter/lleditingmotion.cpp2
-rw-r--r--indra/llcommon/CMakeLists.txt2
-rw-r--r--indra/llcommon/llapp.cpp2
-rw-r--r--indra/llcommon/llchat.h3
-rw-r--r--indra/llcommon/lleventtimer.cpp95
-rw-r--r--indra/llcommon/lleventtimer.h60
-rw-r--r--indra/llcommon/llfasttimer_class.cpp117
-rw-r--r--indra/llcommon/llinstancetracker.cpp20
-rw-r--r--indra/llcommon/llinstancetracker.h69
-rw-r--r--indra/llcommon/lllivefile.cpp2
-rw-r--r--indra/llcommon/llpointer.h1
-rw-r--r--indra/llcommon/llrefcount.cpp11
-rw-r--r--indra/llcommon/llrefcount.h14
-rw-r--r--indra/llcommon/llsdserialize_xml.cpp15
-rw-r--r--indra/llcommon/lltimer.cpp51
-rw-r--r--indra/llcommon/lltimer.h21
-rw-r--r--indra/llcommon/lltreeiterators.h34
-rw-r--r--indra/llcommon/llworkerthread.cpp1
-rw-r--r--indra/llcommon/tests/llinstancetracker_test.cpp28
-rw-r--r--indra/llimage/llimage.cpp3
-rw-r--r--indra/llimage/llimageworker.cpp11
-rw-r--r--indra/llimagej2coj/llimagej2coj.cpp3
-rw-r--r--indra/llimagej2coj/llimagej2coj.h3
-rw-r--r--indra/llmath/llcamera.cpp7
-rw-r--r--indra/llmath/llvolume.cpp1
-rw-r--r--indra/llmessage/llpacketbuffer.cpp5
-rw-r--r--indra/llmessage/lltransfermanager.cpp1
-rw-r--r--indra/llmessage/lltransfersourceasset.cpp5
-rw-r--r--indra/llmessage/lltransfertargetfile.h7
-rw-r--r--indra/llmessage/lltransfertargetvfile.h1
-rw-r--r--indra/llmessage/tests/llareslistener_test.cpp2
-rw-r--r--indra/llplugin/llpluginclassmedia.cpp14
-rw-r--r--indra/llplugin/llpluginclassmedia.h4
-rw-r--r--indra/llplugin/llpluginmessagepipe.cpp9
-rw-r--r--indra/llplugin/llpluginprocesschild.cpp24
-rw-r--r--indra/llplugin/llpluginprocesschild.h3
-rw-r--r--indra/llplugin/llpluginprocessparent.cpp2
-rw-r--r--indra/llprimitive/tests/llmediaentry_test.cpp7
-rw-r--r--indra/llrender/llcubemap.cpp13
-rw-r--r--indra/llrender/llfontfreetype.cpp32
-rw-r--r--indra/llrender/llfontfreetype.h2
-rw-r--r--indra/llrender/llfontgl.cpp81
-rw-r--r--indra/llrender/llgl.cpp4
-rw-r--r--indra/llrender/llglslshader.cpp2
-rw-r--r--indra/llrender/llpostprocess.cpp2
-rw-r--r--indra/llrender/llrender.cpp7
-rw-r--r--indra/llrender/llvertexbuffer.cpp31
-rw-r--r--indra/llui/CMakeLists.txt2
-rw-r--r--indra/llui/llaccordionctrl.cpp97
-rw-r--r--indra/llui/llaccordionctrl.h3
-rw-r--r--indra/llui/llbutton.cpp23
-rw-r--r--indra/llui/llbutton.h20
-rw-r--r--indra/llui/llconsole.cpp62
-rw-r--r--indra/llui/llconsole.h11
-rw-r--r--indra/llui/lldockablefloater.cpp6
-rw-r--r--indra/llui/lldockablefloater.h2
-rw-r--r--indra/llui/lldockcontrol.cpp41
-rw-r--r--indra/llui/lldockcontrol.h5
-rw-r--r--indra/llui/llflatlistview.cpp47
-rw-r--r--indra/llui/llflatlistview.h5
-rw-r--r--indra/llui/llfloater.cpp77
-rw-r--r--indra/llui/llfloater.h1
-rw-r--r--indra/llui/llfloaterreg.cpp4
-rw-r--r--indra/llui/llfloaterreg.h3
-rw-r--r--indra/llui/llkeywords.cpp82
-rw-r--r--indra/llui/llkeywords.h29
-rw-r--r--indra/llui/lllayoutstack.cpp5
-rw-r--r--indra/llui/lllineeditor.cpp321
-rw-r--r--indra/llui/lllineeditor.h38
-rw-r--r--indra/llui/llmenugl.cpp41
-rw-r--r--indra/llui/llmenugl.h10
-rw-r--r--indra/llui/llmultifloater.cpp8
-rw-r--r--indra/llui/llmultisliderctrl.cpp9
-rw-r--r--indra/llui/llnotifications.h2
-rw-r--r--indra/llui/llpanel.cpp20
-rw-r--r--indra/llui/llpanel.h10
-rw-r--r--indra/llui/llresizehandle.cpp86
-rw-r--r--indra/llui/llscrolllistctrl.cpp30
-rw-r--r--indra/llui/llscrolllistctrl.h35
-rw-r--r--indra/llui/llsearcheditor.cpp9
-rw-r--r--indra/llui/llsliderctrl.cpp2
-rw-r--r--indra/llui/llspinctrl.cpp18
-rw-r--r--indra/llui/llspinctrl.h5
-rw-r--r--indra/llui/llstyle.h4
-rw-r--r--indra/llui/lltabcontainer.cpp187
-rw-r--r--indra/llui/lltabcontainer.h29
-rw-r--r--indra/llui/lltextbase.cpp179
-rw-r--r--indra/llui/lltextbase.h36
-rw-r--r--indra/llui/lltexteditor.cpp137
-rw-r--r--indra/llui/lltexteditor.h11
-rw-r--r--indra/llui/lltextvalidate.cpp302
-rw-r--r--indra/llui/lltextvalidate.h63
-rw-r--r--indra/llui/lltooltip.cpp6
-rw-r--r--indra/llui/lltooltip.h5
-rw-r--r--indra/llui/llui.cpp29
-rw-r--r--indra/llui/llui.h4
-rw-r--r--indra/llui/lluicolortable.cpp29
-rw-r--r--indra/llui/lluicolortable.h9
-rw-r--r--indra/llui/lluiimage.cpp4
-rw-r--r--indra/llui/lluiimage.h1
-rw-r--r--indra/llui/llurlentry.cpp24
-rw-r--r--indra/llui/llurlentry.h13
-rw-r--r--indra/llui/llurlregistry.cpp3
-rw-r--r--indra/llui/llview.cpp2
-rw-r--r--indra/llui/llviewmodel.h3
-rw-r--r--indra/llui/tests/llurlentry_test.cpp305
-rwxr-xr-xindra/llvfs/llpidlock.cpp8
-rw-r--r--indra/llvfs/llvfile.h1
-rw-r--r--indra/llwindow/CMakeLists.txt4
-rw-r--r--indra/llwindow/lldragdropwin32.cpp371
-rw-r--r--indra/llwindow/lldragdropwin32.h80
-rw-r--r--indra/llwindow/llwindow.h4
-rw-r--r--indra/llwindow/llwindowcallbacks.cpp5
-rw-r--r--indra/llwindow/llwindowcallbacks.h15
-rw-r--r--indra/llwindow/llwindowmacosx.cpp264
-rw-r--r--indra/llwindow/llwindowmacosx.h21
-rw-r--r--indra/llwindow/llwindowsdl.cpp154
-rw-r--r--indra/llwindow/llwindowsdl.h13
-rw-r--r--indra/llwindow/llwindowwin32.cpp58
-rw-r--r--indra/llwindow/llwindowwin32.h12
-rw-r--r--indra/llxml/llxmlnode.cpp2
-rw-r--r--indra/llxml/llxmltree.cpp3
-rw-r--r--indra/llxuixml/llinitparam.cpp38
-rw-r--r--indra/llxuixml/llinitparam.h46
-rw-r--r--indra/llxuixml/lluicolor.cpp14
-rw-r--r--indra/llxuixml/lluicolor.h8
-rw-r--r--indra/llxuixml/llxuiparser.cpp36
-rw-r--r--indra/lscript/lscript_compile/lscript_tree.cpp17
-rw-r--r--indra/lscript/lscript_compile/lscript_tree.h4
-rw-r--r--indra/media_plugins/quicktime/media_plugin_quicktime.cpp4
-rw-r--r--indra/media_plugins/webkit/CMakeLists.txt28
-rw-r--r--indra/media_plugins/webkit/linux_volume_catcher.cpp488
-rw-r--r--indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc21
-rw-r--r--indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc6
-rw-r--r--indra/media_plugins/webkit/media_plugin_webkit.cpp173
-rw-r--r--indra/newview/CMakeLists.txt22
-rw-r--r--indra/newview/app_settings/ignorable_dialogs.xml11
-rw-r--r--indra/newview/app_settings/settings.xml173
-rw-r--r--indra/newview/installers/darwin/firstlook-dmg/_DS_Storebin12292 -> 12292 bytes
-rw-r--r--indra/newview/installers/darwin/fix_application_icon_position.sh17
-rw-r--r--indra/newview/installers/darwin/publicnightly-dmg/_DS_Storebin12292 -> 12292 bytes
-rw-r--r--indra/newview/installers/darwin/release-dmg/_DS_Storebin12292 -> 12292 bytes
-rw-r--r--indra/newview/installers/darwin/releasecandidate-dmg/_DS_Storebin12292 -> 12292 bytes
-rw-r--r--indra/newview/linux_tools/client-readme.txt9
-rw-r--r--indra/newview/llagent.cpp7
-rw-r--r--indra/newview/llagent.h2
-rw-r--r--indra/newview/llagentui.cpp8
-rw-r--r--indra/newview/llagentwearables.cpp159
-rw-r--r--indra/newview/llagentwearables.h3
-rw-r--r--indra/newview/llappearancemgr.cpp516
-rw-r--r--indra/newview/llappearancemgr.h124
-rw-r--r--indra/newview/llappviewer.cpp12
-rw-r--r--indra/newview/llappviewer.h1
-rw-r--r--indra/newview/llavataractions.cpp32
-rw-r--r--indra/newview/llavataractions.h10
-rw-r--r--indra/newview/llavatarlist.h10
-rw-r--r--indra/newview/llavatarlistitem.cpp119
-rw-r--r--indra/newview/llavatarlistitem.h15
-rw-r--r--indra/newview/llbottomtray.cpp207
-rw-r--r--indra/newview/llbottomtray.h11
-rw-r--r--indra/newview/llcallfloater.cpp44
-rw-r--r--indra/newview/llcallfloater.h6
-rw-r--r--indra/newview/llcallingcard.cpp20
-rw-r--r--indra/newview/llchathistory.cpp222
-rw-r--r--indra/newview/llchathistory.h3
-rw-r--r--indra/newview/llchatitemscontainerctrl.cpp9
-rw-r--r--indra/newview/llchiclet.cpp28
-rw-r--r--indra/newview/llchiclet.h5
-rw-r--r--indra/newview/llcurrencyuimanager.cpp2
-rw-r--r--indra/newview/lldrawable.cpp16
-rw-r--r--indra/newview/lldrawable.h1
-rw-r--r--indra/newview/lldrawpoolalpha.cpp1
-rw-r--r--indra/newview/lldriverparam.cpp39
-rw-r--r--indra/newview/lldriverparam.h3
-rw-r--r--indra/newview/lleventpoll.cpp2
-rw-r--r--indra/newview/llexpandabletextbox.cpp18
-rw-r--r--indra/newview/llexpandabletextbox.h11
-rw-r--r--indra/newview/llface.cpp91
-rw-r--r--indra/newview/llface.h7
-rw-r--r--indra/newview/llfavoritesbar.cpp64
-rw-r--r--indra/newview/llfavoritesbar.h3
-rw-r--r--indra/newview/llfeaturemanager.cpp1
-rw-r--r--indra/newview/llfloateranimpreview.cpp64
-rw-r--r--indra/newview/llfloaterbuyland.cpp24
-rw-r--r--indra/newview/llfloatercamera.cpp24
-rw-r--r--indra/newview/llfloatercolorpicker.cpp2
-rw-r--r--indra/newview/llfloaterevent.cpp324
-rw-r--r--indra/newview/llfloaterevent.h96
-rw-r--r--indra/newview/llfloaterfriends.cpp2
-rw-r--r--indra/newview/llfloatergesture.cpp28
-rw-r--r--indra/newview/llfloatergodtools.cpp20
-rw-r--r--indra/newview/llfloaterinventory.cpp3
-rw-r--r--indra/newview/llfloaterlagmeter.cpp24
-rw-r--r--indra/newview/llfloaterlagmeter.h2
-rw-r--r--indra/newview/llfloaterland.cpp26
-rw-r--r--indra/newview/llfloatermediasettings.cpp15
-rw-r--r--indra/newview/llfloaternamedesc.cpp4
-rw-r--r--indra/newview/llfloaternotificationsconsole.cpp22
-rw-r--r--indra/newview/llfloaterpay.cpp2
-rw-r--r--indra/newview/llfloaterpreference.cpp286
-rw-r--r--indra/newview/llfloaterpreference.h19
-rw-r--r--indra/newview/llfloaterproperties.cpp10
-rw-r--r--indra/newview/llfloaterscriptlimits.cpp991
-rw-r--r--indra/newview/llfloaterscriptlimits.h100
-rw-r--r--indra/newview/llfloatersearch.cpp13
-rw-r--r--indra/newview/llfloatersellland.cpp5
-rw-r--r--indra/newview/llfloatersnapshot.cpp4
-rw-r--r--indra/newview/llfloatertools.cpp22
-rw-r--r--indra/newview/llfloatertopobjects.cpp9
-rw-r--r--indra/newview/llfloateruipreview.cpp9
-rw-r--r--indra/newview/llfloaterwater.cpp2
-rw-r--r--indra/newview/llfloaterwindlight.cpp2
-rw-r--r--indra/newview/llfloaterworldmap.cpp7
-rw-r--r--indra/newview/llfolderview.cpp50
-rw-r--r--indra/newview/llfolderview.h5
-rw-r--r--indra/newview/llfoldervieweventlistener.h3
-rw-r--r--indra/newview/llfolderviewitem.cpp19
-rw-r--r--indra/newview/llgroupactions.cpp7
-rw-r--r--indra/newview/llgrouplist.cpp24
-rw-r--r--indra/newview/llgrouplist.h11
-rw-r--r--indra/newview/llgroupmgr.cpp40
-rw-r--r--indra/newview/llgroupmgr.h10
-rw-r--r--indra/newview/llimfloater.cpp44
-rw-r--r--indra/newview/llimfloatercontainer.cpp104
-rw-r--r--indra/newview/llimfloatercontainer.h13
-rw-r--r--indra/newview/llimview.cpp102
-rw-r--r--indra/newview/llimview.h15
-rw-r--r--indra/newview/llinspect.cpp45
-rw-r--r--indra/newview/llinspect.h4
-rw-r--r--indra/newview/llinspectavatar.cpp31
-rw-r--r--indra/newview/llinspectobject.cpp17
-rw-r--r--indra/newview/llinspectremoteobject.cpp5
-rw-r--r--indra/newview/llinventorybridge.cpp488
-rw-r--r--indra/newview/llinventorybridge.h40
-rw-r--r--indra/newview/llinventoryfunctions.cpp117
-rw-r--r--indra/newview/llinventorymodel.cpp161
-rw-r--r--indra/newview/llinventorypanel.cpp50
-rw-r--r--indra/newview/llinventorypanel.h18
-rw-r--r--indra/newview/lllocaltextureobject.cpp1
-rw-r--r--indra/newview/lllocationhistory.h10
-rw-r--r--indra/newview/lllocationinputctrl.cpp203
-rw-r--r--indra/newview/lllocationinputctrl.h24
-rw-r--r--indra/newview/lllogchat.cpp130
-rw-r--r--indra/newview/llmediactrl.cpp28
-rwxr-xr-xindra/newview/llmediadataclient.h2
-rw-r--r--indra/newview/llmoveview.cpp10
-rw-r--r--indra/newview/llnamelistctrl.cpp9
-rw-r--r--indra/newview/llnavigationbar.cpp187
-rw-r--r--indra/newview/llnavigationbar.h54
-rw-r--r--indra/newview/llnearbychat.cpp54
-rw-r--r--indra/newview/llnearbychat.h6
-rw-r--r--indra/newview/llnearbychathandler.cpp15
-rw-r--r--indra/newview/llnotificationalerthandler.cpp6
-rw-r--r--indra/newview/llnotificationhandler.h5
-rw-r--r--indra/newview/llnotificationhandlerutil.cpp40
-rw-r--r--indra/newview/llnotificationofferhandler.cpp4
-rw-r--r--indra/newview/llnotificationtiphandler.cpp45
-rw-r--r--indra/newview/lloutputmonitorctrl.cpp6
-rw-r--r--indra/newview/llpanelavatar.cpp88
-rw-r--r--indra/newview/llpanelavatar.h15
-rw-r--r--indra/newview/llpanelclassified.cpp35
-rw-r--r--indra/newview/llpanelclassified.h9
-rw-r--r--indra/newview/llpanelface.cpp20
-rw-r--r--indra/newview/llpanelgroup.cpp43
-rw-r--r--indra/newview/llpanelgroup.h3
-rw-r--r--indra/newview/llpanelgroupgeneral.cpp26
-rw-r--r--indra/newview/llpanelgroupgeneral.h3
-rw-r--r--indra/newview/llpanelgroupinvite.cpp40
-rw-r--r--indra/newview/llpanelgroupinvite.h4
-rw-r--r--indra/newview/llpanelgroupnotices.cpp3
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp35
-rw-r--r--indra/newview/llpanelimcontrolpanel.h3
-rw-r--r--indra/newview/llpanellandaudio.cpp7
-rw-r--r--indra/newview/llpanellandmarkinfo.cpp47
-rw-r--r--indra/newview/llpanellandmarks.cpp328
-rw-r--r--indra/newview/llpanellandmarks.h14
-rw-r--r--indra/newview/llpanellogin.cpp28
-rw-r--r--indra/newview/llpanellogin.h3
-rw-r--r--indra/newview/llpanelmaininventory.cpp11
-rw-r--r--indra/newview/llpanelme.cpp17
-rw-r--r--indra/newview/llpanelmediasettingsgeneral.cpp37
-rw-r--r--indra/newview/llpanelmediasettingsgeneral.h3
-rw-r--r--indra/newview/llpanelmediasettingspermissions.cpp95
-rw-r--r--indra/newview/llpanelmediasettingspermissions.h3
-rw-r--r--indra/newview/llpanelmediasettingssecurity.cpp100
-rw-r--r--indra/newview/llpanelmediasettingssecurity.h5
-rw-r--r--indra/newview/llpanelnearbymedia.cpp1219
-rw-r--r--indra/newview/llpanelnearbymedia.h185
-rw-r--r--indra/newview/llpanelobjectinventory.cpp18
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp21
-rw-r--r--indra/newview/llpanelpeople.cpp11
-rw-r--r--indra/newview/llpanelpeoplemenus.cpp40
-rw-r--r--indra/newview/llpanelpermissions.cpp4
-rw-r--r--indra/newview/llpanelpicks.cpp20
-rw-r--r--indra/newview/llpanelplaceprofile.cpp40
-rw-r--r--indra/newview/llpanelplaces.cpp60
-rw-r--r--indra/newview/llpanelplaces.h8
-rw-r--r--indra/newview/llpanelprimmediacontrols.cpp11
-rw-r--r--indra/newview/llpanelprimmediacontrols.h17
-rw-r--r--indra/newview/llpanelprofile.cpp16
-rw-r--r--indra/newview/llpanelprofile.h2
-rw-r--r--indra/newview/llpanelteleporthistory.cpp3
-rw-r--r--indra/newview/llpanelvolumepulldown.cpp2
-rw-r--r--indra/newview/llparticipantlist.cpp5
-rw-r--r--indra/newview/llplacesinventorybridge.cpp2
-rw-r--r--indra/newview/llplacesinventorypanel.cpp10
-rw-r--r--indra/newview/llplacesinventorypanel.h2
-rw-r--r--indra/newview/llpreview.h2
-rw-r--r--indra/newview/llpreviewanim.cpp2
-rw-r--r--indra/newview/llpreviewgesture.cpp6
-rw-r--r--indra/newview/llpreviewnotecard.cpp2
-rw-r--r--indra/newview/llpreviewscript.cpp14
-rw-r--r--indra/newview/llpreviewsound.cpp2
-rw-r--r--indra/newview/llpreviewtexture.cpp194
-rw-r--r--indra/newview/llpreviewtexture.h3
-rw-r--r--indra/newview/llprogressview.cpp5
-rw-r--r--indra/newview/llrootview.h1
-rw-r--r--indra/newview/llscreenchannel.cpp56
-rw-r--r--indra/newview/llscriptfloater.cpp384
-rw-r--r--indra/newview/llscriptfloater.h73
-rw-r--r--indra/newview/llsearchcombobox.cpp1
-rw-r--r--indra/newview/llselectmgr.cpp95
-rw-r--r--indra/newview/llselectmgr.h3
-rw-r--r--indra/newview/llsidepanelappearance.cpp4
-rw-r--r--indra/newview/llsidepanelinventory.cpp26
-rw-r--r--indra/newview/llsidepaneliteminfo.cpp13
-rw-r--r--indra/newview/llsidepaneltaskinfo.cpp4
-rw-r--r--indra/newview/llsidetray.cpp5
-rw-r--r--indra/newview/llsidetray.h2
-rw-r--r--indra/newview/llslurl.cpp39
-rw-r--r--indra/newview/llslurl.h7
-rw-r--r--indra/newview/llspeakbutton.cpp10
-rw-r--r--indra/newview/llspeakbutton.h4
-rw-r--r--indra/newview/llspeakers.cpp12
-rw-r--r--indra/newview/llspeakers.h11
-rw-r--r--indra/newview/llstartup.cpp116
-rw-r--r--indra/newview/llstatusbar.cpp166
-rw-r--r--indra/newview/llstatusbar.h11
-rw-r--r--indra/newview/llstylemap.cpp4
-rw-r--r--indra/newview/llsyswellwindow.cpp118
-rw-r--r--indra/newview/llsyswellwindow.h23
-rw-r--r--indra/newview/llteleporthistory.cpp2
-rw-r--r--indra/newview/lltexlayer.cpp4
-rw-r--r--indra/newview/lltexturecache.cpp3
-rw-r--r--indra/newview/lltexturefetch.cpp129
-rw-r--r--indra/newview/lltexturefetch.h11
-rw-r--r--indra/newview/lltoast.cpp159
-rw-r--r--indra/newview/lltoast.h26
-rw-r--r--indra/newview/lltoastimpanel.cpp90
-rw-r--r--indra/newview/lltoastimpanel.h3
-rw-r--r--indra/newview/lltoastnotifypanel.cpp142
-rw-r--r--indra/newview/lltoastnotifypanel.h9
-rw-r--r--indra/newview/lltoolpie.cpp9
-rw-r--r--indra/newview/lltoolplacer.h1
-rw-r--r--indra/newview/llvieweraudio.cpp25
-rw-r--r--indra/newview/llviewerdisplay.cpp3
-rw-r--r--indra/newview/llviewerfloaterreg.cpp6
-rw-r--r--indra/newview/llviewerinventory.cpp4
-rw-r--r--indra/newview/llviewermedia.cpp346
-rw-r--r--indra/newview/llviewermedia.h139
-rw-r--r--indra/newview/llviewermediafocus.cpp25
-rw-r--r--indra/newview/llviewermediafocus.h5
-rw-r--r--indra/newview/llviewermenu.cpp117
-rw-r--r--indra/newview/llviewermenufile.cpp130
-rw-r--r--indra/newview/llviewermessage.cpp116
-rw-r--r--indra/newview/llviewermessage.h5
-rw-r--r--indra/newview/llviewerobject.cpp9
-rw-r--r--indra/newview/llviewerobjectlist.h4
-rw-r--r--indra/newview/llviewerparcelmedia.cpp9
-rw-r--r--indra/newview/llviewerparcelmediaautoplay.h2
-rw-r--r--indra/newview/llviewerparcelmgr.cpp63
-rw-r--r--indra/newview/llviewerparcelmgr.h12
-rw-r--r--indra/newview/llviewertexteditor.cpp2
-rw-r--r--indra/newview/llviewertexture.cpp251
-rw-r--r--indra/newview/llviewertexture.h17
-rw-r--r--indra/newview/llviewervisualparam.h1
-rw-r--r--indra/newview/llviewerwindow.cpp172
-rw-r--r--indra/newview/llviewerwindow.h8
-rw-r--r--indra/newview/llvoavatar.cpp26
-rw-r--r--indra/newview/llvoavatar.h2
-rw-r--r--indra/newview/llvoavatarself.cpp18
-rw-r--r--indra/newview/llvoicechannel.cpp34
-rw-r--r--indra/newview/llvoicechannel.h4
-rw-r--r--indra/newview/llvoiceclient.cpp76
-rw-r--r--indra/newview/llvoiceclient.h1
-rw-r--r--indra/newview/llvovolume.cpp89
-rw-r--r--indra/newview/llvovolume.h6
-rw-r--r--indra/newview/llwearable.cpp24
-rw-r--r--indra/newview/llwearable.h3
-rw-r--r--indra/newview/llweb.cpp20
-rw-r--r--indra/newview/llworldmapview.cpp6
-rw-r--r--indra/newview/pipeline.cpp13
-rw-r--r--indra/newview/pipeline.h3
-rw-r--r--indra/newview/skins/default/colors.xml29
-rw-r--r--indra/newview/skins/default/html/da/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/de/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/en-us/loading/loading.html18
-rw-r--r--indra/newview/skins/default/html/es/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/fr/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/hu/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/it/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/ja/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/nl/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/pl/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/pt/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/ru/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/tr/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/uk/loading/loading.html20
-rw-r--r--indra/newview/skins/default/html/zh/loading/loading.html20
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.pngbin393 -> 3347 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.pngbin328 -> 334 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Cone_Selected.pngbin0 -> 576 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Cube_Selected.pngbin0 -> 477 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Cylinder_Selected.pngbin0 -> 443 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Grass_Selected.pngbin0 -> 757 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.pngbin0 -> 531 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.pngbin0 -> 463 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.pngbin0 -> 696 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Prism_Selected.pngbin0 -> 485 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Pyramid_Selected.pngbin0 -> 594 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Ring_Selected.pngbin0 -> 738 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Sphere_Selected.pngbin0 -> 1003 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.pngbin0 -> 558 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Torus_Selected.pngbin0 -> 825 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Tree_Selected.pngbin0 -> 839 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Tube_Selected.pngbin0 -> 552 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Generic_Group.pngbin3354 -> 1523 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Inv_Shoe.pngbin276 -> 54133 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.pngbin424 -> 3221 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.pngbin429 -> 3235 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.pngbin271 -> 3077 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_M_Dark.pngbin333 -> 348 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_M_Light.pngbin322 -> 335 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_PG_Dark.pngbin407 -> 400 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_PG_Light.pngbin387 -> 403 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_R_Dark.pngbin319 -> 357 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_R_Light.pngbin309 -> 355 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/object_icon.pngbin0 -> 410 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml48
-rw-r--r--indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.pngbin0 -> 260 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Volume_Background.pngbin0 -> 589 bytes
-rw-r--r--indra/newview/skins/default/textures/world/BeaconArrow.pngbin1965 -> 994 bytes
-rw-r--r--indra/newview/skins/default/xui/da/floater_about_land.xml368
-rw-r--r--indra/newview/skins/default/xui/da/floater_animation_preview.xml231
-rw-r--r--indra/newview/skins/default/xui/da/floater_avatar_textures.xml52
-rw-r--r--indra/newview/skins/default/xui/da/floater_beacons.xml26
-rw-r--r--indra/newview/skins/default/xui/da/floater_build_options.xml17
-rw-r--r--indra/newview/skins/default/xui/da/floater_buy_contents.xml8
-rw-r--r--indra/newview/skins/default/xui/da/floater_buy_currency.xml82
-rw-r--r--indra/newview/skins/default/xui/da/floater_buy_land.xml24
-rw-r--r--indra/newview/skins/default/xui/da/floater_choose_group.xml6
-rw-r--r--indra/newview/skins/default/xui/da/floater_customize.xml88
-rw-r--r--indra/newview/skins/default/xui/da/floater_device_settings.xml4
-rw-r--r--indra/newview/skins/default/xui/da/floater_env_settings.xml20
-rw-r--r--indra/newview/skins/default/xui/da/floater_hardware_settings.xml26
-rw-r--r--indra/newview/skins/default/xui/da/floater_help_browser.xml8
-rw-r--r--indra/newview/skins/default/xui/da/floater_im.xml4
-rw-r--r--indra/newview/skins/default/xui/da/floater_im_container.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_image_preview.xml28
-rw-r--r--indra/newview/skins/default/xui/da/floater_incoming_call.xml21
-rw-r--r--indra/newview/skins/default/xui/da/floater_inspect.xml13
-rw-r--r--indra/newview/skins/default/xui/da/floater_inventory.xml59
-rw-r--r--indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml92
-rw-r--r--indra/newview/skins/default/xui/da/floater_joystick.xml8
-rw-r--r--indra/newview/skins/default/xui/da/floater_lagmeter.xml215
-rw-r--r--indra/newview/skins/default/xui/da/floater_lsl_guide.xml10
-rw-r--r--indra/newview/skins/default/xui/da/floater_media_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/da/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_openobject.xml8
-rw-r--r--indra/newview/skins/default/xui/da/floater_outgoing_call.xml28
-rw-r--r--indra/newview/skins/default/xui/da/floater_pay.xml32
-rw-r--r--indra/newview/skins/default/xui/da/floater_pay_object.xml33
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_event.xml8
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_gesture.xml53
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_notecard.xml20
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_texture.xml39
-rw-r--r--indra/newview/skins/default/xui/da/floater_script_debug_panel.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_script_preview.xml7
-rw-r--r--indra/newview/skins/default/xui/da/floater_script_search.xml10
-rw-r--r--indra/newview/skins/default/xui/da/floater_sell_land.xml123
-rw-r--r--indra/newview/skins/default/xui/da/floater_settings_debug.xml20
-rw-r--r--indra/newview/skins/default/xui/da/floater_snapshot.xml68
-rw-r--r--indra/newview/skins/default/xui/da/floater_sys_well.xml9
-rw-r--r--indra/newview/skins/default/xui/da/floater_telehub.xml15
-rw-r--r--indra/newview/skins/default/xui/da/floater_top_objects.xml34
-rw-r--r--indra/newview/skins/default/xui/da/floater_tos.xml11
-rw-r--r--indra/newview/skins/default/xui/da/floater_water.xml64
-rw-r--r--indra/newview/skins/default/xui/da/floater_whitelist_entry.xml9
-rw-r--r--indra/newview/skins/default/xui/da/inspect_object.xml34
-rw-r--r--indra/newview/skins/default/xui/da/mime_types_linux.xml217
-rw-r--r--indra/newview/skins/default/xui/da/panel_active_object_row.xml9
-rw-r--r--indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml8
-rw-r--r--indra/newview/skins/default/xui/da/panel_bottomtray.xml23
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_alpha.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_eyes.xml9
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_gloves.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_jacket.xml11
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_pants.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_pick.xml28
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_shoes.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_skin.xml14
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_socks.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_underpants.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_undershirt.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_wearable.xml101
-rw-r--r--indra/newview/skins/default/xui/da/panel_friends.xml36
-rw-r--r--indra/newview/skins/default/xui/da/panel_group_control_panel.xml9
-rw-r--r--indra/newview/skins/default/xui/da/panel_group_general.xml77
-rw-r--r--indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml36
-rw-r--r--indra/newview/skins/default/xui/da/panel_group_invite.xml37
-rw-r--r--indra/newview/skins/default/xui/da/panel_group_land_money.xml39
-rw-r--r--indra/newview/skins/default/xui/da/panel_group_notices.xml51
-rw-r--r--indra/newview/skins/default/xui/da/panel_me.xml7
-rw-r--r--indra/newview/skins/default/xui/da/panel_media_settings_general.xml32
-rw-r--r--indra/newview/skins/default/xui/da/panel_media_settings_security.xml12
-rw-r--r--indra/newview/skins/default/xui/da/panel_my_profile.xml37
-rw-r--r--indra/newview/skins/default/xui/da/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml11
-rw-r--r--indra/newview/skins/default/xui/da/panel_pick_info.xml16
-rw-r--r--indra/newview/skins/default/xui/da/panel_place_profile.xml103
-rw-r--r--indra/newview/skins/default/xui/da/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/da/panel_preferences_general.xml107
-rw-r--r--indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml213
-rw-r--r--indra/newview/skins/default/xui/da/panel_prim_media_controls.xml28
-rw-r--r--indra/newview/skins/default/xui/da/panel_profile_view.xml16
-rw-r--r--indra/newview/skins/default/xui/da/panel_region_estate.xml64
-rw-r--r--indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml5
-rw-r--r--indra/newview/skins/default/xui/da/panel_status_bar.xml61
-rw-r--r--indra/newview/skins/default/xui/da/role_actions.xml245
-rw-r--r--indra/newview/skins/default/xui/da/sidepanel_appearance.xml11
-rw-r--r--indra/newview/skins/default/xui/da/sidepanel_inventory.xml11
-rw-r--r--indra/newview/skins/default/xui/de/floater_about.xml5
-rw-r--r--indra/newview/skins/default/xui/de/floater_about_land.xml21
-rw-r--r--indra/newview/skins/default/xui/de/floater_animation_preview.xml7
-rw-r--r--indra/newview/skins/default/xui/de/floater_avatar_picker.xml9
-rw-r--r--indra/newview/skins/default/xui/de/floater_avatar_textures.xml10
-rw-r--r--indra/newview/skins/default/xui/de/floater_beacons.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_bulk_perms.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_buy_currency.xml5
-rw-r--r--indra/newview/skins/default/xui/de/floater_buy_land.xml279
-rw-r--r--indra/newview/skins/default/xui/de/floater_customize.xml52
-rw-r--r--indra/newview/skins/default/xui/de/floater_day_cycle_options.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_event.xml48
-rw-r--r--indra/newview/skins/default/xui/de/floater_god_tools.xml24
-rw-r--r--indra/newview/skins/default/xui/de/floater_help_browser.xml11
-rw-r--r--indra/newview/skins/default/xui/de/floater_image_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_inspect.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_inventory.xml8
-rw-r--r--indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_live_lsleditor.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_lsl_guide.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_map.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_media_browser.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_mem_leaking.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_openobject.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_outfit_save_as.xml7
-rw-r--r--indra/newview/skins/default/xui/de/floater_outgoing_call.xml9
-rw-r--r--indra/newview/skins/default/xui/de/floater_pay.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_pay_object.xml10
-rw-r--r--indra/newview/skins/default/xui/de/floater_postcard.xml10
-rw-r--r--indra/newview/skins/default/xui/de/floater_preferences.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_animation.xml8
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_gesture.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_sound.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_texture.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_report_abuse.xml7
-rw-r--r--indra/newview/skins/default/xui/de/floater_script_preview.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_sell_land.xml16
-rw-r--r--indra/newview/skins/default/xui/de/floater_snapshot.xml8
-rw-r--r--indra/newview/skins/default/xui/de/floater_stats.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_sys_well.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_telehub.xml8
-rw-r--r--indra/newview/skins/default/xui/de/floater_texture_ctrl.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_tools.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_url_entry.xml8
-rw-r--r--indra/newview/skins/default/xui/de/floater_water.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_wearable_save_as.xml8
-rw-r--r--indra/newview/skins/default/xui/de/floater_whitelist_entry.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_world_map.xml1
-rw-r--r--indra/newview/skins/default/xui/de/inspect_avatar.xml4
-rw-r--r--indra/newview/skins/default/xui/de/inspect_group.xml2
-rw-r--r--indra/newview/skins/default/xui/de/inspect_object.xml4
-rw-r--r--indra/newview/skins/default/xui/de/menu_attachment_other.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_avatar_other.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_avatar_self.xml8
-rw-r--r--indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_inventory.xml6
-rw-r--r--indra/newview/skins/default/xui/de/menu_object.xml12
-rw-r--r--indra/newview/skins/default/xui/de/menu_participant_list.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_people_groups.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_people_nearby.xml3
-rw-r--r--indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml3
-rw-r--r--indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml4
-rw-r--r--indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_profile_overflow.xml4
-rw-r--r--indra/newview/skins/default/xui/de/menu_viewer.xml54
-rw-r--r--indra/newview/skins/default/xui/de/notifications.xml74
-rw-r--r--indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_bottomtray.xml5
-rw-r--r--indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml8
-rw-r--r--indra/newview/skins/default/xui/de/panel_classified_info.xml19
-rw-r--r--indra/newview/skins/default/xui/de/panel_edit_alpha.xml12
-rw-r--r--indra/newview/skins/default/xui/de/panel_edit_classified.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_edit_pick.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_edit_profile.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_edit_tattoo.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_friends.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_general.xml26
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml45
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_invite.xml8
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_land_money.xml193
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_notices.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_notify.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_roles.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_groups.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_im_control_panel.xml5
-rw-r--r--indra/newview/skins/default/xui/de/panel_landmarks.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_login.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_main_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_me.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_media_settings_security.xml3
-rw-r--r--indra/newview/skins/default/xui/de/panel_my_profile.xml7
-rw-r--r--indra/newview/skins/default/xui/de/panel_navigation_bar.xml11
-rw-r--r--indra/newview/skins/default/xui/de/panel_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_nearby_media.xml63
-rw-r--r--indra/newview/skins/default/xui/de/panel_notes.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_outfits_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_people.xml9
-rw-r--r--indra/newview/skins/default/xui/de/panel_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_place_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_places.xml8
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_advanced.xml39
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_alerts.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_chat.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_general.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_privacy.xml8
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_setup.xml16
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_sound.xml16
-rw-r--r--indra/newview/skins/default/xui/de/panel_profile.xml14
-rw-r--r--indra/newview/skins/default/xui/de/panel_profile_view.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_covenant.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_debug.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_texture.xml16
-rw-r--r--indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml5
-rw-r--r--indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml18
-rw-r--r--indra/newview/skins/default/xui/de/panel_side_tray.xml20
-rw-r--r--indra/newview/skins/default/xui/de/panel_status_bar.xml3
-rw-r--r--indra/newview/skins/default/xui/de/sidepanel_task_info.xml4
-rw-r--r--indra/newview/skins/default/xui/de/strings.xml13
-rw-r--r--indra/newview/skins/default/xui/en/floater_aaa.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_about_land.xml42
-rw-r--r--indra/newview/skins/default/xui/en/floater_animation_preview.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_buy_currency.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_buy_land.xml19
-rw-r--r--indra/newview/skins/default/xui/en/floater_camera.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_color_picker.xml61
-rw-r--r--indra/newview/skins/default/xui/en/floater_event.xml245
-rw-r--r--indra/newview/skins/default/xui/en/floater_help_browser.xml14
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_container.xml7
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml10
-rw-r--r--indra/newview/skins/default/xui/en/floater_inventory.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_live_lsleditor.xml45
-rw-r--r--indra/newview/skins/default/xui/en/floater_map.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_moveview.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_outfit_save_as.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_outgoing_call.xml17
-rw-r--r--indra/newview/skins/default/xui/en/floater_pay_object.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_postcard.xml14
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_animation.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_sound.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_texture.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_script.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_script_limits.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_script_preview.xml12
-rw-r--r--indra/newview/skins/default/xui/en/floater_search.xml18
-rw-r--r--indra/newview/skins/default/xui/en/floater_snapshot.xml7
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_checkbox.xml79
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_inspectors.xml9
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_text_editor.xml13
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_widgets.xml5
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml99
-rw-r--r--indra/newview/skins/default/xui/en/floater_world_map.xml64
-rw-r--r--indra/newview/skins/default/xui/en/inspect_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/en/inspector_info_ctrl.xml9
-rw-r--r--indra/newview/skins/default/xui/en/main_view.xml6
-rw-r--r--indra/newview/skins/default/xui/en/menu_avatar_self.xml10
-rw-r--r--indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory.xml18
-rw-r--r--indra/newview/skins/default/xui/en/menu_login.xml1
-rw-r--r--indra/newview/skins/default/xui/en/menu_object.xml28
-rw-r--r--indra/newview/skins/default/xui/en/menu_participant_list.xml3
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_nearby.xml20
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/default/xui/en/menu_places_gear_folder.xml9
-rw-r--r--indra/newview/skins/default/xui/en/menu_profile_overflow.xml16
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml148
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml104
-rw-r--r--indra/newview/skins/default/xui/en/panel_active_object_row.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_avatar_list_item.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml21
-rw-r--r--indra/newview/skins/default/xui/en/panel_chat_header.xml12
-rw-r--r--indra/newview/skins/default/xui/en/panel_classified_info.xml98
-rw-r--r--indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_classified.xml80
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_pick.xml57
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_profile.xml157
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_general.xml163
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml356
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_land_money.xml169
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_notices.xml83
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_roles.xml244
-rw-r--r--indra/newview/skins/default/xui/en/panel_im_control_panel.xml43
-rw-r--r--indra/newview/skins/default/xui/en/panel_instant_message.xml15
-rw-r--r--indra/newview/skins/default/xui/en/panel_landmark_info.xml49
-rw-r--r--indra/newview/skins/default/xui/en/panel_landmarks.xml21
-rw-r--r--indra/newview/skins/default/xui/en/panel_login.xml28
-rw-r--r--indra/newview/skins/default/xui/en/panel_main_inventory.xml210
-rw-r--r--indra/newview/skins/default/xui/en/panel_me.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_my_profile.xml65
-rw-r--r--indra/newview/skins/default/xui/en/panel_navigation_bar.xml23
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_media.xml410
-rw-r--r--indra/newview/skins/default/xui/en/panel_notes.xml34
-rw-r--r--indra/newview/skins/default/xui/en/panel_notification.xml16
-rw-r--r--indra/newview/skins/default/xui/en/panel_online_status.xml35
-rw-r--r--indra/newview/skins/default/xui/en/panel_online_status_toast.xml35
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_inventory.xml88
-rw-r--r--indra/newview/skins/default/xui/en/panel_people.xml150
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_info.xml48
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_list_item.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_picks.xml49
-rw-r--r--indra/newview/skins/default/xui/en/panel_place_profile.xml32
-rw-r--r--indra/newview/skins/default/xui/en/panel_places.xml69
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_advanced.xml250
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_alerts.xml46
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_chat.xml88
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_general.xml24
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml5
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_privacy.xml38
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_sound.xml444
-rw-r--r--indra/newview/skins/default/xui/en/panel_prim_media_controls.xml8
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile.xml72
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile_view.xml15
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_general.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_script_ed.xml120
-rw-r--r--indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml45
-rw-r--r--indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml38
-rw-r--r--indra/newview/skins/default/xui/en/panel_side_tray.xml9
-rw-r--r--indra/newview/skins/default/xui/en/panel_status_bar.xml35
-rw-r--r--indra/newview/skins/default/xui/en/panel_teleport_history.xml25
-rw-r--r--indra/newview/skins/default/xui/en/panel_toast.xml34
-rw-r--r--indra/newview/skins/default/xui/en/panel_volume_pulldown.xml15
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml16
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_inventory.xml20
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_item_info.xml32
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_task_info.xml2
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml17
-rw-r--r--indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml44
-rw-r--r--indra/newview/skins/default/xui/en/widgets/button.xml4
-rw-r--r--indra/newview/skins/default/xui/en/widgets/combo_box.xml3
-rw-r--r--indra/newview/skins/default/xui/en/widgets/expandable_text.xml9
-rw-r--r--indra/newview/skins/default/xui/en/widgets/filter_editor.xml6
-rw-r--r--indra/newview/skins/default/xui/en/widgets/flat_list_view.xml10
-rw-r--r--indra/newview/skins/default/xui/en/widgets/flyout_button.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/inspector.xml15
-rw-r--r--indra/newview/skins/default/xui/en/widgets/location_input.xml15
-rw-r--r--indra/newview/skins/default/xui/en/widgets/menu_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/panel.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/search_editor.xml8
-rw-r--r--indra/newview/skins/default/xui/en/widgets/tab_container.xml9
-rw-r--r--indra/newview/skins/default/xui/en/widgets/talk_button.xml3
-rw-r--r--indra/newview/skins/default/xui/en/widgets/text_editor.xml3
-rw-r--r--indra/newview/skins/default/xui/en/widgets/tool_tip.xml5
-rw-r--r--indra/newview/skins/default/xui/es/floater_about.xml67
-rw-r--r--indra/newview/skins/default/xui/es/floater_about_land.xml443
-rw-r--r--indra/newview/skins/default/xui/es/floater_activeim.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_animation_preview.xml216
-rw-r--r--indra/newview/skins/default/xui/es/floater_auction.xml14
-rw-r--r--indra/newview/skins/default/xui/es/floater_avatar_picker.xml53
-rw-r--r--indra/newview/skins/default/xui/es/floater_avatar_textures.xml46
-rw-r--r--indra/newview/skins/default/xui/es/floater_beacons.xml24
-rw-r--r--indra/newview/skins/default/xui/es/floater_build_options.xml7
-rw-r--r--indra/newview/skins/default/xui/es/floater_bulk_perms.xml64
-rw-r--r--indra/newview/skins/default/xui/es/floater_bumps.xml27
-rw-r--r--indra/newview/skins/default/xui/es/floater_buy_contents.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_buy_currency.xml81
-rw-r--r--indra/newview/skins/default/xui/es/floater_buy_land.xml38
-rw-r--r--indra/newview/skins/default/xui/es/floater_buy_object.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_camera.xml19
-rw-r--r--indra/newview/skins/default/xui/es/floater_color_picker.xml9
-rw-r--r--indra/newview/skins/default/xui/es/floater_customize.xml156
-rw-r--r--indra/newview/skins/default/xui/es/floater_env_settings.xml10
-rw-r--r--indra/newview/skins/default/xui/es/floater_gesture.xml30
-rw-r--r--indra/newview/skins/default/xui/es/floater_hardware_settings.xml16
-rw-r--r--indra/newview/skins/default/xui/es/floater_help_browser.xml8
-rw-r--r--indra/newview/skins/default/xui/es/floater_im.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_im_container.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_im_session.xml9
-rw-r--r--indra/newview/skins/default/xui/es/floater_image_preview.xml22
-rw-r--r--indra/newview/skins/default/xui/es/floater_incoming_call.xml21
-rw-r--r--indra/newview/skins/default/xui/es/floater_inspect.xml17
-rw-r--r--indra/newview/skins/default/xui/es/floater_inventory.xml57
-rw-r--r--indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml80
-rw-r--r--indra/newview/skins/default/xui/es/floater_joystick.xml34
-rw-r--r--indra/newview/skins/default/xui/es/floater_lagmeter.xml219
-rw-r--r--indra/newview/skins/default/xui/es/floater_land_holdings.xml4
-rw-r--r--indra/newview/skins/default/xui/es/floater_live_lsleditor.xml19
-rw-r--r--indra/newview/skins/default/xui/es/floater_lsl_guide.xml4
-rw-r--r--indra/newview/skins/default/xui/es/floater_media_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_mem_leaking.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_moveview.xml42
-rw-r--r--indra/newview/skins/default/xui/es/floater_mute_object.xml13
-rw-r--r--indra/newview/skins/default/xui/es/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_openobject.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_outgoing_call.xml28
-rw-r--r--indra/newview/skins/default/xui/es/floater_pay.xml30
-rw-r--r--indra/newview/skins/default/xui/es/floater_pay_object.xml29
-rw-r--r--indra/newview/skins/default/xui/es/floater_perm_prefs.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_postcard.xml14
-rw-r--r--indra/newview/skins/default/xui/es/floater_preferences.xml16
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_animation.xml7
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_gesture.xml64
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_notecard.xml20
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_sound.xml7
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_texture.xml37
-rw-r--r--indra/newview/skins/default/xui/es/floater_report_abuse.xml103
-rw-r--r--indra/newview/skins/default/xui/es/floater_script_debug_panel.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_script_preview.xml5
-rw-r--r--indra/newview/skins/default/xui/es/floater_script_queue.xml17
-rw-r--r--indra/newview/skins/default/xui/es/floater_script_search.xml12
-rw-r--r--indra/newview/skins/default/xui/es/floater_search.xml16
-rw-r--r--indra/newview/skins/default/xui/es/floater_select_key.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_sell_land.xml125
-rw-r--r--indra/newview/skins/default/xui/es/floater_settings_debug.xml8
-rw-r--r--indra/newview/skins/default/xui/es/floater_snapshot.xml65
-rw-r--r--indra/newview/skins/default/xui/es/floater_stats.xml71
-rw-r--r--indra/newview/skins/default/xui/es/floater_sys_well.xml9
-rw-r--r--indra/newview/skins/default/xui/es/floater_telehub.xml15
-rw-r--r--indra/newview/skins/default/xui/es/floater_texture_ctrl.xml14
-rw-r--r--indra/newview/skins/default/xui/es/floater_tools.xml573
-rw-r--r--indra/newview/skins/default/xui/es/floater_top_objects.xml8
-rw-r--r--indra/newview/skins/default/xui/es/floater_tos.xml3
-rw-r--r--indra/newview/skins/default/xui/es/floater_voice_controls.xml25
-rw-r--r--indra/newview/skins/default/xui/es/floater_water.xml24
-rw-r--r--indra/newview/skins/default/xui/es/floater_whitelist_entry.xml9
-rw-r--r--indra/newview/skins/default/xui/es/floater_world_map.xml120
-rw-r--r--indra/newview/skins/default/xui/es/inspect_avatar.xml21
-rw-r--r--indra/newview/skins/default/xui/es/inspect_group.xml22
-rw-r--r--indra/newview/skins/default/xui/es/inspect_object.xml34
-rw-r--r--indra/newview/skins/default/xui/es/inspect_remote_object.xml13
-rw-r--r--indra/newview/skins/default/xui/es/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/default/xui/es/menu_attachment_self.xml12
-rw-r--r--indra/newview/skins/default/xui/es/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/default/xui/es/menu_avatar_self.xml27
-rw-r--r--indra/newview/skins/default/xui/es/menu_bottomtray.xml12
-rw-r--r--indra/newview/skins/default/xui/es/menu_favorites.xml10
-rw-r--r--indra/newview/skins/default/xui/es/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/default/xui/es/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_hide_navbar.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/default/xui/es/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml17
-rw-r--r--indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml17
-rw-r--r--indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_inventory.xml24
-rw-r--r--indra/newview/skins/default/xui/es/menu_inventory_add.xml32
-rw-r--r--indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml14
-rw-r--r--indra/newview/skins/default/xui/es/menu_land.xml9
-rw-r--r--indra/newview/skins/default/xui/es/menu_landmark.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_login.xml27
-rw-r--r--indra/newview/skins/default/xui/es/menu_mini_map.xml3
-rw-r--r--indra/newview/skins/default/xui/es/menu_navbar.xml11
-rw-r--r--indra/newview/skins/default/xui/es/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/es/menu_object.xml24
-rw-r--r--indra/newview/skins/default/xui/es/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_participant_list.xml16
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_nearby.xml10
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_picks.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_place.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/default/xui/es/menu_profile_overflow.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_slurl.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_group.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_http.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_map.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_viewer.xml495
-rw-r--r--indra/newview/skins/default/xui/es/mime_types_linux.xml217
-rw-r--r--indra/newview/skins/default/xui/es/mime_types_mac.xml217
-rw-r--r--indra/newview/skins/default/xui/es/notifications.xml1341
-rw-r--r--indra/newview/skins/default/xui/es/panel_active_object_row.xml9
-rw-r--r--indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml8
-rw-r--r--indra/newview/skins/default/xui/es/panel_avatar_list_item.xml25
-rw-r--r--indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_bottomtray.xml23
-rw-r--r--indra/newview/skins/default/xui/es/panel_classified_info.xml22
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_alpha.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_classified.xml33
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_eyes.xml9
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_gloves.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_hair.xml12
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_jacket.xml11
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_pants.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_pick.xml28
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_profile.xml91
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_shape.xml23
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_shirt.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_shoes.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_skin.xml14
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_skirt.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_socks.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_tattoo.xml8
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_underpants.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_undershirt.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_wearable.xml101
-rw-r--r--indra/newview/skins/default/xui/es/panel_friends.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_control_panel.xml9
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_general.xml81
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml36
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_invite.xml24
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_land_money.xml37
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_list_item.xml4
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_notices.xml43
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_notify.xml8
-rw-r--r--indra/newview/skins/default/xui/es/panel_group_roles.xml171
-rw-r--r--indra/newview/skins/default/xui/es/panel_im_control_panel.xml13
-rw-r--r--indra/newview/skins/default/xui/es/panel_landmark_info.xml37
-rw-r--r--indra/newview/skins/default/xui/es/panel_landmarks.xml14
-rw-r--r--indra/newview/skins/default/xui/es/panel_login.xml55
-rw-r--r--indra/newview/skins/default/xui/es/panel_main_inventory.xml64
-rw-r--r--indra/newview/skins/default/xui/es/panel_me.xml7
-rw-r--r--indra/newview/skins/default/xui/es/panel_media_settings_general.xml32
-rw-r--r--indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml20
-rw-r--r--indra/newview/skins/default/xui/es/panel_media_settings_security.xml12
-rw-r--r--indra/newview/skins/default/xui/es/panel_my_profile.xml37
-rw-r--r--indra/newview/skins/default/xui/es/panel_navigation_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/es/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml11
-rw-r--r--indra/newview/skins/default/xui/es/panel_notes.xml23
-rw-r--r--indra/newview/skins/default/xui/es/panel_outfits_inventory.xml7
-rw-r--r--indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml9
-rw-r--r--indra/newview/skins/default/xui/es/panel_people.xml53
-rw-r--r--indra/newview/skins/default/xui/es/panel_pick_info.xml16
-rw-r--r--indra/newview/skins/default/xui/es/panel_picks.xml20
-rw-r--r--indra/newview/skins/default/xui/es/panel_place_profile.xml103
-rw-r--r--indra/newview/skins/default/xui/es/panel_places.xml14
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_advanced.xml38
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_alerts.xml18
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_chat.xml32
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_general.xml116
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml210
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_privacy.xml49
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_setup.xml56
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_sound.xml64
-rw-r--r--indra/newview/skins/default/xui/es/panel_prim_media_controls.xml28
-rw-r--r--indra/newview/skins/default/xui/es/panel_profile.xml36
-rw-r--r--indra/newview/skins/default/xui/es/panel_profile_view.xml16
-rw-r--r--indra/newview/skins/default/xui/es/panel_region_covenant.xml10
-rw-r--r--indra/newview/skins/default/xui/es/panel_region_debug.xml22
-rw-r--r--indra/newview/skins/default/xui/es/panel_region_estate.xml8
-rw-r--r--indra/newview/skins/default/xui/es/panel_region_texture.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_script_ed.xml43
-rw-r--r--indra/newview/skins/default/xui/es/panel_side_tray.xml26
-rw-r--r--indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml5
-rw-r--r--indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml6
-rw-r--r--indra/newview/skins/default/xui/es/panel_status_bar.xml53
-rw-r--r--indra/newview/skins/default/xui/es/panel_teleport_history.xml14
-rw-r--r--indra/newview/skins/default/xui/es/panel_world_map.xml6
-rw-r--r--indra/newview/skins/default/xui/es/role_actions.xml243
-rw-r--r--indra/newview/skins/default/xui/es/sidepanel_appearance.xml11
-rw-r--r--indra/newview/skins/default/xui/es/sidepanel_inventory.xml11
-rw-r--r--indra/newview/skins/default/xui/es/sidepanel_item_info.xml70
-rw-r--r--indra/newview/skins/default/xui/es/sidepanel_task_info.xml119
-rw-r--r--indra/newview/skins/default/xui/es/strings.xml2873
-rw-r--r--indra/newview/skins/default/xui/es/teleport_strings.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about_land.xml39
-rw-r--r--indra/newview/skins/default/xui/fr/floater_animation_preview.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/floater_avatar_picker.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_avatar_textures.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_beacons.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_buy_currency.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/floater_buy_land.xml260
-rw-r--r--indra/newview/skins/default/xui/fr/floater_color_picker.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_customize.xml70
-rw-r--r--indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml16
-rw-r--r--indra/newview/skins/default/xui/fr/floater_env_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_event.xml48
-rw-r--r--indra/newview/skins/default/xui/fr/floater_god_tools.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_help_browser.xml11
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inspect.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inventory.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_joystick.xml28
-rw-r--r--indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_lsl_guide.xml9
-rw-r--r--indra/newview/skins/default/xui/fr/floater_map.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_media_browser.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_mem_leaking.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_notification.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_outgoing_call.xml9
-rw-r--r--indra/newview/skins/default/xui/fr/floater_pay_object.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/floater_perm_prefs.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_postcard.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preferences.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_animation.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_sound.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_texture.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_report_abuse.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/floater_script_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_sell_land.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_settings_debug.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_snapshot.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_sys_well.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_telehub.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/floater_url_entry.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/floater_water.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/floater_windlight_options.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_world_map.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/inspect_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/inspect_remote_object.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_avatar_self.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/menu_inventory.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/menu_object.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/menu_people_nearby.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/menu_profile_overflow.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_viewer.xml44
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml70
-rw-r--r--indra/newview/skins/default/xui/fr/panel_audio_device.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_bottomtray.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/panel_classified_info.xml17
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_alpha.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_gloves.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_jacket.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_pants.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_profile.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_shirt.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_shoes.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_skin.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_skirt.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_socks.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_underpants.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_wearable.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_general.xml26
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml43
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_land_money.xml107
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_notices.xml18
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_roles.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/panel_groups.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_im_control_panel.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/panel_landmarks.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_login.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_main_inventory.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_me.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_media_settings_security.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/panel_my_profile.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/panel_navigation_bar.xml9
-rw-r--r--indra/newview/skins/default/xui/fr/panel_nearby_chat.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_nearby_media.xml63
-rw-r--r--indra/newview/skins/default/xui/fr/panel_notes.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_people.xml15
-rw-r--r--indra/newview/skins/default/xui/fr/panel_place_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_places.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml39
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_general.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_setup.xml16
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_sound.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/panel_profile.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_covenant.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_debug.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_estate.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_general.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_general_layout.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_texture.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml16
-rw-r--r--indra/newview/skins/default/xui/fr/panel_side_tray.xml18
-rw-r--r--indra/newview/skins/default/xui/fr/panel_status_bar.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/sidepanel_task_info.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml65
-rw-r--r--indra/newview/skins/default/xui/ja/floater_about.xml7
-rw-r--r--indra/newview/skins/default/xui/ja/floater_about_land.xml95
-rw-r--r--indra/newview/skins/default/xui/ja/floater_animation_preview.xml15
-rw-r--r--indra/newview/skins/default/xui/ja/floater_avatar_textures.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_build_options.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/floater_bulk_perms.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/floater_buy_contents.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/floater_buy_currency.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_buy_land.xml264
-rw-r--r--indra/newview/skins/default/xui/ja/floater_buy_object.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/floater_camera.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_color_picker.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_critical.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_customize.xml58
-rw-r--r--indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_event.xml48
-rw-r--r--indra/newview/skins/default/xui/ja/floater_god_tools.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/floater_help_browser.xml11
-rw-r--r--indra/newview/skins/default/xui/ja/floater_image_preview.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_inspect.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/floater_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_joystick.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_land_holdings.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/floater_map.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_media_browser.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_mem_leaking.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml7
-rw-r--r--indra/newview/skins/default/xui/ja/floater_outgoing_call.xml9
-rw-r--r--indra/newview/skins/default/xui/ja/floater_perm_prefs.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_postcard.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preferences.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_animation.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_gesture.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_sound.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_texture.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_report_abuse.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/floater_sell_land.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_snapshot.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/floater_sound_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_sys_well.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_telehub.xml7
-rw-r--r--indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_tools.xml80
-rw-r--r--indra/newview/skins/default/xui/ja/floater_url_entry.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/floater_window_size.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_world_map.xml23
-rw-r--r--indra/newview/skins/default/xui/ja/inspect_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_avatar_self.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml1
-rw-r--r--indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_inventory.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_object.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_people_groups.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_people_nearby.xml1
-rw-r--r--indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml1
-rw-r--r--indra/newview/skins/default/xui/ja/menu_profile_overflow.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_slurl.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/menu_url_http.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_viewer.xml60
-rw-r--r--indra/newview/skins/default/xui/ja/mime_types.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/notifications.xml994
-rw-r--r--indra/newview/skins/default/xui/ja/panel_bottomtray.xml9
-rw-r--r--indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_classified_info.xml17
-rw-r--r--indra/newview/skins/default/xui/ja/panel_edit_alpha.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_edit_profile.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_friends.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_control_panel.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_general.xml28
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml43
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_invite.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_land_money.xml107
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_notices.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_roles.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_groups.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_im_control_panel.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/panel_landmark_info.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_landmarks.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_login.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_main_inventory.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/panel_me.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/panel_media_settings_general.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_media_settings_security.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_my_profile.xml9
-rw-r--r--indra/newview/skins/default/xui/ja/panel_navigation_bar.xml9
-rw-r--r--indra/newview/skins/default/xui/ja/panel_nearby_media.xml63
-rw-r--r--indra/newview/skins/default/xui/ja/panel_notes.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/panel_people.xml31
-rw-r--r--indra/newview/skins/default/xui/ja/panel_picks.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_place_profile.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_places.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml37
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_chat.xml24
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_general.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_setup.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_sound.xml14
-rw-r--r--indra/newview/skins/default/xui/ja/panel_profile.xml16
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_covenant.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_debug.xml14
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_estate.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_general.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_general_layout.xml16
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_terrain.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_texture.xml13
-rw-r--r--indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml16
-rw-r--r--indra/newview/skins/default/xui/ja/panel_side_tray.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/panel_status_bar.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/role_actions.xml36
-rw-r--r--indra/newview/skins/default/xui/ja/sidepanel_task_info.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/strings.xml159
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_about.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_about_land.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_animation_preview.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_auction.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_avatar_picker.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_avatar_textures.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_build_options.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_bumps.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_buy_contents.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_buy_currency.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_buy_land.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_buy_object.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_camera.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_choose_group.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_color_picker.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_critical.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_customize.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_device_settings.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_env_settings.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_gesture.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_god_tools.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_hardware_settings.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_hud.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_im.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_image_preview.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_inspect.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_inventory.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_joystick.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_lagmeter.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_land_holdings.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_lsl_guide.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_media_browser.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_mem_leaking.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_moveview.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_mute_object.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_my_friends.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_openobject.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_pay.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_pay_object.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_post_process.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_postcard.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_preferences.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_preview_animation.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_preview_classified.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_preview_event.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_preview_gesture.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_preview_notecard.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_preview_sound.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_preview_texture.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_region_info.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_report_abuse.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_script_debug.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_script_preview.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_script_queue.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_script_search.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_select_key.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_sell_land.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_settings_debug.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_snapshot.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_sound_preview.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_telehub.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_tools.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_top_objects.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_tos.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_url_entry.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_water.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_windlight_options.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/floater_world_map.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/menu_inventory.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/menu_login.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/menu_slurl.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/menu_viewer.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/mime_types.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_audio_device.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_friends.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_group_general.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_group_invite.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_group_land_money.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_group_notices.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_group_roles.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_groups.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_login.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_preferences_chat.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_preferences_general.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_preferences_setup.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_preferences_sound.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_region_covenant.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_region_debug.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_region_estate.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_region_general.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_region_terrain.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_region_texture.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_scrolling_param.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/panel_status_bar.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/role_actions.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/strings.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/teleport_strings.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pl/xui_version.xml0
-rw-r--r--indra/newview/skins/default/xui/pt/floater_about.xml66
-rw-r--r--indra/newview/skins/default/xui/pt/floater_about_land.xml392
-rw-r--r--indra/newview/skins/default/xui/pt/floater_activeim.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_animation_preview.xml216
-rw-r--r--indra/newview/skins/default/xui/pt/floater_auction.xml14
-rw-r--r--indra/newview/skins/default/xui/pt/floater_avatar_picker.xml55
-rw-r--r--indra/newview/skins/default/xui/pt/floater_avatar_textures.xml50
-rw-r--r--indra/newview/skins/default/xui/pt/floater_beacons.xml24
-rw-r--r--indra/newview/skins/default/xui/pt/floater_build_options.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/floater_bulk_perms.xml64
-rw-r--r--indra/newview/skins/default/xui/pt/floater_bumps.xml27
-rw-r--r--indra/newview/skins/default/xui/pt/floater_buy_contents.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/floater_buy_currency.xml79
-rw-r--r--indra/newview/skins/default/xui/pt/floater_buy_land.xml47
-rw-r--r--indra/newview/skins/default/xui/pt/floater_buy_object.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_camera.xml19
-rw-r--r--indra/newview/skins/default/xui/pt/floater_choose_group.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_color_picker.xml13
-rw-r--r--indra/newview/skins/default/xui/pt/floater_customize.xml120
-rw-r--r--indra/newview/skins/default/xui/pt/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_env_settings.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/floater_gesture.xml27
-rw-r--r--indra/newview/skins/default/xui/pt/floater_hardware_settings.xml20
-rw-r--r--indra/newview/skins/default/xui/pt/floater_help_browser.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/floater_im.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_im_container.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_im_session.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/floater_image_preview.xml22
-rw-r--r--indra/newview/skins/default/xui/pt/floater_incoming_call.xml21
-rw-r--r--indra/newview/skins/default/xui/pt/floater_inspect.xml17
-rw-r--r--indra/newview/skins/default/xui/pt/floater_inventory.xml57
-rw-r--r--indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml78
-rw-r--r--indra/newview/skins/default/xui/pt/floater_joystick.xml40
-rw-r--r--indra/newview/skins/default/xui/pt/floater_lagmeter.xml221
-rw-r--r--indra/newview/skins/default/xui/pt/floater_land_holdings.xml12
-rw-r--r--indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml19
-rw-r--r--indra/newview/skins/default/xui/pt/floater_lsl_guide.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/floater_media_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_mem_leaking.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_moveview.xml42
-rw-r--r--indra/newview/skins/default/xui/pt/floater_mute_object.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_outgoing_call.xml28
-rw-r--r--indra/newview/skins/default/xui/pt/floater_pay.xml34
-rw-r--r--indra/newview/skins/default/xui/pt/floater_pay_object.xml43
-rw-r--r--indra/newview/skins/default/xui/pt/floater_postcard.xml12
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preferences.xml16
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_animation.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_gesture.xml64
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_notecard.xml20
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_sound.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_texture.xml39
-rw-r--r--indra/newview/skins/default/xui/pt/floater_report_abuse.xml102
-rw-r--r--indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_script_preview.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/floater_script_queue.xml15
-rw-r--r--indra/newview/skins/default/xui/pt/floater_script_search.xml12
-rw-r--r--indra/newview/skins/default/xui/pt/floater_search.xml16
-rw-r--r--indra/newview/skins/default/xui/pt/floater_select_key.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_sell_land.xml124
-rw-r--r--indra/newview/skins/default/xui/pt/floater_settings_debug.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/floater_snapshot.xml70
-rw-r--r--indra/newview/skins/default/xui/pt/floater_sound_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_stats.xml71
-rw-r--r--indra/newview/skins/default/xui/pt/floater_sys_well.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/floater_telehub.xml19
-rw-r--r--indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml14
-rw-r--r--indra/newview/skins/default/xui/pt/floater_tools.xml579
-rw-r--r--indra/newview/skins/default/xui/pt/floater_top_objects.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/floater_tos.xml3
-rw-r--r--indra/newview/skins/default/xui/pt/floater_voice_controls.xml25
-rw-r--r--indra/newview/skins/default/xui/pt/floater_water.xml24
-rw-r--r--indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/floater_world_map.xml114
-rw-r--r--indra/newview/skins/default/xui/pt/inspect_avatar.xml21
-rw-r--r--indra/newview/skins/default/xui/pt/inspect_group.xml22
-rw-r--r--indra/newview/skins/default/xui/pt/inspect_object.xml34
-rw-r--r--indra/newview/skins/default/xui/pt/inspect_remote_object.xml13
-rw-r--r--indra/newview/skins/default/xui/pt/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/default/xui/pt/menu_attachment_self.xml12
-rw-r--r--indra/newview/skins/default/xui/pt/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/default/xui/pt/menu_avatar_self.xml27
-rw-r--r--indra/newview/skins/default/xui/pt/menu_bottomtray.xml12
-rw-r--r--indra/newview/skins/default/xui/pt/menu_favorites.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_hide_navbar.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml17
-rw-r--r--indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml17
-rw-r--r--indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/menu_inventory.xml24
-rw-r--r--indra/newview/skins/default/xui/pt/menu_inventory_add.xml32
-rw-r--r--indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml14
-rw-r--r--indra/newview/skins/default/xui/pt/menu_land.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/menu_landmark.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/menu_login.xml27
-rw-r--r--indra/newview/skins/default/xui/pt/menu_mini_map.xml3
-rw-r--r--indra/newview/skins/default/xui/pt/menu_navbar.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/menu_object.xml24
-rw-r--r--indra/newview/skins/default/xui/pt/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_participant_list.xml16
-rw-r--r--indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_people_nearby.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/menu_picks.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_place.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/default/xui/pt/menu_profile_overflow.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_slurl.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_group.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_http.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_map.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_viewer.xml505
-rw-r--r--indra/newview/skins/default/xui/pt/mime_types_linux.xml217
-rw-r--r--indra/newview/skins/default/xui/pt/mime_types_mac.xml217
-rw-r--r--indra/newview/skins/default/xui/pt/notifications.xml1384
-rw-r--r--indra/newview/skins/default/xui/pt/panel_active_object_row.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml25
-rw-r--r--indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_bottomtray.xml23
-rw-r--r--indra/newview/skins/default/xui/pt/panel_classified_info.xml22
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_alpha.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_classified.xml33
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_eyes.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_gloves.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_hair.xml12
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_jacket.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_pants.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_pick.xml28
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_profile.xml91
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_shape.xml23
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_shirt.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_shoes.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_skin.xml14
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_skirt.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_socks.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_underpants.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_wearable.xml101
-rw-r--r--indra/newview/skins/default/xui/pt/panel_friends.xml14
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_control_panel.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_general.xml81
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml36
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_invite.xml22
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_land_money.xml47
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_list_item.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_notices.xml54
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_notify.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/panel_group_roles.xml148
-rw-r--r--indra/newview/skins/default/xui/pt/panel_im_control_panel.xml13
-rw-r--r--indra/newview/skins/default/xui/pt/panel_landmark_info.xml37
-rw-r--r--indra/newview/skins/default/xui/pt/panel_landmarks.xml14
-rw-r--r--indra/newview/skins/default/xui/pt/panel_login.xml57
-rw-r--r--indra/newview/skins/default/xui/pt/panel_main_inventory.xml64
-rw-r--r--indra/newview/skins/default/xui/pt/panel_me.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/panel_media_settings_general.xml32
-rw-r--r--indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml20
-rw-r--r--indra/newview/skins/default/xui/pt/panel_media_settings_security.xml12
-rw-r--r--indra/newview/skins/default/xui/pt/panel_my_profile.xml37
-rw-r--r--indra/newview/skins/default/xui/pt/panel_navigation_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/pt/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/panel_notes.xml23
-rw-r--r--indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/panel_people.xml53
-rw-r--r--indra/newview/skins/default/xui/pt/panel_pick_info.xml16
-rw-r--r--indra/newview/skins/default/xui/pt/panel_picks.xml20
-rw-r--r--indra/newview/skins/default/xui/pt/panel_place_profile.xml103
-rw-r--r--indra/newview/skins/default/xui/pt/panel_places.xml14
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml38
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml18
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_chat.xml33
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_general.xml116
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml207
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml48
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_setup.xml61
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_sound.xml63
-rw-r--r--indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml28
-rw-r--r--indra/newview/skins/default/xui/pt/panel_profile.xml36
-rw-r--r--indra/newview/skins/default/xui/pt/panel_profile_view.xml16
-rw-r--r--indra/newview/skins/default/xui/pt/panel_region_covenant.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/panel_region_debug.xml16
-rw-r--r--indra/newview/skins/default/xui/pt/panel_region_estate.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/panel_region_texture.xml24
-rw-r--r--indra/newview/skins/default/xui/pt/panel_script_ed.xml43
-rw-r--r--indra/newview/skins/default/xui/pt/panel_side_tray.xml26
-rw-r--r--indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/panel_status_bar.xml53
-rw-r--r--indra/newview/skins/default/xui/pt/panel_teleport_history.xml14
-rw-r--r--indra/newview/skins/default/xui/pt/panel_world_map.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/role_actions.xml227
-rw-r--r--indra/newview/skins/default/xui/pt/sidepanel_appearance.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/sidepanel_inventory.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/sidepanel_item_info.xml70
-rw-r--r--indra/newview/skins/default/xui/pt/sidepanel_task_info.xml119
-rw-r--r--indra/newview/skins/default/xui/pt/strings.xml2865
-rw-r--r--indra/newview/skins/default/xui/pt/teleport_strings.xml8
-rw-r--r--indra/newview/tests/lllogininstance_test.cpp2
-rw-r--r--indra/newview/tests/llxmlrpclistener_test.cpp2
-rwxr-xr-xindra/newview/viewer_manifest.py29
-rw-r--r--indra/test/llhttpclient_tut.cpp1
-rw-r--r--indra/test_apps/llplugintest/llmediaplugintest.cpp4
-rw-r--r--install.xml63
-rw-r--r--scripts/messages/message_template.msg4
1604 files changed, 39444 insertions, 18916 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 1f578eec5f..592e9fc901 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -171,8 +171,8 @@ if (LINUX)
if (NOT STANDALONE)
# this stops us requiring a really recent glibc at runtime
add_definitions(-fno-stack-protector)
- # linking can be so slow - give us a chance to figure out why
- set(CMAKE_CXX_LINK_FLAGS "-Wl,--stats,--no-keep-memory")
+ # linking can be very memory-hungry, especially the final viewer link
+ set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory")
endif (NOT STANDALONE)
endif (VIEWER)
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
index f4706dd4f2..180504d286 100644
--- a/indra/cmake/APR.cmake
+++ b/indra/cmake/APR.cmake
@@ -54,7 +54,10 @@ else (STANDALONE)
endif (WINDOWS)
set(APR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/apr-1)
- if (LINUX AND VIEWER)
- list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} uuid)
- endif (LINUX AND VIEWER)
+ if (LINUX)
+ if (VIEWER)
+ list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} uuid)
+ endif (VIEWER)
+ list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} rt)
+ endif (LINUX)
endif (STANDALONE)
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index efe9ad74d3..7ce57a5572 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -38,12 +38,12 @@ else (STANDALONE)
debug libboost_signals-vc80-mt-gd-${BOOST_VERSION})
endif (MSVC71)
elseif (DARWIN)
- set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
- set(BOOST_REGEX_LIBRARY boost_regex-mt)
- set(BOOST_SIGNALS_LIBRARY boost_signals-mt)
+ set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-xgcc40-mt)
+ set(BOOST_REGEX_LIBRARY boost_regex-xgcc40-mt)
+ set(BOOST_SIGNALS_LIBRARY boost_signals-xgcc40-mt)
elseif (LINUX)
- set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
- set(BOOST_REGEX_LIBRARY boost_regex-mt)
- set(BOOST_SIGNALS_LIBRARY boost_signals-mt)
+ set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-gcc41-mt)
+ set(BOOST_REGEX_LIBRARY boost_regex-gcc41-mt)
+ set(BOOST_SIGNALS_LIBRARY boost_signals-gcc41-mt)
endif (WINDOWS)
endif (STANDALONE)
diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
new file mode 100644
index 0000000000..c0424396e5
--- /dev/null
+++ b/indra/cmake/DragDrop.cmake
@@ -0,0 +1,23 @@
+# -*- cmake -*-
+
+if (VIEWER)
+
+ set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off")
+
+ if (OS_DRAG_DROP)
+
+ if (WINDOWS)
+ add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+ endif (WINDOWS)
+
+ if (DARWIN)
+ add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+ endif (DARWIN)
+
+ if (LINUX)
+ add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+ endif (LINUX)
+
+ endif (OS_DRAG_DROP)
+
+endif (VIEWER)
diff --git a/indra/cmake/GStreamer010Plugin.cmake b/indra/cmake/GStreamer010Plugin.cmake
index 0d334837d4..0ca432da18 100644
--- a/indra/cmake/GStreamer010Plugin.cmake
+++ b/indra/cmake/GStreamer010Plugin.cmake
@@ -24,7 +24,6 @@ elseif (LINUX)
gmodule-2.0
dl
gthread-2.0
- rt
glib-2.0
)
endif (STANDALONE)
diff --git a/indra/cmake/PulseAudio.cmake b/indra/cmake/PulseAudio.cmake
new file mode 100644
index 0000000000..f8087a8083
--- /dev/null
+++ b/indra/cmake/PulseAudio.cmake
@@ -0,0 +1,28 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+if (STANDALONE)
+ include(FindPkgConfig)
+
+ pkg_check_modules(PULSEAUDIO REQUIRED libpulse-mainloop-glib)
+
+elseif (LINUX)
+ use_prebuilt_binary(pulseaudio)
+ set(PULSEAUDIO_FOUND ON FORCE BOOL)
+ set(PULSEAUDIO_INCLUDE_DIRS
+ ${LIBS_PREBUILT_DIR}/include
+ )
+ # We don't need to explicitly link against pulseaudio itself, because
+ # the viewer probes for the system's copy at runtime.
+ set(PULSEAUDIO_LIBRARIES
+ # none needed!
+ )
+endif (STANDALONE)
+
+if (PULSEAUDIO_FOUND)
+ set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.")
+endif (PULSEAUDIO_FOUND)
+
+if (PULSEAUDIO)
+ add_definitions(-DLL_PULSEAUDIO_ENABLED=1)
+endif (PULSEAUDIO)
diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt
index 4b19e28066..ab62a0d0af 100644
--- a/indra/linux_crash_logger/CMakeLists.txt
+++ b/indra/linux_crash_logger/CMakeLists.txt
@@ -54,12 +54,5 @@ target_link_libraries(linux-crash-logger
${DB_LIBRARIES}
)
-add_custom_command(
- OUTPUT linux-crash-logger-stripped
- COMMAND strip
- ARGS --strip-debug -o linux-crash-logger-stripped linux-crash-logger
- DEPENDS linux-crash-logger
- )
-
-add_custom_target(linux-crash-logger-strip-target ALL
- DEPENDS linux-crash-logger-stripped)
+add_custom_target(linux-crash-logger-target ALL
+ DEPENDS linux-crash-logger)
diff --git a/indra/linux_updater/CMakeLists.txt b/indra/linux_updater/CMakeLists.txt
index 9fe32ecb46..00a78b2a8f 100644
--- a/indra/linux_updater/CMakeLists.txt
+++ b/indra/linux_updater/CMakeLists.txt
@@ -47,12 +47,5 @@ target_link_libraries(linux-updater
${LLCOMMON_LIBRARIES}
)
-add_custom_command(
- OUTPUT linux-updater-stripped
- COMMAND strip
- ARGS --strip-debug -o linux-updater-stripped linux-updater
- DEPENDS linux-updater
- )
-
-add_custom_target(linux-updater-strip-target ALL
- DEPENDS linux-updater-stripped)
+add_custom_target(linux-updater-target ALL
+ DEPENDS linux-updater)
diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp
index 6bbaad9cef..290206ee22 100644
--- a/indra/llaudio/llaudiodecodemgr.cpp
+++ b/indra/llaudio/llaudiodecodemgr.cpp
@@ -181,6 +181,8 @@ LLVorbisDecodeState::LLVorbisDecodeState(const LLUUID &uuid, const std::string &
mFileHandle = LLLFSThread::nullHandle();
#endif
// No default value for mVF, it's an ogg structure?
+ // Hey, let's zero it anyway, for predictability.
+ memset(&mVF, 0, sizeof(mVF));
}
LLVorbisDecodeState::~LLVorbisDecodeState()
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
index a28c94d00d..ed06c85e1a 100644
--- a/indra/llaudio/llaudioengine.cpp
+++ b/indra/llaudio/llaudioengine.cpp
@@ -202,12 +202,12 @@ void LLAudioEngine::updateInternetStream()
}
// virtual
-int LLAudioEngine::isInternetStreamPlaying()
+LLAudioEngine::LLAudioPlayState LLAudioEngine::isInternetStreamPlaying()
{
if (mStreamingAudioImpl)
- return mStreamingAudioImpl->isPlaying();
+ return (LLAudioEngine::LLAudioPlayState) mStreamingAudioImpl->isPlaying();
- return 0; // Stopped
+ return LLAudioEngine::AUDIO_STOPPED; // Stopped
}
diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h
index 457fd93abe..d287104204 100644
--- a/indra/llaudio/llaudioengine.h
+++ b/indra/llaudio/llaudioengine.h
@@ -91,6 +91,15 @@ public:
AUDIO_TYPE_COUNT = 4 // last
};
+ enum LLAudioPlayState
+ {
+ // isInternetStreamPlaying() returns an *int*, with
+ // 0 = stopped, 1 = playing, 2 = paused.
+ AUDIO_STOPPED = 0,
+ AUDIO_PLAYING = 1,
+ AUDIO_PAUSED = 2
+ };
+
LLAudioEngine();
virtual ~LLAudioEngine();
@@ -156,7 +165,7 @@ public:
void stopInternetStream();
void pauseInternetStream(int pause);
void updateInternetStream(); // expected to be called often
- int isInternetStreamPlaying();
+ LLAudioPlayState isInternetStreamPlaying();
// use a value from 0.0 to 1.0, inclusive
void setInternetStreamGain(F32 vol);
std::string getInternetStreamURL();
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp
index 528a7bb4a5..40a9752268 100644
--- a/indra/llcharacter/llcharacter.cpp
+++ b/indra/llcharacter/llcharacter.cpp
@@ -181,16 +181,18 @@ void LLCharacter::requestStopMotion( LLMotion* motion)
// updateMotions()
//-----------------------------------------------------------------------------
static LLFastTimer::DeclareTimer FTM_UPDATE_ANIMATION("Update Animation");
+static LLFastTimer::DeclareTimer FTM_UPDATE_HIDDEN_ANIMATION("Update Hidden Anim");
void LLCharacter::updateMotions(e_update_t update_type)
{
- LLFastTimer t(FTM_UPDATE_ANIMATION);
if (update_type == HIDDEN_UPDATE)
{
+ LLFastTimer t(FTM_UPDATE_HIDDEN_ANIMATION);
mMotionController.updateMotionsMinimal();
}
else
{
+ LLFastTimer t(FTM_UPDATE_ANIMATION);
// unpause if the number of outstanding pause requests has dropped to the initial one
if (mMotionController.isPaused() && mPauseRequest->getNumRefs() == 1)
{
diff --git a/indra/llcharacter/lleditingmotion.cpp b/indra/llcharacter/lleditingmotion.cpp
index 381d19e614..57554bdc35 100644
--- a/indra/llcharacter/lleditingmotion.cpp
+++ b/indra/llcharacter/lleditingmotion.cpp
@@ -221,7 +221,7 @@ BOOL LLEditingMotion::onUpdate(F32 time, U8* joint_mask)
if (!target.isFinite())
{
llerrs << "Non finite target in editing motion with target distance of " << target_dist <<
- " and focus point " << focus_pt << " and pointAtPt: " << *pointAtPt << llendl;
+ " and focus point " << focus_pt << llendl;
}
mTarget.setPosition( target + mParentJoint.getPosition());
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 9ead183a9e..4481d334b2 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -50,6 +50,7 @@ set(llcommon_SOURCE_FILES
lleventdispatcher.cpp
lleventfilter.cpp
llevents.cpp
+ lleventtimer.cpp
llfasttimer_class.cpp
llfile.cpp
llfindlocale.cpp
@@ -164,7 +165,6 @@ set(llcommon_HEADER_FILES
llhttpstatuscodes.h
llindexedqueue.h
llinstancetracker.h
- llinstancetracker.h
llkeythrottle.h
lllazy.h
lllistenerwrapper.h
diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp
index 968b92d1e7..6b2d1b7c20 100644
--- a/indra/llcommon/llapp.cpp
+++ b/indra/llcommon/llapp.cpp
@@ -41,7 +41,7 @@
#include "lllivefile.h"
#include "llmemory.h"
#include "llstl.h" // for DeletePointer()
-#include "lltimer.h"
+#include "lleventtimer.h"
//
// Signal handling
diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h
index a77bd211f3..52238d4533 100644
--- a/indra/llcommon/llchat.h
+++ b/indra/llcommon/llchat.h
@@ -68,7 +68,8 @@ typedef enum e_chat_audible_level
typedef enum e_chat_style
{
CHAT_STYLE_NORMAL,
- CHAT_STYLE_IRC
+ CHAT_STYLE_IRC,
+ CHAT_STYLE_HISTORY
}EChatStyle;
// A piece of chat
diff --git a/indra/llcommon/lleventtimer.cpp b/indra/llcommon/lleventtimer.cpp
new file mode 100644
index 0000000000..d44e7ec1e6
--- /dev/null
+++ b/indra/llcommon/lleventtimer.cpp
@@ -0,0 +1,95 @@
+/**
+ * @file lleventtimer.cpp
+ * @brief Cross-platform objects for doing timing
+ *
+ * $LicenseInfo:firstyear=2000&license=viewergpl$
+ *
+ * Copyright (c) 2000-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "lleventtimer.h"
+
+#include "u64.h"
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// LLEventTimer Implementation
+//
+//////////////////////////////////////////////////////////////////////////////
+
+LLEventTimer::LLEventTimer(F32 period)
+: mEventTimer()
+{
+ mPeriod = period;
+}
+
+LLEventTimer::LLEventTimer(const LLDate& time)
+: mEventTimer()
+{
+ mPeriod = (F32)(time.secondsSinceEpoch() - LLDate::now().secondsSinceEpoch());
+}
+
+
+LLEventTimer::~LLEventTimer()
+{
+}
+
+//static
+void LLEventTimer::updateClass()
+{
+ std::list<LLEventTimer*> completed_timers;
+
+ {
+ LLInstanceTrackerScopedGuard guard;
+ for (instance_iter iter = guard.beginInstances(); iter != guard.endInstances(); )
+ {
+ LLEventTimer& timer = *iter++;
+ F32 et = timer.mEventTimer.getElapsedTimeF32();
+ if (timer.mEventTimer.getStarted() && et > timer.mPeriod) {
+ timer.mEventTimer.reset();
+ if ( timer.tick() )
+ {
+ completed_timers.push_back( &timer );
+ }
+ }
+ }
+ }
+
+ if ( completed_timers.size() > 0 )
+ {
+ for (std::list<LLEventTimer*>::iterator completed_iter = completed_timers.begin();
+ completed_iter != completed_timers.end();
+ completed_iter++ )
+ {
+ delete *completed_iter;
+ }
+ }
+}
+
+
diff --git a/indra/llcommon/lleventtimer.h b/indra/llcommon/lleventtimer.h
new file mode 100644
index 0000000000..5181cce52d
--- /dev/null
+++ b/indra/llcommon/lleventtimer.h
@@ -0,0 +1,60 @@
+/**
+ * @file lleventtimer.h
+ * @brief Cross-platform objects for doing timing
+ *
+ * $LicenseInfo:firstyear=2000&license=viewergpl$
+ *
+ * Copyright (c) 2000-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_EVENTTIMER_H
+#define LL_EVENTTIMER_H
+
+#include "stdtypes.h"
+#include "lldate.h"
+#include "llinstancetracker.h"
+#include "lltimer.h"
+
+// class for scheduling a function to be called at a given frequency (approximate, inprecise)
+class LL_COMMON_API LLEventTimer : protected LLInstanceTracker<LLEventTimer>
+{
+public:
+ LLEventTimer(F32 period); // period is the amount of time between each call to tick() in seconds
+ LLEventTimer(const LLDate& time);
+ virtual ~LLEventTimer();
+
+ //function to be called at the supplied frequency
+ // Normally return FALSE; TRUE will delete the timer after the function returns.
+ virtual BOOL tick() = 0;
+
+ static void updateClass();
+
+protected:
+ LLTimer mEventTimer;
+ F32 mPeriod;
+};
+
+#endif //LL_EVENTTIMER_H
diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp
index fae0a66873..2e5edb1f3b 100644
--- a/indra/llcommon/llfasttimer_class.cpp
+++ b/indra/llcommon/llfasttimer_class.cpp
@@ -114,7 +114,11 @@ static timer_tree_dfs_iterator_t end_timer_tree()
class NamedTimerFactory : public LLSingleton<NamedTimerFactory>
{
public:
- NamedTimerFactory()
+ NamedTimerFactory()
+ : mActiveTimerRoot(NULL),
+ mTimerRoot(NULL),
+ mAppTimer(NULL),
+ mRootFrameState(NULL)
{}
/*virtual */ void initSingleton()
@@ -214,9 +218,10 @@ LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name)
// static
void LLFastTimer::DeclareTimer::updateCachedPointers()
{
+ DeclareTimer::LLInstanceTrackerScopedGuard guard;
// propagate frame state pointers to timer declarations
- for (DeclareTimer::instance_iter it = DeclareTimer::beginInstances();
- it != DeclareTimer::endInstances();
+ for (DeclareTimer::instance_iter it = guard.beginInstances();
+ it != guard.endInstances();
++it)
{
// update cached pointer
@@ -367,20 +372,23 @@ void LLFastTimer::NamedTimer::buildHierarchy()
if (sCurFrameIndex < 0 ) return;
// set up initial tree
- for (instance_iter it = NamedTimer::beginInstances();
- it != endInstances();
- ++it)
{
- NamedTimer& timer = *it;
- if (&timer == NamedTimerFactory::instance().getRootTimer()) continue;
-
- // bootstrap tree construction by attaching to last timer to be on stack
- // when this timer was called
- if (timer.getFrameState().mLastCaller && timer.mParent == NamedTimerFactory::instance().getRootTimer())
+ NamedTimer::LLInstanceTrackerScopedGuard guard;
+ for (instance_iter it = guard.beginInstances();
+ it != guard.endInstances();
+ ++it)
{
- timer.setParent(timer.getFrameState().mLastCaller->mTimer);
- // no need to push up tree on first use, flag can be set spuriously
- timer.getFrameState().mMoveUpTree = false;
+ NamedTimer& timer = *it;
+ if (&timer == NamedTimerFactory::instance().getRootTimer()) continue;
+
+ // bootstrap tree construction by attaching to last timer to be on stack
+ // when this timer was called
+ if (timer.getFrameState().mLastCaller && timer.mParent == NamedTimerFactory::instance().getRootTimer())
+ {
+ timer.setParent(timer.getFrameState().mLastCaller->mTimer);
+ // no need to push up tree on first use, flag can be set spuriously
+ timer.getFrameState().mMoveUpTree = false;
+ }
}
}
@@ -482,18 +490,21 @@ void LLFastTimer::NamedTimer::resetFrame()
F64 total_time = 0;
LLSD sd;
- for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
- it != NamedTimer::endInstances();
- ++it)
{
- NamedTimer& timer = *it;
- FrameState& info = timer.getFrameState();
- sd[timer.getName()]["Time"] = (LLSD::Real) (info.mSelfTimeCounter*iclock_freq);
- sd[timer.getName()]["Calls"] = (LLSD::Integer) info.mCalls;
-
- // computing total time here because getting the root timer's getCountHistory
- // doesn't work correctly on the first frame
- total_time = total_time + info.mSelfTimeCounter * iclock_freq;
+ NamedTimer::LLInstanceTrackerScopedGuard guard;
+ for (NamedTimer::instance_iter it = guard.beginInstances();
+ it != guard.endInstances();
+ ++it)
+ {
+ NamedTimer& timer = *it;
+ FrameState& info = timer.getFrameState();
+ sd[timer.getName()]["Time"] = (LLSD::Real) (info.mSelfTimeCounter*iclock_freq);
+ sd[timer.getName()]["Calls"] = (LLSD::Integer) info.mCalls;
+
+ // computing total time here because getting the root timer's getCountHistory
+ // doesn't work correctly on the first frame
+ total_time = total_time + info.mSelfTimeCounter * iclock_freq;
+ }
}
sd["Total"]["Time"] = (LLSD::Real) total_time;
@@ -527,21 +538,24 @@ void LLFastTimer::NamedTimer::resetFrame()
DeclareTimer::updateCachedPointers();
// reset for next frame
- for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
- it != NamedTimer::endInstances();
- ++it)
{
- NamedTimer& timer = *it;
-
- FrameState& info = timer.getFrameState();
- info.mSelfTimeCounter = 0;
- info.mCalls = 0;
- info.mLastCaller = NULL;
- info.mMoveUpTree = false;
- // update parent pointer in timer state struct
- if (timer.mParent)
+ NamedTimer::LLInstanceTrackerScopedGuard guard;
+ for (NamedTimer::instance_iter it = guard.beginInstances();
+ it != guard.endInstances();
+ ++it)
{
- info.mParent = &timer.mParent->getFrameState();
+ NamedTimer& timer = *it;
+
+ FrameState& info = timer.getFrameState();
+ info.mSelfTimeCounter = 0;
+ info.mCalls = 0;
+ info.mLastCaller = NULL;
+ info.mMoveUpTree = false;
+ // update parent pointer in timer state struct
+ if (timer.mParent)
+ {
+ info.mParent = &timer.mParent->getFrameState();
+ }
}
}
@@ -571,20 +585,23 @@ void LLFastTimer::NamedTimer::reset()
}
// reset all history
- for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
- it != NamedTimer::endInstances();
- ++it)
{
- NamedTimer& timer = *it;
- if (&timer != NamedTimerFactory::instance().getRootTimer())
+ NamedTimer::LLInstanceTrackerScopedGuard guard;
+ for (NamedTimer::instance_iter it = guard.beginInstances();
+ it != guard.endInstances();
+ ++it)
{
- timer.setParent(NamedTimerFactory::instance().getRootTimer());
+ NamedTimer& timer = *it;
+ if (&timer != NamedTimerFactory::instance().getRootTimer())
+ {
+ timer.setParent(NamedTimerFactory::instance().getRootTimer());
+ }
+
+ timer.mCountAverage = 0;
+ timer.mCallAverage = 0;
+ memset(timer.mCountHistory, 0, sizeof(U32) * HISTORY_NUM);
+ memset(timer.mCallHistory, 0, sizeof(U32) * HISTORY_NUM);
}
-
- timer.mCountAverage = 0;
- timer.mCallAverage = 0;
- memset(timer.mCountHistory, 0, sizeof(U32) * HISTORY_NUM);
- memset(timer.mCallHistory, 0, sizeof(U32) * HISTORY_NUM);
}
sLastFrameIndex = 0;
diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp
new file mode 100644
index 0000000000..c962cb5be1
--- /dev/null
+++ b/indra/llcommon/llinstancetracker.cpp
@@ -0,0 +1,20 @@
+/**
+ * @file lllinstancetracker.cpp
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * Copyright (c) 2009, Linden Research, Inc.
+ * $/LicenseInfo$
+ */
+
+// Precompiled header
+#include "linden_common.h"
+// associated header
+#include "llinstancetracker.h"
+// STL headers
+// std headers
+// external library headers
+// other Linden headers
+
+// llinstancetracker.h is presently header-only. This file exists only because our CMake
+// test macro ADD_BUILD_TEST requires it.
+int dummy = 0;
diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h
index 11fe523651..9df7998273 100644
--- a/indra/llcommon/llinstancetracker.h
+++ b/indra/llcommon/llinstancetracker.h
@@ -98,7 +98,10 @@ private:
mKey = key;
getMap_()[key] = static_cast<T*>(this);
}
- void remove_() { getMap_().erase(mKey); }
+ void remove_()
+ {
+ getMap_().erase(mKey);
+ }
static InstanceMap& getMap_()
{
@@ -129,31 +132,65 @@ public:
/// for completeness of analogy with the generic implementation
static T* getInstance(T* k) { return k; }
- static key_iter beginKeys() { return getSet_().begin(); }
- static key_iter endKeys() { return getSet_().end(); }
- static instance_iter beginInstances() { return instance_iter(getSet_().begin()); }
- static instance_iter endInstances() { return instance_iter(getSet_().end()); }
static S32 instanceCount() { return getSet_().size(); }
+ // Instantiate this to get access to iterators for this type. It's a 'guard' in the sense
+ // that it treats deletes of this type as errors as long as there is an instance of
+ // this class alive in scope somewhere (i.e. deleting while iterating is bad).
+ class LLInstanceTrackerScopedGuard
+ {
+ public:
+ LLInstanceTrackerScopedGuard()
+ {
+ ++sIterationNestDepth;
+ }
+
+ ~LLInstanceTrackerScopedGuard()
+ {
+ --sIterationNestDepth;
+ }
+
+ static instance_iter beginInstances() { return instance_iter(getSet_().begin()); }
+ static instance_iter endInstances() { return instance_iter(getSet_().end()); }
+ static key_iter beginKeys() { return getSet_().begin(); }
+ static key_iter endKeys() { return getSet_().end(); }
+ };
+
protected:
- LLInstanceTracker() { getSet_().insert(static_cast<T*>(this)); }
- virtual ~LLInstanceTracker() { getSet_().erase(static_cast<T*>(this)); }
+ LLInstanceTracker()
+ {
+ // it's safe but unpredictable to create instances of this type while all instances are being iterated over. I hate unpredictable. This assert will probably be turned on early in the next development cycle.
+ //llassert(sIterationNestDepth == 0);
+ getSet_().insert(static_cast<T*>(this));
+ }
+ virtual ~LLInstanceTracker()
+ {
+ // it's unsafe to delete instances of this type while all instances are being iterated over.
+ llassert(sIterationNestDepth == 0);
+ getSet_().erase(static_cast<T*>(this));
+ }
- LLInstanceTracker(const LLInstanceTracker& other) { getSet_().insert(static_cast<T*>(this)); }
+ LLInstanceTracker(const LLInstanceTracker& other)
+ {
+ //llassert(sIterationNestDepth == 0);
+ getSet_().insert(static_cast<T*>(this));
+ }
- static InstanceSet& getSet_() // called after getReady() but before go()
- {
- if (! sInstances)
- {
- sInstances = new InstanceSet;
- }
- return *sInstances;
- }
+ static InstanceSet& getSet_()
+ {
+ if (! sInstances)
+ {
+ sInstances = new InstanceSet;
+ }
+ return *sInstances;
+ }
static InstanceSet* sInstances;
+ static S32 sIterationNestDepth;
};
template <typename T, typename KEY> typename LLInstanceTracker<T, KEY>::InstanceMap* LLInstanceTracker<T, KEY>::sInstances = NULL;
template <typename T> typename LLInstanceTracker<T, T*>::InstanceSet* LLInstanceTracker<T, T*>::sInstances = NULL;
+template <typename T> S32 LLInstanceTracker<T, T*>::sIterationNestDepth = 0;
#endif
diff --git a/indra/llcommon/lllivefile.cpp b/indra/llcommon/lllivefile.cpp
index effda6c49c..5ca90d82ba 100644
--- a/indra/llcommon/lllivefile.cpp
+++ b/indra/llcommon/lllivefile.cpp
@@ -33,7 +33,7 @@
#include "lllivefile.h"
#include "llframetimer.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
const F32 DEFAULT_CONFIG_FILE_REFRESH = 5.0f;
diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h
index 2c37eadcc6..e6c736a263 100644
--- a/indra/llcommon/llpointer.h
+++ b/indra/llcommon/llpointer.h
@@ -95,7 +95,6 @@ public:
bool notNull() const { return (mPointer != NULL); }
operator Type*() const { return mPointer; }
- operator const Type*() const { return mPointer; }
bool operator !=(Type* ptr) const { return (mPointer != ptr); }
bool operator ==(Type* ptr) const { return (mPointer == ptr); }
bool operator ==(const LLPointer<Type>& ptr) const { return (mPointer == ptr.mPointer); }
diff --git a/indra/llcommon/llrefcount.cpp b/indra/llcommon/llrefcount.cpp
index 33b6875fb0..c90b52f482 100644
--- a/indra/llcommon/llrefcount.cpp
+++ b/indra/llcommon/llrefcount.cpp
@@ -35,6 +35,17 @@
#include "llerror.h"
+LLRefCount::LLRefCount(const LLRefCount& other)
+: mRef(0)
+{
+}
+
+LLRefCount& LLRefCount::operator=(const LLRefCount&)
+{
+ // do nothing, since ref count is specific to *this* reference
+ return *this;
+}
+
LLRefCount::LLRefCount() :
mRef(0)
{
diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h
index 9ab844eb22..a18f6706a9 100644
--- a/indra/llcommon/llrefcount.h
+++ b/indra/llcommon/llrefcount.h
@@ -41,22 +41,20 @@
class LL_COMMON_API LLRefCount
{
-private:
- LLRefCount(const LLRefCount& other); // no implementation
-private:
- LLRefCount& operator=(const LLRefCount&); // no implementation
protected:
+ LLRefCount(const LLRefCount& other);
+ LLRefCount& operator=(const LLRefCount&);
virtual ~LLRefCount(); // use unref()
public:
LLRefCount();
- void ref()
+ void ref() const
{
mRef++;
}
- S32 unref()
+ S32 unref() const
{
llassert(mRef >= 1);
if (0 == --mRef)
@@ -67,13 +65,15 @@ public:
return mRef;
}
+ //NOTE: when passing around a const LLRefCount object, this can return different results
+ // at different types, since mRef is mutable
S32 getNumRefs() const
{
return mRef;
}
private:
- S32 mRef;
+ mutable S32 mRef;
};
#endif
diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp
index 7e1c2e35e0..fca173df47 100644
--- a/indra/llcommon/llsdserialize_xml.cpp
+++ b/indra/llcommon/llsdserialize_xml.cpp
@@ -139,12 +139,8 @@ S32 LLSDXMLFormatter::format_impl(const LLSD& data, std::ostream& ostr, U32 opti
case LLSD::TypeBoolean:
ostr << pre << "<boolean>";
if(mBoolAlpha ||
-#if( LL_WINDOWS || __GNUC__ > 2)
(ostr.flags() & std::ios::boolalpha)
-#else
- (ostr.flags() & 0x0100)
-#endif
- )
+ )
{
ostr << (data.asBoolean() ? "true" : "false");
}
@@ -511,12 +507,7 @@ void LLSDXMLParser::Impl::reset()
mSkipping = false;
-#if( LL_WINDOWS || __GNUC__ > 2)
mCurrentKey.clear();
-#else
- mCurrentKey = std::string();
-#endif
-
XML_ParserReset(mParser, "utf-8");
XML_SetUserData(mParser, this);
@@ -644,11 +635,7 @@ void LLSDXMLParser::Impl::startElementHandler(const XML_Char* name, const XML_Ch
LLSD& newElement = map[mCurrentKey];
mStack.push_back(&newElement);
-#if( LL_WINDOWS || __GNUC__ > 2)
mCurrentKey.clear();
-#else
- mCurrentKey = std::string();
-#endif
}
else if (mStack.back()->isArray())
{
diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp
index ef3e8dbc94..25b768079b 100644
--- a/indra/llcommon/lltimer.cpp
+++ b/indra/llcommon/lltimer.cpp
@@ -555,54 +555,3 @@ void secondsToTimecodeString(F32 current_time, std::string& tcstring)
}
-//////////////////////////////////////////////////////////////////////////////
-//
-// LLEventTimer Implementation
-//
-//////////////////////////////////////////////////////////////////////////////
-
-LLEventTimer::LLEventTimer(F32 period)
-: mEventTimer()
-{
- mPeriod = period;
-}
-
-LLEventTimer::LLEventTimer(const LLDate& time)
-: mEventTimer()
-{
- mPeriod = (F32)(time.secondsSinceEpoch() - LLDate::now().secondsSinceEpoch());
-}
-
-
-LLEventTimer::~LLEventTimer()
-{
-}
-
-void LLEventTimer::updateClass()
-{
- std::list<LLEventTimer*> completed_timers;
- for (instance_iter iter = beginInstances(); iter != endInstances(); )
- {
- LLEventTimer& timer = *iter++;
- F32 et = timer.mEventTimer.getElapsedTimeF32();
- if (timer.mEventTimer.getStarted() && et > timer.mPeriod) {
- timer.mEventTimer.reset();
- if ( timer.tick() )
- {
- completed_timers.push_back( &timer );
- }
- }
- }
-
- if ( completed_timers.size() > 0 )
- {
- for (std::list<LLEventTimer*>::iterator completed_iter = completed_timers.begin();
- completed_iter != completed_timers.end();
- completed_iter++ )
- {
- delete *completed_iter;
- }
- }
-}
-
-
diff --git a/indra/llcommon/lltimer.h b/indra/llcommon/lltimer.h
index d009c0f5f7..baba95bfa1 100644
--- a/indra/llcommon/lltimer.h
+++ b/indra/llcommon/lltimer.h
@@ -39,8 +39,6 @@
#include <limits.h>
#include "stdtypes.h"
-#include "lldate.h"
-#include "llinstancetracker.h"
#include <string>
#include <list>
@@ -171,25 +169,6 @@ LL_COMMON_API struct tm* utc_to_pacific_time(time_t utc_time, BOOL pacific_dayli
LL_COMMON_API void microsecondsToTimecodeString(U64 current_time, std::string& tcstring);
LL_COMMON_API void secondsToTimecodeString(F32 current_time, std::string& tcstring);
-// class for scheduling a function to be called at a given frequency (approximate, inprecise)
-class LL_COMMON_API LLEventTimer : protected LLInstanceTracker<LLEventTimer>
-{
-public:
- LLEventTimer(F32 period); // period is the amount of time between each call to tick() in seconds
- LLEventTimer(const LLDate& time);
- virtual ~LLEventTimer();
-
- //function to be called at the supplied frequency
- // Normally return FALSE; TRUE will delete the timer after the function returns.
- virtual BOOL tick() = 0;
-
- static void updateClass();
-
-protected:
- LLTimer mEventTimer;
- F32 mPeriod;
-};
-
U64 LL_COMMON_API totalTime(); // Returns current system time in microseconds
#endif
diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h
index c946566e84..cb1304c54e 100644
--- a/indra/llcommon/lltreeiterators.h
+++ b/indra/llcommon/lltreeiterators.h
@@ -343,20 +343,20 @@ public:
/// Instantiate an LLTreeDFSIter to start a depth-first walk. Pass
/// functors to extract the 'child begin' and 'child end' iterators from
/// each node.
- LLTreeDFSIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc):
- mBeginFunc(beginfunc),
- mEndFunc(endfunc),
- mSkipChildren(false)
+ LLTreeDFSIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc)
+ : mBeginFunc(beginfunc),
+ mEndFunc(endfunc),
+ mSkipChildren(false)
{
// Only push back this node if it's non-NULL!
if (node)
mPending.push_back(node);
}
/// Instantiate an LLTreeDFSIter to mark the end of the walk
- LLTreeDFSIter() {}
+ LLTreeDFSIter() : mSkipChildren(false) {}
- /// flags iterator logic to skip traversing children of current node on next increment
- void skipDescendants(bool skip = true) { mSkipChildren = skip; }
+ /// flags iterator logic to skip traversing children of current node on next increment
+ void skipDescendants(bool skip = true) { mSkipChildren = skip; }
private:
/// leverage boost::iterator_facade
@@ -405,8 +405,8 @@ private:
func_type mBeginFunc;
/// functor to extract end() child iterator
func_type mEndFunc;
- /// flag which controls traversal of children (skip children of current node if true)
- bool mSkipChildren;
+ /// flag which controls traversal of children (skip children of current node if true)
+ bool mSkipChildren;
};
/**
@@ -451,21 +451,21 @@ public:
/// Instantiate an LLTreeDFSPostIter to start a depth-first walk. Pass
/// functors to extract the 'child begin' and 'child end' iterators from
/// each node.
- LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc):
- mBeginFunc(beginfunc),
- mEndFunc(endfunc),
- mSkipAncestors(false)
- {
+ LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc)
+ : mBeginFunc(beginfunc),
+ mEndFunc(endfunc),
+ mSkipAncestors(false)
+ {
if (! node)
return;
mPending.push_back(typename list_type::value_type(node, false));
makeCurrent();
}
/// Instantiate an LLTreeDFSPostIter to mark the end of the walk
- LLTreeDFSPostIter() {}
+ LLTreeDFSPostIter() : mSkipAncestors(false) {}
- /// flags iterator logic to skip traversing ancestors of current node on next increment
- void skipAncestors(bool skip = true) { mSkipAncestors = skip; }
+ /// flags iterator logic to skip traversing ancestors of current node on next increment
+ void skipAncestors(bool skip = true) { mSkipAncestors = skip; }
private:
/// leverage boost::iterator_facade
diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp
index 82c736266d..1b0e03cb2a 100644
--- a/indra/llcommon/llworkerthread.cpp
+++ b/indra/llcommon/llworkerthread.cpp
@@ -188,6 +188,7 @@ LLWorkerClass::LLWorkerClass(LLWorkerThread* workerthread, const std::string& na
: mWorkerThread(workerthread),
mWorkerClassName(name),
mRequestHandle(LLWorkerThread::nullHandle()),
+ mRequestPriority(LLWorkerThread::PRIORITY_NORMAL),
mMutex(NULL),
mWorkFlags(0)
{
diff --git a/indra/llcommon/tests/llinstancetracker_test.cpp b/indra/llcommon/tests/llinstancetracker_test.cpp
index 7415f2d33b..4bb3ec2922 100644
--- a/indra/llcommon/tests/llinstancetracker_test.cpp
+++ b/indra/llcommon/tests/llinstancetracker_test.cpp
@@ -138,23 +138,29 @@ namespace tut
keys.insert(&one);
keys.insert(&two);
keys.insert(&three);
- for (Unkeyed::key_iter ki(Unkeyed::beginKeys()), kend(Unkeyed::endKeys());
- ki != kend; ++ki)
- {
- ensure_equals("spurious key", keys.erase(*ki), 1);
- }
+ {
+ Unkeyed::LLInstanceTrackerScopedGuard guard;
+ for (Unkeyed::key_iter ki(guard.beginKeys()), kend(guard.endKeys());
+ ki != kend; ++ki)
+ {
+ ensure_equals("spurious key", keys.erase(*ki), 1);
+ }
+ }
ensure_equals("unreported key", keys.size(), 0);
KeySet instances;
instances.insert(&one);
instances.insert(&two);
instances.insert(&three);
- for (Unkeyed::instance_iter ii(Unkeyed::beginInstances()), iend(Unkeyed::endInstances());
- ii != iend; ++ii)
- {
- Unkeyed& ref = *ii;
- ensure_equals("spurious instance", instances.erase(&ref), 1);
- }
+ {
+ Unkeyed::LLInstanceTrackerScopedGuard guard;
+ for (Unkeyed::instance_iter ii(guard.beginInstances()), iend(guard.endInstances());
+ ii != iend; ++ii)
+ {
+ Unkeyed& ref = *ii;
+ ensure_equals("spurious instance", instances.erase(&ref), 1);
+ }
+ }
ensure_equals("unreported instance", instances.size(), 0);
}
} // namespace tut
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index e02be6c8c1..5649b4cab7 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -676,9 +676,6 @@ void LLImageRaw::copy(LLImageRaw* src)
LLImageRaw* dst = this; // Just for clarity.
- llassert( (3 == src->getComponents()) || (4 == src->getComponents()) );
- llassert( (3 == dst->getComponents()) || (4 == dst->getComponents()) );
-
if( (src->getWidth() == dst->getWidth()) && (src->getHeight() == dst->getHeight()) )
{
// No scaling needed
diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp
index 86d41515e7..20a72d0a28 100644
--- a/indra/llimage/llimageworker.cpp
+++ b/indra/llimage/llimageworker.cpp
@@ -54,9 +54,14 @@ S32 LLImageDecodeThread::update(U32 max_time_ms)
{
creation_info& info = *iter;
ImageRequest* req = new ImageRequest(info.handle, info.image,
- info.priority, info.discard, info.needs_aux,
- info.responder);
- addRequest(req);
+ info.priority, info.discard, info.needs_aux,
+ info.responder);
+
+ bool res = addRequest(req);
+ if (!res)
+ {
+ llerrs << "request added after LLLFSThread::cleanupClass()" << llendl;
+ }
}
mCreationList.clear();
S32 res = LLQueuedThread::update(max_time_ms);
diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
index e71429b18d..3af31da083 100644
--- a/indra/llimagej2coj/llimagej2coj.cpp
+++ b/indra/llimagej2coj/llimagej2coj.cpp
@@ -97,7 +97,8 @@ void info_callback(const char* msg, void*)
}
-LLImageJ2COJ::LLImageJ2COJ() : LLImageJ2CImpl()
+LLImageJ2COJ::LLImageJ2COJ()
+ : LLImageJ2CImpl()
{
}
diff --git a/indra/llimagej2coj/llimagej2coj.h b/indra/llimagej2coj/llimagej2coj.h
index 73cb074f1f..8255d5225f 100644
--- a/indra/llimagej2coj/llimagej2coj.h
+++ b/indra/llimagej2coj/llimagej2coj.h
@@ -51,9 +51,6 @@ protected:
// Divide a by b to the power of 2 and round upwards.
return (a + (1 << b) - 1) >> b;
}
-
- // Temporary variables for in-progress decodes...
- LLImageRaw *mRawImagep;
};
#endif
diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp
index 21ea4b2e7c..487ed6451f 100644
--- a/indra/llmath/llcamera.cpp
+++ b/indra/llmath/llcamera.cpp
@@ -45,7 +45,8 @@ LLCamera::LLCamera() :
mNearPlane(DEFAULT_NEAR_PLANE),
mFarPlane(DEFAULT_FAR_PLANE),
mFixedDistance(-1.f),
- mPlaneCount(6)
+ mPlaneCount(6),
+ mFrustumCornerDist(0.f)
{
calculateFrustumPlanes();
}
@@ -55,7 +56,8 @@ LLCamera::LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_p
LLCoordFrame(),
mViewHeightInPixels(view_height_in_pixels),
mFixedDistance(-1.f),
- mPlaneCount(6)
+ mPlaneCount(6),
+ mFrustumCornerDist(0.f)
{
mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO);
mNearPlane = llclamp(near_plane, MIN_NEAR_PLANE, MAX_NEAR_PLANE);
@@ -648,7 +650,6 @@ void LLCamera::ignoreAgentFrustumPlane(S32 idx)
void LLCamera::calcAgentFrustumPlanes(LLVector3* frust)
{
-
for (int i = 0; i < 8; i++)
{
mAgentFrustum[i] = frust[i];
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index df4c618ac1..192c6157a8 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -3822,6 +3822,7 @@ BOOL LLVolume::cleanupTriangleData( const S32 num_input_vertices,
// Generate the vertex mapping and the list of vertices without
// duplicates. This will crash if there are no vertices.
+ llassert(num_input_vertices > 0); // check for no vertices!
S32 *vertex_mapping = new S32[num_input_vertices];
LLVector3 *new_vertices = new LLVector3[num_input_vertices];
LLVertexIndexPair *prev_pairp = NULL;
diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp
index 027d35cf89..441e8ddd27 100644
--- a/indra/llmessage/llpacketbuffer.cpp
+++ b/indra/llmessage/llpacketbuffer.cpp
@@ -42,11 +42,14 @@
LLPacketBuffer::LLPacketBuffer(const LLHost &host, const char *datap, const S32 size) : mHost(host)
{
+ mSize = 0;
+ mData[0] = '!';
+
if (size > NET_BUFFER_SIZE)
{
llerrs << "Sending packet > " << NET_BUFFER_SIZE << " of size " << size << llendl;
}
- else // we previously relied on llerrs being fatal to not get here...
+ else
{
if (datap != NULL)
{
diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp
index 0a71ad95f2..d64b666ede 100644
--- a/indra/llmessage/lltransfermanager.cpp
+++ b/indra/llmessage/lltransfermanager.cpp
@@ -1196,6 +1196,7 @@ LLTransferTarget::LLTransferTarget(
mType(type),
mSourceType(source_type),
mID(transfer_id),
+ mChannelp(NULL),
mGotInfo(FALSE),
mSize(0),
mLastPacketID(-1)
diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp
index 7332f5c954..8f36d516d7 100644
--- a/indra/llmessage/lltransfersourceasset.cpp
+++ b/indra/llmessage/lltransfersourceasset.cpp
@@ -226,7 +226,10 @@ void LLTransferSourceAsset::responderCallback(LLVFS *vfs, const LLUUID& uuid, LL
-LLTransferSourceParamsAsset::LLTransferSourceParamsAsset() : LLTransferSourceParams(LLTST_ASSET)
+LLTransferSourceParamsAsset::LLTransferSourceParamsAsset()
+ : LLTransferSourceParams(LLTST_ASSET),
+
+ mAssetType(LLAssetType::AT_NONE)
{
}
diff --git a/indra/llmessage/lltransfertargetfile.h b/indra/llmessage/lltransfertargetfile.h
index 18b9b52062..92fb8f807c 100644
--- a/indra/llmessage/lltransfertargetfile.h
+++ b/indra/llmessage/lltransfertargetfile.h
@@ -40,7 +40,12 @@ typedef void (*LLTTFCompleteCallback)(const LLTSCode status, void *user_data);
class LLTransferTargetParamsFile : public LLTransferTargetParams
{
public:
- LLTransferTargetParamsFile() : LLTransferTargetParams(LLTTT_FILE) {}
+ LLTransferTargetParamsFile()
+ : LLTransferTargetParams(LLTTT_FILE),
+
+ mCompleteCallback(NULL),
+ mUserData(NULL)
+ {}
void setFilename(const std::string& filename) { mFilename = filename; }
void setCallback(LLTTFCompleteCallback cb, void *user_data) { mCompleteCallback = cb; mUserData = user_data; }
diff --git a/indra/llmessage/lltransfertargetvfile.h b/indra/llmessage/lltransfertargetvfile.h
index 8c2bc7e8bb..cd18d8ce3f 100644
--- a/indra/llmessage/lltransfertargetvfile.h
+++ b/indra/llmessage/lltransfertargetvfile.h
@@ -68,7 +68,6 @@ protected:
LLTTVFCompleteCallback mCompleteCallback;
void* mUserDatap;
S32 mErrCode;
- LLVFSThread::handle_t mHandle;
};
diff --git a/indra/llmessage/tests/llareslistener_test.cpp b/indra/llmessage/tests/llareslistener_test.cpp
index ac4886ccf4..6ee74c8e7a 100644
--- a/indra/llmessage/tests/llareslistener_test.cpp
+++ b/indra/llmessage/tests/llareslistener_test.cpp
@@ -4,7 +4,7 @@
* @date 2009-02-26
* @brief Tests of llareslistener.h.
*
- * $LicenseInfo:firstyear=2009&license=internal$
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
* Copyright (c) 2009, Linden Research, Inc.
* $/LicenseInfo$
*/
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 3d2eaed5c5..6a2449cf4b 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -104,6 +104,8 @@ void LLPluginClassMedia::reset()
mSetMediaHeight = -1;
mRequestedMediaWidth = 0;
mRequestedMediaHeight = 0;
+ mRequestedTextureWidth = 0;
+ mRequestedTextureHeight = 0;
mFullMediaWidth = 0;
mFullMediaHeight = 0;
mTextureWidth = 0;
@@ -469,7 +471,7 @@ void LLPluginClassMedia::mouseEvent(EMouseEventType type, int button, int x, int
sendMessage(message);
}
-bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifiers)
+bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifiers, LLSD native_key_data)
{
bool result = true;
@@ -526,6 +528,7 @@ bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifie
message.setValueS32("key", key_code);
message.setValue("modifiers", translateModifiers(modifiers));
+ message.setValueLLSD("native_key_data", native_key_data);
sendMessage(message);
}
@@ -544,12 +547,13 @@ void LLPluginClassMedia::scrollEvent(int x, int y, MASK modifiers)
sendMessage(message);
}
-bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers)
+bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers, LLSD native_key_data)
{
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "text_event");
message.setValue("text", text);
message.setValue("modifiers", translateModifiers(modifiers));
+ message.setValueLLSD("native_key_data", native_key_data);
sendMessage(message);
@@ -680,13 +684,13 @@ LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type)
// so that we don't expose the llqtwebkit header in viewer code
switch (target_type)
{
- case LinkTargetType::LTT_TARGET_NONE:
+ case LLQtWebKit::LTT_TARGET_NONE:
return LLPluginClassMedia::TARGET_NONE;
- case LinkTargetType::LTT_TARGET_BLANK:
+ case LLQtWebKit::LTT_TARGET_BLANK:
return LLPluginClassMedia::TARGET_BLANK;
- case LinkTargetType::LTT_TARGET_EXTERNAL:
+ case LLQtWebKit::LTT_TARGET_EXTERNAL:
return LLPluginClassMedia::TARGET_EXTERNAL;
default:
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index ebb9099576..58e91fa0b4 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -114,12 +114,12 @@ public:
KEY_EVENT_REPEAT
}EKeyEventType;
- bool keyEvent(EKeyEventType type, int key_code, MASK modifiers);
+ bool keyEvent(EKeyEventType type, int key_code, MASK modifiers, LLSD native_key_data);
void scrollEvent(int x, int y, MASK modifiers);
// Text may be unicode (utf8 encoded)
- bool textInput(const std::string &text, MASK modifiers);
+ bool textInput(const std::string &text, MASK modifiers, LLSD native_key_data);
void loadURI(const std::string &uri);
diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp
index cc193fca42..1d7ddc5592 100644
--- a/indra/llplugin/llpluginmessagepipe.cpp
+++ b/indra/llplugin/llpluginmessagepipe.cpp
@@ -304,7 +304,14 @@ void LLPluginMessagePipe::processInput(void)
while((delim = mInput.find(MESSAGE_DELIMITER, start)) != std::string::npos)
{
// Let the owner process this message
- mOwner->receiveMessageRaw(mInput.substr(start, delim - start));
+ if (mOwner)
+ {
+ mOwner->receiveMessageRaw(mInput.substr(start, delim - start));
+ }
+ else
+ {
+ LL_WARNS("Plugin") << "!mOwner" << LL_ENDL;
+ }
start = delim + 1;
}
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index 11c924cadf..52b5a319ec 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -43,6 +43,7 @@ static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f; // Each call to idle will
LLPluginProcessChild::LLPluginProcessChild()
{
+ mState = STATE_UNINITIALIZED;
mInstance = NULL;
mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
mSleepTime = PLUGIN_IDLE_SECONDS; // default: send idle messages at 100Hz
@@ -277,14 +278,21 @@ bool LLPluginProcessChild::isDone(void)
void LLPluginProcessChild::sendMessageToPlugin(const LLPluginMessage &message)
{
- std::string buffer = message.generate();
-
- LL_DEBUGS("Plugin") << "Sending to plugin: " << buffer << LL_ENDL;
- LLTimer elapsed;
-
- mInstance->sendMessage(buffer);
-
- mCPUElapsed += elapsed.getElapsedTimeF64();
+ if (mInstance)
+ {
+ std::string buffer = message.generate();
+
+ LL_DEBUGS("Plugin") << "Sending to plugin: " << buffer << LL_ENDL;
+ LLTimer elapsed;
+
+ mInstance->sendMessage(buffer);
+
+ mCPUElapsed += elapsed.getElapsedTimeF64();
+ }
+ else
+ {
+ LL_WARNS("Plugin") << "mInstance == NULL" << LL_ENDL;
+ }
}
void LLPluginProcessChild::sendMessageToParent(const LLPluginMessage &message)
diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h
index 1cfd9dcaf9..58f8935ed1 100644
--- a/indra/llplugin/llpluginprocesschild.h
+++ b/indra/llplugin/llpluginprocesschild.h
@@ -89,8 +89,9 @@ private:
STATE_ERROR, // generic bailout state
STATE_DONE // state machine will sit in this state after either error or normal termination.
};
- EState mState;
void setState(EState state);
+
+ EState mState;
LLHost mLauncherHost;
LLSocket::ptr_t mSocket;
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index 49f9783824..efd5df687e 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -50,6 +50,8 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner)
mOwner = owner;
mBoundPort = 0;
mState = STATE_UNINITIALIZED;
+ mSleepTime = 0.0;
+ mCPUUsage = 0.0;
mDisableTimeout = false;
mDebug = false;
diff --git a/indra/llprimitive/tests/llmediaentry_test.cpp b/indra/llprimitive/tests/llmediaentry_test.cpp
index 277e370ca4..88cd96ebe4 100644
--- a/indra/llprimitive/tests/llmediaentry_test.cpp
+++ b/indra/llprimitive/tests/llmediaentry_test.cpp
@@ -157,14 +157,9 @@ namespace
namespace tut
{
- bool llsd_equals(const LLSD& a, const LLSD& b) {
- // cheesy, brute force, but it works
- return std::string(ll_pretty_print_sd(a)) == std::string(ll_pretty_print_sd(b));
- }
-
void ensure_llsd_equals(const std::string& msg, const LLSD& expected, const LLSD& actual)
{
- if (!tut::llsd_equals(expected, actual))
+ if (!llsd_equals(expected, actual))
{
std::string message = msg;
message += ": actual: ";
diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp
index 08a96b4e31..036714e5cb 100644
--- a/indra/llrender/llcubemap.cpp
+++ b/indra/llrender/llcubemap.cpp
@@ -63,6 +63,12 @@ LLCubeMap::LLCubeMap()
mTextureCoordStage(0),
mMatrixStage(0)
{
+ mTargets[0] = GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB;
+ mTargets[1] = GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB;
+ mTargets[2] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB;
+ mTargets[3] = GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB;
+ mTargets[4] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB;
+ mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB;
}
LLCubeMap::~LLCubeMap()
@@ -75,13 +81,6 @@ void LLCubeMap::initGL()
if (gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps)
{
- mTargets[0] = GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB;
- mTargets[1] = GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB;
- mTargets[2] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB;
- mTargets[3] = GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB;
- mTargets[4] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB;
- mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB;
-
// Not initialized, do stuff.
if (mImages[0].isNull())
{
diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index 59e7d890f4..a86bbbffff 100644
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -270,6 +270,14 @@ F32 LLFontFreetype::getXAdvance(llwchar wch) const
return (F32)mFontBitmapCachep->getMaxCharWidth();
}
+F32 LLFontFreetype::getXAdvance(const LLFontGlyphInfo* glyph) const
+{
+ if (mFTFace == NULL)
+ return 0.0;
+
+ return glyph->mXAdvance;
+}
+
F32 LLFontFreetype::getXKerning(llwchar char_left, llwchar char_right) const
{
if (mFTFace == NULL)
@@ -289,6 +297,21 @@ F32 LLFontFreetype::getXKerning(llwchar char_left, llwchar char_right) const
return delta.x*(1.f/64.f);
}
+F32 LLFontFreetype::getXKerning(const LLFontGlyphInfo* left_glyph_info, const LLFontGlyphInfo* right_glyph_info) const
+{
+ if (mFTFace == NULL)
+ return 0.0;
+
+ U32 left_glyph = left_glyph_info ? left_glyph_info->mGlyphIndex : 0;
+ U32 right_glyph = right_glyph_info ? right_glyph_info->mGlyphIndex : 0;
+
+ FT_Vector delta;
+
+ llverify(!FT_Get_Kerning(mFTFace, left_glyph, right_glyph, ft_kerning_unfitted, &delta));
+
+ return delta.x*(1.f/64.f);
+}
+
BOOL LLFontFreetype::hasGlyph(llwchar wch) const
{
llassert(!mIsFallback);
@@ -504,8 +527,13 @@ void LLFontFreetype::resetBitmapCache()
mCharGlyphInfoMap.clear();
mFontBitmapCachep->reset();
- // Add the empty glyph
- addGlyphFromFont(this, 0, 0);
+ // Adding default glyph is skipped for fallback fonts here as well as in loadFace().
+ // This if was added as fix for EXT-4971.
+ if(!mIsFallback)
+ {
+ // Add the empty glyph
+ addGlyphFromFont(this, 0, 0);
+ }
}
void LLFontFreetype::destroyGL()
diff --git a/indra/llrender/llfontfreetype.h b/indra/llrender/llfontfreetype.h
index 7a5d029038..f60d09316d 100644
--- a/indra/llrender/llfontfreetype.h
+++ b/indra/llrender/llfontfreetype.h
@@ -128,7 +128,9 @@ public:
};
F32 getXAdvance(llwchar wc) const;
+ F32 getXAdvance(const LLFontGlyphInfo* glyph) const;
F32 getXKerning(llwchar char_left, llwchar char_right) const; // Get the kerning between the two characters
+ F32 getXKerning(const LLFontGlyphInfo* left_glyph_info, const LLFontGlyphInfo* right_glyph_info) const; // Get the kerning between the two characters
LLFontGlyphInfo* getGlyphInfo(llwchar wch) const;
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 129f3e7999..768f042e69 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -248,11 +248,18 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
}
+ const LLFontGlyphInfo* next_glyph = NULL;
+
for (i = begin_offset; i < begin_offset + length; i++)
{
llwchar wch = wstr[i];
- const LLFontGlyphInfo* fgi= mFontFreetype->getGlyphInfo(wch);
+ const LLFontGlyphInfo* fgi = next_glyph;
+ next_glyph = NULL;
+ if(!fgi)
+ {
+ fgi = mFontFreetype->getGlyphInfo(wch);
+ }
if (!fgi)
{
llerrs << "Missing Glyph Info" << llendl;
@@ -290,7 +297,8 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
if (next_char && (next_char < LAST_CHARACTER))
{
// Kern this puppy.
- cur_x += mFontFreetype->getXKerning(wch, next_char);
+ next_glyph = mFontFreetype->getGlyphInfo(next_char);
+ cur_x += mFontFreetype->getXKerning(fgi, next_glyph);
}
// Round after kerning.
@@ -427,14 +435,21 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars
F32 cur_x = 0;
const S32 max_index = begin_offset + max_chars;
+ const LLFontGlyphInfo* next_glyph = NULL;
+
F32 width_padding = 0.f;
for (S32 i = begin_offset; i < max_index && wchars[i] != 0; i++)
{
llwchar wch = wchars[i];
- const LLFontGlyphInfo* fgi= mFontFreetype->getGlyphInfo(wch);
+ const LLFontGlyphInfo* fgi = next_glyph;
+ next_glyph = NULL;
+ if(!fgi)
+ {
+ fgi = mFontFreetype->getGlyphInfo(wch);
+ }
- F32 advance = mFontFreetype->getXAdvance(wch);
+ F32 advance = mFontFreetype->getXAdvance(fgi);
// for the last character we want to measure the greater of its width and xadvance values
// so keep track of the difference between these values for the each character we measure
@@ -451,7 +466,8 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars
&& (next_char < LAST_CHARACTER))
{
// Kern this puppy.
- cur_x += mFontFreetype->getXKerning(wch, next_char);
+ next_glyph = mFontFreetype->getGlyphInfo(next_char);
+ cur_x += mFontFreetype->getXKerning(fgi, next_glyph);
}
// Round after kerning.
cur_x = (F32)llround(cur_x);
@@ -484,6 +500,8 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch
// avoid S32 overflow when max_pixels == S32_MAX by staying in floating point
F32 scaled_max_pixels = ceil(max_pixels * sScaleX);
F32 width_padding = 0.f;
+
+ LLFontGlyphInfo* next_glyph = NULL;
S32 i;
for (i=0; (i < max_chars); i++)
@@ -526,8 +544,13 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch
in_word = TRUE;
}
}
-
- LLFontGlyphInfo* fgi = mFontFreetype->getGlyphInfo(wch);
+
+ LLFontGlyphInfo* fgi = next_glyph;
+ next_glyph = NULL;
+ if(!fgi)
+ {
+ fgi = mFontFreetype->getGlyphInfo(wch);
+ }
// account for glyphs that run beyond the starting point for the next glyphs
width_padding = llmax( 0.f, // always use positive padding amount
@@ -546,7 +569,8 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch
if (((i+1) < max_chars) && wchars[i+1])
{
// Kern this puppy.
- cur_x += mFontFreetype->getXKerning(wch, wchars[i+1]);
+ next_glyph = mFontFreetype->getGlyphInfo(wchars[i+1]);
+ cur_x += mFontFreetype->getXKerning(fgi, next_glyph);
}
// Round after kerning.
@@ -593,14 +617,20 @@ S32 LLFontGL::firstDrawableChar(const llwchar* wchars, F32 max_pixels, S32 text_
{
llwchar wch = wchars[i];
- F32 char_width = mFontFreetype->getXAdvance(wch);
+ const LLFontGlyphInfo* fgi= mFontFreetype->getGlyphInfo(wch);
- if( scaled_max_pixels < (total_width + char_width) )
+ // last character uses character width, since the whole character needs to be visible
+ // other characters just use advance
+ F32 width = (i == start)
+ ? (F32)(fgi->mWidth + fgi->mXBearing) // use actual width for last character
+ : fgi->mXAdvance; // use advance for all other characters
+
+ if( scaled_max_pixels < (total_width + width) )
{
break;
}
- total_width += char_width;
+ total_width += width;
drawable_chars++;
if( max_chars >= 0 && drawable_chars >= max_chars )
@@ -618,7 +648,17 @@ S32 LLFontGL::firstDrawableChar(const llwchar* wchars, F32 max_pixels, S32 text_
total_width = llround(total_width);
}
- return start_pos - drawable_chars;
+ if (drawable_chars == 0)
+ {
+ return start_pos; // just draw last character
+ }
+ else
+ {
+ // if only 1 character is drawable, we want to return start_pos as the first character to draw
+ // if 2 are drawable, return start_pos and character before start_pos, etc.
+ return start_pos + 1 - drawable_chars;
+ }
+
}
S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 target_x, F32 max_pixels, S32 max_chars, BOOL round) const
@@ -636,6 +676,8 @@ S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 t
const S32 max_index = begin_offset + llmin(S32_MAX - begin_offset, max_chars);
F32 scaled_max_pixels = max_pixels * sScaleX;
+
+ const LLFontGlyphInfo* next_glyph = NULL;
S32 pos;
for (pos = begin_offset; pos < max_index; pos++)
@@ -645,7 +687,15 @@ S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 t
{
break; // done
}
- F32 char_width = mFontFreetype->getXAdvance(wch);
+
+ const LLFontGlyphInfo* glyph = next_glyph;
+ next_glyph = NULL;
+ if(!glyph)
+ {
+ glyph = mFontFreetype->getGlyphInfo(wch);
+ }
+
+ F32 char_width = mFontFreetype->getXAdvance(glyph);
if (round)
{
@@ -671,11 +721,12 @@ S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 t
if (((pos + 1) < max_index)
&& (wchars[(pos + 1)]))
{
- llwchar next_char = wchars[pos + 1];
// Kern this puppy.
- cur_x += mFontFreetype->getXKerning(wch, next_char);
+ next_glyph = mFontFreetype->getGlyphInfo(wchars[pos + 1]);
+ cur_x += mFontFreetype->getXKerning(glyph, next_glyph);
}
+
// Round after kerning.
cur_x = llround(cur_x);
}
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 187a9a984e..a3f7a946ec 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -332,6 +332,8 @@ LLGLManager::LLGLManager() :
mHasFragmentShader(FALSE),
mHasOcclusionQuery(FALSE),
mHasPointParameters(FALSE),
+ mHasDrawBuffers(FALSE),
+ mHasTextureRectangle(FALSE),
mHasAnisotropic(FALSE),
mHasARBEnvCombine(FALSE),
@@ -671,7 +673,7 @@ void LLGLManager::initExtensions()
llinfos << "initExtensions() checking shell variables to adjust features..." << llendl;
// Our extension support for the Linux Client is very young with some
// potential driver gotchas, so offer a semi-secret way to turn it off.
- if (getenv("LL_GL_NOEXT")) /* Flawfinder: ignore */
+ if (getenv("LL_GL_NOEXT"))
{
//mHasMultitexture = FALSE; // NEEDED!
mHasARBEnvCombine = FALSE;
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 830617063b..ca92cb6580 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -70,7 +70,7 @@ hasGamma(false), hasLighting(false), calculatesAtmospherics(false)
// LLGLSL Shader implementation
//===============================
LLGLSLShader::LLGLSLShader()
-: mProgramObject(0), mShaderLevel(0), mShaderGroup(SG_DEFAULT)
+ : mProgramObject(0), mActiveTextureChannels(0), mShaderLevel(0), mShaderGroup(SG_DEFAULT), mUniformsDirty(FALSE)
{
}
diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp
index 7f4be6a866..bc7f30cdef 100644
--- a/indra/llrender/llpostprocess.cpp
+++ b/indra/llrender/llpostprocess.cpp
@@ -59,6 +59,8 @@ LLPostProcess::LLPostProcess(void) :
mSceneRenderTexture = NULL ;
mNoiseTexture = NULL ;
mTempBloomTexture = NULL ;
+
+ noiseTextureScale = 1.0f;
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index cde60b7e25..d2dc1104a8 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -737,8 +737,11 @@ void LLTexUnit::debugTextureUnit(void)
LLRender::LLRender()
-: mDirty(false), mCount(0), mMode(LLRender::TRIANGLES),
- mMaxAnisotropy(0.f)
+ : mDirty(false),
+ mCount(0),
+ mMode(LLRender::TRIANGLES),
+ mCurrTextureUnitIndex(0),
+ mMaxAnisotropy(0.f)
{
mBuffer = new LLVertexBuffer(immediate_mask, 0);
mBuffer->allocateBuffer(4096, 0, TRUE);
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index ecfe845b34..bf5eda21eb 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -215,14 +215,18 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indices_offset) const
{
+ llassert(mRequestedNumVerts >= 0);
+
if (start >= (U32) mRequestedNumVerts ||
- end >= (U32) mRequestedNumVerts)
+ end >= (U32) mRequestedNumVerts)
{
llerrs << "Bad vertex buffer draw range: [" << start << ", " << end << "]" << llendl;
}
+ llassert(mRequestedNumIndices >= 0);
+
if (indices_offset >= (U32) mRequestedNumIndices ||
- indices_offset + count > (U32) mRequestedNumIndices)
+ indices_offset + count > (U32) mRequestedNumIndices)
{
llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl;
}
@@ -251,8 +255,9 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
{
+ llassert(mRequestedNumIndices >= 0);
if (indices_offset >= (U32) mRequestedNumIndices ||
- indices_offset + count > (U32) mRequestedNumIndices)
+ indices_offset + count > (U32) mRequestedNumIndices)
{
llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl;
}
@@ -281,8 +286,9 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
{
+ llassert(mRequestedNumVerts >= 0);
if (first >= (U32) mRequestedNumVerts ||
- first + count > (U32) mRequestedNumVerts)
+ first + count > (U32) mRequestedNumVerts)
{
llerrs << "Bad vertex buffer draw range: [" << first << ", " << first+count << "]" << llendl;
}
@@ -354,7 +360,14 @@ void LLVertexBuffer::clientCopy(F64 max_time)
LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
LLRefCount(),
- mNumVerts(0), mNumIndices(0), mUsage(usage), mGLBuffer(0), mGLIndices(0),
+
+ mNumVerts(0),
+ mNumIndices(0),
+ mRequestedNumVerts(-1),
+ mRequestedNumIndices(-1),
+ mUsage(usage),
+ mGLBuffer(0),
+ mGLIndices(0),
mMappedData(NULL),
mMappedIndexData(NULL), mLocked(FALSE),
mFinal(FALSE),
@@ -600,6 +613,8 @@ void LLVertexBuffer::updateNumVerts(S32 nverts)
{
LLMemType mt2(LLMemType::MTYPE_VERTEX_UPDATE_VERTS);
+ llassert(nverts >= 0);
+
if (nverts >= 65535)
{
llwarns << "Vertex buffer overflow!" << llendl;
@@ -628,6 +643,9 @@ void LLVertexBuffer::updateNumVerts(S32 nverts)
void LLVertexBuffer::updateNumIndices(S32 nindices)
{
LLMemType mt2(LLMemType::MTYPE_VERTEX_UPDATE_INDICES);
+
+ llassert(nindices >= 0);
+
mRequestedNumIndices = nindices;
if (!mDynamicSize)
{
@@ -668,6 +686,9 @@ void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create)
void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
{
+ llassert(newnverts >= 0);
+ llassert(newnindices >= 0);
+
mRequestedNumVerts = newnverts;
mRequestedNumIndices = newnindices;
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index ce068618e2..853f6f173d 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -90,6 +90,7 @@ set(llui_SOURCE_FILES
lltextbox.cpp
lltexteditor.cpp
lltextparser.cpp
+ lltextvalidate.cpp
lltransutil.cpp
lltoggleablemenu.cpp
lltooltip.cpp
@@ -182,6 +183,7 @@ set(llui_HEADER_FILES
lltextbox.h
lltexteditor.h
lltextparser.h
+ lltextvalidate.h
lltoggleablemenu.h
lltooltip.h
lltransutil.h
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index d0c73fbfbc..aa69dfe0cc 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -103,6 +103,13 @@ void LLAccordionCtrl::draw()
LLLocalClipRect clip(local_rect);
LLPanel::draw();
+ /*
+ S32 width = getRect().getWidth();
+ S32 height = getRect().getHeight();
+
+ gl_rect_2d(0, 0 , width - 1 ,height - 1,LLColor4::green,true);
+ gl_line_2d(0, 0 , width - 1 ,height - 1,LLColor4::black);
+ */
}
@@ -338,36 +345,55 @@ void LLAccordionCtrl::addCollapsibleCtrl(LLView* view)
}
-
-void LLAccordionCtrl::arrange()
+void LLAccordionCtrl::arrangeSinge()
{
- if( mAccordionTabs.size() == 0)
- {
- //We do not arrange if we do not have what should be arranged
- return;
- }
-
- //Calculate params
S32 panel_left = BORDER_MARGIN; // Margin from left side of Splitter
S32 panel_top = getRect().getHeight() - BORDER_MARGIN; // Top coordinate of the first panel
S32 panel_width = getRect().getWidth() - 4; // Top coordinate of the first panel
+ S32 panel_height;
-
- if(mAccordionTabs.size() == 1)
+ S32 collapsed_height = 0;
+
+ for(size_t i=0;i<mAccordionTabs.size();++i)
{
- LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[0]);
-
- LLRect panel_rect = accordion_tab->getRect();
+ LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]);
- S32 panel_height = getRect().getHeight() - 2*BORDER_MARGIN;
+ if(accordion_tab->getVisible() == false) //skip hidden accordion tabs
+ continue;
+ if(!accordion_tab->isExpanded() )
+ {
+ collapsed_height+=mAccordionTabs[i]->getRect().getHeight();
+ }
+ }
- ctrlSetLeftTopAndSize(accordion_tab,panel_rect.mLeft,panel_top,panel_width,panel_height);
+ S32 expanded_height = getRect().getHeight() - BORDER_MARGIN - collapsed_height;
+
+ for(size_t i=0;i<mAccordionTabs.size();++i)
+ {
+ LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]);
- show_hide_scrollbar(getRect().getWidth(),getRect().getHeight());
- return;
-
+ if(accordion_tab->getVisible() == false) //skip hidden accordion tabs
+ continue;
+ if(!accordion_tab->isExpanded() )
+ {
+ panel_height = accordion_tab->getRect().getHeight();
+ }
+ else
+ {
+ panel_height = expanded_height;
+ }
+ ctrlSetLeftTopAndSize(mAccordionTabs[i], panel_left, panel_top, panel_width, panel_height);
+ panel_top-=mAccordionTabs[i]->getRect().getHeight();
}
+}
+
+void LLAccordionCtrl::arrangeMultiple()
+{
+ S32 panel_left = BORDER_MARGIN; // Margin from left side of Splitter
+ S32 panel_top = getRect().getHeight() - BORDER_MARGIN; // Top coordinate of the first panel
+ S32 panel_width = getRect().getWidth() - 4; // Top coordinate of the first panel
+ //Calculate params
for(size_t i = 0; i < mAccordionTabs.size(); i++ )
{
LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]);
@@ -415,7 +441,40 @@ void LLAccordionCtrl::arrange()
show_hide_scrollbar(getRect().getWidth(),getRect().getHeight());
updateLayout(getRect().getWidth(),getRect().getHeight());
+}
+
+
+void LLAccordionCtrl::arrange()
+{
+ if( mAccordionTabs.size() == 0)
+ {
+ //We do not arrange if we do not have what should be arranged
+ return;
+ }
+
+ if(mAccordionTabs.size() == 1)
+ {
+ S32 panel_top = getRect().getHeight() - BORDER_MARGIN; // Top coordinate of the first panel
+ S32 panel_width = getRect().getWidth() - 4; // Top coordinate of the first panel
+
+ LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[0]);
+
+ LLRect panel_rect = accordion_tab->getRect();
+
+ S32 panel_height = getRect().getHeight() - 2*BORDER_MARGIN;
+
+ ctrlSetLeftTopAndSize(accordion_tab,panel_rect.mLeft,panel_top,panel_width,panel_height);
+
+ show_hide_scrollbar(getRect().getWidth(),getRect().getHeight());
+ return;
+
+ }
+
+ if(mSingleExpansion)
+ arrangeSinge ();
+ else
+ arrangeMultiple ();
}
//---------------------------------------------------------------------------------
diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h
index d57a42df32..7c29e545b7 100644
--- a/indra/llui/llaccordionctrl.h
+++ b/indra/llui/llaccordionctrl.h
@@ -105,6 +105,9 @@ public:
void reset ();
private:
+ void arrangeSinge();
+ void arrangeMultiple();
+
// Calc Splitter's height that is necessary to display all child content
S32 calcRecuiredHeight();
S32 getRecuiredHeight() const { return mInnerRect.getHeight(); }
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 4944ed4fe7..1d4dc35cee 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -81,10 +81,9 @@ LLButton::Params::Params()
image_pressed_selected("image_pressed_selected"),
image_overlay("image_overlay"),
image_overlay_alignment("image_overlay_alignment", std::string("center")),
- image_left_pad("image_left_pad"),
- image_right_pad("image_right_pad"),
image_top_pad("image_top_pad"),
image_bottom_pad("image_bottom_pad"),
+ imgoverlay_label_space("imgoverlay_label_space", 1),
label_color("label_color"),
label_color_selected("label_color_selected"), // requires is_toggle true
label_color_disabled("label_color_disabled"),
@@ -144,10 +143,9 @@ LLButton::LLButton(const LLButton::Params& p)
mImageOverlay(p.image_overlay()),
mImageOverlayColor(p.image_overlay_color()),
mImageOverlayAlignment(LLFontGL::hAlignFromName(p.image_overlay_alignment)),
- mImageOverlayLeftPad(p.image_left_pad),
- mImageOverlayRightPad(p.image_right_pad),
mImageOverlayTopPad(p.image_top_pad),
mImageOverlayBottomPad(p.image_bottom_pad),
+ mImgOverlayLabelSpace(p.imgoverlay_label_space),
mIsToggle(p.is_toggle),
mScaleImage(p.scale_image),
mDropShadowedText(p.label_shadow),
@@ -771,12 +769,7 @@ void LLButton::draw()
center_x++;
}
- S32 text_width_delta = overlay_width + 1;
- // if image paddings set, they should participate in scaling process
- S32 image_size_delta = mImageOverlayTopPad + mImageOverlayBottomPad;
- overlay_width = overlay_width - image_size_delta;
- overlay_height = overlay_height - image_size_delta;
-
+ center_y += (mImageOverlayBottomPad - mImageOverlayTopPad);
// fade out overlay images on disabled buttons
LLColor4 overlay_color = mImageOverlayColor.get();
if (!enabled)
@@ -788,10 +781,9 @@ void LLButton::draw()
switch(mImageOverlayAlignment)
{
case LLFontGL::LEFT:
- text_left += overlay_width + mImageOverlayRightPad + 1;
- text_width -= text_width_delta;
+ text_left += overlay_width + mImgOverlayLabelSpace;
mImageOverlay->draw(
- mLeftHPad,
+ mLeftHPad,
center_y - (overlay_height / 2),
overlay_width,
overlay_height,
@@ -806,10 +798,9 @@ void LLButton::draw()
overlay_color);
break;
case LLFontGL::RIGHT:
- text_right -= overlay_width + mImageOverlayLeftPad+ 1;
- text_width -= text_width_delta;
+ text_right -= overlay_width + mImgOverlayLabelSpace;
mImageOverlay->draw(
- getRect().getWidth() - mRightHPad - overlay_width,
+ getRect().getWidth() - mRightHPad - overlay_width,
center_y - (overlay_height / 2),
overlay_width,
overlay_height,
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 8e5f19602f..6a0d8ef3d6 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -107,11 +107,14 @@ public:
Optional<S32> pad_bottom; // under text label
//image overlay paddings
- Optional<S32> image_left_pad;
- Optional<S32> image_right_pad;
Optional<S32> image_top_pad;
Optional<S32> image_bottom_pad;
+ /**
+ * Space between image_overlay and label
+ */
+ Optional<S32> imgoverlay_label_space;
+
// callbacks
Optional<CommitCallbackParam> click_callback, // alias -> commit_callback
mouse_down_callback,
@@ -192,10 +195,6 @@ public:
void setLeftHPad( S32 pad ) { mLeftHPad = pad; }
void setRightHPad( S32 pad ) { mRightHPad = pad; }
- void setImageOverlayLeftPad( S32 pad ) { mImageOverlayLeftPad = pad; }
- S32 getImageOverlayLeftPad() const { return mImageOverlayLeftPad; }
- void setImageOverlayRightPad( S32 pad ) { mImageOverlayRightPad = pad; }
- S32 getImageOverlayRightPad() const { return mImageOverlayRightPad; }
void setImageOverlayTopPad( S32 pad ) { mImageOverlayTopPad = pad; }
S32 getImageOverlayTopPad() const { return mImageOverlayTopPad; }
void setImageOverlayBottomPad( S32 pad ) { mImageOverlayBottomPad = pad; }
@@ -258,6 +257,8 @@ public:
void setForcePressedState(bool b) { mForcePressedState = b; }
+ void setAutoResize(bool auto_resize) { mAutoResize = auto_resize; }
+
protected:
LLPointer<LLUIImage> getImageUnselected() const { return mImageUnselected; }
LLPointer<LLUIImage> getImageSelected() const { return mImageSelected; }
@@ -328,11 +329,14 @@ private:
S32 mRightHPad;
S32 mBottomVPad; // under text label
- S32 mImageOverlayLeftPad;
- S32 mImageOverlayRightPad;
S32 mImageOverlayTopPad;
S32 mImageOverlayBottomPad;
+ /*
+ * Space between image_overlay and label
+ */
+ S32 mImgOverlayLabelSpace;
+
F32 mHoverGlowStrength;
F32 mCurGlowStrength;
diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index 0237c80efa..badbddc3cc 100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
@@ -244,23 +244,6 @@ void LLConsole::draw()
}
}
-void LLConsole::addLine(const std::string& utf8line)
-{
- LLWString wline = utf8str_to_wstring(utf8line);
- addLine(wline, 0.f, LLColor4(1.f, 1.f, 1.f, 1.f));
-}
-
-void LLConsole::addLine(const LLWString& wline)
-{
- addLine(wline, 0.f, LLColor4(1.f, 1.f, 1.f, 1.f));
-}
-
-void LLConsole::addLine(const std::string& utf8line, F32 size, const LLColor4 &color)
-{
- LLWString wline = utf8str_to_wstring(utf8line);
- addLine(wline, size, color);
-}
-
//Generate highlight color segments for this paragraph. Pass in default color of paragraph.
void LLConsole::Paragraph::makeParagraphColorSegments (const LLColor4 &color)
{
@@ -317,7 +300,8 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b
S32 paragraph_offset = 0; //Offset into the paragraph text.
// Wrap lines that are longer than the view is wide.
- while( paragraph_offset < (S32)mParagraphText.length() )
+ while( paragraph_offset < (S32)mParagraphText.length() &&
+ mParagraphText[paragraph_offset] != 0)
{
S32 skip_chars; // skip '\n'
// Figure out if a word-wrapped line fits here.
@@ -383,21 +367,45 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b
//Pass in the string and the default color for this block of text.
LLConsole::Paragraph::Paragraph (LLWString str, const LLColor4 &color, F32 add_time, const LLFontGL* font, F32 screen_width)
- : mParagraphText(str), mAddTime(add_time), mMaxWidth(-1)
+: mParagraphText(str), mAddTime(add_time), mMaxWidth(-1)
{
makeParagraphColorSegments(color);
updateLines( screen_width, font );
}
-void LLConsole::addLine(const LLWString& wline, F32 size, const LLColor4 &color)
+// called once per frame regardless of console visibility
+// static
+void LLConsole::updateClass()
{
- Paragraph paragraph(wline, color, mTimer.getElapsedTimeF32(), mFont, (F32)getRect().getWidth() );
-
- mParagraphs.push_back ( paragraph );
+ LLInstanceTrackerScopedGuard guard;
+
+ for (instance_iter it = guard.beginInstances(); it != guard.endInstances(); ++it)
+ {
+ it->update();
+ }
+}
+
+void LLConsole::update()
+{
+ {
+ LLMutexLock lock(&mMutex);
+
+ while (!mLines.empty())
+ {
+ mParagraphs.push_back(
+ Paragraph( mLines.front(),
+ LLColor4::white,
+ mTimer.getElapsedTimeF32(),
+ mFont,
+ (F32)getRect().getWidth()));
+ mLines.pop_front();
+ }
+ }
// remove old paragraphs which can't possibly be visible any more. ::draw() will do something similar but more conservative - we do this here because ::draw() isn't guaranteed to ever be called! (i.e. the console isn't visible)
- while ((S32)mParagraphs.size() > llmax((S32)0, (S32)(mMaxLines)))
- {
- mParagraphs.pop_front();
- }
+ while ((S32)mParagraphs.size() > llmax((S32)0, (S32)(mMaxLines)))
+ {
+ mParagraphs.pop_front();
+ }
}
+
diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h
index 4719950f28..f38e2bc9c2 100644
--- a/indra/llui/llconsole.h
+++ b/indra/llui/llconsole.h
@@ -40,7 +40,7 @@
class LLSD;
-class LLConsole : public LLFixedBuffer, public LLUICtrl
+class LLConsole : public LLFixedBuffer, public LLUICtrl, public LLInstanceTracker<LLConsole>
{
public:
typedef enum e_font_size
@@ -68,6 +68,9 @@ protected:
friend class LLUICtrlFactory;
public:
+ // call once per frame to pull data out of LLFixedBuffer
+ static void updateClass();
+
//A paragraph color segment defines the color of text in a line
//of text that was received for console display. It has no
//notion of line wraps, screen position, or the text it contains.
@@ -139,14 +142,12 @@ public:
// -1 = monospace, 0 means small, font size = 1 means big
void setFontSize(S32 size_index);
- void addLine(const std::string& utf8line, F32 size, const LLColor4 &color);
- void addLine(const LLWString& wline, F32 size, const LLColor4 &color);
// Overrides
/*virtual*/ void draw();
- /*virtual*/ void addLine(const std::string& utf8line);
- /*virtual*/ void addLine(const LLWString& line);
private:
+ void update();
+
F32 mLinePersistTime; // Age at which to stop drawing.
F32 mFadeTime; // Age at which to start fading
const LLFontGL* mFont;
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index 57baf28dab..0492ab0f25 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -95,7 +95,7 @@ void LLDockableFloater::toggleInstance(const LLSD& sdname)
LLDockableFloater* instance =
dynamic_cast<LLDockableFloater*> (LLFloaterReg::findInstance(name));
// if floater closed or docked
- if (instance == NULL || instance != NULL && instance->isDocked())
+ if (instance == NULL || (instance && instance->isDocked()))
{
LLFloaterReg::toggleInstance(name, key);
// restore button toggle state
@@ -223,10 +223,10 @@ void LLDockableFloater::draw()
LLFloater::draw();
}
-void LLDockableFloater::setDockControl(LLDockControl* dockControl)
+void LLDockableFloater::setDockControl(LLDockControl* dockControl, bool docked /* = true */)
{
mDockControl.reset(dockControl);
- setDocked(mDockControl.get() != NULL && mDockControl.get()->isDockVisible());
+ setDocked(docked && mDockControl.get() != NULL && mDockControl.get()->isDockVisible());
}
const LLUIImagePtr& LLDockableFloater::getDockTongue()
diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h
index 2b1ce99ae2..4d747390af 100644
--- a/indra/llui/lldockablefloater.h
+++ b/indra/llui/lldockablefloater.h
@@ -127,7 +127,7 @@ private:
void resetInstance();
protected:
- void setDockControl(LLDockControl* dockControl);
+ void setDockControl(LLDockControl* dockControl, bool docked = true);
const LLUIImagePtr& getDockTongue();
private:
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index d836a5f4cd..d738b10130 100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
@@ -162,7 +162,9 @@ bool LLDockControl::isDockVisible()
{
case LEFT: // to keep compiler happy
break;
+ case BOTTOM:
case TOP:
+ {
// check is dock inside parent rect
LLRect dockParentRect =
mDockWidget->getParent()->calcScreenRect();
@@ -173,6 +175,9 @@ bool LLDockControl::isDockVisible()
}
break;
}
+ default:
+ break;
+ }
}
}
@@ -255,6 +260,42 @@ void LLDockControl::moveDockable()
mDockTongueY = dockRect.mTop;
break;
+ case BOTTOM:
+ x = dockRect.getCenterX() - dockableRect.getWidth() / 2;
+ y = dockRect.mBottom;
+ // unique docking used with dock tongue, so add tongue height o the Y coordinate
+ if (use_tongue)
+ {
+ y -= mDockTongue->getHeight();
+ }
+
+ // check is dockable inside root view rect
+ if (x < rootRect.mLeft)
+ {
+ x = rootRect.mLeft;
+ }
+ if (x + dockableRect.getWidth() > rootRect.mRight)
+ {
+ x = rootRect.mRight - dockableRect.getWidth();
+ }
+
+ // calculate dock tongue position
+ dockParentRect = mDockWidget->getParent()->calcScreenRect();
+ if (dockRect.getCenterX() < dockParentRect.mLeft)
+ {
+ mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2;
+ }
+ else if (dockRect.getCenterX() > dockParentRect.mRight)
+ {
+ mDockTongueX = dockParentRect.mRight - mDockTongue->getWidth() / 2;;
+ }
+ else
+ {
+ mDockTongueX = dockRect.getCenterX() - mDockTongue->getWidth() / 2;
+ }
+ mDockTongueY = dockRect.mBottom - mDockTongue->getHeight();
+
+ break;
}
// move dockable
diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h
index 550955c4c5..a5caf68001 100644
--- a/indra/llui/lldockcontrol.h
+++ b/indra/llui/lldockcontrol.h
@@ -47,8 +47,9 @@ class LLDockControl
public:
enum DocAt
{
- TOP
- ,LEFT
+ TOP,
+ LEFT,
+ BOTTOM
};
public:
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 92993650a7..2481249f91 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -42,8 +42,6 @@ static const LLDefaultChildRegistry::Register<LLFlatListView> flat_list_view("fl
const LLSD SELECTED_EVENT = LLSD().with("selected", true);
const LLSD UNSELECTED_EVENT = LLSD().with("selected", false);
-static const std::string COMMENT_TEXTBOX = "comment_text";
-
//forward declaration
bool llsds_are_equal(const LLSD& llsd_1, const LLSD& llsd_2);
@@ -51,7 +49,8 @@ LLFlatListView::Params::Params()
: item_pad("item_pad"),
allow_select("allow_select"),
multi_select("multi_select"),
- keep_one_selected("keep_one_selected")
+ keep_one_selected("keep_one_selected"),
+ no_items_text("no_items_text")
{};
void LLFlatListView::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */)
@@ -295,19 +294,6 @@ void LLFlatListView::resetSelection(bool no_commit_on_deselection /*= false*/)
void LLFlatListView::setNoItemsCommentText(const std::string& comment_text)
{
- if (NULL == mNoItemsCommentTextbox)
- {
- LLRect comment_rect = getRect();
- comment_rect.setOriginAndSize(0, 0, comment_rect.getWidth(), comment_rect.getHeight());
- comment_rect.stretch(-getBorderWidth());
- LLTextBox::Params text_p;
- text_p.name(COMMENT_TEXTBOX);
- text_p.border_visible(false);
- text_p.rect(comment_rect);
- text_p.follows.flags(FOLLOWS_ALL);
- mNoItemsCommentTextbox = LLUICtrlFactory::create<LLTextBox>(text_p, this);
- }
-
mNoItemsCommentTextbox->setValue(comment_text);
}
@@ -361,7 +347,6 @@ bool LLFlatListView::updateValue(const LLSD& old_value, const LLSD& new_value)
// PROTECTED STUFF
//////////////////////////////////////////////////////////////////////////
-
LLFlatListView::LLFlatListView(const LLFlatListView::Params& p)
: LLScrollContainer(p)
, mItemComparator(NULL)
@@ -398,6 +383,25 @@ LLFlatListView::LLFlatListView(const LLFlatListView::Params& p)
params.bevel_style(LLViewBorder::BEVEL_IN);
mSelectedItemsBorder = LLUICtrlFactory::create<LLViewBorder> (params);
mItemsPanel->addChild( mSelectedItemsBorder );
+
+ {
+ // create textbox for "No Items" comment text
+ LLTextBox::Params text_p = p.no_items_text;
+ if (!text_p.rect.isProvided())
+ {
+ LLRect comment_rect = getRect();
+ comment_rect.setOriginAndSize(0, 0, comment_rect.getWidth(), comment_rect.getHeight());
+ comment_rect.stretch(-getBorderWidth());
+ text_p.rect(comment_rect);
+ }
+ text_p.border_visible(false);
+
+ if (!text_p.follows.isProvided())
+ {
+ text_p.follows.flags(FOLLOWS_ALL);
+ }
+ mNoItemsCommentTextbox = LLUICtrlFactory::create<LLTextBox>(text_p, this);
+ }
};
// virtual
@@ -861,7 +865,11 @@ void LLFlatListView::notifyParentItemsRectChanged()
// take into account comment text height if exists
if (mNoItemsCommentTextbox && mNoItemsCommentTextbox->getVisible())
{
+ // top text padding inside the textbox is included into the height
comment_height = mNoItemsCommentTextbox->getTextPixelHeight();
+
+ // take into account a distance from parent's top border to textbox's top
+ comment_height += getRect().getHeight() - mNoItemsCommentTextbox->getRect().mTop;
}
LLRect req_rect = getItemsRect();
@@ -892,6 +900,10 @@ void LLFlatListView::setNoItemsCommentVisible(bool visible) const
{
if (visible)
{
+/*
+// *NOTE: MA 2010-02-04
+// Deprecated after params of the comment text box were moved into widget (flat_list_view.xml)
+// can be removed later if nothing happened.
// We have to update child rect here because of issues with rect after reshaping while creating LLTextbox
// It is possible to have invalid LLRect if Flat List is in LLAccordionTab
LLRect comment_rect = getLocalRect();
@@ -903,6 +915,7 @@ void LLFlatListView::setNoItemsCommentVisible(bool visible) const
LLViewBorder* scroll_border = getChild<LLViewBorder>("scroll border");
comment_rect.stretch(-scroll_border->getBorderWidth());
mNoItemsCommentTextbox->setRect(comment_rect);
+*/
}
mNoItemsCommentTextbox->setVisible(visible);
}
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index 949a731507..92cb40332e 100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
@@ -35,8 +35,8 @@
#include "llpanel.h"
#include "llscrollcontainer.h"
+#include "lltextbox.h"
-class LLTextBox;
/**
* LLFlatListView represents a flat list ui control that operates on items in a form of LLPanel's.
@@ -108,6 +108,9 @@ public:
/** padding between items */
Optional<U32> item_pad;
+ /** textbox with info message when list is empty*/
+ Optional<LLTextBox::Params> no_items_text;
+
Params();
};
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index de46d89d6f..b6d73cda3c 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1565,43 +1565,34 @@ void LLFloater::draw()
// draw background
if( isBackgroundVisible() )
{
+ drawShadow(this);
+
S32 left = LLPANEL_BORDER_WIDTH;
S32 top = getRect().getHeight() - LLPANEL_BORDER_WIDTH;
S32 right = getRect().getWidth() - LLPANEL_BORDER_WIDTH;
S32 bottom = LLPANEL_BORDER_WIDTH;
- static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0);
- static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow");
- LLColor4 shadow_color = shadow_color_cached;
- F32 shadow_offset = (F32)shadow_offset_S32;
-
- if (!isBackgroundOpaque())
- {
- shadow_offset *= 0.2f;
- shadow_color.mV[VALPHA] *= 0.5f;
- }
- gl_drop_shadow(left, top, right, bottom,
- shadow_color % alpha,
- llround(shadow_offset));
-
LLUIImage* image = NULL;
LLColor4 color;
+ LLColor4 overlay_color;
if (isBackgroundOpaque())
{
// NOTE: image may not be set
image = getBackgroundImage();
color = getBackgroundColor();
+ overlay_color = getBackgroundImageOverlay();
}
else
{
image = getTransparentImage();
color = getTransparentColor();
+ overlay_color = getTransparentImageOverlay();
}
if (image)
{
// We're using images for this floater's backgrounds
- image->draw(getLocalRect(), UI_VERTEX_COLOR % alpha);
+ image->draw(getLocalRect(), overlay_color % alpha);
}
else
{
@@ -1650,24 +1641,8 @@ void LLFloater::draw()
}
else
{
- //FIXME: get rid of this hack
- // draw children
- LLView* focused_child = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus());
- BOOL focused_child_visible = FALSE;
- if (focused_child && focused_child->getParent() == this)
- {
- focused_child_visible = focused_child->getVisible();
- focused_child->setVisible(FALSE);
- }
-
// don't call LLPanel::draw() since we've implemented custom background rendering
LLView::draw();
-
- if (focused_child_visible)
- {
- focused_child->setVisible(TRUE);
- }
- drawChild(focused_child);
}
// update tearoff button for torn off floaters
@@ -1682,6 +1657,29 @@ void LLFloater::draw()
}
}
+void LLFloater::drawShadow(LLPanel* panel)
+{
+ F32 alpha = panel->getDrawContext().mAlpha;
+ S32 left = LLPANEL_BORDER_WIDTH;
+ S32 top = panel->getRect().getHeight() - LLPANEL_BORDER_WIDTH;
+ S32 right = panel->getRect().getWidth() - LLPANEL_BORDER_WIDTH;
+ S32 bottom = LLPANEL_BORDER_WIDTH;
+
+ static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0);
+ static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow");
+ LLColor4 shadow_color = shadow_color_cached;
+ F32 shadow_offset = (F32)shadow_offset_S32;
+
+ if (!panel->isBackgroundOpaque())
+ {
+ shadow_offset *= 0.2f;
+ shadow_color.mV[VALPHA] *= 0.5f;
+ }
+ gl_drop_shadow(left, top, right, bottom,
+ shadow_color % alpha,
+ llround(shadow_offset));
+}
+
void LLFloater::setCanMinimize(BOOL can_minimize)
{
// if removing minimize/restore button programmatically,
@@ -2392,10 +2390,17 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
LLRect new_rect;
new_rect.setLeftTopAndSize(view_rect.mLeft,view_rect.mTop,new_width, new_height);
- floater->reshape( new_width, new_height, TRUE );
- floater->setRect(new_rect);
+ floater->setShape(new_rect);
+
+ if (floater->followsRight())
+ {
+ floater->translate(old_width - new_width, 0);
+ }
- floater->translateIntoRect( getLocalRect(), false );
+ if (floater->followsTop())
+ {
+ floater->translate(0, old_height - new_height);
+ }
}
}
@@ -2579,6 +2584,8 @@ void LLFloaterView::pushVisibleAll(BOOL visible, const skip_list_t& skip_list)
view->pushVisible(visible);
}
}
+
+ LLFloaterReg::blockShowFloaters(true);
}
void LLFloaterView::popVisibleAll(const skip_list_t& skip_list)
@@ -2596,6 +2603,8 @@ void LLFloaterView::popVisibleAll(const skip_list_t& skip_list)
view->popVisible();
}
}
+
+ LLFloaterReg::blockShowFloaters(false);
}
void LLFloater::setInstanceName(const std::string& name)
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 2166d8db8a..19e8288807 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -222,6 +222,7 @@ public:
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 mask);
virtual void draw();
+ virtual void drawShadow(LLPanel* panel);
virtual void onOpen(const LLSD& key) {}
virtual void onClose(bool app_quitting) {}
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index eb67e3a561..5de3934c8a 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -34,6 +34,7 @@
#include "llfloaterreg.h"
+//#include "llagent.h"
#include "llfloater.h"
#include "llmultifloater.h"
#include "llfloaterreglistener.h"
@@ -45,6 +46,7 @@ LLFloaterReg::instance_list_t LLFloaterReg::sNullInstanceList;
LLFloaterReg::instance_map_t LLFloaterReg::sInstanceMap;
LLFloaterReg::build_map_t LLFloaterReg::sBuildMap;
std::map<std::string,std::string> LLFloaterReg::sGroupMap;
+bool LLFloaterReg::sBlockShowFloaters = false;
static LLFloaterRegListener sFloaterRegListener;
@@ -217,6 +219,8 @@ LLFloaterReg::const_instance_list_t& LLFloaterReg::getFloaterList(const std::str
//static
LLFloater* LLFloaterReg::showInstance(const std::string& name, const LLSD& key, BOOL focus)
{
+ if( sBlockShowFloaters )
+ return 0;//
LLFloater* instance = getInstance(name, key);
if (instance)
{
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index 634a235926..8a11d5c3f2 100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
@@ -75,6 +75,7 @@ private:
static instance_map_t sInstanceMap;
static build_map_t sBuildMap;
static std::map<std::string,std::string> sGroupMap;
+ static bool sBlockShowFloaters;
public:
// Registration
@@ -152,6 +153,8 @@ public:
{
return dynamic_cast<T*>(showInstance(name, key, focus));
}
+
+ static void blockShowFloaters(bool value) { sBlockShowFloaters = value;}
};
diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index ede32084d0..75342afbe2 100644
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -218,6 +218,86 @@ void LLKeywords::addToken(LLKeywordToken::TOKEN_TYPE type,
llassert(0);
}
}
+LLKeywords::WStringMapIndex::WStringMapIndex(const WStringMapIndex& other)
+{
+ if(other.mOwner)
+ {
+ copyData(other.mData, other.mLength);
+ }
+ else
+ {
+ mOwner = false;
+ mLength = other.mLength;
+ mData = other.mData;
+ }
+}
+
+LLKeywords::WStringMapIndex::WStringMapIndex(const LLWString& str)
+{
+ copyData(str.data(), str.size());
+}
+
+LLKeywords::WStringMapIndex::WStringMapIndex(const llwchar *start, size_t length):
+mData(start), mLength(length), mOwner(false)
+{
+}
+
+LLKeywords::WStringMapIndex::~WStringMapIndex()
+{
+ if(mOwner)
+ delete[] mData;
+}
+
+void LLKeywords::WStringMapIndex::copyData(const llwchar *start, size_t length)
+{
+ llwchar *data = new llwchar[length];
+ memcpy((void*)data, (const void*)start, length * sizeof(llwchar));
+
+ mOwner = true;
+ mLength = length;
+ mData = data;
+}
+
+bool LLKeywords::WStringMapIndex::operator<(const LLKeywords::WStringMapIndex &other) const
+{
+ // NOTE: Since this is only used to organize a std::map, it doesn't matter if it uses correct collate order or not.
+ // The comparison only needs to strictly order all possible strings, and be stable.
+
+ bool result = false;
+ const llwchar* self_iter = mData;
+ const llwchar* self_end = mData + mLength;
+ const llwchar* other_iter = other.mData;
+ const llwchar* other_end = other.mData + other.mLength;
+
+ while(true)
+ {
+ if(other_iter >= other_end)
+ {
+ // We've hit the end of other.
+ // This covers two cases: other being shorter than self, or the strings being equal.
+ // In either case, we want to return false.
+ result = false;
+ break;
+ }
+ else if(self_iter >= self_end)
+ {
+ // self is shorter than other.
+ result = true;
+ break;
+ }
+ else if(*self_iter != *other_iter)
+ {
+ // The current character differs. The strings are not equal.
+ result = *self_iter < *other_iter;
+ break;
+ }
+
+ self_iter++;
+ other_iter++;
+ }
+
+ return result;
+}
LLColor3 LLKeywords::readColor( const std::string& s )
{
@@ -429,7 +509,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
S32 seg_len = p - cur;
if( seg_len > 0 )
{
- LLWString word( cur, 0, seg_len );
+ WStringMapIndex word( cur, seg_len );
word_token_map_t::iterator map_iter = mWordTokenMap.find(word);
if( map_iter != mWordTokenMap.end() )
{
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h
index 53377869ca..e5b66dfa56 100644
--- a/indra/llui/llkeywords.h
+++ b/indra/llui/llkeywords.h
@@ -92,8 +92,33 @@ public:
const std::string& key,
const LLColor3& color,
const std::string& tool_tip = LLStringUtil::null);
-
- typedef std::map<LLWString, LLKeywordToken*> word_token_map_t;
+
+ // This class is here as a performance optimization.
+ // The word token map used to be defined as std::map<LLWString, LLKeywordToken*>.
+ // This worked, but caused a performance bottleneck due to memory allocation and string copies
+ // because it's not possible to search such a map without creating an LLWString.
+ // Using this class as the map index instead allows us to search using segments of an existing
+ // text run without copying them first, which greatly reduces overhead in LLKeywords::findSegments().
+ class WStringMapIndex
+ {
+ public:
+ // copy constructor
+ WStringMapIndex(const WStringMapIndex& other);
+ // constructor from a string (copies the string's data into the new object)
+ WStringMapIndex(const LLWString& str);
+ // constructor from pointer and length
+ // NOTE: does NOT copy data, caller must ensure that the lifetime of the pointer exceeds that of the new object!
+ WStringMapIndex(const llwchar *start, size_t length);
+ ~WStringMapIndex();
+ bool operator<(const WStringMapIndex &other) const;
+ private:
+ void copyData(const llwchar *start, size_t length);
+ const llwchar *mData;
+ size_t mLength;
+ bool mOwner;
+ };
+
+ typedef std::map<WStringMapIndex, LLKeywordToken*> word_token_map_t;
typedef word_token_map_t::const_iterator keyword_iterator_t;
keyword_iterator_t begin() const { return mWordTokenMap.begin(); }
keyword_iterator_t end() const { return mWordTokenMap.end(); }
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 1aaba88c49..dc79550eb4 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -816,7 +816,10 @@ void LLLayoutStack::calcMinExtents()
//static
void LLLayoutStack::updateClass()
{
- for (LLLayoutStack::instance_iter it = beginInstances(); it != endInstances(); ++it)
+ LLInstanceTrackerScopedGuard guard;
+ for (LLLayoutStack::instance_iter it = guard.beginInstances();
+ it != guard.endInstances();
+ ++it)
{
it->updateLayout();
}
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index cb5aea272d..483a394bbd 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -55,6 +55,7 @@
#include "llui.h"
#include "lluictrlfactory.h"
#include "llclipboard.h"
+#include "llmenugl.h"
//
// Imported globals
@@ -70,7 +71,7 @@ const S32 SCROLL_INCREMENT_DEL = 4; // make space for baskspacing
const F32 AUTO_SCROLL_TIME = 0.05f;
const F32 TRIPLE_CLICK_INTERVAL = 0.3f; // delay between double and triple click. *TODO: make this equal to the double click interval?
-const std::string PASSWORD_ASTERISK( "\xE2\x97\x8F" ); // U+25CF BLACK CIRCLE
+const std::string PASSWORD_ASTERISK( "\xE2\x80\xA2" ); // U+2022 BULLET
static LLDefaultChildRegistry::Register<LLLineEditor> r1("line_editor");
@@ -82,19 +83,6 @@ template class LLLineEditor* LLView::getChild<class LLLineEditor>(
// Member functions
//
-void LLLineEditor::PrevalidateNamedFuncs::declareValues()
-{
- declare("ascii", LLLineEditor::prevalidateASCII);
- declare("float", LLLineEditor::prevalidateFloat);
- declare("int", LLLineEditor::prevalidateInt);
- declare("positive_s32", LLLineEditor::prevalidatePositiveS32);
- declare("non_negative_s32", LLLineEditor::prevalidateNonNegativeS32);
- declare("alpha_num", LLLineEditor::prevalidateAlphaNum);
- declare("alpha_num_space", LLLineEditor::prevalidateAlphaNumSpace);
- declare("ascii_printable_no_pipe", LLLineEditor::prevalidateASCIIPrintableNoPipe);
- declare("ascii_printable_no_space", LLLineEditor::prevalidateASCIIPrintableNoSpace);
-}
-
LLLineEditor::Params::Params()
: max_length_bytes("max_length", 254),
keystroke_callback("keystroke_callback"),
@@ -164,7 +152,8 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
mTentativeFgColor(p.text_tentative_color()),
mHighlightColor(p.highlight_color()),
mPreeditBgColor(p.preedit_bg_color()),
- mGLFont(p.font)
+ mGLFont(p.font),
+ mContextMenuHandle()
{
llassert( mMaxLengthBytes > 0 );
@@ -191,6 +180,12 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
setCursor(mText.length());
setPrevalidate(p.prevalidate_callback());
+
+ LLContextMenu* menu = LLUICtrlFactory::instance().createFromFile<LLContextMenu>
+ ("menu_text_editor.xml",
+ LLMenuGL::sMenuContainer,
+ LLMenuHolderGL::child_registry_t::instance());
+ setContextMenu(menu);
}
LLLineEditor::~LLLineEditor()
@@ -422,12 +417,16 @@ void LLLineEditor::setCursor( S32 pos )
S32 old_cursor_pos = getCursor();
mCursorPos = llclamp( pos, 0, mText.length());
+ // position of end of next character after cursor
S32 pixels_after_scroll = findPixelNearestPos();
if( pixels_after_scroll > mTextRightEdge )
{
S32 width_chars_to_left = mGLFont->getWidth(mText.getWString().c_str(), 0, mScrollHPos);
S32 last_visible_char = mGLFont->maxDrawableChars(mText.getWString().c_str(), llmax(0.f, (F32)(mTextRightEdge - mTextLeftEdge + width_chars_to_left)));
- S32 min_scroll = mGLFont->firstDrawableChar(mText.getWString().c_str(), (F32)(mTextRightEdge - mTextLeftEdge), mText.length(), getCursor());
+ // character immediately to left of cursor should be last one visible (SCROLL_INCREMENT_ADD will scroll in more characters)
+ // or first character if cursor is at beginning
+ S32 new_last_visible_char = llmax(0, getCursor() - 1);
+ S32 min_scroll = mGLFont->firstDrawableChar(mText.getWString().c_str(), (F32)(mTextRightEdge - mTextLeftEdge), mText.length(), new_last_visible_char);
if (old_cursor_pos == last_visible_char)
{
mScrollHPos = llmin(mText.length(), llmax(min_scroll, mScrollHPos + SCROLL_INCREMENT_ADD));
@@ -663,6 +662,16 @@ BOOL LLLineEditor::handleMiddleMouseDown(S32 x, S32 y, MASK mask)
return TRUE;
}
+BOOL LLLineEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
+{
+ setFocus(TRUE);
+ if (!LLUICtrl::handleRightMouseDown(x, y, mask))
+ {
+ showContextMenu(x, y);
+ }
+ return TRUE;
+}
+
BOOL LLLineEditor::handleHover(S32 x, S32 y, MASK mask)
{
BOOL handled = FALSE;
@@ -1962,51 +1971,12 @@ void LLLineEditor::setRect(const LLRect& rect)
}
}
-void LLLineEditor::setPrevalidate(LLLinePrevalidateFunc func)
+void LLLineEditor::setPrevalidate(LLTextValidate::validate_func_t func)
{
mPrevalidateFunc = func;
updateAllowingLanguageInput();
}
-// Limits what characters can be used to [1234567890.-] with [-] only valid in the first position.
-// Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for
-// the simple reasons that intermediate states may be invalid even if the final result is valid.
-//
-// static
-BOOL LLLineEditor::prevalidateFloat(const LLWString &str)
-{
- LLLocale locale(LLLocale::USER_LOCALE);
-
- BOOL success = TRUE;
- LLWString trimmed = str;
- LLWStringUtil::trim(trimmed);
- S32 len = trimmed.length();
- if( 0 < len )
- {
- // May be a comma or period, depending on the locale
- llwchar decimal_point = (llwchar)LLResMgr::getInstance()->getDecimalPoint();
-
- S32 i = 0;
-
- // First character can be a negative sign
- if( '-' == trimmed[0] )
- {
- i++;
- }
-
- for( ; i < len; i++ )
- {
- if( (decimal_point != trimmed[i] ) && !LLStringOps::isDigit( trimmed[i] ) )
- {
- success = FALSE;
- break;
- }
- }
- }
-
- return success;
-}
-
// static
BOOL LLLineEditor::postvalidateFloat(const std::string &str)
{
@@ -2066,223 +2036,6 @@ BOOL LLLineEditor::postvalidateFloat(const std::string &str)
return success;
}
-// Limits what characters can be used to [1234567890-] with [-] only valid in the first position.
-// Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for
-// the simple reasons that intermediate states may be invalid even if the final result is valid.
-//
-// static
-BOOL LLLineEditor::prevalidateInt(const LLWString &str)
-{
- LLLocale locale(LLLocale::USER_LOCALE);
-
- BOOL success = TRUE;
- LLWString trimmed = str;
- LLWStringUtil::trim(trimmed);
- S32 len = trimmed.length();
- if( 0 < len )
- {
- S32 i = 0;
-
- // First character can be a negative sign
- if( '-' == trimmed[0] )
- {
- i++;
- }
-
- for( ; i < len; i++ )
- {
- if( !LLStringOps::isDigit( trimmed[i] ) )
- {
- success = FALSE;
- break;
- }
- }
- }
-
- return success;
-}
-
-// static
-BOOL LLLineEditor::prevalidatePositiveS32(const LLWString &str)
-{
- LLLocale locale(LLLocale::USER_LOCALE);
-
- LLWString trimmed = str;
- LLWStringUtil::trim(trimmed);
- S32 len = trimmed.length();
- BOOL success = TRUE;
- if(0 < len)
- {
- if(('-' == trimmed[0]) || ('0' == trimmed[0]))
- {
- success = FALSE;
- }
- S32 i = 0;
- while(success && (i < len))
- {
- if(!LLStringOps::isDigit(trimmed[i++]))
- {
- success = FALSE;
- }
- }
- }
- if (success)
- {
- S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10);
- if (val <= 0)
- {
- success = FALSE;
- }
- }
- return success;
-}
-
-BOOL LLLineEditor::prevalidateNonNegativeS32(const LLWString &str)
-{
- LLLocale locale(LLLocale::USER_LOCALE);
-
- LLWString trimmed = str;
- LLWStringUtil::trim(trimmed);
- S32 len = trimmed.length();
- BOOL success = TRUE;
- if(0 < len)
- {
- if('-' == trimmed[0])
- {
- success = FALSE;
- }
- S32 i = 0;
- while(success && (i < len))
- {
- if(!LLStringOps::isDigit(trimmed[i++]))
- {
- success = FALSE;
- }
- }
- }
- if (success)
- {
- S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10);
- if (val < 0)
- {
- success = FALSE;
- }
- }
- return success;
-}
-
-BOOL LLLineEditor::prevalidateAlphaNum(const LLWString &str)
-{
- LLLocale locale(LLLocale::USER_LOCALE);
-
- BOOL rv = TRUE;
- S32 len = str.length();
- if(len == 0) return rv;
- while(len--)
- {
- if( !LLStringOps::isAlnum((char)str[len]) )
- {
- rv = FALSE;
- break;
- }
- }
- return rv;
-}
-
-// static
-BOOL LLLineEditor::prevalidateAlphaNumSpace(const LLWString &str)
-{
- LLLocale locale(LLLocale::USER_LOCALE);
-
- BOOL rv = TRUE;
- S32 len = str.length();
- if(len == 0) return rv;
- while(len--)
- {
- if(!(LLStringOps::isAlnum((char)str[len]) || (' ' == str[len])))
- {
- rv = FALSE;
- break;
- }
- }
- return rv;
-}
-
-// Used for most names of things stored on the server, due to old file-formats
-// that used the pipe (|) for multiline text storage. Examples include
-// inventory item names, parcel names, object names, etc.
-// static
-BOOL LLLineEditor::prevalidateASCIIPrintableNoPipe(const LLWString &str)
-{
- BOOL rv = TRUE;
- S32 len = str.length();
- if(len == 0) return rv;
- while(len--)
- {
- llwchar wc = str[len];
- if (wc < 0x20
- || wc > 0x7f
- || wc == '|')
- {
- rv = FALSE;
- break;
- }
- if(!(wc == ' '
- || LLStringOps::isAlnum((char)wc)
- || LLStringOps::isPunct((char)wc) ) )
- {
- rv = FALSE;
- break;
- }
- }
- return rv;
-}
-
-
-// Used for avatar names
-// static
-BOOL LLLineEditor::prevalidateASCIIPrintableNoSpace(const LLWString &str)
-{
- BOOL rv = TRUE;
- S32 len = str.length();
- if(len == 0) return rv;
- while(len--)
- {
- llwchar wc = str[len];
- if (wc < 0x20
- || wc > 0x7f
- || LLStringOps::isSpace(wc))
- {
- rv = FALSE;
- break;
- }
- if( !(LLStringOps::isAlnum((char)str[len]) ||
- LLStringOps::isPunct((char)str[len]) ) )
- {
- rv = FALSE;
- break;
- }
- }
- return rv;
-}
-
-
-// static
-BOOL LLLineEditor::prevalidateASCII(const LLWString &str)
-{
- BOOL rv = TRUE;
- S32 len = str.length();
- while(len--)
- {
- if (str[len] < 0x20 || str[len] > 0x7f)
- {
- rv = FALSE;
- break;
- }
- }
- return rv;
-}
-
void LLLineEditor::onMouseCaptureLost()
{
endSelection();
@@ -2560,3 +2313,25 @@ LLWString LLLineEditor::getConvertedText() const
}
return text;
}
+
+void LLLineEditor::showContextMenu(S32 x, S32 y)
+{
+ LLContextMenu* menu = static_cast<LLContextMenu*>(mContextMenuHandle.get());
+
+ if (menu)
+ {
+ gEditMenuHandler = this;
+
+ S32 screen_x, screen_y;
+ localPointToScreen(x, y, &screen_x, &screen_y);
+ menu->show(screen_x, screen_y);
+ }
+}
+
+void LLLineEditor::setContextMenu(LLContextMenu* new_context_menu)
+{
+ if (new_context_menu)
+ mContextMenuHandle = new_context_menu->getHandle();
+ else
+ mContextMenuHandle.markDead();
+}
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index 49e9539b16..b62138426b 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -51,26 +51,18 @@
#include "llviewborder.h"
#include "llpreeditor.h"
-#include <boost/function.hpp>
+#include "lltextvalidate.h"
class LLFontGL;
class LLLineEditorRollback;
class LLButton;
-
-typedef boost::function<BOOL (const LLWString &wstr)> LLLinePrevalidateFunc;
+class LLContextMenu;
class LLLineEditor
: public LLUICtrl, public LLEditMenuHandler, protected LLPreeditor
{
public:
- struct PrevalidateNamedFuncs
- : public LLInitParam::TypeValuesHelper<LLLinePrevalidateFunc, PrevalidateNamedFuncs>
-
- {
- static void declareValues();
- };
-
typedef boost::function<void (LLLineEditor* caller)> keystroke_callback_t;
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
@@ -80,7 +72,7 @@ public:
Optional<keystroke_callback_t> keystroke_callback;
- Optional<LLLinePrevalidateFunc, PrevalidateNamedFuncs> prevalidate_callback;
+ Optional<LLTextValidate::validate_func_t, LLTextValidate::ValidateTextNamedFuncs> prevalidate_callback;
Optional<LLViewBorder::Params> border;
@@ -113,6 +105,7 @@ protected:
LLLineEditor(const Params&);
friend class LLUICtrlFactory;
friend class LLFloaterEditUI;
+ void showContextMenu(S32 x, S32 y);
public:
virtual ~LLLineEditor();
@@ -122,6 +115,7 @@ public:
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleDoubleClick(S32 x,S32 y,MASK mask);
/*virtual*/ BOOL handleMiddleMouseDown(S32 x,S32 y,MASK mask);
+ /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask );
/*virtual*/ BOOL handleUnicodeCharHere(llwchar uni_char);
/*virtual*/ void onMouseCaptureLost();
@@ -204,6 +198,8 @@ public:
const LLColor4& getReadOnlyFgColor() const { return mReadOnlyFgColor.get(); }
const LLColor4& getTentativeFgColor() const { return mTentativeFgColor.get(); }
+ const LLFontGL* getFont() const { return mGLFont; }
+
void setIgnoreArrowKeys(BOOL b) { mIgnoreArrowKeys = b; }
void setIgnoreTab(BOOL b) { mIgnoreTab = b; }
void setPassDelete(BOOL b) { mPassDelete = b; }
@@ -231,17 +227,7 @@ public:
void setTextPadding(S32 left, S32 right);
// Prevalidation controls which keystrokes can affect the editor
- void setPrevalidate( LLLinePrevalidateFunc func );
- static BOOL prevalidateFloat(const LLWString &str );
- static BOOL prevalidateInt(const LLWString &str );
- static BOOL prevalidatePositiveS32(const LLWString &str);
- static BOOL prevalidateNonNegativeS32(const LLWString &str);
- static BOOL prevalidateAlphaNum(const LLWString &str );
- static BOOL prevalidateAlphaNumSpace(const LLWString &str );
- static BOOL prevalidateASCIIPrintableNoPipe(const LLWString &str);
- static BOOL prevalidateASCIIPrintableNoSpace(const LLWString &str);
- static BOOL prevalidateASCII(const LLWString &str);
-
+ void setPrevalidate( LLTextValidate::validate_func_t func );
static BOOL postvalidateFloat(const std::string &str);
// line history support:
@@ -249,7 +235,9 @@ public:
void updateHistory(); // stores current line in history
void setReplaceNewlinesWithSpaces(BOOL replace);
-
+
+ void setContextMenu(LLContextMenu* new_context_menu);
+
private:
// private helper methods
@@ -319,7 +307,7 @@ protected:
S32 mLastSelectionStart;
S32 mLastSelectionEnd;
- LLLinePrevalidateFunc mPrevalidateFunc;
+ LLTextValidate::validate_func_t mPrevalidateFunc;
LLFrameTimer mKeystrokeTimer;
LLTimer mTripleClickTimer;
@@ -348,6 +336,8 @@ protected:
std::vector<S32> mPreeditPositions;
LLPreeditor::standouts_t mPreeditStandouts;
+ LLHandle<LLView> mContextMenuHandle;
+
private:
// Instances that by default point to the statics but can be overidden in XML.
LLPointer<LLUIImage> mBgImage;
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 7fa9a88059..0d56c5ed31 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -657,11 +657,38 @@ LLMenuItemVerticalSeparatorGL::LLMenuItemVerticalSeparatorGL( void )
// Class LLMenuItemTearOffGL
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LLMenuItemTearOffGL::LLMenuItemTearOffGL(const LLMenuItemTearOffGL::Params& p)
-: LLMenuItemGL(p),
- mParentHandle(p.parent_floater_handle)
+: LLMenuItemGL(p)
{
}
+// Returns the first floater ancestor if there is one
+LLFloater* LLMenuItemTearOffGL::getParentFloater()
+{
+ LLView* parent_view = getMenu();
+
+ while (parent_view)
+ {
+ if (dynamic_cast<LLFloater*>(parent_view))
+ {
+ return dynamic_cast<LLFloater*>(parent_view);
+ }
+
+ bool parent_is_menu = dynamic_cast<LLMenuGL*>(parent_view) && !dynamic_cast<LLMenuBarGL*>(parent_view);
+
+ if (parent_is_menu)
+ {
+ // use menu parent
+ parent_view = dynamic_cast<LLMenuGL*>(parent_view)->getParentMenuItem();
+ }
+ else
+ {
+ // just use regular view parent
+ parent_view = parent_view->getParent();
+ }
+ }
+
+ return NULL;
+}
void LLMenuItemTearOffGL::onCommit()
{
@@ -680,7 +707,7 @@ void LLMenuItemTearOffGL::onCommit()
getMenu()->needsArrange();
- LLFloater* parent_floater = mParentHandle.get();
+ LLFloater* parent_floater = getParentFloater();
LLFloater* tear_off_menu = LLTearOffMenu::create(getMenu());
if (tear_off_menu)
@@ -1671,7 +1698,6 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
mSpilloverMenu(NULL),
mJumpKey(p.jump_key),
mCreateJumpKeys(p.create_jump_keys),
- mParentFloaterHandle(p.parent_floater),
mNeedsArrange(FALSE),
mShortcutPad(p.shortcut_pad)
{
@@ -1699,7 +1725,7 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
void LLMenuGL::initFromParams(const LLMenuGL::Params& p)
{
LLUICtrl::initFromParams(p);
- setCanTearOff(p.can_tear_off, p.parent_floater);
+ setCanTearOff(p.can_tear_off);
}
// Destroys the object
@@ -1711,12 +1737,11 @@ LLMenuGL::~LLMenuGL( void )
mJumpKeys.clear();
}
-void LLMenuGL::setCanTearOff(BOOL tear_off, LLHandle<LLFloater> parent_floater_handle )
+void LLMenuGL::setCanTearOff(BOOL tear_off)
{
if (tear_off && mTearOffItem == NULL)
{
LLMenuItemTearOffGL::Params p;
- p.parent_floater_handle = parent_floater_handle;
mTearOffItem = LLUICtrlFactory::create<LLMenuItemTearOffGL>(p);
addChildInBack(mTearOffItem);
}
@@ -2233,7 +2258,6 @@ void LLMenuGL::createSpilloverBranch()
LLMenuGL::Params p;
p.name("More");
p.label("More"); // *TODO: Translate
- p.parent_floater(mParentFloaterHandle);
p.bg_color(mBackgroundColor);
p.bg_visible(true);
p.can_tear_off(false);
@@ -3941,7 +3965,6 @@ BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu)
item = LLUICtrlFactory::create<LLContextMenuBranch>(p);
LLMenuGL::sMenuContainer->addChild(item->getBranch());
- item->setFont( LLFontGL::getFontSansSerif() );
return append( item );
}
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 8441aaadd4..39d1986461 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -355,7 +355,6 @@ class LLMenuGL
public:
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
{
- Optional<LLHandle<LLFloater> > parent_floater;
Optional<KEY> jump_key;
Optional<bool> horizontal_layout,
can_tear_off,
@@ -430,7 +429,7 @@ public:
void setBackgroundColor( const LLUIColor& color ) { mBackgroundColor = color; }
const LLUIColor& getBackgroundColor() const { return mBackgroundColor; }
void setBackgroundVisible( BOOL b ) { mBgVisible = b; }
- void setCanTearOff(BOOL tear_off, LLHandle<LLFloater> parent_floater_handle = LLHandle<LLFloater>());
+ void setCanTearOff(BOOL tear_off);
// add a separator to this menu
virtual BOOL addSeparator();
@@ -553,7 +552,6 @@ private:
class LLMenuItemTearOffGL* mTearOffItem;
class LLMenuItemBranchGL* mSpilloverBranch;
LLMenuGL* mSpilloverMenu;
- LLHandle<LLFloater> mParentFloaterHandle;
KEY mJumpKey;
BOOL mCreateJumpKeys;
S32 mShortcutPad;
@@ -814,7 +812,6 @@ class LLMenuItemTearOffGL : public LLMenuItemGL
public:
struct Params : public LLInitParam::Block<Params, LLMenuItemGL::Params>
{
- Optional<LLHandle<LLFloater> > parent_floater_handle;
Params()
{
name = "tear off";
@@ -823,13 +820,12 @@ public:
};
LLMenuItemTearOffGL( const Params& );
-
+
virtual void onCommit(void);
virtual void draw(void);
virtual U32 getNominalHeight() const;
-private:
- LLHandle<LLFloater> mParentHandle;
+ LLFloater* getParentFloater();
};
diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp
index 78738c826d..33d47a3f0e 100644
--- a/indra/llui/llmultifloater.cpp
+++ b/indra/llui/llmultifloater.cpp
@@ -92,14 +92,6 @@ void LLMultiFloater::draw()
}
else
{
- for (S32 i = 0; i < mTabContainer->getTabCount(); i++)
- {
- LLFloater* floaterp = (LLFloater*)mTabContainer->getPanelByIndex(i);
- if (floaterp->getShortTitle() != mTabContainer->getPanelTitle(i))
- {
- mTabContainer->setPanelTitle(i, floaterp->getShortTitle());
- }
- }
LLFloater::draw();
}
}
diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
index f4434a0f78..cc26c00a3e 100644
--- a/indra/llui/llmultisliderctrl.cpp
+++ b/indra/llui/llmultisliderctrl.cpp
@@ -138,7 +138,7 @@ LLMultiSliderCtrl::LLMultiSliderCtrl(const LLMultiSliderCtrl::Params& p)
params.font(p.font);
params.max_length_bytes(MAX_STRING_LENGTH);
params.commit_callback.function(LLMultiSliderCtrl::onEditorCommit);
- params.prevalidate_callback(&LLLineEditor::prevalidateFloat);
+ params.prevalidate_callback(&LLTextValidate::validateFloat);
params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
mEditor = LLUICtrlFactory::create<LLLineEditor> (params);
mEditor->setFocusReceivedCallback( boost::bind(LLMultiSliderCtrl::onEditorGainFocus, _1, this) );
@@ -330,9 +330,14 @@ void LLMultiSliderCtrl::updateText()
// static
void LLMultiSliderCtrl::onEditorCommit( LLUICtrl* ctrl, const LLSD& userdata)
{
- LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent());
+ llassert(ctrl);
if (!ctrl)
return;
+
+ LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent());
+ llassert(self);
+ if (!self) // cast failed - wrong type! :O
+ return;
BOOL success = FALSE;
F32 val = self->mCurValue;
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index d55e0f4043..8d993b71d7 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -371,7 +371,7 @@ private:
// this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT
// for anything real!
- LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mTemporaryResponder(false) {}
+ LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mPriority(NOTIFICATION_PRIORITY_UNSPECIFIED), mTemporaryResponder(false) {}
void cancel();
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index 7f23fe2671..0cd052eefa 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -80,6 +80,8 @@ LLPanel::Params::Params()
background_opaque("background_opaque", false),
bg_opaque_color("bg_opaque_color"),
bg_alpha_color("bg_alpha_color"),
+ bg_opaque_image_overlay("bg_opaque_image_overlay"),
+ bg_alpha_image_overlay("bg_alpha_image_overlay"),
bg_opaque_image("bg_opaque_image"),
bg_alpha_image("bg_alpha_image"),
min_width("min_width", 100),
@@ -103,6 +105,8 @@ LLPanel::LLPanel(const LLPanel::Params& p)
mBgOpaque(p.background_opaque),
mBgOpaqueColor(p.bg_opaque_color()),
mBgAlphaColor(p.bg_alpha_color()),
+ mBgOpaqueImageOverlay(p.bg_opaque_image_overlay),
+ mBgAlphaImageOverlay(p.bg_alpha_image_overlay),
mBgOpaqueImage(p.bg_opaque_image()),
mBgAlphaImage(p.bg_alpha_image()),
mDefaultBtn(NULL),
@@ -199,7 +203,7 @@ void LLPanel::draw()
// opaque, in-front look
if (mBgOpaqueImage.notNull())
{
- mBgOpaqueImage->draw( local_rect, UI_VERTEX_COLOR % alpha );
+ mBgOpaqueImage->draw( local_rect, mBgOpaqueImageOverlay % alpha );
}
else
{
@@ -212,7 +216,7 @@ void LLPanel::draw()
// transparent, in-back look
if (mBgAlphaImage.notNull())
{
- mBgAlphaImage->draw( local_rect, UI_VERTEX_COLOR % alpha );
+ mBgAlphaImage->draw( local_rect, mBgAlphaImageOverlay % alpha );
}
else
{
@@ -397,6 +401,12 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_
if (!panelp)
{
panelp = LLUICtrlFactory::getInstance()->createFactoryPanel(name);
+ llassert(panelp);
+
+ if (!panelp)
+ {
+ return NULL; // :(
+ }
}
}
@@ -414,7 +424,7 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_
panelp->mCommitCallbackRegistrar.popScope();
panelp->mEnableCallbackRegistrar.popScope();
- if (panelp && !panelp->getFactoryMap().empty())
+ if (!panelp->getFactoryMap().empty())
{
LLUICtrlFactory::instance().popFactoryFunctions();
}
@@ -475,6 +485,8 @@ void LLPanel::initFromParams(const LLPanel::Params& p)
setTransparentColor(p.bg_alpha_color().get());
mBgOpaqueImage = p.bg_opaque_image();
mBgAlphaImage = p.bg_alpha_image();
+ mBgOpaqueImageOverlay = p.bg_opaque_image_overlay;
+ mBgAlphaImageOverlay = p.bg_alpha_image_overlay;
}
static LLFastTimer::DeclareTimer FTM_PANEL_SETUP("Panel Setup");
@@ -936,7 +948,7 @@ LLPanel *LLPanel::childGetVisiblePanelWithHelp()
return ::childGetVisiblePanelWithHelp(this);
}
-void LLPanel::childSetPrevalidate(const std::string& id, BOOL (*func)(const LLWString &) )
+void LLPanel::childSetPrevalidate(const std::string& id, bool (*func)(const LLWString &) )
{
LLLineEditor* child = findChild<LLLineEditor>(id);
if (child)
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index 6de83fe3a7..03e3dc0c0e 100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
@@ -77,7 +77,9 @@ public:
background_opaque;
Optional<LLUIColor> bg_opaque_color,
- bg_alpha_color;
+ bg_alpha_color,
+ bg_opaque_image_overlay,
+ bg_alpha_image_overlay;
// opaque image is for "panel in foreground" look
Optional<LLUIImage*> bg_opaque_image,
bg_alpha_image;
@@ -137,6 +139,8 @@ public:
const LLColor4& getTransparentColor() const { return mBgAlphaColor; }
LLPointer<LLUIImage> getBackgroundImage() const { return mBgOpaqueImage; }
LLPointer<LLUIImage> getTransparentImage() const { return mBgAlphaImage; }
+ LLColor4 getBackgroundImageOverlay() { return mBgOpaqueImageOverlay; }
+ LLColor4 getTransparentImageOverlay() { return mBgAlphaImageOverlay; }
void setBackgroundVisible( BOOL b ) { mBgVisible = b; }
BOOL isBackgroundVisible() const { return mBgVisible; }
void setBackgroundOpaque(BOOL b) { mBgOpaque = b; }
@@ -226,7 +230,7 @@ public:
std::string childGetText(const std::string& id) const { return childGetValue(id).asString(); }
// LLLineEditor
- void childSetPrevalidate(const std::string& id, BOOL (*func)(const LLWString &) );
+ void childSetPrevalidate(const std::string& id, bool (*func)(const LLWString &) );
// LLButton
void childSetAction(const std::string& id, boost::function<void(void*)> function, void* value = NULL);
@@ -262,6 +266,8 @@ private:
BOOL mBgOpaque; // use opaque color or image
LLUIColor mBgOpaqueColor;
LLUIColor mBgAlphaColor;
+ LLUIColor mBgOpaqueImageOverlay;
+ LLUIColor mBgAlphaImageOverlay;
LLPointer<LLUIImage> mBgOpaqueImage; // "panel in front" look
LLPointer<LLUIImage> mBgAlphaImage; // "panel in back" look
LLViewBorder* mBorder;
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
index 3df09d124a..00214d451c 100644
--- a/indra/llui/llresizehandle.cpp
+++ b/indra/llui/llresizehandle.cpp
@@ -124,7 +124,7 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
{
// Make sure the mouse in still over the application. We don't want to make the parent
// so big that we can't see the resize handle any more.
-
+
S32 screen_x;
S32 screen_y;
localPointToScreen(x, y, &screen_x, &screen_y);
@@ -136,9 +136,10 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
if( resizing_view )
{
// undock floater when user resize it
- if (((LLFloater*)getParent())->isDocked())
+ LLFloater* floater_parent = dynamic_cast<LLFloater*>(getParent());
+ if (floater_parent && floater_parent->isDocked())
{
- ((LLFloater*)getParent())->setDocked(false, false);
+ floater_parent->setDocked(false, false);
}
// Resize the parent
@@ -146,61 +147,68 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
LLRect scaled_rect = orig_rect;
S32 delta_x = screen_x - mDragLastScreenX;
S32 delta_y = screen_y - mDragLastScreenY;
-
- if(delta_x == 0 && delta_y == 0)
- return FALSE;
-
LLCoordGL mouse_dir;
// use hysteresis on mouse motion to preserve user intent when mouse stops moving
mouse_dir.mX = (screen_x == mLastMouseScreenX) ? mLastMouseDir.mX : screen_x - mLastMouseScreenX;
mouse_dir.mY = (screen_y == mLastMouseScreenY) ? mLastMouseDir.mY : screen_y - mLastMouseScreenY;
-
mLastMouseScreenX = screen_x;
mLastMouseScreenY = screen_y;
mLastMouseDir = mouse_dir;
- S32 new_width = orig_rect.getWidth();
- S32 new_height = orig_rect.getHeight();
+ S32 x_multiple = 1;
+ S32 y_multiple = 1;
+ switch( mCorner )
+ {
+ case LEFT_TOP:
+ x_multiple = -1;
+ y_multiple = 1;
+ break;
+ case LEFT_BOTTOM:
+ x_multiple = -1;
+ y_multiple = -1;
+ break;
+ case RIGHT_TOP:
+ x_multiple = 1;
+ y_multiple = 1;
+ break;
+ case RIGHT_BOTTOM:
+ x_multiple = 1;
+ y_multiple = -1;
+ break;
+ }
- S32 new_pos_x = orig_rect.mLeft;
- S32 new_pos_y = orig_rect.mTop;
+ S32 new_width = orig_rect.getWidth() + x_multiple * delta_x;
+ if( new_width < mMinWidth )
+ {
+ new_width = mMinWidth;
+ delta_x = x_multiple * (mMinWidth - orig_rect.getWidth());
+ }
+
+ S32 new_height = orig_rect.getHeight() + y_multiple * delta_y;
+ if( new_height < mMinHeight )
+ {
+ new_height = mMinHeight;
+ delta_y = y_multiple * (mMinHeight - orig_rect.getHeight());
+ }
switch( mCorner )
{
- case LEFT_TOP:
- new_width-=delta_x;
- new_height+=delta_y;
- new_pos_x+=delta_x;
- new_pos_y+=delta_y;
+ case LEFT_TOP:
+ scaled_rect.translate(delta_x, 0);
break;
case LEFT_BOTTOM:
- new_width-=delta_x;
- new_height-=delta_y;
- new_pos_x+=delta_x;
+ scaled_rect.translate(delta_x, delta_y);
break;
case RIGHT_TOP:
- new_width+=delta_x;
- new_height+=delta_y;
- new_pos_y+=delta_y;
break;
case RIGHT_BOTTOM:
- new_width+=delta_x;
- new_height-=delta_y;
+ scaled_rect.translate(0, delta_y);
break;
}
- new_width = llmax(new_width,mMinWidth);
- new_height = llmax(new_height,mMinHeight);
-
- LLRect::tCoordType screen_width = resizing_view->getParent()->getSnapRect().getWidth();
- LLRect::tCoordType screen_height = resizing_view->getParent()->getSnapRect().getHeight();
-
- new_width = llmin(new_width, screen_width);
- new_height = llmin(new_height, screen_height);
-
// temporarily set new parent rect
- scaled_rect.setLeftTopAndSize(new_pos_x,new_pos_y,new_width,new_height);
-
+ scaled_rect.mRight = scaled_rect.mLeft + new_width;
+ scaled_rect.mTop = scaled_rect.mBottom + new_height;
resizing_view->setRect(scaled_rect);
LLView* snap_view = NULL;
@@ -251,11 +259,7 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
resizing_view->setRect(orig_rect);
// translate and scale to new shape
- resizing_view->reshape(scaled_rect.getWidth(),scaled_rect.getHeight());
- resizing_view->setRect(scaled_rect);
- //set shape to handle dependent floaters...
- resizing_view->handleReshape(scaled_rect, false);
-
+ resizing_view->setShape(scaled_rect, true);
// update last valid mouse cursor position based on resized view's actual size
LLRect new_rect = resizing_view->getRect();
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 478e270c98..77caaaa425 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -71,8 +71,9 @@ static LLDefaultChildRegistry::Register<LLScrollListCtrl> r("scroll_list");
// local structures & classes.
struct SortScrollListItem
{
- SortScrollListItem(const std::vector<std::pair<S32, BOOL> >& sort_orders)
+ SortScrollListItem(const std::vector<std::pair<S32, BOOL> >& sort_orders,const LLScrollListCtrl::sort_signal_t* sort_signal)
: mSortOrders(sort_orders)
+ , mSortSignal(sort_signal)
{}
bool operator()(const LLScrollListItem* i1, const LLScrollListItem* i2)
@@ -85,12 +86,20 @@ struct SortScrollListItem
S32 col_idx = it->first;
BOOL sort_ascending = it->second;
+ S32 order = sort_ascending ? 1 : -1; // ascending or descending sort for this column?
+
const LLScrollListCell *cell1 = i1->getColumn(col_idx);
const LLScrollListCell *cell2 = i2->getColumn(col_idx);
- S32 order = sort_ascending ? 1 : -1; // ascending or descending sort for this column?
if (cell1 && cell2)
{
- sort_result = order * LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString());
+ if(mSortSignal)
+ {
+ sort_result = order * (*mSortSignal)(col_idx,i1, i2);
+ }
+ else
+ {
+ sort_result = order * LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString());
+ }
if (sort_result != 0)
{
break; // we have a sort order!
@@ -100,8 +109,10 @@ struct SortScrollListItem
return sort_result < 0;
}
+
typedef std::vector<std::pair<S32, BOOL> > sort_order_t;
+ const LLScrollListCtrl::sort_signal_t* mSortSignal;
const sort_order_t& mSortOrders;
};
@@ -169,6 +180,7 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
mOnSortChangedCallback( NULL ),
mHighlightedItem(-1),
mBorder(NULL),
+ mSortCallback(NULL),
mPopupMenu(NULL),
mNumDynamicWidthColumns(0),
mTotalStaticColumnWidth(0),
@@ -309,6 +321,8 @@ bool LLScrollListCtrl::preProcessChildNode(LLXMLNodePtr child)
LLScrollListCtrl::~LLScrollListCtrl()
{
+ delete mSortCallback;
+
std::for_each(mItemList.begin(), mItemList.end(), DeletePointer());
if( gEditMenuHandler == this )
@@ -540,7 +554,7 @@ BOOL LLScrollListCtrl::addItem( LLScrollListItem* item, EAddPosition pos, BOOL r
std::stable_sort(
mItemList.begin(),
mItemList.end(),
- SortScrollListItem(single_sort_column));
+ SortScrollListItem(single_sort_column,mSortCallback));
// ADD_SORTED just sorts by first column...
// this might not match user sort criteria, so flag list as being in unsorted state
@@ -1388,6 +1402,8 @@ void LLScrollListCtrl::drawItems()
LLGLSUIDefault gls_ui;
+ F32 alpha = getDrawContext().mAlpha;
+
{
LLLocalClipRect clip(mItemListRect);
@@ -1463,7 +1479,7 @@ void LLScrollListCtrl::drawItems()
bg_color = mBgReadOnlyColor.get();
}
- item->draw(item_rect, fg_color, bg_color, highlight_color, mColumnPadding);
+ item->draw(item_rect, fg_color % alpha, bg_color% alpha, highlight_color % alpha, mColumnPadding);
cur_y -= mLineHeight;
}
@@ -2393,7 +2409,7 @@ void LLScrollListCtrl::updateSort() const
std::stable_sort(
mItemList.begin(),
mItemList.end(),
- SortScrollListItem(mSortColumns));
+ SortScrollListItem(mSortColumns,mSortCallback));
mSorted = true;
}
@@ -2409,7 +2425,7 @@ void LLScrollListCtrl::sortOnce(S32 column, BOOL ascending)
std::stable_sort(
mItemList.begin(),
mItemList.end(),
- SortScrollListItem(sort_column));
+ SortScrollListItem(sort_column,mSortCallback));
}
void LLScrollListCtrl::dirtyColumns()
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index d2d2379328..1983891649 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -73,6 +73,32 @@ public:
// *TODO: Add callbacks to Params
typedef boost::function<void (void)> callback_t;
+
+ template<typename T> struct maximum
+ {
+ typedef T result_type;
+
+ template<typename InputIterator>
+ T operator()(InputIterator first, InputIterator last) const
+ {
+ // If there are no slots to call, just return the
+ // default-constructed value
+ if(first == last ) return T();
+ T max_value = *first++;
+ while (first != last) {
+ if (max_value < *first)
+ max_value = *first;
+ ++first;
+ }
+
+ return max_value;
+ }
+ };
+
+
+ //typedef boost::signals2::signal<void (S32,const LLScrollListItem*,const LLScrollListItem*),maximum<S32>> sort_signal_t;
+ //typedef boost::signals2::signal<void (S32,const LLScrollListItem*,const LLScrollListItem*)> sort_signal_t;
+ typedef boost::signals2::signal<S32 (S32,const LLScrollListItem*,const LLScrollListItem*),maximum<S32> > sort_signal_t;
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
{
@@ -362,6 +388,13 @@ public:
void setNeedsSort(bool val = true) { mSorted = !val; }
void dirtyColumns(); // some operation has potentially affected column layout or ordering
+ boost::signals2::connection setSortCallback(sort_signal_t::slot_type cb )
+ {
+ if (!mSortCallback) mSortCallback = new sort_signal_t();
+ return mSortCallback->connect(cb);
+ }
+
+
protected:
// "Full" interface: use this when you're creating a list that has one or more of the following:
// * contains icons
@@ -474,6 +507,8 @@ private:
typedef std::pair<S32, BOOL> sort_column_t;
std::vector<sort_column_t> mSortColumns;
+
+ sort_signal_t* mSortCallback;
}; // end class LLScrollListCtrl
#endif // LL_SCROLLLISTCTRL_H
diff --git a/indra/llui/llsearcheditor.cpp b/indra/llui/llsearcheditor.cpp
index 6fa99df82e..8075575bab 100644
--- a/indra/llui/llsearcheditor.cpp
+++ b/indra/llui/llsearcheditor.cpp
@@ -60,6 +60,7 @@ LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p)
line_editor_params.keystroke_callback(boost::bind(&LLSearchEditor::handleKeystroke, this));
mSearchEditor = LLUICtrlFactory::create<LLLineEditor>(line_editor_params);
+ mSearchEditor->setPassDelete(TRUE);
addChild(mSearchEditor);
if (p.search_button_visible)
@@ -79,10 +80,12 @@ LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p)
if (p.clear_button_visible)
{
// Set up clear button.
- S32 clr_btn_width = getRect().getHeight(); // button is square, and as tall as search editor
- LLRect clear_btn_rect(getRect().getWidth() - clr_btn_width, getRect().getHeight(), getRect().getWidth(), 0);
LLButton::Params clr_btn_params(p.clear_button);
clr_btn_params.name(std::string("clear button"));
+ S32 clr_btn_top = clr_btn_params.rect.bottom + clr_btn_params.rect.height;
+ S32 clr_btn_right = getRect().getWidth() - clr_btn_params.pad_right;
+ S32 clr_btn_left = clr_btn_right - clr_btn_params.rect.width;
+ LLRect clear_btn_rect(clr_btn_left, clr_btn_top, clr_btn_right, p.clear_button.rect.bottom);
clr_btn_params.rect(clear_btn_rect) ;
clr_btn_params.follows.flags(FOLLOWS_RIGHT|FOLLOWS_TOP);
clr_btn_params.tab_stop(false);
@@ -153,7 +156,7 @@ void LLSearchEditor::setFocus( BOOL b )
void LLSearchEditor::onClearButtonClick(const LLSD& data)
{
setText(LLStringUtil::null);
- mSearchEditor->doDelete(); // force keystroke callback
+ mSearchEditor->onCommit(); // force keystroke callback
}
void LLSearchEditor::handleKeystroke()
diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp
index 01c274bb4e..80ee5d0984 100644
--- a/indra/llui/llsliderctrl.cpp
+++ b/indra/llui/llsliderctrl.cpp
@@ -141,7 +141,7 @@ LLSliderCtrl::LLSliderCtrl(const LLSliderCtrl::Params& p)
line_p.rect.setIfNotProvided(text_rect);
line_p.font.setIfNotProvided(p.font);
line_p.commit_callback.function(&LLSliderCtrl::onEditorCommit);
- line_p.prevalidate_callback(&LLLineEditor::prevalidateFloat);
+ line_p.prevalidate_callback(&LLTextValidate::validateFloat);
mEditor = LLUICtrlFactory::create<LLLineEditor>(line_p);
mEditor->setFocusReceivedCallback( boost::bind(&LLSliderCtrl::onEditorGainFocus, _1, this ));
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index 20a1ab7af3..491cd7b6f3 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -127,7 +127,7 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
}
params.max_length_bytes(MAX_STRING_LENGTH);
params.commit_callback.function((boost::bind(&LLSpinCtrl::onEditorCommit, this, _2)));
- params.prevalidate_callback(&LLLineEditor::prevalidateFloat);
+ params.prevalidate_callback(&LLTextValidate::validateFloat);
params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
mEditor = LLUICtrlFactory::create<LLLineEditor> (params);
mEditor->setFocusReceivedCallback( boost::bind(&LLSpinCtrl::onEditorGainFocus, _1, this ));
@@ -270,13 +270,19 @@ void LLSpinCtrl::clear()
mbHasBeenSet = FALSE;
}
-
+void LLSpinCtrl::updateLabelColor()
+{
+ if( mLabelBox )
+ {
+ mLabelBox->setColor( getEnabled() ? mTextEnabledColor.get() : mTextDisabledColor.get() );
+ }
+}
void LLSpinCtrl::updateEditor()
{
LLLocale locale(LLLocale::USER_LOCALE);
- // Don't display very small negative values as -0.000
+ // Don't display very small negative valu es as -0.000
F32 displayed_value = clamp_precision((F32)getValue().asReal(), mPrecision);
// if( S32( displayed_value * pow( 10, mPrecision ) ) == 0 )
@@ -339,10 +345,7 @@ void LLSpinCtrl::setEnabled(BOOL b)
{
LLView::setEnabled( b );
mEditor->setEnabled( b );
- if( mLabelBox )
- {
- mLabelBox->setColor( b ? mTextEnabledColor.get() : mTextDisabledColor.get() );
- }
+ updateLabelColor();
}
@@ -390,6 +393,7 @@ void LLSpinCtrl::setLabel(const LLStringExplicit& label)
{
llwarns << "Attempting to set label on LLSpinCtrl constructed without one " << getName() << llendl;
}
+ updateLabelColor();
}
void LLSpinCtrl::setAllowEdit(BOOL allow_edit)
diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h
index 0e610b7741..00d6f86f83 100644
--- a/indra/llui/llspinctrl.h
+++ b/indra/llui/llspinctrl.h
@@ -81,8 +81,8 @@ public:
virtual void setPrecision(S32 precision);
void setLabel(const LLStringExplicit& label);
- void setLabelColor(const LLColor4& c) { mTextEnabledColor = c; }
- void setDisabledLabelColor(const LLColor4& c) { mTextDisabledColor = c; }
+ void setLabelColor(const LLColor4& c) { mTextEnabledColor = c; updateLabelColor(); }
+ void setDisabledLabelColor(const LLColor4& c) { mTextDisabledColor = c; updateLabelColor();}
void setAllowEdit(BOOL allow_edit);
virtual void onTabInto();
@@ -103,6 +103,7 @@ public:
void onDownBtn(const LLSD& data);
private:
+ void updateLabelColor();
void updateEditor();
void reportInvalidData();
diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h
index ee9ca730e9..2067e8e8be 100644
--- a/indra/llui/llstyle.h
+++ b/indra/llui/llstyle.h
@@ -59,11 +59,12 @@ public:
void setColor(const LLColor4 &color) { mColor = color; }
const LLColor4& getReadOnlyColor() const { return mReadOnlyColor; }
+ void setReadOnlyColor(const LLColor4& color) { mReadOnlyColor = color; }
BOOL isVisible() const;
void setVisible(BOOL is_visible);
- LLFontGL::ShadowType getShadowType() { return mDropShadow; }
+ LLFontGL::ShadowType getShadowType() const { return mDropShadow; }
void setFont(const LLFontGL* font);
const LLFontGL* getFont() const;
@@ -116,5 +117,6 @@ private:
};
typedef LLPointer<LLStyle> LLStyleSP;
+typedef LLPointer<const LLStyle> LLStyleConstSP;
#endif // LL_LLSTYLE_H
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index f11bc2173c..cafb7c45f6 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -35,7 +35,6 @@
#include "lltabcontainer.h"
#include "llfocusmgr.h"
-#include "llbutton.h"
#include "lllocalcliprect.h"
#include "llrect.h"
#include "llresizehandle.h"
@@ -96,6 +95,95 @@ public:
//----------------------------------------------------------------------------
+//============================================================================
+/*
+ * @file lltabcontainer.cpp
+ * @brief class implements LLButton with LLIconCtrl on it
+ */
+class LLCustomButtonIconCtrl : public LLButton
+{
+public:
+ struct Params
+ : public LLInitParam::Block<Params, LLButton::Params>
+ {
+ // LEFT, RIGHT, TOP, BOTTOM paddings of LLIconCtrl in this class has same value
+ Optional<S32> icon_ctrl_pad;
+
+ Params():
+ icon_ctrl_pad("icon_ctrl_pad", 1)
+ {}
+ };
+
+protected:
+ friend class LLUICtrlFactory;
+ LLCustomButtonIconCtrl(const Params& p):
+ LLButton(p),
+ mIcon(NULL),
+ mIconAlignment(LLFontGL::HCENTER),
+ mIconCtrlPad(p.icon_ctrl_pad)
+ {}
+
+public:
+
+ void updateLayout()
+ {
+ LLRect button_rect = getRect();
+ LLRect icon_rect = mIcon->getRect();
+
+ S32 icon_size = button_rect.getHeight() - 2*mIconCtrlPad;
+
+ switch(mIconAlignment)
+ {
+ case LLFontGL::LEFT:
+ icon_rect.setLeftTopAndSize(button_rect.mLeft + mIconCtrlPad, button_rect.mTop - mIconCtrlPad,
+ icon_size, icon_size);
+ setLeftHPad(icon_size + mIconCtrlPad * 2);
+ break;
+ case LLFontGL::HCENTER:
+ icon_rect.setLeftTopAndSize(button_rect.mRight - (button_rect.getWidth() + mIconCtrlPad - icon_size)/2, button_rect.mTop - mIconCtrlPad,
+ icon_size, icon_size);
+ setRightHPad(icon_size + mIconCtrlPad * 2);
+ break;
+ case LLFontGL::RIGHT:
+ icon_rect.setLeftTopAndSize(button_rect.mRight - mIconCtrlPad - icon_size, button_rect.mTop - mIconCtrlPad,
+ icon_size, icon_size);
+ setRightHPad(icon_size + mIconCtrlPad * 2);
+ break;
+ default:
+ break;
+ }
+ mIcon->setRect(icon_rect);
+ }
+
+ void setIcon(LLIconCtrl* icon, LLFontGL::HAlign alignment = LLFontGL::LEFT)
+ {
+ if(icon)
+ {
+ if(mIcon)
+ {
+ removeChild(mIcon);
+ mIcon->die();
+ }
+ mIcon = icon;
+ mIconAlignment = alignment;
+
+ addChild(mIcon);
+ updateLayout();
+ }
+ }
+
+ LLIconCtrl* getIconCtrl() const
+ {
+ return mIcon;
+ }
+
+private:
+ LLIconCtrl* mIcon;
+ LLFontGL::HAlign mIconAlignment;
+ S32 mIconCtrlPad;
+};
+//============================================================================
+
struct LLPlaceHolderPanel : public LLPanel
{
// create dummy param block to register with "placeholder" nane
@@ -127,7 +215,11 @@ LLTabContainer::Params::Params()
tab_padding_right("tab_padding_right"),
first_tab("first_tab"),
middle_tab("middle_tab"),
- last_tab("last_tab")
+ last_tab("last_tab"),
+ use_custom_icon_ctrl("use_custom_icon_ctrl", false),
+ tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0),
+ use_ellipses("use_ellipses"),
+ font_halign("halign")
{
name(std::string("tab_container"));
mouse_opaque = false;
@@ -162,7 +254,10 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
mFont(p.font),
mFirstTabParams(p.first_tab),
mMiddleTabParams(p.middle_tab),
- mLastTabParams(p.last_tab)
+ mLastTabParams(p.last_tab),
+ mCustomIconCtrlUsed(p.use_custom_icon_ctrl),
+ mTabIconCtrlPad(p.tab_icon_ctrl_pad),
+ mUseTabEllipses(p.use_ellipses)
{
static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0);
@@ -801,6 +896,10 @@ void LLTabContainer::update_images(LLTabTuple* tuple, TabParams params, LLTabCon
void LLTabContainer::addTabPanel(const TabPanelParams& panel)
{
LLPanel* child = panel.panel();
+
+ llassert(child);
+ if (!child) return;
+
const std::string& label = panel.label.isProvided()
? panel.label()
: panel.panel()->getLabel();
@@ -905,6 +1004,11 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
LLTextBox* textbox = NULL;
LLButton* btn = NULL;
+ LLCustomButtonIconCtrl::Params custom_btn_params;
+ {
+ custom_btn_params.icon_ctrl_pad(mTabIconCtrlPad);
+ }
+ LLButton::Params normal_btn_params;
if (placeholder)
{
@@ -924,7 +1028,9 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
{
if (mIsVertical)
{
- LLButton::Params p;
+ LLButton::Params& p = (mCustomIconCtrlUsed)?
+ custom_btn_params:normal_btn_params;
+
p.name(std::string("vert tab button"));
p.rect(btn_rect);
p.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT);
@@ -942,11 +1048,22 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
{
p.pad_left(indent);
}
- btn = LLUICtrlFactory::create<LLButton>(p);
+
+
+ if(mCustomIconCtrlUsed)
+ {
+ btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params);
+
+ }
+ else
+ {
+ btn = LLUICtrlFactory::create<LLButton>(p);
+ }
}
else
{
- LLButton::Params p;
+ LLButton::Params& p = (mCustomIconCtrlUsed)?
+ custom_btn_params:normal_btn_params;
p.name(std::string(child->getName()) + " tab");
p.rect(btn_rect);
p.click_callback.function(boost::bind(&LLTabContainer::onTabBtn, this, _2, child));
@@ -980,7 +1097,14 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
p.follows.flags = p.follows.flags() | FOLLOWS_BOTTOM;
}
-++ btn = LLUICtrlFactory::create<LLButton>(p);
+ if(mCustomIconCtrlUsed)
+ {
+ btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params);
+ }
+ else
+ {
+ btn = LLUICtrlFactory::create<LLButton>(p);
+ }
}
}
@@ -1373,8 +1497,8 @@ BOOL LLTabContainer::setTab(S32 which)
{
LLTabTuple* tuple = *iter;
BOOL is_selected = ( tuple == selected_tuple );
- tuple->mButton->setUseEllipses(TRUE);
- tuple->mButton->setHAlign(LLFontGL::LEFT);
+ tuple->mButton->setUseEllipses(mUseTabEllipses);
+ tuple->mButton->setHAlign(mFontHalign);
tuple->mTabPanel->setVisible( is_selected );
// tuple->mTabPanel->setFocus(is_selected); // not clear that we want to do this here.
tuple->mButton->setToggleState( is_selected );
@@ -1484,7 +1608,7 @@ void LLTabContainer::setTabImage(LLPanel* child, std::string image_name, const L
if( tuple )
{
tuple->mButton->setImageOverlay(image_name, LLFontGL::LEFT, color);
- reshape_tuple(tuple);
+ reshapeTuple(tuple);
}
}
@@ -1494,31 +1618,48 @@ void LLTabContainer::setTabImage(LLPanel* child, const LLUUID& image_id, const L
if( tuple )
{
tuple->mButton->setImageOverlay(image_id, LLFontGL::LEFT, color);
- reshape_tuple(tuple);
+ reshapeTuple(tuple);
}
}
-void LLTabContainer::reshape_tuple(LLTabTuple* tuple)
+void LLTabContainer::setTabImage(LLPanel* child, LLIconCtrl* icon)
+{
+ LLTabTuple* tuple = getTabByPanel(child);
+ LLCustomButtonIconCtrl* button;
+
+ if(tuple)
+ {
+ button = dynamic_cast<LLCustomButtonIconCtrl*>(tuple->mButton);
+ if(button)
+ {
+ button->setIcon(icon);
+ reshapeTuple(tuple);
+ }
+ }
+}
+
+void LLTabContainer::reshapeTuple(LLTabTuple* tuple)
{
static LLUICachedControl<S32> tab_padding ("UITabPadding", 0);
- static LLUICachedControl<S32> image_left_padding ("UIButtonImageLeftPadding", 4);
- static LLUICachedControl<S32> image_right_padding ("UIButtonImageRightPadding", 4);
- static LLUICachedControl<S32> image_top_padding ("UIButtonImageTopPadding", 2);
- static LLUICachedControl<S32> image_bottom_padding ("UIButtonImageBottomPadding", 2);
if (!mIsVertical)
{
- tuple->mButton->setImageOverlayLeftPad(image_left_padding);
- tuple->mButton->setImageOverlayRightPad(image_right_padding);
- tuple->mButton->setImageOverlayTopPad(image_top_padding);
- tuple->mButton->setImageOverlayBottomPad(image_bottom_padding);
+ S32 image_overlay_width = 0;
+ if(mCustomIconCtrlUsed)
+ {
+ LLCustomButtonIconCtrl* button = dynamic_cast<LLCustomButtonIconCtrl*>(tuple->mButton);
+ LLIconCtrl* icon_ctrl = button->getIconCtrl();
+ image_overlay_width = icon_ctrl ? icon_ctrl->getRect().getWidth() : 0;
+ }
+ else
+ {
+ image_overlay_width = tuple->mButton->getImageOverlay().notNull() ?
+ tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : 0;
+ }
// remove current width from total tab strip width
mTotalTabWidth -= tuple->mButton->getRect().getWidth();
- S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ?
- tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : 0;
-
tuple->mPadding = image_overlay_width;
tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth),
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index 2a55877d3c..50ec2679f6 100644
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -36,6 +36,8 @@
#include "llpanel.h"
#include "lltextbox.h"
#include "llframetimer.h"
+#include "lliconctrl.h"
+#include "llbutton.h"
class LLTabTuple;
@@ -90,6 +92,26 @@ public:
middle_tab,
last_tab;
+ /**
+ * Tab label horizontal alignment
+ */
+ Optional<LLFontGL::HAlign> font_halign;
+
+ /**
+ * Tab label ellipses
+ */
+ Optional<bool> use_ellipses;
+
+ /**
+ * Use LLCustomButtonIconCtrl or LLButton in LLTabTuple
+ */
+ Optional<bool> use_custom_icon_ctrl;
+
+ /**
+ * Paddings for LLIconCtrl in case of LLCustomButtonIconCtrl usage(use_custom_icon_ctrl = true)
+ */
+ Optional<S32> tab_icon_ctrl_pad;
+
Params();
};
@@ -173,6 +195,7 @@ public:
void setTabPanelFlashing(LLPanel* child, BOOL state);
void setTabImage(LLPanel* child, std::string img_name, const LLColor4& color = LLColor4::white);
void setTabImage(LLPanel* child, const LLUUID& img_id, const LLColor4& color = LLColor4::white);
+ void setTabImage(LLPanel* child, LLIconCtrl* icon);
void setTitle( const std::string& title );
const std::string getPanelTitle(S32 index);
@@ -228,7 +251,7 @@ private:
// updates tab button images given the tuple, tab position and the corresponding params
void update_images(LLTabTuple* tuple, TabParams params, LLTabContainer::TabPosition pos);
- void reshape_tuple(LLTabTuple* tuple);
+ void reshapeTuple(LLTabTuple* tuple);
// Variables
@@ -278,6 +301,10 @@ private:
TabParams mFirstTabParams;
TabParams mMiddleTabParams;
TabParams mLastTabParams;
+
+ bool mCustomIconCtrlUsed;
+ S32 mTabIconCtrlPad;
+ bool mUseTabEllipses;
};
#endif // LL_TABCONTAINER_H
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 978bd317e2..851fb966ec 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -185,7 +185,7 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
mWriteableBgColor(p.bg_writeable_color),
mReadOnlyBgColor(p.bg_readonly_color),
mFocusBgColor(p.bg_focus_color),
- mReflowNeeded(FALSE),
+ mReflowIndex(S32_MAX),
mCursorPos( 0 ),
mScrollNeeded(FALSE),
mDesiredXPixel(-1),
@@ -292,9 +292,13 @@ bool LLTextBase::truncate()
return did_truncate;
}
-LLStyle::Params LLTextBase::getDefaultStyle()
+LLStyle::Params LLTextBase::getDefaultStyleParams()
{
- return LLStyle::Params().color(mFgColor.get()).readonly_color(mReadOnlyFgColor.get()).font(mDefaultFont).drop_shadow(mFontShadow);
+ return LLStyle::Params()
+ .color(LLUIColor(&mFgColor))
+ .readonly_color(LLUIColor(&mReadOnlyFgColor))
+ .font(mDefaultFont)
+ .drop_shadow(mFontShadow);
}
void LLTextBase::onValueChange(S32 start, S32 end)
@@ -308,7 +312,6 @@ void LLTextBase::drawSelectionBackground()
// Draw selection even if we don't have keyboard focus for search/replace
if( hasSelection() && !mLineInfoList.empty())
{
- LLWString text = getWText();
std::vector<LLRect> selection_rects;
S32 selection_left = llmin( mSelectionStart, mSelectionEnd );
@@ -407,7 +410,7 @@ void LLTextBase::drawCursor()
&& gFocusMgr.getAppHasFocus()
&& !mReadOnly)
{
- LLWString wtext = getWText();
+ const LLWString &wtext = getWText();
const llwchar* text = wtext.c_str();
LLRect cursor_rect = getLocalRectFromDocIndex(mCursorPos);
@@ -493,7 +496,6 @@ void LLTextBase::drawCursor()
void LLTextBase::drawText()
{
- LLWString text = getWText();
const S32 text_len = getLength();
if( text_len <= 0 )
{
@@ -620,7 +622,8 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s
else
{
// create default editable segment to hold new text
- default_segment = new LLNormalTextSegment( new LLStyle(getDefaultStyle()), pos, pos + insert_len, *this);
+ LLStyleConstSP sp(new LLStyle(getDefaultStyleParams()));
+ default_segment = new LLNormalTextSegment( sp, pos, pos + insert_len, *this);
}
// shift remaining segments to right
@@ -657,7 +660,7 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s
}
onValueChange(pos, pos + insert_len);
- needsReflow();
+ needsReflow(pos);
return insert_len;
}
@@ -717,7 +720,7 @@ S32 LLTextBase::removeStringNoUndo(S32 pos, S32 length)
createDefaultSegment();
onValueChange(pos, pos);
- needsReflow();
+ needsReflow(pos);
return -length; // This will be wrong if someone calls removeStringNoUndo with an excessive length
}
@@ -733,7 +736,7 @@ S32 LLTextBase::overwriteCharNoUndo(S32 pos, llwchar wc)
getViewModel()->setDisplay(text);
onValueChange(pos, pos + 1);
- needsReflow();
+ needsReflow(pos);
return 1;
}
@@ -744,7 +747,8 @@ void LLTextBase::createDefaultSegment()
// ensures that there is always at least one segment
if (mSegments.empty())
{
- LLTextSegmentPtr default_segment = new LLNormalTextSegment( new LLStyle(getDefaultStyle()), 0, getLength() + 1, *this);
+ LLStyleConstSP sp(new LLStyle(getDefaultStyleParams()));
+ LLTextSegmentPtr default_segment = new LLNormalTextSegment( sp, 0, getLength() + 1, *this);
mSegments.insert(default_segment);
default_segment->linkToDocument(this);
}
@@ -758,15 +762,18 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert)
}
segment_set_t::iterator cur_seg_iter = getSegIterContaining(segment_to_insert->getStart());
+ S32 reflow_start_index = 0;
if (cur_seg_iter == mSegments.end())
{
mSegments.insert(segment_to_insert);
segment_to_insert->linkToDocument(this);
+ reflow_start_index = segment_to_insert->getStart();
}
else
{
LLTextSegmentPtr cur_segmentp = *cur_seg_iter;
+ reflow_start_index = cur_segmentp->getStart();
if (cur_segmentp->getStart() < segment_to_insert->getStart())
{
S32 old_segment_end = cur_segmentp->getEnd();
@@ -774,7 +781,8 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert)
cur_segmentp->setEnd(segment_to_insert->getStart());
// advance to next segment
// insert remainder of old segment
- LLTextSegmentPtr remainder_segment = new LLNormalTextSegment( cur_segmentp->getStyle(), segment_to_insert->getStart(), old_segment_end, *this);
+ LLStyleConstSP sp = cur_segmentp->getStyle();
+ LLTextSegmentPtr remainder_segment = new LLNormalTextSegment( sp, segment_to_insert->getStart(), old_segment_end, *this);
mSegments.insert(cur_seg_iter, remainder_segment);
remainder_segment->linkToDocument(this);
// insert new segment before remainder of old segment
@@ -824,7 +832,7 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert)
}
// layout potentially changed
- needsReflow();
+ needsReflow(reflow_start_index);
}
BOOL LLTextBase::handleMouseDown(S32 x, S32 y, MASK mask)
@@ -1010,16 +1018,6 @@ void LLTextBase::draw()
void LLTextBase::setColor( const LLColor4& c )
{
mFgColor = c;
- //textsegments have own style property ,
- //so we have to update it also to apply changes, EXT-4433
- for(segment_set_t::iterator it = mSegments.begin(); it != mSegments.end(); it++)
- {
- LLTextSegment* segment = it->get();
- if(segment)
- {
- segment->setColor(mFgColor);
- }
- }
}
//virtual
@@ -1029,6 +1027,16 @@ void LLTextBase::setReadOnlyColor(const LLColor4 &c)
}
//virtual
+void LLTextBase::handleVisibilityChange( BOOL new_visibility )
+{
+ if(!new_visibility && mPopupMenu)
+ {
+ mPopupMenu->hide();
+ }
+ LLUICtrl::handleVisibilityChange(new_visibility);
+}
+
+//virtual
void LLTextBase::setValue(const LLSD& value )
{
setText(value.asString());
@@ -1079,15 +1087,16 @@ S32 LLTextBase::getLeftOffset(S32 width)
static LLFastTimer::DeclareTimer FTM_TEXT_REFLOW ("Text Reflow");
-void LLTextBase::reflow(S32 start_index)
+void LLTextBase::reflow()
{
LLFastTimer ft(FTM_TEXT_REFLOW);
updateSegments();
- while(mReflowNeeded)
+ while(mReflowIndex < S32_MAX)
{
- mReflowNeeded = false;
+ S32 start_index = mReflowIndex;
+ mReflowIndex = S32_MAX;
// shrink document to minimum size (visible portion of text widget)
// to force inlined widgets with follows set to shrink
@@ -1119,7 +1128,6 @@ void LLTextBase::reflow(S32 start_index)
S32 line_start_index = 0;
const S32 text_available_width = mVisibleTextRect.getWidth() - mHPad; // reserve room for margin
S32 remaining_pixels = text_available_width;
- LLWString text(getWText());
S32 line_count = 0;
// find and erase line info structs starting at start_index and going to end of document
@@ -1129,6 +1137,7 @@ void LLTextBase::reflow(S32 start_index)
line_list_t::iterator iter = std::upper_bound(mLineInfoList.begin(), mLineInfoList.end(), start_index, line_end_compare());
line_start_index = iter->mDocIndexStart;
line_count = iter->mLineNum;
+ cur_top = iter->mRect.mTop;
getSegmentAndOffset(iter->mDocIndexStart, &seg_iter, &seg_offset);
mLineInfoList.erase(iter, mLineInfoList.end());
}
@@ -1436,10 +1445,10 @@ LLTextBase::segment_set_t::const_iterator LLTextBase::getSegIterContaining(S32 i
}
// Finds the text segment (if any) at the give local screen position
-LLTextSegmentPtr LLTextBase::getSegmentAtLocalPos( S32 x, S32 y )
+LLTextSegmentPtr LLTextBase::getSegmentAtLocalPos( S32 x, S32 y, bool hit_past_end_of_line)
{
// Find the cursor position at the requested local screen position
- S32 offset = getDocIndexFromLocalCoord( x, y, FALSE );
+ S32 offset = getDocIndexFromLocalCoord( x, y, FALSE, hit_past_end_of_line);
segment_set_t::iterator seg_iter = getSegIterContaining(offset);
if (seg_iter != mSegments.end())
{
@@ -1521,16 +1530,7 @@ std::string LLTextBase::getText() const
void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params)
{
LLStyle::Params style_params(input_params);
- style_params.fillFrom(getDefaultStyle());
-
- if (!style_params.font.isProvided())
- {
- style_params.font = mDefaultFont;
- }
- if (!style_params.drop_shadow.isProvided())
- {
- style_params.drop_shadow = mFontShadow;
- }
+ style_params.fillFrom(getDefaultStyleParams());
S32 part = (S32)LLTextParser::WHOLE;
if(mParseHTML)
@@ -1547,13 +1547,7 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
LLStyle::Params link_params = style_params;
link_params.color = match.getColor();
link_params.readonly_color = match.getColor();
- // apply font name from requested style_params
- std::string font_name = LLFontGL::nameFromFont(style_params.font());
- std::string font_size = LLFontGL::sizeFromFont(style_params.font());
- link_params.font.name(font_name);
- link_params.font.size(font_size);
link_params.font.style("UNDERLINE");
-
link_params.link_href = match.getUrl();
// output the text before the Url
@@ -1581,8 +1575,10 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
{
LLStyle::Params icon;
icon.image = image;
- // HACK: fix spacing of images and remove the fixed char spacing
- appendAndHighlightText(" ", prepend_newline, part, icon);
+ // Text will be replaced during rendering with the icon,
+ // but string cannot be empty or the segment won't be
+ // added (or drawn).
+ appendAndHighlightText(" ", prepend_newline, part, icon);
prepend_newline = false;
}
}
@@ -1630,9 +1626,15 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
}
}
-void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepend_newline, S32 highlight_part, const LLStyle::Params& stylep)
+void LLTextBase::needsReflow(S32 index)
+{
+ lldebugs << "reflow on object " << (void*)this << " index = " << mReflowIndex << ", new index = " << index << llendl;
+ mReflowIndex = llmin(mReflowIndex, index);
+}
+
+void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepend_newline, S32 highlight_part, const LLStyle::Params& style_params)
{
- if (new_text.empty()) return;
+ if (new_text.empty()) return;
// Save old state
S32 selection_start = mSelectionStart;
@@ -1650,7 +1652,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen
if (mParseHighlights && highlight)
{
- LLStyle::Params highlight_params = stylep;
+ LLStyle::Params highlight_params(style_params);
LLSD pieces = highlight->parsePartialLineHighlights(new_text, highlight_params.color(), (LLTextParser::EHighlightPosition)highlight_part);
for (S32 i = 0; i < pieces.size(); i++)
@@ -1670,7 +1672,8 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen
wide_text = utf8str_to_wstring(pieces[i]["text"].asString());
}
S32 cur_length = getLength();
- LLTextSegmentPtr segmentp = new LLNormalTextSegment(new LLStyle(highlight_params), cur_length, cur_length + wide_text.size(), *this);
+ LLStyleConstSP sp(new LLStyle(highlight_params));
+ LLTextSegmentPtr segmentp = new LLNormalTextSegment(sp, cur_length, cur_length + wide_text.size(), *this);
segment_vec_t segments;
segments.push_back(segmentp);
insertStringNoUndo(cur_length, wide_text, &segments);
@@ -1694,7 +1697,8 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen
segment_vec_t segments;
S32 segment_start = old_length;
S32 segment_end = old_length + wide_text.size();
- segments.push_back(new LLNormalTextSegment(new LLStyle(stylep), segment_start, segment_end, *this ));
+ LLStyleConstSP sp(new LLStyle(style_params));
+ segments.push_back(new LLNormalTextSegment(sp, segment_start, segment_end, *this ));
insertStringNoUndo(getLength(), wide_text, &segments);
}
@@ -1738,7 +1742,7 @@ void LLTextBase::replaceUrlLabel(const std::string &url,
for (it = mSegments.begin(); it != mSegments.end(); ++it)
{
LLTextSegment *seg = *it;
- const LLStyleSP style = seg->getStyle();
+ LLStyleConstSP style = seg->getStyle();
// update segment start/end length in case we replaced text earlier
S32 seg_length = seg->getEnd() - seg->getStart();
@@ -1775,7 +1779,7 @@ void LLTextBase::setWText(const LLWString& text)
setText(wstring_to_utf8str(text));
}
-LLWString LLTextBase::getWText() const
+const LLWString& LLTextBase::getWText() const
{
return getViewModel()->getDisplay();
}
@@ -1784,7 +1788,7 @@ LLWString LLTextBase::getWText() const
// will be put to its right. If round is false, the cursor will always be put to the
// character's left.
-S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round ) const
+S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, bool hit_past_end_of_line) const
{
// Figure out which line we're nearest to.
LLRect visible_region = getVisibleDocumentRect();
@@ -1813,7 +1817,7 @@ S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round
S32 text_width, text_height;
segmentp->getDimensions(line_seg_offset, segment_line_length, text_width, text_height);
if (local_x < start_x + text_width // cursor to left of right edge of text
- || segmentp->getEnd() >= line_iter->mDocIndexEnd - 1) // or this segment wraps to next line
+ || (hit_past_end_of_line && (segmentp->getEnd() >= line_iter->mDocIndexEnd - 1))) // or this segment wraps to next line
{
// Figure out which character we're nearest to.
S32 offset;
@@ -2231,9 +2235,9 @@ bool LLTextSegment::canEdit() const { return false; }
void LLTextSegment::unlinkFromDocument(LLTextBase*) {}
void LLTextSegment::linkToDocument(LLTextBase*) {}
const LLColor4& LLTextSegment::getColor() const { return LLColor4::white; }
-void LLTextSegment::setColor(const LLColor4 &color) {}
-const LLStyleSP LLTextSegment::getStyle() const {static LLStyleSP sp(new LLStyle()); return sp; }
-void LLTextSegment::setStyle(const LLStyleSP &style) {}
+//void LLTextSegment::setColor(const LLColor4 &color) {}
+LLStyleConstSP LLTextSegment::getStyle() const {static LLStyleConstSP sp(new LLStyle()); return sp; }
+void LLTextSegment::setStyle(LLStyleConstSP style) {}
void LLTextSegment::setToken( LLKeywordToken* token ) {}
LLKeywordToken* LLTextSegment::getToken() const { return NULL; }
void LLTextSegment::setToolTip( const std::string &msg ) {}
@@ -2258,7 +2262,7 @@ BOOL LLTextSegment::hasMouseCapture() { return FALSE; }
// LLNormalTextSegment
//
-LLNormalTextSegment::LLNormalTextSegment( const LLStyleSP& style, S32 start, S32 end, LLTextBase& editor )
+LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 end, LLTextBase& editor )
: LLTextSegment(start, end),
mStyle( style ),
mToken(NULL),
@@ -2269,7 +2273,7 @@ LLNormalTextSegment::LLNormalTextSegment( const LLStyleSP& style, S32 start, S32
LLUIImagePtr image = mStyle->getImage();
if (image.notNull())
{
- mImageLoadedConnection = image->addLoadedCallback(boost::bind(&LLTextBase::needsReflow, &mEditor));
+ mImageLoadedConnection = image->addLoadedCallback(boost::bind(&LLTextBase::needsReflow, &mEditor, start));
}
}
@@ -2295,14 +2299,21 @@ F32 LLNormalTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selec
{
if ( mStyle->isImage() && (start >= 0) && (end <= mEnd - mStart))
{
+ // ...for images, only render the image, not the underlying text,
+ // which is only a placeholder space
LLColor4 color = LLColor4::white % mEditor.getDrawContext().mAlpha;
LLUIImagePtr image = mStyle->getImage();
S32 style_image_height = image->getHeight();
S32 style_image_width = image->getWidth();
- // Center the image vertically
- S32 image_bottom = draw_rect.getCenterY() - (style_image_height/2);
+ // Text is drawn from the top of the draw_rect downward
+ S32 text_center = draw_rect.mTop - (mFontHeight / 2);
+ // Align image to center of text
+ S32 image_bottom = text_center - (style_image_height / 2);
image->draw(draw_rect.mLeft, image_bottom,
style_image_width, style_image_height, color);
+
+ const S32 IMAGE_HPAD = 3;
+ return draw_rect.mLeft + style_image_width + IMAGE_HPAD;
}
return drawClippedSegment( getStart() + start, getStart() + end, selection_start, selection_end, draw_rect);
@@ -2332,8 +2343,6 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele
LLColor4 color = (mEditor.getReadOnly() ? mStyle->getReadOnlyColor() : mStyle->getColor()) % alpha;
- font = mStyle->getFont();
-
if( selection_start > seg_start )
{
// Draw normally
@@ -2393,8 +2402,12 @@ BOOL LLNormalTextSegment::handleHover(S32 x, S32 y, MASK mask)
{
if (getStyle() && getStyle()->isLink())
{
- LLUI::getWindow()->setCursor(UI_CURSOR_HAND);
- return TRUE;
+ // Only process the click if it's actually in this segment, not to the right of the end-of-line.
+ if(mEditor.getSegmentAtLocalPos(x, y, false) == this)
+ {
+ LLUI::getWindow()->setCursor(UI_CURSOR_HAND);
+ return TRUE;
+ }
}
return FALSE;
}
@@ -2403,8 +2416,12 @@ BOOL LLNormalTextSegment::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
if (getStyle() && getStyle()->isLink())
{
- mEditor.createUrlContextMenu(x, y, getStyle()->getLinkHREF());
- return TRUE;
+ // Only process the click if it's actually in this segment, not to the right of the end-of-line.
+ if(mEditor.getSegmentAtLocalPos(x, y, false) == this)
+ {
+ mEditor.createUrlContextMenu(x, y, getStyle()->getLinkHREF());
+ return TRUE;
+ }
}
return FALSE;
}
@@ -2413,8 +2430,12 @@ BOOL LLNormalTextSegment::handleMouseDown(S32 x, S32 y, MASK mask)
{
if (getStyle() && getStyle()->isLink())
{
- // eat mouse down event on hyperlinks, so we get the mouse up
- return TRUE;
+ // Only process the click if it's actually in this segment, not to the right of the end-of-line.
+ if(mEditor.getSegmentAtLocalPos(x, y, false) == this)
+ {
+ // eat mouse down event on hyperlinks, so we get the mouse up
+ return TRUE;
+ }
}
return FALSE;
@@ -2424,8 +2445,12 @@ BOOL LLNormalTextSegment::handleMouseUp(S32 x, S32 y, MASK mask)
{
if (getStyle() && getStyle()->isLink())
{
- LLUrlAction::clickAction(getStyle()->getLinkHREF());
- return TRUE;
+ // Only process the click if it's actually in this segment, not to the right of the end-of-line.
+ if(mEditor.getSegmentAtLocalPos(x, y, false) == this)
+ {
+ LLUrlAction::clickAction(getStyle()->getLinkHREF());
+ return TRUE;
+ }
}
return FALSE;
@@ -2470,7 +2495,7 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt
if (num_chars > 0)
{
height = mFontHeight;
- LLWString text = mEditor.getWText();
+ const LLWString &text = mEditor.getWText();
// if last character is a newline, then return true, forcing line break
llwchar last_char = text[mStart + first_char + num_chars - 1];
if (last_char == '\n')
@@ -2497,7 +2522,7 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt
S32 LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const
{
- LLWString text = mEditor.getWText();
+ const LLWString &text = mEditor.getWText();
return mStyle->getFont()->charFromPixelOffset(text.c_str(), mStart + start_offset,
(F32)segment_local_x_coord,
F32_MAX,
@@ -2507,12 +2532,12 @@ S32 LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset,
S32 LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const
{
- LLWString text = mEditor.getWText();
+ const LLWString &text = mEditor.getWText();
LLUIImagePtr image = mStyle->getImage();
if( image.notNull())
{
- num_pixels -= image->getWidth();
+ num_pixels = llmax(0, num_pixels - image->getWidth());
}
// search for newline and if found, truncate there
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index dc3671eab1..5b24c63557 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -48,6 +48,7 @@
class LLContextMenu;
class LLTextSegment;
+class LLNormalTextSegment;
typedef LLPointer<LLTextSegment> LLTextSegmentPtr;
@@ -61,6 +62,9 @@ class LLTextBase
protected LLEditMenuHandler
{
public:
+ friend class LLTextSegment;
+ friend class LLNormalTextSegment;
+
struct LineSpacingParams : public LLInitParam::Choice<LineSpacingParams>
{
Alternative<F32> multiple;
@@ -122,6 +126,7 @@ public:
/*virtual*/ BOOL acceptsTextInput() const { return !mReadOnly; }
/*virtual*/ void setColor( const LLColor4& c );
virtual void setReadOnlyColor(const LLColor4 &c);
+ virtual void handleVisibilityChange( BOOL new_visibility );
/*virtual*/ void setValue(const LLSD& value );
/*virtual*/ LLTextViewModel* getViewModel() const;
@@ -145,11 +150,11 @@ public:
// wide-char versions
void setWText(const LLWString& text);
- LLWString getWText() const;
+ const LLWString& getWText() const;
void appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params = LLStyle::Params());
// force reflow of text
- void needsReflow() { mReflowNeeded = TRUE; }
+ void needsReflow(S32 index = 0);
S32 getLength() const { return getWText().length(); }
S32 getLineCount() const { return mLineInfoList.size(); }
@@ -164,7 +169,7 @@ public:
S32 getVPad() { return mVPad; }
S32 getHPad() { return mHPad; }
- S32 getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round ) const;
+ S32 getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, bool hit_past_end_of_line = true) const;
LLRect getLocalRectFromDocIndex(S32 pos) const;
LLRect getDocRectFromDocIndex(S32 pos) const;
@@ -185,7 +190,6 @@ public:
bool scrolledToEnd();
const LLFontGL* getDefaultFont() const { return mDefaultFont; }
- LLStyle::Params getDefaultStyle();
public:
// Fired when a URL link is clicked
@@ -275,14 +279,15 @@ protected:
// manage segments
void getSegmentAndOffset( S32 startpos, segment_set_t::const_iterator* seg_iter, S32* offsetp ) const;
void getSegmentAndOffset( S32 startpos, segment_set_t::iterator* seg_iter, S32* offsetp );
- LLTextSegmentPtr getSegmentAtLocalPos( S32 x, S32 y );
+ LLTextSegmentPtr getSegmentAtLocalPos( S32 x, S32 y, bool hit_past_end_of_line = true);
segment_set_t::iterator getSegIterContaining(S32 index);
segment_set_t::const_iterator getSegIterContaining(S32 index) const;
void clearSegments();
void createDefaultSegment();
virtual void updateSegments();
void insertSegment(LLTextSegmentPtr segment_to_insert);
-
+ LLStyle::Params getDefaultStyleParams();
+
// manage lines
S32 getLineStart( S32 line ) const;
S32 getLineEnd( S32 line ) const;
@@ -291,7 +296,7 @@ protected:
S32 getFirstVisibleLine() const;
std::pair<S32, S32> getVisibleLines(bool fully_visible = false);
S32 getLeftOffset(S32 width);
- void reflow(S32 start_index = 0);
+ void reflow();
// cursor
void updateCursorXPos();
@@ -361,7 +366,7 @@ protected:
class LLScrollContainer* mScroller;
// transient state
- bool mReflowNeeded; // need to reflow text because of change to text contents or display region
+ S32 mReflowIndex; // index at which to start reflow. S32_MAX indicates no reflow needed.
bool mScrollNeeded; // need to change scroll region because of change to cursor position
S32 mScrollIndex; // index of first character to keep visible in scroll region
@@ -389,9 +394,9 @@ public:
virtual void linkToDocument(class LLTextBase* editor);
virtual const LLColor4& getColor() const;
- virtual void setColor(const LLColor4 &color);
- virtual const LLStyleSP getStyle() const;
- virtual void setStyle(const LLStyleSP &style);
+ //virtual void setColor(const LLColor4 &color);
+ virtual LLStyleConstSP getStyle() const;
+ virtual void setStyle(LLStyleConstSP style);
virtual void setToken( LLKeywordToken* token );
virtual LLKeywordToken* getToken() const;
virtual void setToolTip(const std::string& tooltip);
@@ -427,7 +432,7 @@ protected:
class LLNormalTextSegment : public LLTextSegment
{
public:
- LLNormalTextSegment( const LLStyleSP& style, S32 start, S32 end, LLTextBase& editor );
+ LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 end, LLTextBase& editor );
LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible = TRUE);
~LLNormalTextSegment();
@@ -437,9 +442,8 @@ public:
/*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
/*virtual*/ bool canEdit() const { return true; }
/*virtual*/ const LLColor4& getColor() const { return mStyle->getColor(); }
- /*virtual*/ void setColor(const LLColor4 &color) { mStyle->setColor(color); }
- /*virtual*/ const LLStyleSP getStyle() const { return mStyle; }
- /*virtual*/ void setStyle(const LLStyleSP &style) { mStyle = style; }
+ /*virtual*/ LLStyleConstSP getStyle() const { return mStyle; }
+ /*virtual*/ void setStyle(LLStyleConstSP style) { mStyle = style; }
/*virtual*/ void setToken( LLKeywordToken* token ) { mToken = token; }
/*virtual*/ LLKeywordToken* getToken() const { return mToken; }
/*virtual*/ BOOL getToolTip( std::string& msg ) const;
@@ -457,7 +461,7 @@ protected:
protected:
class LLTextBase& mEditor;
- LLStyleSP mStyle;
+ LLStyleConstSP mStyle;
S32 mFontHeight;
LLKeywordToken* mToken;
std::string mTooltip;
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 06ba0d80e9..7d230f7d42 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -237,13 +237,17 @@ private:
///////////////////////////////////////////////////////////////////
LLTextEditor::Params::Params()
: default_text("default_text"),
+ prevalidate_callback("prevalidate_callback"),
embedded_items("embedded_items", false),
ignore_tab("ignore_tab", true),
handle_edit_keys_directly("handle_edit_keys_directly", false),
show_line_numbers("show_line_numbers", false),
default_color("default_color"),
- commit_on_focus_lost("commit_on_focus_lost", false)
-{}
+ commit_on_focus_lost("commit_on_focus_lost", false),
+ show_context_menu("show_context_menu")
+{
+ addSynonym(prevalidate_callback, "text_type");
+}
LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
LLTextBase(p),
@@ -258,7 +262,9 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
mMouseDownX(0),
mMouseDownY(0),
mTabsToNextField(p.ignore_tab),
- mContextMenu(NULL)
+ mPrevalidateFunc(p.prevalidate_callback()),
+ mContextMenu(NULL),
+ mShowContextMenu(p.show_context_menu)
{
mDefaultFont = p.font;
@@ -318,6 +324,17 @@ LLTextEditor::~LLTextEditor()
void LLTextEditor::setText(const LLStringExplicit &utf8str, const LLStyle::Params& input_params)
{
+ // validate incoming text if necessary
+ if (mPrevalidateFunc)
+ {
+ LLWString test_text = utf8str_to_wstring(utf8str);
+ if (!mPrevalidateFunc(test_text))
+ {
+ // not valid text, nothing to do
+ return;
+ }
+ }
+
blockUndo();
deselect();
@@ -720,7 +737,10 @@ BOOL LLTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
}
if (!LLTextBase::handleRightMouseDown(x, y, mask))
{
- showContextMenu(x, y);
+ if(getShowContextMenu())
+ {
+ showContextMenu(x, y);
+ }
}
return TRUE;
}
@@ -906,6 +926,21 @@ S32 LLTextEditor::execute( TextCmd* cmd )
// Push the new command is now on the top (front) of the undo stack.
mUndoStack.push_front(cmd);
mLastCmd = cmd;
+
+ bool need_to_rollback = mPrevalidateFunc
+ && !mPrevalidateFunc(getViewModel()->getDisplay());
+ if (need_to_rollback)
+ {
+ // get rid of this last command and clean up undo stack
+ undo();
+
+ // remove any evidence of this command from redo history
+ mUndoStack.pop_front();
+ delete cmd;
+
+ // failure, nothing changed
+ delta = 0;
+ }
}
else
{
@@ -1029,7 +1064,21 @@ S32 LLTextEditor::addChar(S32 pos, llwchar wc)
if (mLastCmd && mLastCmd->canExtend(pos))
{
S32 delta = 0;
+ if (mPrevalidateFunc)
+ {
+ // get a copy of current text contents
+ LLWString test_string(getViewModel()->getDisplay());
+
+ // modify text contents as if this addChar succeeded
+ llassert(pos <= (S32)test_string.size());
+ test_string.insert(pos, 1, wc);
+ if (!mPrevalidateFunc( test_string))
+ {
+ return 0;
+ }
+ }
mLastCmd->extendAndExecute(this, pos, wc, &delta);
+
return delta;
}
else
@@ -1285,8 +1334,6 @@ void LLTextEditor::cut()
gClipboard.copyFromSubstring( getWText(), left_pos, length, mSourceID );
deleteSelection( FALSE );
- needsReflow();
-
onKeyStroke();
}
@@ -1391,8 +1438,6 @@ void LLTextEditor::pasteHelper(bool is_primary)
setCursorPos(mCursorPos + insert(mCursorPos, clean_string, FALSE, LLTextSegmentPtr()));
deselect();
- needsReflow();
-
onKeyStroke();
}
@@ -1787,8 +1832,6 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )
if(text_may_have_changed)
{
- needsReflow();
-
onKeyStroke();
}
needsScroll();
@@ -1831,8 +1874,6 @@ BOOL LLTextEditor::handleUnicodeCharHere(llwchar uni_char)
// Most keystrokes will make the selection box go away, but not all will.
deselect();
- needsReflow();
-
onKeyStroke();
}
@@ -1891,8 +1932,6 @@ void LLTextEditor::doDelete()
}
onKeyStroke();
-
- needsReflow();
}
//----------------------------------------------------------------------------
@@ -1935,8 +1974,6 @@ void LLTextEditor::undo()
setCursorPos(pos);
- needsReflow();
-
onKeyStroke();
}
@@ -1979,8 +2016,6 @@ void LLTextEditor::redo()
setCursorPos(pos);
- needsReflow();
-
onKeyStroke();
}
@@ -2339,8 +2374,6 @@ void LLTextEditor::insertText(const std::string &new_text)
setCursorPos(mCursorPos + insert( mCursorPos, utf8str_to_wstring(new_text), FALSE, LLTextSegmentPtr() ));
- needsReflow();
-
setEnabled( enabled );
}
@@ -2363,8 +2396,6 @@ void LLTextEditor::appendWidget(const LLInlineViewSegment::Params& params, const
LLTextSegmentPtr segment = new LLInlineViewSegment(params, old_length, old_length + widget_wide_text.size());
insert(getLength(), widget_wide_text, FALSE, segment);
- needsReflow();
-
// Set the cursor and scroll position
if( selection_start != selection_end )
{
@@ -2389,52 +2420,6 @@ void LLTextEditor::appendWidget(const LLInlineViewSegment::Params& params, const
}
}
-
-void LLTextEditor::replaceUrlLabel(const std::string &url,
- const std::string &label)
-{
- // get the full (wide) text for the editor so we can change it
- LLWString text = getWText();
- LLWString wlabel = utf8str_to_wstring(label);
- bool modified = false;
- S32 seg_start = 0;
-
- // iterate through each segment looking for ones styled as links
- segment_set_t::iterator it;
- for (it = mSegments.begin(); it != mSegments.end(); ++it)
- {
- LLTextSegment *seg = *it;
- const LLStyleSP style = seg->getStyle();
-
- // update segment start/end length in case we replaced text earlier
- S32 seg_length = seg->getEnd() - seg->getStart();
- seg->setStart(seg_start);
- seg->setEnd(seg_start + seg_length);
-
- // if we find a link with our Url, then replace the label
- if (style->isLink() && style->getLinkHREF() == url)
- {
- S32 start = seg->getStart();
- S32 end = seg->getEnd();
- text = text.substr(0, start) + wlabel + text.substr(end, text.size() - end + 1);
- seg->setEnd(start + wlabel.size());
- modified = true;
- }
-
- // work out the character offset for the next segment
- seg_start = seg->getEnd();
- }
-
- // update the editor with the new (wide) text string
- if (modified)
- {
- getViewModel()->setDisplay(text);
- deselect();
- setCursorPos(mCursorPos);
- needsReflow();
- }
-}
-
void LLTextEditor::removeTextFromEnd(S32 num_chars)
{
if (num_chars <= 0) return;
@@ -2446,7 +2431,6 @@ void LLTextEditor::removeTextFromEnd(S32 num_chars)
mSelectionStart = llclamp(mSelectionStart, 0, len);
mSelectionEnd = llclamp(mSelectionEnd, 0, len);
- needsReflow();
needsScroll();
}
@@ -2505,8 +2489,6 @@ BOOL LLTextEditor::tryToRevertToPristineState()
i--;
}
}
-
- needsReflow();
}
return isPristine(); // TRUE => success
@@ -2542,9 +2524,9 @@ void LLTextEditor::loadKeywords(const std::string& filename,
void LLTextEditor::updateSegments()
{
- LLFastTimer ft(FTM_SYNTAX_HIGHLIGHTING);
- if (mKeywords.isLoaded())
+ if (mReflowIndex < S32_MAX && mKeywords.isLoaded())
{
+ LLFastTimer ft(FTM_SYNTAX_HIGHLIGHTING);
// HACK: No non-ascii keywords for now
segment_vec_t segment_list;
mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this);
@@ -2573,13 +2555,16 @@ void LLTextEditor::updateLinkSegments()
// if the link's label (what the user can edit) is a valid Url,
// then update the link's HREF to be the same as the label text.
// This lets users edit Urls in-place.
- LLStyleSP style = static_cast<LLStyleSP>(segment->getStyle());
+ LLStyleConstSP style = segment->getStyle();
+ LLStyleSP new_style(new LLStyle(*style));
LLWString url_label = wtext.substr(segment->getStart(), segment->getEnd()-segment->getStart());
if (LLUrlRegistry::instance().hasUrl(url_label))
{
std::string new_url = wstring_to_utf8str(url_label);
LLStringUtil::trim(new_url);
- style->setLinkHREF(new_url);
+ new_style->setLinkHREF(new_url);
+ LLStyleConstSP sp(new_style);
+ segment->setStyle(sp);
}
}
}
@@ -2678,7 +2663,6 @@ BOOL LLTextEditor::importBuffer(const char* buffer, S32 length )
startOfDoc();
deselect();
- needsReflow();
return success;
}
@@ -2782,7 +2766,6 @@ void LLTextEditor::updatePreedit(const LLWString &preedit_string,
mPreeditStandouts = preedit_standouts;
- needsReflow();
setCursorPos(insert_preedit_at + caret_position);
// Update of the preedit should be caused by some key strokes.
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 043dda8fa6..71d937b2c4 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -44,6 +44,7 @@
#include "lldarray.h"
#include "llviewborder.h" // for params
#include "lltextbase.h"
+#include "lltextvalidate.h"
#include "llpreeditor.h"
#include "llcontrol.h"
@@ -63,12 +64,14 @@ public:
struct Params : public LLInitParam::Block<Params, LLTextBase::Params>
{
Optional<std::string> default_text;
+ Optional<LLTextValidate::validate_func_t, LLTextValidate::ValidateTextNamedFuncs> prevalidate_callback;
Optional<bool> embedded_items,
ignore_tab,
handle_edit_keys_directly,
show_line_numbers,
- commit_on_focus_lost;
+ commit_on_focus_lost,
+ show_context_menu;
//colors
Optional<LLUIColor> default_color;
@@ -149,7 +152,6 @@ public:
void selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);
BOOL replaceText(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive, BOOL wrap = TRUE);
void replaceTextAll(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive);
- void replaceUrlLabel(const std::string &url, const std::string &label);
// Undo/redo stack
void blockUndo();
@@ -201,6 +203,9 @@ public:
const LLTextSegmentPtr getPreviousSegment() const;
void getSelectedSegments(segment_vec_t& segments) const;
+ void setShowContextMenu(bool show) { mShowContextMenu = show; }
+ bool getShowContextMenu() const { return mShowContextMenu; }
+
protected:
void showContextMenu(S32 x, S32 y);
void drawPreeditMarker();
@@ -320,6 +325,7 @@ private:
BOOL mTakesFocus;
BOOL mAllowEmbeddedItems;
+ bool mShowContextMenu;
LLUUID mSourceID;
@@ -330,6 +336,7 @@ private:
LLCoordGL mLastIMEPosition; // Last position of the IME editor
keystroke_signal_t mKeystrokeSignal;
+ LLTextValidate::validate_func_t mPrevalidateFunc;
LLContextMenu* mContextMenu;
}; // end class LLTextEditor
diff --git a/indra/llui/lltextvalidate.cpp b/indra/llui/lltextvalidate.cpp
new file mode 100644
index 0000000000..8b6bc5bd7d
--- /dev/null
+++ b/indra/llui/lltextvalidate.cpp
@@ -0,0 +1,302 @@
+/**
+ * @file lltextvalidate.cpp
+ * @brief Text validation helper functions
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+// Text editor widget to let users enter a single line.
+
+#include "linden_common.h"
+
+#include "lltextvalidate.h"
+#include "llresmgr.h" // for LLLocale
+
+namespace LLTextValidate
+{
+ void ValidateTextNamedFuncs::declareValues()
+ {
+ declare("ascii", validateASCII);
+ declare("float", validateFloat);
+ declare("int", validateInt);
+ declare("positive_s32", validatePositiveS32);
+ declare("non_negative_s32", validateNonNegativeS32);
+ declare("alpha_num", validateAlphaNum);
+ declare("alpha_num_space", validateAlphaNumSpace);
+ declare("ascii_printable_no_pipe", validateASCIIPrintableNoPipe);
+ declare("ascii_printable_no_space", validateASCIIPrintableNoSpace);
+ }
+
+ // Limits what characters can be used to [1234567890.-] with [-] only valid in the first position.
+ // Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for
+ // the simple reasons that intermediate states may be invalid even if the final result is valid.
+ //
+ bool validateFloat(const LLWString &str)
+ {
+ LLLocale locale(LLLocale::USER_LOCALE);
+
+ bool success = TRUE;
+ LLWString trimmed = str;
+ LLWStringUtil::trim(trimmed);
+ S32 len = trimmed.length();
+ if( 0 < len )
+ {
+ // May be a comma or period, depending on the locale
+ llwchar decimal_point = (llwchar)LLResMgr::getInstance()->getDecimalPoint();
+
+ S32 i = 0;
+
+ // First character can be a negative sign
+ if( '-' == trimmed[0] )
+ {
+ i++;
+ }
+
+ for( ; i < len; i++ )
+ {
+ if( (decimal_point != trimmed[i] ) && !LLStringOps::isDigit( trimmed[i] ) )
+ {
+ success = FALSE;
+ break;
+ }
+ }
+ }
+
+ return success;
+ }
+
+ // Limits what characters can be used to [1234567890-] with [-] only valid in the first position.
+ // Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for
+ // the simple reasons that intermediate states may be invalid even if the final result is valid.
+ //
+ bool validateInt(const LLWString &str)
+ {
+ LLLocale locale(LLLocale::USER_LOCALE);
+
+ bool success = TRUE;
+ LLWString trimmed = str;
+ LLWStringUtil::trim(trimmed);
+ S32 len = trimmed.length();
+ if( 0 < len )
+ {
+ S32 i = 0;
+
+ // First character can be a negative sign
+ if( '-' == trimmed[0] )
+ {
+ i++;
+ }
+
+ for( ; i < len; i++ )
+ {
+ if( !LLStringOps::isDigit( trimmed[i] ) )
+ {
+ success = FALSE;
+ break;
+ }
+ }
+ }
+
+ return success;
+ }
+
+ bool validatePositiveS32(const LLWString &str)
+ {
+ LLLocale locale(LLLocale::USER_LOCALE);
+
+ LLWString trimmed = str;
+ LLWStringUtil::trim(trimmed);
+ S32 len = trimmed.length();
+ bool success = TRUE;
+ if(0 < len)
+ {
+ if(('-' == trimmed[0]) || ('0' == trimmed[0]))
+ {
+ success = FALSE;
+ }
+ S32 i = 0;
+ while(success && (i < len))
+ {
+ if(!LLStringOps::isDigit(trimmed[i++]))
+ {
+ success = FALSE;
+ }
+ }
+ }
+ if (success)
+ {
+ S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10);
+ if (val <= 0)
+ {
+ success = FALSE;
+ }
+ }
+ return success;
+ }
+
+ bool validateNonNegativeS32(const LLWString &str)
+ {
+ LLLocale locale(LLLocale::USER_LOCALE);
+
+ LLWString trimmed = str;
+ LLWStringUtil::trim(trimmed);
+ S32 len = trimmed.length();
+ bool success = TRUE;
+ if(0 < len)
+ {
+ if('-' == trimmed[0])
+ {
+ success = FALSE;
+ }
+ S32 i = 0;
+ while(success && (i < len))
+ {
+ if(!LLStringOps::isDigit(trimmed[i++]))
+ {
+ success = FALSE;
+ }
+ }
+ }
+ if (success)
+ {
+ S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10);
+ if (val < 0)
+ {
+ success = FALSE;
+ }
+ }
+ return success;
+ }
+
+ bool validateAlphaNum(const LLWString &str)
+ {
+ LLLocale locale(LLLocale::USER_LOCALE);
+
+ bool rv = TRUE;
+ S32 len = str.length();
+ if(len == 0) return rv;
+ while(len--)
+ {
+ if( !LLStringOps::isAlnum((char)str[len]) )
+ {
+ rv = FALSE;
+ break;
+ }
+ }
+ return rv;
+ }
+
+ bool validateAlphaNumSpace(const LLWString &str)
+ {
+ LLLocale locale(LLLocale::USER_LOCALE);
+
+ bool rv = TRUE;
+ S32 len = str.length();
+ if(len == 0) return rv;
+ while(len--)
+ {
+ if(!(LLStringOps::isAlnum((char)str[len]) || (' ' == str[len])))
+ {
+ rv = FALSE;
+ break;
+ }
+ }
+ return rv;
+ }
+
+ // Used for most names of things stored on the server, due to old file-formats
+ // that used the pipe (|) for multiline text storage. Examples include
+ // inventory item names, parcel names, object names, etc.
+ bool validateASCIIPrintableNoPipe(const LLWString &str)
+ {
+ bool rv = TRUE;
+ S32 len = str.length();
+ if(len == 0) return rv;
+ while(len--)
+ {
+ llwchar wc = str[len];
+ if (wc < 0x20
+ || wc > 0x7f
+ || wc == '|')
+ {
+ rv = FALSE;
+ break;
+ }
+ if(!(wc == ' '
+ || LLStringOps::isAlnum((char)wc)
+ || LLStringOps::isPunct((char)wc) ) )
+ {
+ rv = FALSE;
+ break;
+ }
+ }
+ return rv;
+ }
+
+
+ // Used for avatar names
+ bool validateASCIIPrintableNoSpace(const LLWString &str)
+ {
+ bool rv = TRUE;
+ S32 len = str.length();
+ if(len == 0) return rv;
+ while(len--)
+ {
+ llwchar wc = str[len];
+ if (wc < 0x20
+ || wc > 0x7f
+ || LLStringOps::isSpace(wc))
+ {
+ rv = FALSE;
+ break;
+ }
+ if( !(LLStringOps::isAlnum((char)str[len]) ||
+ LLStringOps::isPunct((char)str[len]) ) )
+ {
+ rv = FALSE;
+ break;
+ }
+ }
+ return rv;
+ }
+
+ bool validateASCII(const LLWString &str)
+ {
+ bool rv = TRUE;
+ S32 len = str.length();
+ while(len--)
+ {
+ if (str[len] < 0x20 || str[len] > 0x7f)
+ {
+ rv = FALSE;
+ break;
+ }
+ }
+ return rv;
+ }
+}
diff --git a/indra/llui/lltextvalidate.h b/indra/llui/lltextvalidate.h
new file mode 100644
index 0000000000..ffb4e85e7c
--- /dev/null
+++ b/indra/llui/lltextvalidate.h
@@ -0,0 +1,63 @@
+/**
+ * @file lltextbase.h
+ * @author Martin Reddy
+ * @brief The base class of text box/editor, providing Url handling support
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLTEXTVALIDATE_H
+#define LL_LLTEXTVALIDATE_H
+
+#include "llstring.h"
+#include "llinitparam.h"
+#include <boost/function.hpp>
+
+namespace LLTextValidate
+{
+ typedef boost::function<BOOL (const LLWString &wstr)> validate_func_t;
+
+ struct ValidateTextNamedFuncs
+ : public LLInitParam::TypeValuesHelper<validate_func_t, ValidateTextNamedFuncs>
+ {
+ static void declareValues();
+ };
+
+ bool validateFloat(const LLWString &str );
+ bool validateInt(const LLWString &str );
+ bool validatePositiveS32(const LLWString &str);
+ bool validateNonNegativeS32(const LLWString &str);
+ bool validateAlphaNum(const LLWString &str );
+ bool validateAlphaNumSpace(const LLWString &str );
+ bool validateASCIIPrintableNoPipe(const LLWString &str);
+ bool validateASCIIPrintableNoSpace(const LLWString &str);
+ bool validateASCII(const LLWString &str);
+}
+
+
+#endif
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index 173fde8e76..ed7fd02e14 100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
@@ -129,12 +129,6 @@ BOOL LLToolTipView::handleScrollWheel( S32 x, S32 y, S32 clicks )
return FALSE;
}
-void LLToolTipView::onMouseLeave(S32 x, S32 y, MASK mask)
-{
- LLToolTipMgr::instance().blockToolTips();
-}
-
-
void LLToolTipView::drawStickyRect()
{
gl_rect_2d(LLToolTipMgr::instance().getMouseNearRect(), LLColor4::white, false);
diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h
index 7978b6a583..24e32b9b24 100644
--- a/indra/llui/lltooltip.h
+++ b/indra/llui/lltooltip.h
@@ -56,8 +56,6 @@ public:
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleScrollWheel( S32 x, S32 y, S32 clicks );
- /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
-
void drawStickyRect();
/*virtual*/ void draw();
@@ -129,7 +127,8 @@ private:
class LLInspector : public LLToolTip
{
public:
- struct Params : public LLInitParam::Block<Params, LLToolTip::Params> {};
+ struct Params : public LLInitParam::Block<Params, LLToolTip::Params>
+ {};
};
class LLToolTipMgr : public LLSingleton<LLToolTipMgr>
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 0e2e8bf8ed..2ba4478376 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1928,7 +1928,9 @@ namespace LLInitParam
blue("blue"),
alpha("alpha"),
control("")
- {}
+ {
+ setBlockFromValue();
+ }
void TypedParam<LLUIColor>::setValueFromBlock() const
{
@@ -1945,10 +1947,10 @@ namespace LLInitParam
void TypedParam<LLUIColor>::setBlockFromValue()
{
LLColor4 color = mData.mValue.get();
- red = color.mV[VRED];
- green = color.mV[VGREEN];
- blue = color.mV[VBLUE];
- alpha = color.mV[VALPHA];
+ red.set(color.mV[VRED], false);
+ green.set(color.mV[VGREEN], false);
+ blue.set(color.mV[VBLUE], false);
+ alpha.set(color.mV[VALPHA], false);
control.set("", false);
}
@@ -1973,7 +1975,9 @@ namespace LLInitParam
size("size"),
style("style")
{
+ setBlockFromValue();
addSynonym(name, "");
+ setBlockFromValue();
}
void TypedParam<const LLFontGL*>::setValueFromBlock() const
@@ -1999,9 +2003,9 @@ namespace LLInitParam
{
if (mData.mValue)
{
- name = LLFontGL::nameFromFont(mData.mValue);
- size = LLFontGL::sizeFromFont(mData.mValue);
- style = LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle());
+ name.set(LLFontGL::nameFromFont(mData.mValue), false);
+ size.set(LLFontGL::sizeFromFont(mData.mValue), false);
+ style.set(LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle()), false);
}
}
@@ -2013,7 +2017,9 @@ namespace LLInitParam
bottom("bottom"),
width("width"),
height("height")
- {}
+ {
+ setBlockFromValue();
+ }
void TypedParam<LLRect>::setValueFromBlock() const
{
@@ -2098,6 +2104,7 @@ namespace LLInitParam
x("x"),
y("y")
{
+ setBlockFromValue();
}
void TypedParam<LLCoordGL>::setValueFromBlock() const
@@ -2107,8 +2114,8 @@ namespace LLInitParam
void TypedParam<LLCoordGL>::setBlockFromValue()
{
- x = mData.mValue.mX;
- y = mData.mValue.mY;
+ x.set(mData.mValue.mX, false);
+ y.set(mData.mValue.mY, false);
}
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 5840e76f5c..af8d4ea03b 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -426,8 +426,8 @@ namespace LLInitParam
{
typedef BlockValue<const LLFontGL*> super_t;
public:
- Mandatory<std::string> name;
- Optional<std::string> size,
+ Optional<std::string> name,
+ size,
style;
TypedParam(BlockDescriptor& descriptor, const char* name, const LLFontGL* const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp
index 9be33483d0..1b64ef3abe 100644
--- a/indra/llui/lluicolortable.cpp
+++ b/indra/llui/lluicolortable.cpp
@@ -56,7 +56,7 @@ LLUIColorTable::Params::Params()
{
}
-void LLUIColorTable::insertFromParams(const Params& p)
+void LLUIColorTable::insertFromParams(const Params& p, string_color_map_t& table)
{
// this map will contain all color references after the following loop
typedef std::map<std::string, std::string> string_string_map_t;
@@ -69,14 +69,7 @@ void LLUIColorTable::insertFromParams(const Params& p)
ColorEntryParams color_entry = *it;
if(color_entry.color.value.isChosen())
{
- if(mUserSetColors.find(color_entry.name)!=mUserSetColors.end())
- {
- setColor(color_entry.name, color_entry.color.value);
- }
- else
- {
- setColor(color_entry.name, color_entry.color.value, mLoadedColors);
- }
+ setColor(color_entry.name, color_entry.color.value, table);
}
else
{
@@ -220,16 +213,16 @@ bool LLUIColorTable::loadFromSettings()
bool result = false;
std::string default_filename = gDirUtilp->getExpandedFilename(LL_PATH_DEFAULT_SKIN, "colors.xml");
- result |= loadFromFilename(default_filename);
+ result |= loadFromFilename(default_filename, mLoadedColors);
std::string current_filename = gDirUtilp->getExpandedFilename(LL_PATH_TOP_SKIN, "colors.xml");
if(current_filename != default_filename)
{
- result |= loadFromFilename(current_filename);
+ result |= loadFromFilename(current_filename, mLoadedColors);
}
std::string user_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "colors.xml");
- loadFromFilename(user_filename);
+ loadFromFilename(user_filename, mUserSetColors);
return result;
}
@@ -299,7 +292,7 @@ void LLUIColorTable::setColor(const std::string& name, const LLColor4& color, st
}
}
-bool LLUIColorTable::loadFromFilename(const std::string& filename)
+bool LLUIColorTable::loadFromFilename(const std::string& filename, string_color_map_t& table)
{
LLXMLNodePtr root;
@@ -320,7 +313,7 @@ bool LLUIColorTable::loadFromFilename(const std::string& filename)
if(params.validateBlock())
{
- insertFromParams(params);
+ insertFromParams(params, table);
}
else
{
@@ -330,3 +323,11 @@ bool LLUIColorTable::loadFromFilename(const std::string& filename)
return true;
}
+
+void LLUIColorTable::insertFromParams(const Params& p)
+{
+ insertFromParams(p, mUserSetColors);
+}
+
+// EOF
+
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index 59be0c4f9a..d401e5e724 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -45,6 +45,10 @@ class LLUIColor;
class LLUIColorTable : public LLSingleton<LLUIColorTable>
{
LOG_CLASS(LLUIColorTable);
+
+ // consider using sorted vector, can be much faster
+ typedef std::map<std::string, LLUIColor> string_color_map_t;
+
public:
struct ColorParams : LLInitParam::Choice<ColorParams>
{
@@ -91,10 +95,9 @@ public:
void saveUserSettings() const;
private:
- bool loadFromFilename(const std::string& filename);
+ bool loadFromFilename(const std::string& filename, string_color_map_t& table);
- // consider using sorted vector, can be much faster
- typedef std::map<std::string, LLColor4> string_color_map_t;
+ void insertFromParams(const Params& p, string_color_map_t& table);
void clearTable(string_color_map_t& table);
void setColor(const std::string& name, const LLColor4& color, string_color_map_t& table);
diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp
index 966d919dc7..8cd6460b66 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llui/lluiimage.cpp
@@ -182,11 +182,11 @@ namespace LLInitParam
{
if (mData.mValue == NULL)
{
- name = "none";
+ name.set("none", false);
}
else
{
- name = mData.mValue->getName();
+ name.set(mData.mValue->getName(), false);
}
}
diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h
index bdfc44262d..4ea0738026 100644
--- a/indra/llui/lluiimage.h
+++ b/indra/llui/lluiimage.h
@@ -109,6 +109,7 @@ namespace LLInitParam
TypedParam(BlockDescriptor& descriptor, const char* name, super_t::value_assignment_t value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)
: super_t(descriptor, name, value, func, min_count, max_count)
{
+ setBlockFromValue();
}
void setValueFromBlock() const;
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 58148ad2aa..20c939874b 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -49,7 +49,7 @@ LLUrlEntryBase::~LLUrlEntryBase()
{
}
-std::string LLUrlEntryBase::getUrl(const std::string &string)
+std::string LLUrlEntryBase::getUrl(const std::string &string) const
{
return escapeUrl(string);
}
@@ -89,7 +89,7 @@ std::string LLUrlEntryBase::escapeUrl(const std::string &url) const
return LLURI::escape(url, no_escape_chars, true);
}
-std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url)
+std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url) const
{
// return the label part from [http://www.example.org Label]
const char *text = url.c_str();
@@ -105,7 +105,7 @@ std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url)
return unescapeUrl(url.substr(start, url.size()-start-1));
}
-std::string LLUrlEntryBase::getUrlFromWikiLink(const std::string &string)
+std::string LLUrlEntryBase::getUrlFromWikiLink(const std::string &string) const
{
// return the url part from [http://www.example.org Label]
const char *text = string.c_str();
@@ -192,7 +192,7 @@ std::string LLUrlEntryHTTPLabel::getLabel(const std::string &url, const LLUrlLab
return getLabelFromWikiLink(url);
}
-std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string)
+std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string) const
{
return getUrlFromWikiLink(string);
}
@@ -217,7 +217,7 @@ std::string LLUrlEntryHTTPNoProtocol::getLabel(const std::string &url, const LLU
return unescapeUrl(url);
}
-std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string)
+std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) const
{
if (string.find("://") == std::string::npos)
{
@@ -232,7 +232,7 @@ std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string)
LLUrlEntrySLURL::LLUrlEntrySLURL()
{
// see http://slurl.com/about.php for details on the SLURL format
- mPattern = boost::regex("http://slurl.com/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*",
+ mPattern = boost::regex("http://(maps.secondlife.com|slurl.com)/secondlife/[^ /]+(/\\d+){0,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?",
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_slurl.xml";
mTooltip = LLTrans::getString("TooltipSLURL");
@@ -287,7 +287,7 @@ std::string LLUrlEntrySLURL::getLabel(const std::string &url, const LLUrlLabelCa
std::string LLUrlEntrySLURL::getLocation(const std::string &url) const
{
// return the part of the Url after slurl.com/secondlife/
- const std::string search_string = "secondlife";
+ const std::string search_string = "/secondlife";
size_t pos = url.find(search_string);
if (pos == std::string::npos)
{
@@ -597,7 +597,7 @@ std::string LLUrlEntrySLLabel::getLabel(const std::string &url, const LLUrlLabel
return getLabelFromWikiLink(url);
}
-std::string LLUrlEntrySLLabel::getUrl(const std::string &string)
+std::string LLUrlEntrySLLabel::getUrl(const std::string &string) const
{
return getUrlFromWikiLink(string);
}
@@ -648,14 +648,18 @@ std::string LLUrlEntryWorldMap::getLocation(const std::string &url) const
//
LLUrlEntryNoLink::LLUrlEntryNoLink()
{
- mPattern = boost::regex("<nolink>[^[:space:]<]+</nolink>",
+ mPattern = boost::regex("<nolink>[^<]*</nolink>",
boost::regex::perl|boost::regex::icase);
mDisabledLink = true;
}
-std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+std::string LLUrlEntryNoLink::getUrl(const std::string &url) const
{
// return the text between the <nolink> and </nolink> tags
return url.substr(8, url.size()-8-9);
}
+std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+{
+ return getUrl(url);
+}
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index 94455ac247..3abada0f24 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -71,7 +71,7 @@ public:
boost::regex getPattern() const { return mPattern; }
/// Return the url from a string that matched the regex
- virtual std::string getUrl(const std::string &string);
+ virtual std::string getUrl(const std::string &string) const;
/// Given a matched Url, return a label for the Url
virtual std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb) { return url; }
@@ -98,8 +98,8 @@ protected:
std::string getIDStringFromUrl(const std::string &url) const;
std::string escapeUrl(const std::string &url) const;
std::string unescapeUrl(const std::string &url) const;
- std::string getLabelFromWikiLink(const std::string &url);
- std::string getUrlFromWikiLink(const std::string &string);
+ std::string getLabelFromWikiLink(const std::string &url) const;
+ std::string getUrlFromWikiLink(const std::string &string) const;
void addObserver(const std::string &id, const std::string &url, const LLUrlLabelCallback &cb);
void callObservers(const std::string &id, const std::string &label);
@@ -135,7 +135,7 @@ class LLUrlEntryHTTPLabel : public LLUrlEntryBase
public:
LLUrlEntryHTTPLabel();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
- /*virtual*/ std::string getUrl(const std::string &string);
+ /*virtual*/ std::string getUrl(const std::string &string) const;
};
///
@@ -146,7 +146,7 @@ class LLUrlEntryHTTPNoProtocol : public LLUrlEntryBase
public:
LLUrlEntryHTTPNoProtocol();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
- /*virtual*/ std::string getUrl(const std::string &string);
+ /*virtual*/ std::string getUrl(const std::string &string) const;
};
///
@@ -256,7 +256,7 @@ class LLUrlEntrySLLabel : public LLUrlEntryBase
public:
LLUrlEntrySLLabel();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
- /*virtual*/ std::string getUrl(const std::string &string);
+ /*virtual*/ std::string getUrl(const std::string &string) const;
};
///
@@ -279,6 +279,7 @@ class LLUrlEntryNoLink : public LLUrlEntryBase
public:
LLUrlEntryNoLink();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
+ /*virtual*/ std::string getUrl(const std::string &string) const;
};
#endif
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index 55eb8950e9..722dbe41b3 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -132,7 +132,8 @@ static bool stringHasUrl(const std::string &text)
text.find(".com") != std::string::npos ||
text.find(".net") != std::string::npos ||
text.find(".edu") != std::string::npos ||
- text.find(".org") != std::string::npos);
+ text.find(".org") != std::string::npos ||
+ text.find("<nolink>") != std::string::npos);
}
bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LLUrlLabelCallback &cb)
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index f1b08c380b..63e627ceb5 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -1720,6 +1720,7 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const
for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
{
LLView* childp = *child_it;
+ llassert(childp);
if (childp->getName() == name)
{
return childp;
@@ -1731,6 +1732,7 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const
for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
{
LLView* childp = *child_it;
+ llassert(childp);
LLView* viewp = childp->findChildView(name, recurse);
if ( viewp )
{
diff --git a/indra/llui/llviewmodel.h b/indra/llui/llviewmodel.h
index c8a9b52cca..992365d44d 100644
--- a/indra/llui/llviewmodel.h
+++ b/indra/llui/llviewmodel.h
@@ -107,7 +107,8 @@ public:
// New functions
/// Get the stored value in string form
- LLWString getDisplay() const { return mDisplay; }
+ const LLWString& getDisplay() const { return mDisplay; }
+
/**
* Set the display string directly (see LLTextEditor). What the user is
* editing is actually the LLWString value rather than the underlying
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index bc97cf3df2..cbb303a059 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -52,9 +52,10 @@ namespace
namespace tut
{
- void testRegex(const std::string &testname, boost::regex regex,
+ void testRegex(const std::string &testname, LLUrlEntryBase &entry,
const char *text, const std::string &expected)
{
+ boost::regex regex = entry.getPattern();
std::string url = "";
boost::cmatch result;
bool found = boost::regex_search(text, result, regex);
@@ -62,7 +63,7 @@ namespace tut
{
S32 start = static_cast<U32>(result[0].first - text);
S32 end = static_cast<U32>(result[0].second - text);
- url = std::string(text+start, end-start);
+ url = entry.getUrl(std::string(text+start, end-start));
}
ensure_equals(testname, url, expected);
}
@@ -74,74 +75,73 @@ namespace tut
// test LLUrlEntryHTTP - standard http Urls
//
LLUrlEntryHTTP url;
- boost::regex r = url.getPattern();
- testRegex("no valid url", r,
+ testRegex("no valid url", url,
"htp://slurl.com/",
"");
- testRegex("simple http (1)", r,
+ testRegex("simple http (1)", url,
"http://slurl.com/",
"http://slurl.com/");
- testRegex("simple http (2)", r,
+ testRegex("simple http (2)", url,
"http://slurl.com",
"http://slurl.com");
- testRegex("simple http (3)", r,
+ testRegex("simple http (3)", url,
"http://slurl.com/about.php",
"http://slurl.com/about.php");
- testRegex("simple https", r,
+ testRegex("simple https", url,
"https://slurl.com/about.php",
"https://slurl.com/about.php");
- testRegex("http in text (1)", r,
+ testRegex("http in text (1)", url,
"XX http://slurl.com/ XX",
"http://slurl.com/");
- testRegex("http in text (2)", r,
+ testRegex("http in text (2)", url,
"XX http://slurl.com/about.php XX",
"http://slurl.com/about.php");
- testRegex("https in text", r,
+ testRegex("https in text", url,
"XX https://slurl.com/about.php XX",
"https://slurl.com/about.php");
- testRegex("two http urls", r,
+ testRegex("two http urls", url,
"XX http://slurl.com/about.php http://secondlife.com/ XX",
"http://slurl.com/about.php");
- testRegex("http url with port and username", r,
+ testRegex("http url with port and username", url,
"XX http://nobody@slurl.com:80/about.php http://secondlife.com/ XX",
"http://nobody@slurl.com:80/about.php");
- testRegex("http url with port, username, and query string", r,
+ testRegex("http url with port, username, and query string", url,
"XX http://nobody@slurl.com:80/about.php?title=hi%20there http://secondlife.com/ XX",
"http://nobody@slurl.com:80/about.php?title=hi%20there");
// note: terminating commas will be removed by LLUrlRegistry:findUrl()
- testRegex("http url with commas in middle and terminating", r,
+ testRegex("http url with commas in middle and terminating", url,
"XX http://slurl.com/?title=Hi,There, XX",
"http://slurl.com/?title=Hi,There,");
// note: terminating periods will be removed by LLUrlRegistry:findUrl()
- testRegex("http url with periods in middle and terminating", r,
+ testRegex("http url with periods in middle and terminating", url,
"XX http://slurl.com/index.php. XX",
"http://slurl.com/index.php.");
// DEV-19842: Closing parenthesis ")" breaks urls
- testRegex("http url with brackets (1)", r,
+ testRegex("http url with brackets (1)", url,
"XX http://en.wikipedia.org/wiki/JIRA_(software) XX",
"http://en.wikipedia.org/wiki/JIRA_(software)");
// DEV-19842: Closing parenthesis ")" breaks urls
- testRegex("http url with brackets (2)", r,
+ testRegex("http url with brackets (2)", url,
"XX http://jira.secondlife.com/secure/attachment/17990/eggy+avs+in+1.21.0+(93713)+public+nightly.jpg XX",
"http://jira.secondlife.com/secure/attachment/17990/eggy+avs+in+1.21.0+(93713)+public+nightly.jpg");
// DEV-10353: URLs in chat log terminated incorrectly when newline in chat
- testRegex("http url with newlines", r,
+ testRegex("http url with newlines", url,
"XX\nhttp://www.secondlife.com/\nXX",
"http://www.secondlife.com/");
}
@@ -153,39 +153,38 @@ namespace tut
// test LLUrlEntryHTTPLabel - wiki-style http Urls with labels
//
LLUrlEntryHTTPLabel url;
- boost::regex r = url.getPattern();
- testRegex("invalid wiki url [1]", r,
+ testRegex("invalid wiki url [1]", url,
"[http://www.example.org]",
"");
- testRegex("invalid wiki url [2]", r,
+ testRegex("invalid wiki url [2]", url,
"[http://www.example.org",
"");
- testRegex("invalid wiki url [3]", r,
+ testRegex("invalid wiki url [3]", url,
"[http://www.example.org Label",
"");
- testRegex("example.org with label (spaces)", r,
+ testRegex("example.org with label (spaces)", url,
"[http://www.example.org Text]",
- "[http://www.example.org Text]");
+ "http://www.example.org");
- testRegex("example.org with label (tabs)", r,
+ testRegex("example.org with label (tabs)", url,
"[http://www.example.org\t Text]",
- "[http://www.example.org\t Text]");
+ "http://www.example.org");
- testRegex("SL http URL with label", r,
+ testRegex("SL http URL with label", url,
"[http://www.secondlife.com/ Second Life]",
- "[http://www.secondlife.com/ Second Life]");
+ "http://www.secondlife.com/");
- testRegex("SL https URL with label", r,
+ testRegex("SL https URL with label", url,
"XXX [https://www.secondlife.com/ Second Life] YYY",
- "[https://www.secondlife.com/ Second Life]");
+ "https://www.secondlife.com/");
- testRegex("SL http URL with label", r,
+ testRegex("SL http URL with label", url,
"[http://www.secondlife.com/?test=Hi%20There Second Life]",
- "[http://www.secondlife.com/?test=Hi%20There Second Life]");
+ "http://www.secondlife.com/?test=Hi%20There");
}
template<> template<>
@@ -195,69 +194,68 @@ namespace tut
// test LLUrlEntrySLURL - second life URLs
//
LLUrlEntrySLURL url;
- boost::regex r = url.getPattern();
- testRegex("no valid slurl [1]", r,
+ testRegex("no valid slurl [1]", url,
"htp://slurl.com/secondlife/Ahern/50/50/50/",
"");
- testRegex("no valid slurl [2]", r,
+ testRegex("no valid slurl [2]", url,
"http://slurl.com/secondlife/",
"");
- testRegex("no valid slurl [3]", r,
+ testRegex("no valid slurl [3]", url,
"hhtp://slurl.com/secondlife/Ahern/50/FOO/50/",
"");
- testRegex("Ahern (50,50,50) [1]", r,
+ testRegex("Ahern (50,50,50) [1]", url,
"http://slurl.com/secondlife/Ahern/50/50/50/",
"http://slurl.com/secondlife/Ahern/50/50/50/");
- testRegex("Ahern (50,50,50) [2]", r,
+ testRegex("Ahern (50,50,50) [2]", url,
"XXX http://slurl.com/secondlife/Ahern/50/50/50/ XXX",
"http://slurl.com/secondlife/Ahern/50/50/50/");
- testRegex("Ahern (50,50,50) [3]", r,
+ testRegex("Ahern (50,50,50) [3]", url,
"XXX http://slurl.com/secondlife/Ahern/50/50/50 XXX",
"http://slurl.com/secondlife/Ahern/50/50/50");
- testRegex("Ahern (50,50,50) multicase", r,
+ testRegex("Ahern (50,50,50) multicase", url,
"XXX http://SLUrl.com/SecondLife/Ahern/50/50/50/ XXX",
"http://SLUrl.com/SecondLife/Ahern/50/50/50/");
- testRegex("Ahern (50,50) [1]", r,
+ testRegex("Ahern (50,50) [1]", url,
"XXX http://slurl.com/secondlife/Ahern/50/50/ XXX",
"http://slurl.com/secondlife/Ahern/50/50/");
- testRegex("Ahern (50,50) [2]", r,
+ testRegex("Ahern (50,50) [2]", url,
"XXX http://slurl.com/secondlife/Ahern/50/50 XXX",
"http://slurl.com/secondlife/Ahern/50/50");
- testRegex("Ahern (50)", r,
+ testRegex("Ahern (50)", url,
"XXX http://slurl.com/secondlife/Ahern/50 XXX",
"http://slurl.com/secondlife/Ahern/50");
- testRegex("Ahern", r,
+ testRegex("Ahern", url,
"XXX http://slurl.com/secondlife/Ahern/ XXX",
"http://slurl.com/secondlife/Ahern/");
- testRegex("Ahern SLURL with title", r,
+ testRegex("Ahern SLURL with title", url,
"XXX http://slurl.com/secondlife/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE! XXX",
"http://slurl.com/secondlife/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE!");
- testRegex("Ahern SLURL with msg", r,
+ testRegex("Ahern SLURL with msg", url,
"XXX http://slurl.com/secondlife/Ahern/50/50/50/?msg=Your%20text%20here. XXX",
"http://slurl.com/secondlife/Ahern/50/50/50/?msg=Your%20text%20here.");
// DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat
- testRegex("SLURL with brackets", r,
+ testRegex("SLURL with brackets", url,
"XXX http://slurl.com/secondlife/Burning%20Life%20(Hyper)/27/210/30 XXX",
"http://slurl.com/secondlife/Burning%20Life%20(Hyper)/27/210/30");
// DEV-35459: SLURLs and teleport Links not parsed properly
- testRegex("SLURL with quote", r,
+ testRegex("SLURL with quote", url,
"XXX http://slurl.com/secondlife/A'ksha%20Oasis/41/166/701 XXX",
- "http://slurl.com/secondlife/A'ksha%20Oasis/41/166/701");
+ "http://slurl.com/secondlife/A%27ksha%20Oasis/41/166/701");
}
template<> template<>
@@ -267,25 +265,24 @@ namespace tut
// test LLUrlEntryAgent - secondlife://app/agent Urls
//
LLUrlEntryAgent url;
- boost::regex r = url.getPattern();
- testRegex("Invalid Agent Url", r,
+ testRegex("Invalid Agent Url", url,
"secondlife:///app/agent/0e346d8b-4433-4d66-XXXX-fd37083abc4c/about",
"");
- testRegex("Agent Url ", r,
+ testRegex("Agent Url ", url,
"secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about",
"secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
- testRegex("Agent Url in text", r,
+ testRegex("Agent Url in text", url,
"XXX secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about XXX",
"secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
- testRegex("Agent Url multicase", r,
+ testRegex("Agent Url multicase", url,
"XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About XXX",
"secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About");
- testRegex("Agent Url alternate command", r,
+ testRegex("Agent Url alternate command", url,
"XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar",
"secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar");
@@ -298,25 +295,24 @@ namespace tut
// test LLUrlEntryGroup - secondlife://app/group Urls
//
LLUrlEntryGroup url;
- boost::regex r = url.getPattern();
- testRegex("Invalid Group Url", r,
+ testRegex("Invalid Group Url", url,
"secondlife:///app/group/00005ff3-4044-c79f-XXXX-fb28ae0df991/about",
"");
- testRegex("Group Url ", r,
+ testRegex("Group Url ", url,
"secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about",
"secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about");
- testRegex("Group Url ", r,
+ testRegex("Group Url ", url,
"secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/inspect",
"secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/inspect");
- testRegex("Group Url in text", r,
+ testRegex("Group Url in text", url,
"XXX secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about XXX",
"secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about");
- testRegex("Group Url multicase", r,
+ testRegex("Group Url multicase", url,
"XXX secondlife:///APP/Group/00005FF3-4044-c79f-9de8-fb28ae0df991/About XXX",
"secondlife:///APP/Group/00005FF3-4044-c79f-9de8-fb28ae0df991/About");
}
@@ -328,45 +324,44 @@ namespace tut
// test LLUrlEntryPlace - secondlife://<location> URLs
//
LLUrlEntryPlace url;
- boost::regex r = url.getPattern();
- testRegex("no valid slurl [1]", r,
+ testRegex("no valid slurl [1]", url,
"secondlife://Ahern/FOO/50/",
"");
- testRegex("Ahern (50,50,50) [1]", r,
+ testRegex("Ahern (50,50,50) [1]", url,
"secondlife://Ahern/50/50/50/",
"secondlife://Ahern/50/50/50/");
- testRegex("Ahern (50,50,50) [2]", r,
+ testRegex("Ahern (50,50,50) [2]", url,
"XXX secondlife://Ahern/50/50/50/ XXX",
"secondlife://Ahern/50/50/50/");
- testRegex("Ahern (50,50,50) [3]", r,
+ testRegex("Ahern (50,50,50) [3]", url,
"XXX secondlife://Ahern/50/50/50 XXX",
"secondlife://Ahern/50/50/50");
- testRegex("Ahern (50,50,50) multicase", r,
+ testRegex("Ahern (50,50,50) multicase", url,
"XXX SecondLife://Ahern/50/50/50/ XXX",
"SecondLife://Ahern/50/50/50/");
- testRegex("Ahern (50,50) [1]", r,
+ testRegex("Ahern (50,50) [1]", url,
"XXX secondlife://Ahern/50/50/ XXX",
"secondlife://Ahern/50/50/");
- testRegex("Ahern (50,50) [2]", r,
+ testRegex("Ahern (50,50) [2]", url,
"XXX secondlife://Ahern/50/50 XXX",
"secondlife://Ahern/50/50");
// DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat
- testRegex("SLURL with brackets", r,
+ testRegex("SLURL with brackets", url,
"XXX secondlife://Burning%20Life%20(Hyper)/27/210/30 XXX",
"secondlife://Burning%20Life%20(Hyper)/27/210/30");
// DEV-35459: SLURLs and teleport Links not parsed properly
- testRegex("SLURL with quote", r,
+ testRegex("SLURL with quote", url,
"XXX secondlife://A'ksha%20Oasis/41/166/701 XXX",
- "secondlife://A'ksha%20Oasis/41/166/701");
+ "secondlife://A%27ksha%20Oasis/41/166/701");
}
template<> template<>
@@ -376,21 +371,20 @@ namespace tut
// test LLUrlEntryParcel - secondlife://app/parcel Urls
//
LLUrlEntryParcel url;
- boost::regex r = url.getPattern();
- testRegex("Invalid Classified Url", r,
+ testRegex("Invalid Classified Url", url,
"secondlife:///app/parcel/0000060e-4b39-e00b-XXXX-d98b1934e3a8/about",
"");
- testRegex("Classified Url ", r,
+ testRegex("Classified Url ", url,
"secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about",
"secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about");
- testRegex("Classified Url in text", r,
+ testRegex("Classified Url in text", url,
"XXX secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about XXX",
"secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about");
- testRegex("Classified Url multicase", r,
+ testRegex("Classified Url multicase", url,
"XXX secondlife:///APP/Parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/About XXX",
"secondlife:///APP/Parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/About");
}
@@ -401,73 +395,72 @@ namespace tut
// test LLUrlEntryTeleport - secondlife://app/teleport URLs
//
LLUrlEntryTeleport url;
- boost::regex r = url.getPattern();
- testRegex("no valid teleport [1]", r,
+ testRegex("no valid teleport [1]", url,
"http://slurl.com/secondlife/Ahern/50/50/50/",
"");
- testRegex("no valid teleport [2]", r,
+ testRegex("no valid teleport [2]", url,
"secondlife:///app/teleport/",
"");
- testRegex("no valid teleport [3]", r,
+ testRegex("no valid teleport [3]", url,
"second-life:///app/teleport/Ahern/50/50/50/",
"");
- testRegex("no valid teleport [3]", r,
+ testRegex("no valid teleport [3]", url,
"hhtp://slurl.com/secondlife/Ahern/50/FOO/50/",
"");
- testRegex("Ahern (50,50,50) [1]", r,
+ testRegex("Ahern (50,50,50) [1]", url,
"secondlife:///app/teleport/Ahern/50/50/50/",
"secondlife:///app/teleport/Ahern/50/50/50/");
- testRegex("Ahern (50,50,50) [2]", r,
+ testRegex("Ahern (50,50,50) [2]", url,
"XXX secondlife:///app/teleport/Ahern/50/50/50/ XXX",
"secondlife:///app/teleport/Ahern/50/50/50/");
- testRegex("Ahern (50,50,50) [3]", r,
+ testRegex("Ahern (50,50,50) [3]", url,
"XXX secondlife:///app/teleport/Ahern/50/50/50 XXX",
"secondlife:///app/teleport/Ahern/50/50/50");
- testRegex("Ahern (50,50,50) multicase", r,
+ testRegex("Ahern (50,50,50) multicase", url,
"XXX secondlife:///app/teleport/Ahern/50/50/50/ XXX",
"secondlife:///app/teleport/Ahern/50/50/50/");
- testRegex("Ahern (50,50) [1]", r,
+ testRegex("Ahern (50,50) [1]", url,
"XXX secondlife:///app/teleport/Ahern/50/50/ XXX",
"secondlife:///app/teleport/Ahern/50/50/");
- testRegex("Ahern (50,50) [2]", r,
+ testRegex("Ahern (50,50) [2]", url,
"XXX secondlife:///app/teleport/Ahern/50/50 XXX",
"secondlife:///app/teleport/Ahern/50/50");
- testRegex("Ahern (50)", r,
+ testRegex("Ahern (50)", url,
"XXX secondlife:///app/teleport/Ahern/50 XXX",
"secondlife:///app/teleport/Ahern/50");
- testRegex("Ahern", r,
+ testRegex("Ahern", url,
"XXX secondlife:///app/teleport/Ahern/ XXX",
"secondlife:///app/teleport/Ahern/");
- testRegex("Ahern teleport with title", r,
+ testRegex("Ahern teleport with title", url,
"XXX secondlife:///app/teleport/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE! XXX",
"secondlife:///app/teleport/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE!");
- testRegex("Ahern teleport with msg", r,
+ testRegex("Ahern teleport with msg", url,
"XXX secondlife:///app/teleport/Ahern/50/50/50/?msg=Your%20text%20here. XXX",
"secondlife:///app/teleport/Ahern/50/50/50/?msg=Your%20text%20here.");
// DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat
- testRegex("Teleport with brackets", r,
+ testRegex("Teleport with brackets", url,
"XXX secondlife:///app/teleport/Burning%20Life%20(Hyper)/27/210/30 XXX",
"secondlife:///app/teleport/Burning%20Life%20(Hyper)/27/210/30");
// DEV-35459: SLURLs and teleport Links not parsed properly
- testRegex("Teleport url with quote", r,
+ testRegex("Teleport url with quote", url,
"XXX secondlife:///app/teleport/A'ksha%20Oasis/41/166/701 XXX",
- "secondlife:///app/teleport/A'ksha%20Oasis/41/166/701");
+ "secondlife:///app/teleport/A%27ksha%20Oasis/41/166/701");
}
template<> template<>
@@ -477,33 +470,32 @@ namespace tut
// test LLUrlEntrySL - general secondlife:// URLs
//
LLUrlEntrySL url;
- boost::regex r = url.getPattern();
- testRegex("no valid slapp [1]", r,
+ testRegex("no valid slapp [1]", url,
"http:///app/",
"");
- testRegex("valid slapp [1]", r,
+ testRegex("valid slapp [1]", url,
"secondlife:///app/",
"secondlife:///app/");
- testRegex("valid slapp [2]", r,
+ testRegex("valid slapp [2]", url,
"secondlife:///app/teleport/Ahern/50/50/50/",
"secondlife:///app/teleport/Ahern/50/50/50/");
- testRegex("valid slapp [3]", r,
+ testRegex("valid slapp [3]", url,
"secondlife:///app/foo",
"secondlife:///app/foo");
- testRegex("valid slapp [4]", r,
+ testRegex("valid slapp [4]", url,
"secondlife:///APP/foo?title=Hi%20There",
"secondlife:///APP/foo?title=Hi%20There");
- testRegex("valid slapp [5]", r,
+ testRegex("valid slapp [5]", url,
"secondlife://host/app/",
"secondlife://host/app/");
- testRegex("valid slapp [6]", r,
+ testRegex("valid slapp [6]", url,
"secondlife://host:8080/foo/bar",
"secondlife://host:8080/foo/bar");
}
@@ -515,35 +507,34 @@ namespace tut
// test LLUrlEntrySLLabel - general secondlife:// URLs with labels
//
LLUrlEntrySLLabel url;
- boost::regex r = url.getPattern();
- testRegex("invalid wiki url [1]", r,
+ testRegex("invalid wiki url [1]", url,
"[secondlife:///app/]",
"");
- testRegex("invalid wiki url [2]", r,
+ testRegex("invalid wiki url [2]", url,
"[secondlife:///app/",
"");
- testRegex("invalid wiki url [3]", r,
+ testRegex("invalid wiki url [3]", url,
"[secondlife:///app/ Label",
"");
- testRegex("agent slurl with label (spaces)", r,
+ testRegex("agent slurl with label (spaces)", url,
"[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about Text]",
- "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about Text]");
+ "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
- testRegex("agent slurl with label (tabs)", r,
+ testRegex("agent slurl with label (tabs)", url,
"[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about\t Text]",
- "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about\t Text]");
+ "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
- testRegex("agent slurl with label", r,
+ testRegex("agent slurl with label", url,
"[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about FirstName LastName]",
- "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about FirstName LastName]");
+ "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
- testRegex("teleport slurl with label", r,
+ testRegex("teleport slurl with label", url,
"XXX [secondlife:///app/teleport/Ahern/50/50/50/ Teleport to Ahern] YYY",
- "[secondlife:///app/teleport/Ahern/50/50/50/ Teleport to Ahern]");
+ "secondlife:///app/teleport/Ahern/50/50/50/");
}
template<> template<>
@@ -553,70 +544,98 @@ namespace tut
// test LLUrlEntryHTTPNoProtocol - general URLs without a protocol
//
LLUrlEntryHTTPNoProtocol url;
- boost::regex r = url.getPattern();
- testRegex("naked .com URL", r,
+ testRegex("naked .com URL", url,
"see google.com",
- "google.com");
+ "http://google.com");
- testRegex("naked .org URL", r,
+ testRegex("naked .org URL", url,
"see en.wikipedia.org for details",
- "en.wikipedia.org");
+ "http://en.wikipedia.org");
- testRegex("naked .net URL", r,
+ testRegex("naked .net URL", url,
"example.net",
- "example.net");
+ "http://example.net");
- testRegex("naked .edu URL (2 instances)", r,
+ testRegex("naked .edu URL (2 instances)", url,
"MIT web site is at web.mit.edu and also www.mit.edu",
- "web.mit.edu");
+ "http://web.mit.edu");
- testRegex("don't match e-mail addresses", r,
+ testRegex("don't match e-mail addresses", url,
"test@lindenlab.com",
"");
- testRegex(".com URL with path", r,
+ testRegex(".com URL with path", url,
"see secondlife.com/status for grid status",
- "secondlife.com/status");
+ "http://secondlife.com/status");
- testRegex(".com URL with port", r,
+ testRegex(".com URL with port", url,
"secondlife.com:80",
- "secondlife.com:80");
+ "http://secondlife.com:80");
- testRegex(".com URL with port and path", r,
+ testRegex(".com URL with port and path", url,
"see secondlife.com:80/status",
- "secondlife.com:80/status");
+ "http://secondlife.com:80/status");
- testRegex("www.*.com URL with port and path", r,
+ testRegex("www.*.com URL with port and path", url,
"see www.secondlife.com:80/status",
- "www.secondlife.com:80/status");
+ "http://www.secondlife.com:80/status");
- testRegex("invalid .com URL [1]", r,
+ testRegex("invalid .com URL [1]", url,
"..com",
"");
- testRegex("invalid .com URL [2]", r,
+ testRegex("invalid .com URL [2]", url,
"you.come",
"");
- testRegex("invalid .com URL [3]", r,
+ testRegex("invalid .com URL [3]", url,
"recommended",
"");
- testRegex("invalid .edu URL", r,
+ testRegex("invalid .edu URL", url,
"hi there scheduled maitenance has begun",
"");
- testRegex("invalid .net URL", r,
+ testRegex("invalid .net URL", url,
"foo.netty",
"");
- testRegex("XML tags around URL [1]", r,
+ testRegex("XML tags around URL [1]", url,
"<foo>secondlife.com</foo>",
- "secondlife.com");
+ "http://secondlife.com");
- testRegex("XML tags around URL [2]", r,
+ testRegex("XML tags around URL [2]", url,
"<foo>secondlife.com/status?bar=1</foo>",
- "secondlife.com/status?bar=1");
+ "http://secondlife.com/status?bar=1");
+ }
+
+ template<> template<>
+ void object::test<12>()
+ {
+ //
+ // test LLUrlEntryNoLink - turn off hyperlinking
+ //
+ LLUrlEntryNoLink url;
+
+ testRegex("<nolink> [1]", url,
+ "<nolink>google.com</nolink>",
+ "google.com");
+
+ testRegex("<nolink> [2]", url,
+ "<nolink>google.com",
+ "");
+
+ testRegex("<nolink> [3]", url,
+ "google.com</nolink>",
+ "");
+
+ testRegex("<nolink> [4]", url,
+ "<nolink>Hello World</nolink>",
+ "Hello World");
+
+ testRegex("<nolink> [5]", url,
+ "<nolink>My Object</nolink>",
+ "My Object");
}
}
diff --git a/indra/llvfs/llpidlock.cpp b/indra/llvfs/llpidlock.cpp
index 95e3692e10..28cee29405 100755
--- a/indra/llvfs/llpidlock.cpp
+++ b/indra/llvfs/llpidlock.cpp
@@ -68,8 +68,12 @@ class LLPidLockFile
{
public:
LLPidLockFile( ) :
- mSaving(FALSE), mWaiting(FALSE),
- mClean(TRUE), mPID(getpid())
+ mAutosave(false),
+ mSaving(false),
+ mWaiting(false),
+ mPID(getpid()),
+ mNameTable(NULL),
+ mClean(true)
{
mLockName = gDirUtilp->getTempDir() + gDirUtilp->getDirDelimiter() + "savelock";
}
diff --git a/indra/llvfs/llvfile.h b/indra/llvfs/llvfile.h
index 5f69a41040..c3bca8c737 100644
--- a/indra/llvfs/llvfile.h
+++ b/indra/llvfs/llvfile.h
@@ -88,7 +88,6 @@ protected:
S32 mMode;
LLVFS *mVFS;
F32 mPriority;
- BOOL mOnReadQueue;
S32 mBytesRead;
LLVFSThread::handle_t mHandle;
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 7b1cab696f..bf3233f386 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -12,6 +12,7 @@ project(llwindow)
include(00-Common)
include(DirectX)
+include(DragDrop)
include(LLCommon)
include(LLImage)
include(LLMath)
@@ -102,14 +103,17 @@ if (WINDOWS)
llwindowwin32.cpp
lldxhardware.cpp
llkeyboardwin32.cpp
+ lldragdropwin32.cpp
)
list(APPEND llwindow_HEADER_FILES
llwindowwin32.h
lldxhardware.h
llkeyboardwin32.h
+ lldragdropwin32.h
)
list(APPEND llwindow_LINK_LIBRARIES
comdlg32 # Common Dialogs for ChooseColor
+ ole32
)
endif (WINDOWS)
diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
new file mode 100644
index 0000000000..b85960be10
--- /dev/null
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -0,0 +1,371 @@
+/**
+ * @file lldragdrop32.cpp
+ * @brief Handler for Windows specific drag and drop (OS to client) code
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#if LL_WINDOWS
+
+#if LL_OS_DRAGDROP_ENABLED
+
+#include "linden_common.h"
+
+#include "llwindowwin32.h"
+#include "llkeyboardwin32.h"
+#include "llwindowcallbacks.h"
+#include "lldragdropwin32.h"
+
+class LLDragDropWin32Target:
+ public IDropTarget
+{
+ public:
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ LLDragDropWin32Target( HWND hWnd ) :
+ mRefCount( 1 ),
+ mAppWindowHandle( hWnd ),
+ mAllowDrop(false),
+ mIsSlurl(false)
+ {
+ };
+
+ virtual ~LLDragDropWin32Target()
+ {
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ ULONG __stdcall AddRef( void )
+ {
+ return InterlockedIncrement( &mRefCount );
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ ULONG __stdcall Release( void )
+ {
+ LONG count = InterlockedDecrement( &mRefCount );
+
+ if ( count == 0 )
+ {
+ delete this;
+ return 0;
+ }
+ else
+ {
+ return count;
+ };
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ HRESULT __stdcall QueryInterface( REFIID iid, void** ppvObject )
+ {
+ if ( iid == IID_IUnknown || iid == IID_IDropTarget )
+ {
+ AddRef();
+ *ppvObject = this;
+ return S_OK;
+ }
+ else
+ {
+ *ppvObject = 0;
+ return E_NOINTERFACE;
+ };
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ HRESULT __stdcall DragEnter( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
+ {
+ FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
+
+ // support CF_TEXT using a HGLOBAL?
+ if ( S_OK == pDataObject->QueryGetData( &fmtetc ) )
+ {
+ mAllowDrop = true;
+ mDropUrl = std::string();
+ mIsSlurl = false;
+
+ STGMEDIUM stgmed;
+ if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) )
+ {
+ PVOID data = GlobalLock( stgmed.hGlobal );
+ mDropUrl = std::string( (char*)data );
+ // XXX MAJOR MAJOR HACK!
+ LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+ if (NULL != window_imp)
+ {
+ LLCoordGL gl_coord( 0, 0 );
+
+ POINT pt2;
+ pt2.x = pt.x;
+ pt2.y = pt.y;
+ ScreenToClient( mAppWindowHandle, &pt2 );
+
+ LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
+ window_imp->convertCoords(cursor_coord_window, &gl_coord);
+ MASK mask = gKeyboard->currentMask(TRUE);
+
+ LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask,
+ LLWindowCallbacks::DNDA_START_TRACKING, mDropUrl );
+
+ switch (result)
+ {
+ case LLWindowCallbacks::DND_COPY:
+ *pdwEffect = DROPEFFECT_COPY;
+ break;
+ case LLWindowCallbacks::DND_LINK:
+ *pdwEffect = DROPEFFECT_LINK;
+ break;
+ case LLWindowCallbacks::DND_MOVE:
+ *pdwEffect = DROPEFFECT_MOVE;
+ break;
+ case LLWindowCallbacks::DND_NONE:
+ default:
+ *pdwEffect = DROPEFFECT_NONE;
+ break;
+ }
+ };
+
+ GlobalUnlock( stgmed.hGlobal );
+ ReleaseStgMedium( &stgmed );
+ };
+ SetFocus( mAppWindowHandle );
+ }
+ else
+ {
+ mAllowDrop = false;
+ *pdwEffect = DROPEFFECT_NONE;
+ };
+
+ return S_OK;
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ HRESULT __stdcall DragOver( DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
+ {
+ if ( mAllowDrop )
+ {
+ // XXX MAJOR MAJOR HACK!
+ LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+ if (NULL != window_imp)
+ {
+ LLCoordGL gl_coord( 0, 0 );
+
+ POINT pt2;
+ pt2.x = pt.x;
+ pt2.y = pt.y;
+ ScreenToClient( mAppWindowHandle, &pt2 );
+
+ LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
+ window_imp->convertCoords(cursor_coord_window, &gl_coord);
+ MASK mask = gKeyboard->currentMask(TRUE);
+
+ LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask,
+ LLWindowCallbacks::DNDA_TRACK, mDropUrl );
+
+ switch (result)
+ {
+ case LLWindowCallbacks::DND_COPY:
+ *pdwEffect = DROPEFFECT_COPY;
+ break;
+ case LLWindowCallbacks::DND_LINK:
+ *pdwEffect = DROPEFFECT_LINK;
+ break;
+ case LLWindowCallbacks::DND_MOVE:
+ *pdwEffect = DROPEFFECT_MOVE;
+ break;
+ case LLWindowCallbacks::DND_NONE:
+ default:
+ *pdwEffect = DROPEFFECT_NONE;
+ break;
+ }
+ };
+ }
+ else
+ {
+ *pdwEffect = DROPEFFECT_NONE;
+ };
+
+ return S_OK;
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ HRESULT __stdcall DragLeave( void )
+ {
+ // XXX MAJOR MAJOR HACK!
+ LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+ if (NULL != window_imp)
+ {
+ LLCoordGL gl_coord( 0, 0 );
+ MASK mask = gKeyboard->currentMask(TRUE);
+ window_imp->completeDragNDropRequest( gl_coord, mask, LLWindowCallbacks::DNDA_STOP_TRACKING, mDropUrl );
+ };
+ return S_OK;
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ HRESULT __stdcall Drop( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
+ {
+ if ( mAllowDrop )
+ {
+ // window impl stored in Window data (neat!)
+ LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA );
+ if ( NULL != window_imp )
+ {
+ LLCoordGL gl_coord( 0, 0 );
+
+ POINT pt_client;
+ pt_client.x = pt.x;
+ pt_client.y = pt.y;
+ ScreenToClient( mAppWindowHandle, &pt_client );
+
+ LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y );
+ window_imp->convertCoords(cursor_coord_window, &gl_coord);
+ llinfos << "### (Drop) URL is: " << mDropUrl << llendl;
+ llinfos << "### raw coords are: " << pt.x << " x " << pt.y << llendl;
+ llinfos << "### client coords are: " << pt_client.x << " x " << pt_client.y << llendl;
+ llinfos << "### GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
+ llinfos << llendl;
+
+ // no keyboard modifier option yet but we could one day
+ MASK mask = gKeyboard->currentMask( TRUE );
+
+ // actually do the drop
+ LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask,
+ LLWindowCallbacks::DNDA_DROPPED, mDropUrl );
+
+ switch (result)
+ {
+ case LLWindowCallbacks::DND_COPY:
+ *pdwEffect = DROPEFFECT_COPY;
+ break;
+ case LLWindowCallbacks::DND_LINK:
+ *pdwEffect = DROPEFFECT_LINK;
+ break;
+ case LLWindowCallbacks::DND_MOVE:
+ *pdwEffect = DROPEFFECT_MOVE;
+ break;
+ case LLWindowCallbacks::DND_NONE:
+ default:
+ *pdwEffect = DROPEFFECT_NONE;
+ break;
+ }
+ };
+ }
+ else
+ {
+ *pdwEffect = DROPEFFECT_NONE;
+ };
+
+ return S_OK;
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ private:
+ LONG mRefCount;
+ HWND mAppWindowHandle;
+ bool mAllowDrop;
+ std::string mDropUrl;
+ bool mIsSlurl;
+ friend class LLWindowWin32;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+//
+LLDragDropWin32::LLDragDropWin32() :
+ mDropTarget( NULL ),
+ mDropWindowHandle( NULL )
+
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+LLDragDropWin32::~LLDragDropWin32()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+bool LLDragDropWin32::init( HWND hWnd )
+{
+ if ( NOERROR != OleInitialize( NULL ) )
+ return FALSE;
+
+ mDropTarget = new LLDragDropWin32Target( hWnd );
+ if ( mDropTarget )
+ {
+ HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, FALSE );
+ if ( S_OK == result )
+ {
+ result = RegisterDragDrop( hWnd, mDropTarget );
+ if ( S_OK != result )
+ {
+ // RegisterDragDrop failed
+ return false;
+ };
+
+ // all ok
+ mDropWindowHandle = hWnd;
+ }
+ else
+ {
+ // Unable to lock OLE object
+ return false;
+ };
+ };
+
+ // success
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+void LLDragDropWin32::reset()
+{
+ if ( mDropTarget )
+ {
+ RevokeDragDrop( mDropWindowHandle );
+ CoLockObjectExternal( mDropTarget, FALSE, TRUE );
+ mDropTarget->Release();
+ };
+
+ OleUninitialize();
+}
+
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
+
diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h
new file mode 100644
index 0000000000..9686626d7c
--- /dev/null
+++ b/indra/llwindow/lldragdropwin32.h
@@ -0,0 +1,80 @@
+/**
+ * @file lldragdrop32.cpp
+ * @brief Handler for Windows specific drag and drop (OS to client) code
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#if LL_WINDOWS
+
+#if LL_OS_DRAGDROP_ENABLED
+
+#ifndef LL_LLDRAGDROP32_H
+#define LL_LLDRAGDROP32_H
+
+#include <windows.h>
+#include <ole2.h>
+
+class LLDragDropWin32
+{
+ public:
+ LLDragDropWin32();
+ ~LLDragDropWin32();
+
+ bool init( HWND hWnd );
+ void reset();
+
+ private:
+ IDropTarget* mDropTarget;
+ HWND mDropWindowHandle;
+};
+#endif // LL_LLDRAGDROP32_H
+
+#else // LL_OS_DRAGDROP_ENABLED
+
+#ifndef LL_LLDRAGDROP32_H
+#define LL_LLDRAGDROP32_H
+
+#include <windows.h>
+#include <ole2.h>
+
+// imposter class that does nothing
+class LLDragDropWin32
+{
+ public:
+ LLDragDropWin32() {};
+ ~LLDragDropWin32() {};
+
+ bool init( HWND hWnd ) { return false; };
+ void reset() { };
+};
+#endif // LL_LLDRAGDROP32_H
+
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 127dbf45e0..55b221e716 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -37,6 +37,7 @@
#include "llcoord.h"
#include "llstring.h"
#include "llcursortypes.h"
+#include "llsd.h"
class LLSplashScreen;
class LLPreeditor;
@@ -162,6 +163,9 @@ public:
virtual void spawnWebBrowser(const std::string& escaped_url) {};
static std::vector<std::string> getDynamicFallbackFontList();
+
+ // Provide native key event data
+ virtual LLSD getNativeKeyData() { return LLSD::emptyMap(); }
protected:
LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags);
diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
index 72f9997149..6d9f012cc3 100644
--- a/indra/llwindow/llwindowcallbacks.cpp
+++ b/indra/llwindow/llwindowcallbacks.cpp
@@ -163,6 +163,11 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da
{
}
+LLWindowCallbacks::DragNDropResult LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, DragNDropAction action, std::string data )
+{
+ return LLWindowCallbacks::DND_NONE;
+}
+
BOOL LLWindowCallbacks::handleTimerEvent(LLWindow *window)
{
return FALSE;
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
index abc66c42a2..42add8dde0 100644
--- a/indra/llwindow/llwindowcallbacks.h
+++ b/indra/llwindow/llwindowcallbacks.h
@@ -71,6 +71,21 @@ public:
virtual BOOL handleTimerEvent(LLWindow *window);
virtual BOOL handleDeviceChange(LLWindow *window);
+ enum DragNDropAction {
+ DNDA_START_TRACKING = 0,// Start tracking an incoming drag
+ DNDA_TRACK, // User is dragging an incoming drag around the window
+ DNDA_STOP_TRACKING, // User is no longer dragging an incoming drag around the window (may have either cancelled or dropped on the window)
+ DNDA_DROPPED // User dropped an incoming drag on the window (this is the "commit" event)
+ };
+
+ enum DragNDropResult {
+ DND_NONE = 0, // No drop allowed
+ DND_MOVE, // Drop accepted would result in a "move" operation
+ DND_COPY, // Drop accepted would result in a "copy" operation
+ DND_LINK // Drop accepted would result in a "link" operation
+ };
+ virtual DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, DragNDropAction action, std::string data);
+
virtual void handlePingWatchdog(LLWindow *window, const char * msg);
virtual void handlePauseWatchdog(LLWindow *window);
virtual void handleResumeWatchdog(LLWindow *window);
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index ed62faece6..ad97bc45fc 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -260,6 +260,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
mTSMScriptCode = 0;
mTSMLangCode = 0;
mPreeditor = NULL;
+ mRawKeyEvent = NULL;
mFSAASamples = fsaa_samples;
mForceRebuild = FALSE;
@@ -278,6 +279,8 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
mMoveEventCampartorUPP = NewEventComparatorUPP(staticMoveEventComparator);
mGlobalHandlerRef = NULL;
mWindowHandlerRef = NULL;
+
+ mDragOverrideCursor = -1;
// We're not clipping yet
SetRect( &mOldMouseClip, 0, 0, 0, 0 );
@@ -499,8 +502,11 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
// Set up window event handlers (some window-related events ONLY go to window handlers.)
InstallStandardEventHandler(GetWindowEventTarget(mWindow));
- InstallWindowEventHandler (mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler
-
+ InstallWindowEventHandler(mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler
+#if LL_OS_DRAGDROP_ENABLED
+ InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this );
+ InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this );
+#endif // LL_OS_DRAGDROP_ENABLED
}
{
@@ -2135,10 +2141,11 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
{
UInt32 modifiers = 0;
+
// First, process the raw event.
{
- EventRef rawEvent;
-
+ EventRef rawEvent = NULL;
+
// Get the original event and extract the modifier keys, so we can ignore command-key events.
if (GetEventParameter(event, kEventParamTextInputSendKeyboardEvent, typeEventRef, NULL, sizeof(rawEvent), NULL, &rawEvent) == noErr)
{
@@ -2147,6 +2154,9 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
// and call this function recursively to handle the raw key event.
eventHandler (myHandler, rawEvent);
+
+ // save the raw event until we're done processing the unicode input as well.
+ mRawKeyEvent = rawEvent;
}
}
@@ -2174,11 +2184,8 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
}
else
{
- MASK mask = 0;
- if(modifiers & shiftKey) { mask |= MASK_SHIFT; }
- if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; }
- if(modifiers & optionKey) { mask |= MASK_ALT; }
-
+ MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
+
llassert( actualType == typeUnicodeText );
// The result is a UTF16 buffer. Pass the characters in turn to handleUnicodeChar.
@@ -2200,6 +2207,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
delete[] buffer;
}
+ mRawKeyEvent = NULL;
result = err;
}
break;
@@ -2274,6 +2282,9 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
GetEventParameter (event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode);
GetEventParameter (event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers);
+ // save the raw event so getNativeKeyData can use it.
+ mRawKeyEvent = event;
+
// printf("key event, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n", keyCode, charCode, (char)charCode, modifiers);
// fflush(stdout);
@@ -2369,6 +2380,8 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
result = eventNotHandledErr;
break;
}
+
+ mRawKeyEvent = NULL;
}
break;
@@ -2795,6 +2808,14 @@ void LLWindowMacOSX::setCursor(ECursorType cursor)
{
OSStatus result = noErr;
+ if (mDragOverrideCursor != -1)
+ {
+ // A drag is in progress...remember the requested cursor and we'll
+ // restore it when it is done
+ mCurrentCursor = cursor;
+ return;
+ }
+
if (cursor == UI_CURSOR_ARROW
&& mBusyCount > 0)
{
@@ -3201,6 +3222,60 @@ void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url)
}
}
+LLSD LLWindowMacOSX::getNativeKeyData()
+{
+ LLSD result = LLSD::emptyMap();
+
+ if(mRawKeyEvent)
+ {
+ char char_code = 0;
+ UInt32 key_code = 0;
+ UInt32 modifiers = 0;
+ UInt32 keyboard_type = 0;
+
+ GetEventParameter (mRawKeyEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &char_code);
+ GetEventParameter (mRawKeyEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key_code);
+ GetEventParameter (mRawKeyEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers);
+ GetEventParameter (mRawKeyEvent, kEventParamKeyboardType, typeUInt32, NULL, sizeof(UInt32), NULL, &keyboard_type);
+
+ result["char_code"] = (S32)char_code;
+ result["key_code"] = (S32)key_code;
+ result["modifiers"] = (S32)modifiers;
+ result["keyboard_type"] = (S32)keyboard_type;
+
+#if 0
+ // This causes trouble for control characters -- apparently character codes less than 32 (escape, control-A, etc)
+ // cause llsd serialization to create XML that the llsd deserializer won't parse!
+ std::string unicode;
+ OSStatus err = noErr;
+ EventParamType actualType = typeUTF8Text;
+ UInt32 actualSize = 0;
+ char *buffer = NULL;
+
+ err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, 0, &actualSize, NULL);
+ if(err == noErr)
+ {
+ // allocate a buffer and get the actual data.
+ buffer = new char[actualSize];
+ err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, actualSize, &actualSize, buffer);
+ if(err == noErr)
+ {
+ unicode.assign(buffer, actualSize);
+ }
+ delete[] buffer;
+ }
+
+ result["unicode"] = unicode;
+#endif
+
+ }
+
+
+ lldebugs << "native key data is: " << result << llendl;
+
+ return result;
+}
+
BOOL LLWindowMacOSX::dialogColorPicker( F32 *r, F32 *g, F32 *b)
{
@@ -3379,3 +3454,174 @@ std::vector<std::string> LLWindowMacOSX::getDynamicFallbackFontList()
return std::vector<std::string>();
}
+// static
+MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers)
+{
+ MASK mask = 0;
+ if(modifiers & shiftKey) { mask |= MASK_SHIFT; }
+ if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; }
+ if(modifiers & optionKey) { mask |= MASK_ALT; }
+ return mask;
+}
+
+#if LL_OS_DRAGDROP_ENABLED
+
+OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
+ void * handlerRefCon, DragRef drag)
+{
+ OSErr result = noErr;
+ LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
+
+ lldebugs << "drag tracking handler, message = " << message << llendl;
+
+ switch(message)
+ {
+ case kDragTrackingInWindow:
+ result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_TRACK);
+ break;
+
+ case kDragTrackingEnterHandler:
+ result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_START_TRACKING);
+ break;
+
+ case kDragTrackingLeaveHandler:
+ result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_STOP_TRACKING);
+ break;
+
+ default:
+ break;
+ }
+
+ return result;
+}
+
+OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,
+ DragRef drag)
+{
+ LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
+ return self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_DROPPED);
+
+}
+
+OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDropAction action)
+{
+ OSErr result = dragNotAcceptedErr; // overall function result
+ OSErr err = noErr; // for local error handling
+
+ // Get the mouse position and modifiers of this drag.
+ SInt16 modifiers, mouseDownModifiers, mouseUpModifiers;
+ ::GetDragModifiers(drag, &modifiers, &mouseDownModifiers, &mouseUpModifiers);
+ MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
+
+ Point mouse_point;
+ // This will return the mouse point in global screen coords
+ ::GetDragMouse(drag, &mouse_point, NULL);
+ LLCoordScreen screen_coords(mouse_point.h, mouse_point.v);
+ LLCoordGL gl_pos;
+ convertCoords(screen_coords, &gl_pos);
+
+ // Look at the pasteboard and try to extract an URL from it
+ PasteboardRef pasteboard;
+ if(GetDragPasteboard(drag, &pasteboard) == noErr)
+ {
+ ItemCount num_items = 0;
+ // Treat an error here as an item count of 0
+ (void)PasteboardGetItemCount(pasteboard, &num_items);
+
+ // Only deal with single-item drags.
+ if(num_items == 1)
+ {
+ PasteboardItemID item_id = NULL;
+ CFArrayRef flavors = NULL;
+ CFDataRef data = NULL;
+
+ err = PasteboardGetItemIdentifier(pasteboard, 1, &item_id); // Yes, this really is 1-based.
+
+ // Try to extract an URL from the pasteboard
+ if(err == noErr)
+ {
+ err = PasteboardCopyItemFlavors( pasteboard, item_id, &flavors);
+ }
+
+ if(err == noErr)
+ {
+ if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeURL))
+ {
+ // This is an URL.
+ err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeURL, &data);
+ }
+ else if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeUTF8PlainText))
+ {
+ // This is a string that might be an URL.
+ err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeUTF8PlainText, &data);
+ }
+
+ }
+
+ if(flavors != NULL)
+ {
+ CFRelease(flavors);
+ }
+
+ if(data != NULL)
+ {
+ std::string url;
+ url.assign((char*)CFDataGetBytePtr(data), CFDataGetLength(data));
+ CFRelease(data);
+
+ if(!url.empty())
+ {
+ LLWindowCallbacks::DragNDropResult res =
+ mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url);
+
+ switch (res) {
+ case LLWindowCallbacks::DND_NONE: // No drop allowed
+ if (action == LLWindowCallbacks::DNDA_TRACK)
+ {
+ mDragOverrideCursor = kThemeNotAllowedCursor;
+ }
+ else {
+ mDragOverrideCursor = -1;
+ }
+ break;
+ case LLWindowCallbacks::DND_MOVE: // Drop accepted would result in a "move" operation
+ mDragOverrideCursor = kThemePointingHandCursor;
+ result = noErr;
+ break;
+ case LLWindowCallbacks::DND_COPY: // Drop accepted would result in a "copy" operation
+ mDragOverrideCursor = kThemeCopyArrowCursor;
+ result = noErr;
+ break;
+ case LLWindowCallbacks::DND_LINK: // Drop accepted would result in a "link" operation:
+ mDragOverrideCursor = kThemeAliasArrowCursor;
+ result = noErr;
+ break;
+ default:
+ mDragOverrideCursor = -1;
+ break;
+ }
+ // This overrides the cursor being set by setCursor.
+ // This is a bit of a hack workaround because lots of areas
+ // within the viewer just blindly set the cursor.
+ if (mDragOverrideCursor == -1)
+ {
+ // Restore the cursor
+ ECursorType temp_cursor = mCurrentCursor;
+ // get around the "setting the same cursor" code in setCursor()
+ mCurrentCursor = UI_CURSOR_COUNT;
+ setCursor(temp_cursor);
+ }
+ else {
+ // Override the cursor
+ SetThemeCursor(mDragOverrideCursor);
+ }
+
+ }
+ }
+ }
+ }
+
+ return result;
+}
+
+#endif // LL_OS_DRAGDROP_ENABLED
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index fbfa07fab4..7c6b324029 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -34,6 +34,7 @@
#define LL_LLWINDOWMACOSX_H
#include "llwindow.h"
+#include "llwindowcallbacks.h"
#include "lltimer.h"
@@ -119,6 +120,10 @@ public:
static std::vector<std::string> getDynamicFallbackFontList();
+ // Provide native key event data
+ /*virtual*/ LLSD getNativeKeyData();
+
+
protected:
LLWindowMacOSX(LLWindowCallbacks* callbacks,
const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,
@@ -159,8 +164,15 @@ protected:
void adjustCursorDecouple(bool warpingMouse = false);
void fixWindowSize(void);
void stopDockTileBounce();
-
-
+ static MASK modifiersToMask(SInt16 modifiers);
+
+#if LL_OS_DRAGDROP_ENABLED
+ static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
+ void * handlerRefCon, DragRef theDrag);
+ static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, DragRef theDrag);
+ OSErr handleDragNDrop(DragRef theDrag, LLWindowCallbacks::DragNDropAction action);
+#endif // LL_OS_DRAGDROP_ENABLED
+
//
// Platform specific variables
//
@@ -193,11 +205,13 @@ protected:
U32 mFSAASamples;
BOOL mForceRebuild;
+ S32 mDragOverrideCursor;
+
F32 mBounceTime;
NMRec mBounceRec;
LLTimer mBounceTimer;
- // Imput method management through Text Service Manager.
+ // Input method management through Text Service Manager.
TSMDocumentID mTSMDocument;
BOOL mLanguageTextInputAllowed;
ScriptCode mTSMScriptCode;
@@ -208,6 +222,7 @@ protected:
friend class LLWindowManager;
static WindowRef sMediaWindow;
+ EventRef mRawKeyEvent;
};
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index bfdf1147a1..1f705f9e60 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -251,6 +251,10 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
#if LL_X11
mFlashing = FALSE;
#endif // LL_X11
+
+ mKeyScanCode = 0;
+ mKeyVirtualKey = 0;
+ mKeyModifiers = KMOD_NONE;
}
static SDL_Surface *Load_BMP_Resource(const char *basename)
@@ -1593,12 +1597,83 @@ U32 LLWindowSDL::SDLCheckGrabbyKeys(SDLKey keysym, BOOL gain)
return mGrabbyKeyFlags;
}
+
+void check_vm_bloat()
+{
+#if LL_LINUX
+ // watch our own VM and RSS sizes, warn if we bloated rapidly
+ FILE *fp = fopen("/proc/self/stat", "r");
+ if (fp)
+ {
+ static long long last_vm_size = 0;
+ static long long last_rss_size = 0;
+ const long long significant_vm_difference = 250 * 1024*1024;
+ const long long significant_rss_difference = 50 * 1024*1024;
+
+ ssize_t res;
+ size_t dummy;
+ char *ptr;
+ for (int i=0; i<22; ++i) // parse past the values we don't want
+ {
+ ptr = NULL;
+ res = getdelim(&ptr, &dummy, ' ', fp);
+ free(ptr);
+ }
+ // 23rd space-delimited entry is vsize
+ ptr = NULL;
+ res = getdelim(&ptr, &dummy, ' ', fp);
+ llassert(ptr);
+ long long this_vm_size = atoll(ptr);
+ free(ptr);
+ // 24th space-delimited entry is RSS
+ ptr = NULL;
+ res = getdelim(&ptr, &dummy, ' ', fp);
+ llassert(ptr);
+ long long this_rss_size = getpagesize() * atoll(ptr);
+ free(ptr);
+
+ llinfos << "VM SIZE IS NOW " << (this_vm_size/(1024*1024)) << " MB, RSS SIZE IS NOW " << (this_rss_size/(1024*1024)) << " MB" << llendl;
+
+ if (llabs(last_vm_size - this_vm_size) >
+ significant_vm_difference)
+ {
+ if (this_vm_size > last_vm_size)
+ {
+ llwarns << "VM size grew by " << (this_vm_size - last_vm_size)/(1024*1024) << " MB in last frame" << llendl;
+ }
+ else
+ {
+ llinfos << "VM size shrank by " << (last_vm_size - this_vm_size)/(1024*1024) << " MB in last frame" << llendl;
+ }
+ }
+
+ if (llabs(last_rss_size - this_rss_size) >
+ significant_rss_difference)
+ {
+ if (this_rss_size > last_rss_size)
+ {
+ llwarns << "RSS size grew by " << (this_rss_size - last_rss_size)/(1024*1024) << " MB in last frame" << llendl;
+ }
+ else
+ {
+ llinfos << "RSS size shrank by " << (last_rss_size - this_rss_size)/(1024*1024) << " MB in last frame" << llendl;
+ }
+ }
+
+ last_rss_size = this_rss_size;
+ last_vm_size = this_vm_size;
+
+ fclose(fp);
+ }
+#endif // LL_LINUX
+}
+
+
// virtual
void LLWindowSDL::processMiscNativeEvents()
{
#if LL_GTK
// Pump GTK events to avoid starvation for:
- // * Embedded Gecko
// * DBUS servicing
// * Anything else which quietly hooks into the default glib/GTK loop
if (ll_try_gtk_init())
@@ -1617,13 +1692,19 @@ void LLWindowSDL::processMiscNativeEvents()
pump_timer.setTimerExpirySec(1.0f / 15.0f);
do {
// Always do at least one non-blocking pump
- gtk_main_iteration_do(0);
+ gtk_main_iteration_do(FALSE);
} while (gtk_events_pending() &&
!pump_timer.hasExpired());
setlocale(LC_ALL, saved_locale.c_str() );
}
#endif // LL_GTK
+
+ // hack - doesn't belong here - but this is just for debugging
+ if (getenv("LL_DEBUG_BLOAT"))
+ {
+ check_vm_bloat();
+ }
}
void LLWindowSDL::gatherInput()
@@ -1651,24 +1732,32 @@ void LLWindowSDL::gatherInput()
}
case SDL_KEYDOWN:
- gKeyboard->handleKeyDown(event.key.keysym.sym, event.key.keysym.mod);
- // part of the fix for SL-13243
- if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0)
- SDLReallyCaptureInput(TRUE);
-
- if (event.key.keysym.unicode)
- {
- handleUnicodeUTF16(event.key.keysym.unicode,
- gKeyboard->currentMask(FALSE));
- }
+ mKeyScanCode = event.key.keysym.scancode;
+ mKeyVirtualKey = event.key.keysym.unicode;
+ mKeyModifiers = event.key.keysym.mod;
+
+ gKeyboard->handleKeyDown(event.key.keysym.sym, event.key.keysym.mod);
+ // part of the fix for SL-13243
+ if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0)
+ SDLReallyCaptureInput(TRUE);
+
+ if (event.key.keysym.unicode)
+ {
+ handleUnicodeUTF16(event.key.keysym.unicode,
+ gKeyboard->currentMask(FALSE));
+ }
break;
case SDL_KEYUP:
- if (SDLCheckGrabbyKeys(event.key.keysym.sym, FALSE) == 0)
- SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243
+ mKeyScanCode = event.key.keysym.scancode;
+ mKeyVirtualKey = event.key.keysym.unicode;
+ mKeyModifiers = event.key.keysym.mod;
- gKeyboard->handleKeyUp(event.key.keysym.sym, event.key.keysym.mod);
- break;
+ if (SDLCheckGrabbyKeys(event.key.keysym.sym, FALSE) == 0)
+ SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243
+
+ gKeyboard->handleKeyUp(event.key.keysym.sym, event.key.keysym.mod);
+ break;
case SDL_MOUSEBUTTONDOWN:
{
@@ -2224,6 +2313,39 @@ static void color_changed_callback(GtkWidget *widget,
gtk_color_selection_get_current_color(colorsel, colorp);
}
+
+/*
+ Make the raw keyboard data available - used to poke through to LLQtWebKit so
+ that Qt/Webkit has access to the virtual keycodes etc. that it needs
+*/
+LLSD LLWindowSDL::getNativeKeyData()
+{
+ LLSD result = LLSD::emptyMap();
+
+ U32 modifiers = 0; // pretend-native modifiers... oh what a tangled web we weave!
+
+ // we go through so many levels of device abstraction that I can't really guess
+ // what a plugin under GDK under Qt under SL under SDL under X11 considers
+ // a 'native' modifier mask. this has been sort of reverse-engineered... they *appear*
+ // to match GDK consts, but that may be co-incidence.
+ modifiers |= (mKeyModifiers & KMOD_LSHIFT) ? 0x0001 : 0;
+ modifiers |= (mKeyModifiers & KMOD_RSHIFT) ? 0x0001 : 0;// munge these into the same shift
+ modifiers |= (mKeyModifiers & KMOD_CAPS) ? 0x0002 : 0;
+ modifiers |= (mKeyModifiers & KMOD_LCTRL) ? 0x0004 : 0;
+ modifiers |= (mKeyModifiers & KMOD_RCTRL) ? 0x0004 : 0;// munge these into the same ctrl
+ modifiers |= (mKeyModifiers & KMOD_LALT) ? 0x0008 : 0;// untested
+ modifiers |= (mKeyModifiers & KMOD_RALT) ? 0x0008 : 0;// untested
+ // *todo: test ALTs - I don't have a case for testing these. Do you?
+ // *todo: NUM? - I don't care enough right now (and it's not a GDK modifier).
+
+ result["scan_code"] = (S32)mKeyScanCode;
+ result["virtual_key"] = (S32)mKeyVirtualKey;
+ result["modifiers"] = (S32)modifiers;
+
+ return result;
+}
+
+
BOOL LLWindowSDL::dialogColorPicker( F32 *r, F32 *g, F32 *b)
{
BOOL rtn = FALSE;
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index 0ba1c861da..e6bdd46a77 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -102,7 +102,7 @@ public:
/*virtual*/ void gatherInput();
/*virtual*/ void swapBuffers();
- /*virtual*/ void delayInputProcessing() { };
+ /*virtual*/ void delayInputProcessing() { };
// handy coordinate space conversion routines
/*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to);
@@ -155,12 +155,13 @@ protected:
BOOL ignore_pixel_depth, U32 fsaa_samples);
~LLWindowSDL();
+ /*virtual*/ BOOL isValid();
+ /*virtual*/ LLSD getNativeKeyData();
+
void initCursors();
void quitCursors();
- BOOL isValid();
void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size);
-
// Changes display resolution. Returns true if successful
BOOL setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh);
@@ -204,12 +205,16 @@ protected:
friend class LLWindowManager;
-#if LL_X11
private:
+#if LL_X11
void x11_set_urgent(BOOL urgent);
BOOL mFlashing;
LLTimer mFlashTimer;
#endif //LL_X11
+
+ U32 mKeyScanCode;
+ U32 mKeyVirtualKey;
+ SDLMod mKeyModifiers;
};
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index b591111b75..c80392ad45 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -38,6 +38,7 @@
// LLWindow library includes
#include "llkeyboardwin32.h"
+#include "lldragdropwin32.h"
#include "llpreeditor.h"
#include "llwindowcallbacks.h"
@@ -52,6 +53,7 @@
#include <mapi.h>
#include <process.h> // for _spawn
#include <shellapi.h>
+#include <fstream>
#include <Imm.h>
// Require DirectInput version 8
@@ -376,6 +378,9 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
mMousePositionModified = FALSE;
mInputProcessingPaused = FALSE;
mPreeditor = NULL;
+ mKeyCharCode = 0;
+ mKeyScanCode = 0;
+ mKeyVirtualKey = 0;
mhDC = NULL;
mhRC = NULL;
@@ -383,6 +388,9 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
gKeyboard = new LLKeyboardWin32();
gKeyboard->setCallbacks(callbacks);
+ // Initialize the Drag and Drop functionality
+ mDragDrop = new LLDragDropWin32;
+
// Initialize (boot strap) the Language text input management,
// based on the system's (user's) default settings.
allowLanguageTextInput(mPreeditor, FALSE);
@@ -620,6 +628,8 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
LLWindowWin32::~LLWindowWin32()
{
+ delete mDragDrop;
+
delete [] mWindowTitle;
mWindowTitle = NULL;
@@ -671,6 +681,8 @@ void LLWindowWin32::close()
return;
}
+ mDragDrop->reset();
+
// Make sure cursor is visible and we haven't mangled the clipping state.
setMouseClipping(FALSE);
showCursor();
@@ -1349,6 +1361,11 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
}
SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this);
+
+ // register this window as handling drag/drop events from the OS
+ DragAcceptFiles( mWindowHandle, TRUE );
+
+ mDragDrop->init( mWindowHandle );
//register joystick timer callback
SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer
@@ -1858,6 +1875,10 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// allow system keys, such as ALT-F4 to be processed by Windows
eat_keystroke = FALSE;
case WM_KEYDOWN:
+ window_imp->mKeyCharCode = 0; // don't know until wm_char comes in next
+ window_imp->mKeyScanCode = ( l_param >> 16 ) & 0xff;
+ window_imp->mKeyVirtualKey = w_param;
+
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
{
if (gDebugWindowProc)
@@ -1877,6 +1898,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
eat_keystroke = FALSE;
case WM_KEYUP:
{
+ window_imp->mKeyScanCode = ( l_param >> 16 ) & 0xff;
+ window_imp->mKeyVirtualKey = w_param;
+
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
LLFastTimer t2(FTM_KEYHANDLER);
@@ -1962,6 +1986,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_CHAR:
+ window_imp->mKeyCharCode = w_param;
+
// Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need
// to figure out how that works. - Doug
//
@@ -2354,11 +2380,15 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
return 0;
case WM_COPYDATA:
- window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
- // received a URL
- PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
- window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
+ {
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
+ // received a URL
+ PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
+ window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
+ };
return 0;
+
+ break;
}
window_imp->mCallbacks->handlePauseWatchdog(window_imp);
@@ -3033,6 +3063,19 @@ void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
*/
}
+/*
+ Make the raw keyboard data available - used to poke through to LLQtWebKit so
+ that Qt/Webkit has access to the virtual keycodes etc. that it needs
+*/
+LLSD LLWindowWin32::getNativeKeyData()
+{
+ LLSD result = LLSD::emptyMap();
+
+ result["scan_code"] = (S32)mKeyScanCode;
+ result["virtual_key"] = (S32)mKeyVirtualKey;
+
+ return result;
+}
BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b )
{
@@ -3528,6 +3571,13 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng
return wtext.substr(start, end - start);
}
+// final stage of handling drop requests - both from WM_DROPFILES message
+// for files and via IDropTarget interface requests.
+LLWindowCallbacks::DragNDropResult LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url )
+{
+ return mCallbacks->handleDragNDrop( this, gl_coord, mask, action, url );
+}
+
// Handle WM_IME_REQUEST message.
// If it handled the message, returns TRUE. Otherwise, FALSE.
// When it handled the message, the value to be returned from
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index e4e9179db7..9d57735772 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -39,6 +39,8 @@
#include <windows.h>
#include "llwindow.h"
+#include "llwindowcallbacks.h"
+#include "lldragdropwin32.h"
// Hack for async host by name
#define LL_WM_HOST_RESOLVED (WM_APP + 1)
@@ -114,6 +116,8 @@ public:
/*virtual*/ void interruptLanguageTextInput();
/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
+ LLWindowCallbacks::DragNDropResult completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url );
+
static std::vector<std::string> getDynamicFallbackFontList();
protected:
@@ -128,7 +132,7 @@ protected:
HCURSOR loadColorCursor(LPCTSTR name);
BOOL isValid();
void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size);
-
+ LLSD getNativeKeyData();
// Changes display resolution. Returns true if successful
BOOL setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh);
@@ -205,6 +209,12 @@ protected:
LLPreeditor *mPreeditor;
+ LLDragDropWin32* mDragDrop;
+
+ U32 mKeyCharCode;
+ U32 mKeyScanCode;
+ U32 mKeyVirtualKey;
+
friend class LLWindowManager;
};
diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp
index 07cc612a0a..e4f6482fae 100644
--- a/indra/llxml/llxmlnode.cpp
+++ b/indra/llxml/llxmlnode.cpp
@@ -131,6 +131,8 @@ LLXMLNode::LLXMLNode(const LLXMLNode& rhs) :
mPrecision(rhs.mPrecision),
mType(rhs.mType),
mEncoding(rhs.mEncoding),
+ mLineNumber(0),
+ mParser(NULL),
mParent(NULL),
mChildren(NULL),
mAttributes(),
diff --git a/indra/llxml/llxmltree.cpp b/indra/llxml/llxmltree.cpp
index 1bce5d29f7..bc2690deff 100644
--- a/indra/llxml/llxmltree.cpp
+++ b/indra/llxml/llxmltree.cpp
@@ -510,7 +510,8 @@ LLXmlTreeParser::LLXmlTreeParser(LLXmlTree* tree)
: mTree(tree),
mRoot( NULL ),
mCurrent( NULL ),
- mDump( FALSE )
+ mDump( FALSE ),
+ mKeepContents(FALSE)
{
}
diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp
index d908c85da6..2ead5a4a57 100644
--- a/indra/llxuixml/llinitparam.cpp
+++ b/indra/llxuixml/llinitparam.cpp
@@ -84,8 +84,7 @@ namespace LLInitParam
// BaseBlock
//
BaseBlock::BaseBlock()
- : mLastChangedParam(0),
- mChangeVersion(0),
+ : mChangeVersion(0),
mBlockDescriptor(NULL)
{}
@@ -138,7 +137,7 @@ namespace LLInitParam
}
- bool BaseBlock::validateBlock(bool silent) const
+ bool BaseBlock::validateBlock(bool emit_errors) const
{
const BlockDescriptor& block_data = getBlockDescriptor();
for (BlockDescriptor::param_validation_list_t::const_iterator it = block_data.mValidationList.begin(); it != block_data.mValidationList.end(); ++it)
@@ -146,7 +145,7 @@ namespace LLInitParam
const Param* param = getParamFromHandle(it->first);
if (!it->second(param))
{
- if (!silent)
+ if (emit_errors)
{
llwarns << "Invalid param \"" << getParamName(block_data, param) << "\"" << llendl;
}
@@ -348,7 +347,6 @@ namespace LLInitParam
if (deserialize_func && deserialize_func(*paramp, p, name_stack, name_stack.first == name_stack.second ? -1 : name_stack.first->second))
{
- mLastChangedParam = (*it)->mParamHandle;
return true;
}
}
@@ -417,9 +415,11 @@ namespace LLInitParam
void BaseBlock::setLastChangedParam(const Param& last_param, bool user_provided)
{
- mLastChangedParam = getHandleFromParam(&last_param);
+ if (user_provided)
+ {
mChangeVersion++;
}
+ }
const std::string& BaseBlock::getParamName(const BlockDescriptor& block_data, const Param* paramp) const
{
@@ -458,28 +458,7 @@ namespace LLInitParam
// take all provided params from other and apply to self
// NOTE: this requires that "other" is of the same derived type as this
- bool BaseBlock::overwriteFromImpl(BlockDescriptor& block_data, const BaseBlock& other)
- {
- bool param_changed = false;
- BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end();
- for (BlockDescriptor::all_params_list_t::const_iterator it = block_data.mAllParams.begin();
- it != end_it;
- ++it)
- {
- const Param* other_paramp = other.getParamFromHandle(it->mParamHandle);
- ParamDescriptor::merge_func_t merge_func = it->mMergeFunc;
- if (merge_func)
- {
- Param* paramp = getParamFromHandle(it->mParamHandle);
- param_changed |= merge_func(*paramp, *other_paramp, true);
- mLastChangedParam = it->mParamHandle;
- }
- }
- return param_changed;
- }
-
- // take all provided params that are not already provided, and apply to self
- bool BaseBlock::fillFromImpl(BlockDescriptor& block_data, const BaseBlock& other)
+ bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
{
bool param_changed = false;
BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end();
@@ -492,8 +471,7 @@ namespace LLInitParam
if (merge_func)
{
Param* paramp = getParamFromHandle(it->mParamHandle);
- param_changed |= merge_func(*paramp, *other_paramp, false);
- mLastChangedParam = it->mParamHandle;
+ param_changed |= merge_func(*paramp, *other_paramp, overwrite);
}
}
return param_changed;
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index a84e47f998..c9c1d4af90 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -407,7 +407,7 @@ namespace LLInitParam
class BaseBlock
{
public:
- // "Multiple" constraint types
+ // "Multiple" constraint types, put here in root class to avoid ambiguity during use
struct AnyAmount
{
static U32 minCount() { return 0; }
@@ -452,7 +452,7 @@ namespace LLInitParam
bool submitValue(const Parser::name_stack_t& name_stack, Parser& p, bool silent=false);
param_handle_t getHandleFromParam(const Param* param) const;
- bool validateBlock(bool silent = false) const;
+ bool validateBlock(bool emit_errors = true) const;
Param* getParamFromHandle(const param_handle_t param_handle)
{
@@ -472,7 +472,6 @@ namespace LLInitParam
// Blocks can override this to do custom tracking of changes
virtual void setLastChangedParam(const Param& last_param, bool user_provided);
- const Param* getLastChangedParam() const { return mLastChangedParam ? getParamFromHandle(mLastChangedParam) : NULL; }
S32 getLastChangeVersion() const { return mChangeVersion; }
bool isDefault() const { return mChangeVersion == 0; }
@@ -501,13 +500,9 @@ namespace LLInitParam
// take all provided params from other and apply to self
- bool overwriteFromImpl(BlockDescriptor& block_data, const BaseBlock& other);
-
- // take all provided params that are not already provided, and apply to self
- bool fillFromImpl(BlockDescriptor& block_data, const BaseBlock& other);
+ bool merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite);
// can be updated in getters
- mutable param_handle_t mLastChangedParam;
mutable S32 mChangeVersion;
BlockDescriptor* mBlockDescriptor; // most derived block descriptor
@@ -807,7 +802,7 @@ namespace LLInitParam
if (Param::getProvided() && mData.mValidatedVersion < T::getLastChangeVersion())
{
// a sub-block is "provided" when it has been filled in enough to be valid
- mData.mValidated = T::validateBlock(true);
+ mData.mValidated = T::validateBlock(false);
mData.mValidatedVersion = T::getLastChangeVersion();
}
return Param::getProvided() && mData.mValidated;
@@ -1238,7 +1233,7 @@ namespace LLInitParam
it != mValues.end();
++it)
{
- if(it->validateBlock(true)) count++;
+ if(it->validateBlock(false)) count++;
}
return count;
}
@@ -1288,7 +1283,7 @@ namespace LLInitParam
bool overwriteFrom(const self_t& other)
{
mCurChoice = other.mCurChoice;
- return BaseBlock::overwriteFromImpl(blockDescriptor(), other);
+ return BaseBlock::merge(blockDescriptor(), other, true);
}
// take all provided params that are not already provided, and apply to self
@@ -1415,13 +1410,13 @@ namespace LLInitParam
// take all provided params from other and apply to self
bool overwriteFrom(const self_t& other)
{
- return BaseBlock::overwriteFromImpl(blockDescriptor(), other);
+ return BaseBlock::merge(blockDescriptor(), other, true);
}
// take all provided params that are not already provided, and apply to self
bool fillFrom(const self_t& other)
{
- return BaseBlock::fillFromImpl(blockDescriptor(), other);
+ return BaseBlock::merge(blockDescriptor(), other, false);
}
protected:
Block()
@@ -1712,7 +1707,7 @@ namespace LLInitParam
// if cached value is stale, regenerate from params
if (Param::getProvided() && mData.mLastParamVersion < BaseBlock::getLastChangeVersion())
{
- if (block_t::validateBlock(true))
+ if (block_t::validateBlock(false))
{
static_cast<const DERIVED*>(this)->setValueFromBlock();
// clear stale keyword associated with old value
@@ -1734,6 +1729,7 @@ namespace LLInitParam
void set(value_assignment_t val, bool flag_as_provided = true)
{
Param::enclosingBlock().setLastChangedParam(*this, flag_as_provided);
+
// set param version number to be up to date, so we ignore block contents
mData.mLastParamVersion = BaseBlock::getLastChangeVersion();
@@ -1770,7 +1766,7 @@ namespace LLInitParam
if (Param::getProvided() && (mData.mLastParamVersion < BaseBlock::getLastChangeVersion()))
{
// go ahead and issue warnings at this point if any param is invalid
- if(block_t::validateBlock(false))
+ if(block_t::validateBlock(true))
{
static_cast<const DERIVED*>(this)->setValueFromBlock();
mData.clearKey();
@@ -1798,25 +1794,23 @@ namespace LLInitParam
private:
static bool mergeWith(Param& dst, const Param& src, bool overwrite)
{
- const self_t& src_param = static_cast<const self_t&>(src);
+ const self_t& src_typed_param = static_cast<const self_t&>(src);
self_t& dst_typed_param = static_cast<self_t&>(dst);
- if (src_param.isProvided()
+ if (src_typed_param.isProvided()
&& (overwrite || !dst_typed_param.isProvided()))
{
// assign individual parameters
- if (overwrite)
- {
- dst_typed_param.BaseBlock::overwriteFromImpl(block_t::blockDescriptor(), src_param);
- }
- else
- {
- dst_typed_param.BaseBlock::fillFromImpl(block_t::blockDescriptor(), src_param);
- }
+ dst_typed_param.BaseBlock::merge(block_t::blockDescriptor(), src_typed_param, overwrite);
+
// then copy actual value
- dst_typed_param.mData.mValue = src_param.get();
+ dst_typed_param.mData.mValue = src_typed_param.get();
dst_typed_param.mData.clearKey();
dst_typed_param.setProvided(true);
+
+ // Propagate value back to block params since the value was updated during this merge.
+ // This will result in mData.mValue and the block params being in sync.
+ static_cast<DERIVED&>(dst_typed_param).setBlockFromValue();
return true;
}
return false;
diff --git a/indra/llxuixml/lluicolor.cpp b/indra/llxuixml/lluicolor.cpp
index 424d878a6b..0049ec055c 100644
--- a/indra/llxuixml/lluicolor.cpp
+++ b/indra/llxuixml/lluicolor.cpp
@@ -16,13 +16,15 @@ LLUIColor::LLUIColor()
{
}
-LLUIColor::LLUIColor(const LLColor4* color)
- :mColorPtr(color)
+
+LLUIColor::LLUIColor(const LLColor4& color)
+: mColor(color),
+ mColorPtr(NULL)
{
}
-LLUIColor::LLUIColor(const LLColor4& color)
- :mColor(color), mColorPtr(NULL)
+LLUIColor::LLUIColor(const LLUIColor* color)
+: mColorPtr(color)
{
}
@@ -32,14 +34,14 @@ void LLUIColor::set(const LLColor4& color)
mColorPtr = NULL;
}
-void LLUIColor::set(const LLColor4* color)
+void LLUIColor::set(const LLUIColor* color)
{
mColorPtr = color;
}
const LLColor4& LLUIColor::get() const
{
- return (mColorPtr == NULL ? mColor : *mColorPtr);
+ return (mColorPtr == NULL ? mColor : mColorPtr->get());
}
LLUIColor::operator const LLColor4& () const
diff --git a/indra/llxuixml/lluicolor.h b/indra/llxuixml/lluicolor.h
index bb0f786326..0ef2f78b24 100644
--- a/indra/llxuixml/lluicolor.h
+++ b/indra/llxuixml/lluicolor.h
@@ -22,11 +22,11 @@ class LLUIColor
{
public:
LLUIColor();
- LLUIColor(const LLColor4* color);
LLUIColor(const LLColor4& color);
+ LLUIColor(const LLUIColor* color);
void set(const LLColor4& color);
- void set(const LLColor4* color);
+ void set(const LLUIColor* color);
const LLColor4& get() const;
@@ -38,7 +38,7 @@ public:
private:
friend struct LLInitParam::ParamCompare<LLUIColor, false>;
- const LLColor4* mColorPtr;
+ const LLUIColor* mColorPtr;
LLColor4 mColor;
};
@@ -47,7 +47,7 @@ namespace LLInitParam
template<>
struct ParamCompare<LLUIColor, false>
{
- static bool equals(const class LLUIColor& a, const class LLUIColor& b);
+ static bool equals(const LLUIColor& a, const LLUIColor& b);
};
}
diff --git a/indra/llxuixml/llxuiparser.cpp b/indra/llxuixml/llxuiparser.cpp
index 17399865e5..dbc20a5a1e 100644
--- a/indra/llxuixml/llxuiparser.cpp
+++ b/indra/llxuixml/llxuiparser.cpp
@@ -324,33 +324,33 @@ void LLXUIXSDWriter::writeXSD(const std::string& type_name, const std::string& p
// add includes for all possible children
const std::type_info* type = *LLWidgetTypeRegistry::instance().getValue(type_name);
const widget_registry_t* widget_registryp = LLChildRegistryRegistry::instance().getValue(type);
-
- // add include declarations for all valid children
- for (widget_registry_t::Registrar::registry_map_t::const_iterator it = widget_registryp->currentRegistrar().beginItems();
- it != widget_registryp->currentRegistrar().endItems();
- ++it)
- {
- std::string widget_name = it->first;
- if (widget_name == type_name)
- {
- continue;
- }
- LLXMLNodePtr nodep = new LLXMLNode("xs:include", false);
- nodep->createChild("schemaLocation", true)->setStringValue(widget_name + ".xsd");
-
- // add to front of schema
- mSchemaNode->addChild(nodep, mSchemaNode);
- }
// add choices for valid children
if (widget_registryp)
{
+ // add include declarations for all valid children
+ for (widget_registry_t::Registrar::registry_map_t::const_iterator it = widget_registryp->currentRegistrar().beginItems();
+ it != widget_registryp->currentRegistrar().endItems();
+ ++it)
+ {
+ std::string widget_name = it->first;
+ if (widget_name == type_name)
+ {
+ continue;
+ }
+ LLXMLNodePtr nodep = new LLXMLNode("xs:include", false);
+ nodep->createChild("schemaLocation", true)->setStringValue(widget_name + ".xsd");
+
+ // add to front of schema
+ mSchemaNode->addChild(nodep, mSchemaNode);
+ }
+
for (widget_registry_t::Registrar::registry_map_t::const_iterator it = widget_registryp->currentRegistrar().beginItems();
it != widget_registryp->currentRegistrar().endItems();
++it)
{
std::string widget_name = it->first;
- //<xs:element name="widget_name" type="widget_name">
+ //<xs:element name="widget_name" type="widget_name">
LLXMLNodePtr widget_node = mElementNode->createChild("xs:element", false);
widget_node->createChild("name", true)->setStringValue(widget_name);
widget_node->createChild("type", true)->setStringValue(widget_name);
diff --git a/indra/lscript/lscript_compile/lscript_tree.cpp b/indra/lscript/lscript_compile/lscript_tree.cpp
index 3b8bbbe805..3d19de193a 100644
--- a/indra/lscript/lscript_compile/lscript_tree.cpp
+++ b/indra/lscript/lscript_compile/lscript_tree.cpp
@@ -9805,6 +9805,9 @@ void LLScriptEventHandler::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCom
break;
case LSCP_EMIT_BYTE_CODE:
{
+ llassert(mEventp);
+ if (!mEventp) return;
+
// order for event handler
// set jump table value
S32 jumpoffset;
@@ -9818,13 +9821,11 @@ void LLScriptEventHandler::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCom
chunk->addBytes(4);
// null terminated event name and null terminated parameters
- if (mEventp)
- {
- LLScriptByteCodeChunk *event = new LLScriptByteCodeChunk(FALSE);
- mEventp->recurse(fp, tabs, tabsize, pass, ptype, prunearg, scope, type, basetype, count, event, heap, stacksize, entry, entrycount, NULL);
- chunk->addBytes(event->mCodeChunk, event->mCurrentOffset);
- delete event;
- }
+ LLScriptByteCodeChunk *event = new LLScriptByteCodeChunk(FALSE);
+ mEventp->recurse(fp, tabs, tabsize, pass, ptype, prunearg, scope, type, basetype, count, event, heap, stacksize, entry, entrycount, NULL);
+ chunk->addBytes(event->mCodeChunk, event->mCurrentOffset);
+ delete event;
+
chunk->addBytes(1);
// now we're at the first opcode
@@ -10626,6 +10627,8 @@ LLScriptScript::LLScriptScript(LLScritpGlobalStorage *globals,
}
temp = temp->mNextp;
}
+
+ mClassName[0] = '\0';
}
void LLScriptScript::setBytecodeDest(const char* dst_filename)
diff --git a/indra/lscript/lscript_compile/lscript_tree.h b/indra/lscript/lscript_compile/lscript_tree.h
index a667e1eb5b..7de9606dfc 100644
--- a/indra/lscript/lscript_compile/lscript_tree.h
+++ b/indra/lscript/lscript_compile/lscript_tree.h
@@ -1876,7 +1876,7 @@ class LLScriptStateChange : public LLScriptStatement
{
public:
LLScriptStateChange(S32 line, S32 col, LLScriptIdentifier *identifier)
- : LLScriptStatement(line, col, LSSMT_STATE_CHANGE), mIdentifier(identifier)
+ : LLScriptStatement(line, col, LSSMT_STATE_CHANGE), mIdentifier(identifier), mReturnType(LST_NULL)
{
}
@@ -2210,7 +2210,7 @@ class LLScriptState : public LLScriptFilePosition
{
public:
LLScriptState(S32 line, S32 col, LSCRIPTStateType type, LLScriptIdentifier *identifier, LLScriptEventHandler *event)
- : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mEvent(event), mNextp(NULL)
+ : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mEvent(event), mNextp(NULL), mStateScope(NULL)
{
}
diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
index dbc44c8334..e230fcc280 100644
--- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
+++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
@@ -724,8 +724,8 @@ private:
return false;
// allocate some space and grab it
- UInt8* item_data = new UInt8( size + 1 );
- memset( item_data, 0, ( size + 1 ) * sizeof( UInt8* ) );
+ UInt8* item_data = new UInt8[ size + 1 ];
+ memset( item_data, 0, ( size + 1 ) * sizeof( UInt8 ) );
result = QTMetaDataGetItemValue( media_data_ref, item, item_data, size, NULL );
if ( noErr != result )
{
diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt
index 5bccd589d8..9f66a77c64 100644
--- a/indra/media_plugins/webkit/CMakeLists.txt
+++ b/indra/media_plugins/webkit/CMakeLists.txt
@@ -9,14 +9,17 @@ include(LLPlugin)
include(LLMath)
include(LLRender)
include(LLWindow)
+include(UI)
include(Linking)
include(PluginAPI)
include(MediaPluginBase)
include(FindOpenGL)
+include(PulseAudio)
include(WebKitLibPlugin)
include_directories(
+ ${PULSEAUDIO_INCLUDE_DIRS}
${LLPLUGIN_INCLUDE_DIRS}
${MEDIA_PLUGIN_BASE_INCLUDE_DIRS}
${LLCOMMON_INCLUDE_DIRS}
@@ -33,19 +36,29 @@ set(media_plugin_webkit_SOURCE_FILES
media_plugin_webkit.cpp
)
-add_library(media_plugin_webkit
- SHARED
- ${media_plugin_webkit_SOURCE_FILES}
-)
-
-target_link_libraries(media_plugin_webkit
+set(media_plugin_webkit_LINK_LIBRARIES
${LLPLUGIN_LIBRARIES}
${MEDIA_PLUGIN_BASE_LIBRARIES}
${LLCOMMON_LIBRARIES}
${WEBKIT_PLUGIN_LIBRARIES}
${PLUGIN_API_WINDOWS_LIBRARIES}
+ ${PULSEAUDIO_LIBRARIES}
)
+if (LINUX)
+ list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp)
+ list(APPEND media_plugin_webkit_LINK_LIBRARIES
+ ${UI_LIBRARIES} # for glib/GTK
+ )
+endif (LINUX)
+
+add_library(media_plugin_webkit
+ SHARED
+ ${media_plugin_webkit_SOURCE_FILES}
+)
+
+target_link_libraries(media_plugin_webkit ${media_plugin_webkit_LINK_LIBRARIES})
+
add_dependencies(media_plugin_webkit
${LLPLUGIN_LIBRARIES}
${MEDIA_PLUGIN_BASE_LIBRARIES}
@@ -79,4 +92,5 @@ if (DARWIN)
DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib
)
-endif (DARWIN) \ No newline at end of file
+endif (DARWIN)
+
diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp
new file mode 100644
index 0000000000..52ab766f7f
--- /dev/null
+++ b/indra/media_plugins/webkit/linux_volume_catcher.cpp
@@ -0,0 +1,488 @@
+/**
+ * @file linux_volume_catcher.cpp
+ * @brief A Linux-specific, PulseAudio-specific hack to detect and volume-adjust new audio sources
+ *
+ * @cond
+ * $LicenseInfo:firstyear=2010&license=viewergpl$
+ *
+ * Copyright (c) 2010, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ * @endcond
+ */
+
+/*
+ The high-level design is as follows:
+ 1) Connect to the PulseAudio daemon
+ 2) Watch for the creation of new audio players connecting to the daemon (this includes ALSA clients running on the PulseAudio emulation layer, such as Flash plugins)
+ 3) Examine any new audio player's PID to see if it belongs to our own process
+ 4) If so, tell PA to adjust the volume of that audio player ('sink input' in PA parlance)
+ 5) Keep a list of all living audio players that we care about, adjust the volumes of all of them when we get a new setVolume() call
+ */
+
+#include "linden_common.h"
+
+#include "linux_volume_catcher.h"
+
+
+#if LL_PULSEAUDIO_ENABLED
+
+extern "C" {
+#include <glib.h>
+
+#include <pulse/introspect.h>
+#include <pulse/context.h>
+#include <pulse/subscribe.h>
+#include <pulse/glib-mainloop.h> // There's no special reason why we want the *glib* PA mainloop, but the generic polling implementation seems broken.
+
+#include "apr_pools.h"
+#include "apr_dso.h"
+}
+
+////////////////////////////////////////////////////
+
+#define DEBUGMSG(...) do {} while(0)
+#define INFOMSG(...) do {} while(0)
+#define WARNMSG(...) do {} while(0)
+
+#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) RTN (*ll##PASYM)(__VA_ARGS__) = NULL
+#include "linux_volume_catcher_pa_syms.inc"
+#include "linux_volume_catcher_paglib_syms.inc"
+#undef LL_PA_SYM
+
+static bool sSymsGrabbed = false;
+static apr_pool_t *sSymPADSOMemoryPool = NULL;
+static apr_dso_handle_t *sSymPADSOHandleG = NULL;
+
+bool grab_pa_syms(std::string pulse_dso_name)
+{
+ if (sSymsGrabbed)
+ {
+ // already have grabbed good syms
+ return true;
+ }
+
+ bool sym_error = false;
+ bool rtn = false;
+ apr_status_t rv;
+ apr_dso_handle_t *sSymPADSOHandle = NULL;
+
+#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##PASYM, sSymPADSOHandle, #PASYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #PASYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #PASYM, (void*)ll##PASYM);}while(0)
+
+ //attempt to load the shared library
+ apr_pool_create(&sSymPADSOMemoryPool, NULL);
+
+ if ( APR_SUCCESS == (rv = apr_dso_load(&sSymPADSOHandle,
+ pulse_dso_name.c_str(),
+ sSymPADSOMemoryPool) ))
+ {
+ INFOMSG("Found DSO: %s", pulse_dso_name.c_str());
+
+#include "linux_volume_catcher_pa_syms.inc"
+#include "linux_volume_catcher_paglib_syms.inc"
+
+ if ( sSymPADSOHandle )
+ {
+ sSymPADSOHandleG = sSymPADSOHandle;
+ sSymPADSOHandle = NULL;
+ }
+
+ rtn = !sym_error;
+ }
+ else
+ {
+ INFOMSG("Couldn't load DSO: %s", pulse_dso_name.c_str());
+ rtn = false; // failure
+ }
+
+ if (sym_error)
+ {
+ WARNMSG("Failed to find necessary symbols in PulseAudio libraries.");
+ }
+#undef LL_PA_SYM
+
+ sSymsGrabbed = rtn;
+ return rtn;
+}
+
+
+void ungrab_pa_syms()
+{
+ // should be safe to call regardless of whether we've
+ // actually grabbed syms.
+
+ if ( sSymPADSOHandleG )
+ {
+ apr_dso_unload(sSymPADSOHandleG);
+ sSymPADSOHandleG = NULL;
+ }
+
+ if ( sSymPADSOMemoryPool )
+ {
+ apr_pool_destroy(sSymPADSOMemoryPool);
+ sSymPADSOMemoryPool = NULL;
+ }
+
+ // NULL-out all of the symbols we'd grabbed
+#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{ll##PASYM = NULL;}while(0)
+#include "linux_volume_catcher_pa_syms.inc"
+#include "linux_volume_catcher_paglib_syms.inc"
+#undef LL_PA_SYM
+
+ sSymsGrabbed = false;
+}
+////////////////////////////////////////////////////
+
+// PulseAudio requires a chain of callbacks with C linkage
+extern "C" {
+ void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info *i, int eol, void *userdata);
+ void callback_subscription_alert(pa_context *context, pa_subscription_event_type_t t, uint32_t index, void *userdata);
+ void callback_context_state(pa_context *context, void *userdata);
+}
+
+
+class LinuxVolumeCatcherImpl
+{
+public:
+ LinuxVolumeCatcherImpl();
+ ~LinuxVolumeCatcherImpl();
+
+ void setVolume(F32 volume);
+ void pump(void);
+
+ // for internal use - can't be private because used from our C callbacks
+
+ bool loadsyms(std::string pulse_dso_name);
+ void init();
+ void cleanup();
+
+ void update_all_volumes(F32 volume);
+ void update_index_volume(U32 index, F32 volume);
+ void connected_okay();
+
+ std::set<U32> mSinkInputIndices;
+ std::map<U32,U32> mSinkInputNumChannels;
+ F32 mDesiredVolume;
+ pa_glib_mainloop *mMainloop;
+ pa_context *mPAContext;
+ bool mConnected;
+ bool mGotSyms;
+};
+
+LinuxVolumeCatcherImpl::LinuxVolumeCatcherImpl()
+ : mDesiredVolume(0.0f),
+ mMainloop(NULL),
+ mPAContext(NULL),
+ mConnected(false),
+ mGotSyms(false)
+{
+ init();
+}
+
+LinuxVolumeCatcherImpl::~LinuxVolumeCatcherImpl()
+{
+ cleanup();
+}
+
+bool LinuxVolumeCatcherImpl::loadsyms(std::string pulse_dso_name)
+{
+ return grab_pa_syms(pulse_dso_name);
+}
+
+void LinuxVolumeCatcherImpl::init()
+{
+ // try to be as defensive as possible because PA's interface is a
+ // bit fragile and (for our purposes) we'd rather simply not function
+ // than crash
+
+ // we cheat and rely upon libpulse-mainloop-glib.so.0 to pull-in
+ // libpulse.so.0 - this isn't a great assumption, and the two DSOs should
+ // probably be loaded separately. Our Linux DSO framework needs refactoring,
+ // we do this sort of thing a lot with practically identical logic...
+ mGotSyms = loadsyms("libpulse-mainloop-glib.so.0");
+ if (!mGotSyms) return;
+
+ mMainloop = llpa_glib_mainloop_new(g_main_context_default());
+ if (mMainloop)
+ {
+ pa_mainloop_api *api = llpa_glib_mainloop_get_api(mMainloop);
+ if (api)
+ {
+ pa_proplist *proplist = llpa_proplist_new();
+ if (proplist)
+ {
+ llpa_proplist_sets(proplist, PA_PROP_APPLICATION_ICON_NAME, "multimedia-player");
+ llpa_proplist_sets(proplist, PA_PROP_APPLICATION_ID, "com.secondlife.viewer.mediaplugvoladjust");
+ llpa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, "SL Plugin Volume Adjuster");
+ llpa_proplist_sets(proplist, PA_PROP_APPLICATION_VERSION, "1");
+
+ // plain old pa_context_new() is broken!
+ mPAContext = llpa_context_new_with_proplist(api, NULL, proplist);
+ llpa_proplist_free(proplist);
+ }
+ }
+ }
+
+ // Now we've set up a PA context and mainloop, try connecting the
+ // PA context to a PA daemon.
+ if (mPAContext)
+ {
+ llpa_context_set_state_callback(mPAContext, callback_context_state, this);
+ pa_context_flags_t cflags = (pa_context_flags)0; // maybe add PA_CONTEXT_NOAUTOSPAWN?
+ if (llpa_context_connect(mPAContext, NULL, cflags, NULL) >= 0)
+ {
+ // Okay! We haven't definitely connected, but we
+ // haven't definitely failed yet.
+ }
+ else
+ {
+ // Failed to connect to PA manager... we'll leave
+ // things like that. Perhaps we should try again later.
+ }
+ }
+}
+
+void LinuxVolumeCatcherImpl::cleanup()
+{
+ mConnected = false;
+
+ if (mGotSyms && mPAContext)
+ {
+ llpa_context_disconnect(mPAContext);
+ llpa_context_unref(mPAContext);
+ }
+ mPAContext = NULL;
+
+ if (mGotSyms && mMainloop)
+ {
+ llpa_glib_mainloop_free(mMainloop);
+ }
+ mMainloop = NULL;
+}
+
+void LinuxVolumeCatcherImpl::setVolume(F32 volume)
+{
+ mDesiredVolume = volume;
+
+ if (!mGotSyms) return;
+
+ if (mConnected && mPAContext)
+ {
+ update_all_volumes(mDesiredVolume);
+ }
+
+ pump();
+}
+
+void LinuxVolumeCatcherImpl::pump()
+{
+ gboolean may_block = FALSE;
+ g_main_context_iteration(g_main_context_default(), may_block);
+}
+
+void LinuxVolumeCatcherImpl::connected_okay()
+{
+ pa_operation *op;
+
+ // fetch global list of existing sinkinputs
+ if ((op = llpa_context_get_sink_input_info_list(mPAContext,
+ callback_discovered_sinkinput,
+ this)))
+ {
+ llpa_operation_unref(op);
+ }
+
+ // subscribe to future global sinkinput changes
+ llpa_context_set_subscribe_callback(mPAContext,
+ callback_subscription_alert,
+ this);
+ if ((op = llpa_context_subscribe(mPAContext, (pa_subscription_mask_t)
+ (PA_SUBSCRIPTION_MASK_SINK_INPUT),
+ NULL, NULL)))
+ {
+ llpa_operation_unref(op);
+ }
+}
+
+void LinuxVolumeCatcherImpl::update_all_volumes(F32 volume)
+{
+ for (std::set<U32>::iterator it = mSinkInputIndices.begin();
+ it != mSinkInputIndices.end(); ++it)
+ {
+ update_index_volume(*it, volume);
+ }
+}
+
+void LinuxVolumeCatcherImpl::update_index_volume(U32 index, F32 volume)
+{
+ static pa_cvolume cvol;
+ llpa_cvolume_set(&cvol, mSinkInputNumChannels[index],
+ llpa_sw_volume_from_linear(volume));
+
+ pa_context *c = mPAContext;
+ uint32_t idx = index;
+ const pa_cvolume *cvolumep = &cvol;
+ pa_context_success_cb_t cb = NULL; // okay as null
+ void *userdata = NULL; // okay as null
+
+ pa_operation *op;
+ if ((op = llpa_context_set_sink_input_volume(c, idx, cvolumep, cb, userdata)))
+ {
+ llpa_operation_unref(op);
+ }
+}
+
+
+void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info *sii, int eol, void *userdata)
+{
+ LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata);
+ llassert(impl);
+
+ if (0 == eol)
+ {
+ pa_proplist *proplist = sii->proplist;
+ pid_t sinkpid = atoll(llpa_proplist_gets(proplist, PA_PROP_APPLICATION_PROCESS_ID));
+
+ if (sinkpid == getpid()) // does the discovered sinkinput belong to this process?
+ {
+ bool is_new = (impl->mSinkInputIndices.find(sii->index) ==
+ impl->mSinkInputIndices.end());
+
+ impl->mSinkInputIndices.insert(sii->index);
+ impl->mSinkInputNumChannels[sii->index] = sii->channel_map.channels;
+
+ if (is_new)
+ {
+ // new!
+ impl->update_index_volume(sii->index, impl->mDesiredVolume);
+ }
+ else
+ {
+ // seen it already, do nothing.
+ }
+ }
+ }
+}
+
+void callback_subscription_alert(pa_context *context, pa_subscription_event_type_t t, uint32_t index, void *userdata)
+{
+ LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata);
+ llassert(impl);
+
+ switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) {
+ case PA_SUBSCRIPTION_EVENT_SINK_INPUT:
+ if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) ==
+ PA_SUBSCRIPTION_EVENT_REMOVE)
+ {
+ // forget this sinkinput, if we were caring about it
+ impl->mSinkInputIndices.erase(index);
+ impl->mSinkInputNumChannels.erase(index);
+ }
+ else if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) ==
+ PA_SUBSCRIPTION_EVENT_NEW)
+ {
+ // ask for more info about this new sinkinput
+ pa_operation *op;
+ if ((op = llpa_context_get_sink_input_info(impl->mPAContext, index, callback_discovered_sinkinput, impl)))
+ {
+ llpa_operation_unref(op);
+ }
+ }
+ else
+ {
+ // property change on this sinkinput - we don't care.
+ }
+ break;
+
+ default:;
+ }
+}
+
+void callback_context_state(pa_context *context, void *userdata)
+{
+ LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata);
+ llassert(impl);
+
+ switch (llpa_context_get_state(context))
+ {
+ case PA_CONTEXT_READY:
+ impl->mConnected = true;
+ impl->connected_okay();
+ break;
+ case PA_CONTEXT_TERMINATED:
+ impl->mConnected = false;
+ break;
+ case PA_CONTEXT_FAILED:
+ impl->mConnected = false;
+ break;
+ default:;
+ }
+}
+
+/////////////////////////////////////////////////////
+
+LinuxVolumeCatcher::LinuxVolumeCatcher()
+{
+ pimpl = new LinuxVolumeCatcherImpl();
+}
+
+LinuxVolumeCatcher::~LinuxVolumeCatcher()
+{
+ delete pimpl;
+ pimpl = NULL;
+}
+
+void LinuxVolumeCatcher::setVolume(F32 volume)
+{
+ llassert(pimpl);
+ pimpl->setVolume(volume);
+}
+
+void LinuxVolumeCatcher::pump()
+{
+ llassert(pimpl);
+ pimpl->pump();
+}
+
+#else // !LL_PULSEAUDIO_ENABLED
+
+// stub.
+
+LinuxVolumeCatcher::LinuxVolumeCatcher()
+{
+ pimpl = NULL;
+}
+
+LinuxVolumeCatcher::~LinuxVolumeCatcher()
+{
+}
+
+void LinuxVolumeCatcher::setVolume(F32 volume)
+{
+}
+
+void LinuxVolumeCatcher::pump()
+{
+}
+
+#endif // LL_PULSEAUDIO_ENABLED
diff --git a/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc b/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc
new file mode 100644
index 0000000000..d806b48428
--- /dev/null
+++ b/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc
@@ -0,0 +1,21 @@
+// required symbols to grab
+LL_PA_SYM(true, pa_context_connect, int, pa_context *c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api);
+LL_PA_SYM(true, pa_context_disconnect, void, pa_context *c);
+LL_PA_SYM(true, pa_context_get_sink_input_info, pa_operation*, pa_context *c, uint32_t idx, pa_sink_input_info_cb_t cb, void *userdata);
+LL_PA_SYM(true, pa_context_get_sink_input_info_list, pa_operation*, pa_context *c, pa_sink_input_info_cb_t cb, void *userdata);
+LL_PA_SYM(true, pa_context_get_state, pa_context_state_t, pa_context *c);
+LL_PA_SYM(true, pa_context_new_with_proplist, pa_context*, pa_mainloop_api *mainloop, const char *name, pa_proplist *proplist);
+LL_PA_SYM(true, pa_context_set_sink_input_volume, pa_operation*, pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata);
+LL_PA_SYM(true, pa_context_set_state_callback, void, pa_context *c, pa_context_notify_cb_t cb, void *userdata);
+LL_PA_SYM(true, pa_context_set_subscribe_callback, void, pa_context *c, pa_context_subscribe_cb_t cb, void *userdata);
+LL_PA_SYM(true, pa_context_subscribe, pa_operation*, pa_context *c, pa_subscription_mask_t m, pa_context_success_cb_t cb, void *userdata);
+LL_PA_SYM(true, pa_context_unref, void, pa_context *c);
+LL_PA_SYM(true, pa_cvolume_set, pa_cvolume*, pa_cvolume *a, unsigned channels, pa_volume_t v);
+LL_PA_SYM(true, pa_operation_unref, void, pa_operation *o);
+LL_PA_SYM(true, pa_proplist_free, void, pa_proplist* p);
+LL_PA_SYM(true, pa_proplist_gets, const char*, pa_proplist *p, const char *key);
+LL_PA_SYM(true, pa_proplist_new, pa_proplist*, void);
+LL_PA_SYM(true, pa_proplist_sets, int, pa_proplist *p, const char *key, const char *value);
+LL_PA_SYM(true, pa_sw_volume_from_linear, pa_volume_t, double v);
+
+// optional symbols to grab
diff --git a/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc b/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc
new file mode 100644
index 0000000000..abf628c96c
--- /dev/null
+++ b/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc
@@ -0,0 +1,6 @@
+// required symbols to grab
+LL_PA_SYM(true, pa_glib_mainloop_free, void, pa_glib_mainloop* g);
+LL_PA_SYM(true, pa_glib_mainloop_get_api, pa_mainloop_api*, pa_glib_mainloop* g);
+LL_PA_SYM(true, pa_glib_mainloop_new, pa_glib_mainloop *, GMainContext *c);
+
+// optional symbols to grab
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 42d680ade6..c7aba04492 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -43,11 +43,15 @@
#include "llpluginmessageclasses.h"
#include "media_plugin_base.h"
+#if LL_LINUX
+# include "linux_volume_catcher.h"
+#endif // LL_LINUX
+
#if LL_WINDOWS
-#include <direct.h>
+# include <direct.h>
#else
-#include <unistd.h>
-#include <stdlib.h>
+# include <unistd.h>
+# include <stdlib.h>
#endif
#if LL_WINDOWS
@@ -102,6 +106,10 @@ private:
F32 mBackgroundG;
F32 mBackgroundB;
+#if LL_LINUX
+ LinuxVolumeCatcher mLinuxVolumeCatcher;
+#endif // LL_LINUX
+
void setInitState(int state)
{
// std::cerr << "changing init state to " << state << std::endl;
@@ -114,6 +122,10 @@ private:
{
LLQtWebKit::getInstance()->pump( milliseconds );
+#if LL_LINUX
+ mLinuxVolumeCatcher.pump();
+#endif // LL_LINUX
+
checkEditState();
if(mInitState == INIT_STATE_NAVIGATE_COMPLETE)
@@ -281,6 +293,7 @@ private:
return false;
};
+ void setVolume(F32 vol);
////////////////////////////////////////////////////////////////////////////////
// virtual
@@ -470,92 +483,96 @@ private:
return (LLQtWebKit::EKeyboardModifier)result;
}
-
////////////////////////////////////////////////////////////////////////////////
//
- void keyEvent(LLQtWebKit::EKeyEvent key_event, int key, LLQtWebKit::EKeyboardModifier modifiers)
+ void deserializeKeyboardData( LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers )
{
- int llqt_key;
+ native_scan_code = 0;
+ native_virtual_key = 0;
+ native_modifiers = 0;
+ if( native_key_data.isMap() )
+ {
+#if LL_DARWIN
+ native_scan_code = (uint32_t)(native_key_data["char_code"].asInteger());
+ native_virtual_key = (uint32_t)(native_key_data["key_code"].asInteger());
+ native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger());
+#elif LL_WINDOWS
+ native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger());
+ native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger());
+ // TODO: I don't think we need to do anything with native modifiers here -- please verify
+#elif LL_LINUX
+ native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger());
+ native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger());
+ native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger());
+#else
+ // Add other platforms here as needed
+#endif
+ };
+ };
+
+ ////////////////////////////////////////////////////////////////////////////////
+ //
+ void keyEvent(LLQtWebKit::EKeyEvent key_event, int key, LLQtWebKit::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap())
+ {
// The incoming values for 'key' will be the ones from indra_constants.h
- // the outgoing values are the ones from llqtwebkit.h
+ std::string utf8_text;
+ if(key < KEY_SPECIAL)
+ {
+ // Low-ascii characters need to get passed through.
+ utf8_text = (char)key;
+ }
+
+ // Any special-case handling we want to do for particular keys...
switch((KEY)key)
{
- // This is the list that the llqtwebkit implementation actually maps into Qt keys.
-// case KEY_XXX: llqt_key = LL_DOM_VK_CANCEL; break;
-// case KEY_XXX: llqt_key = LL_DOM_VK_HELP; break;
- case KEY_BACKSPACE: llqt_key = LL_DOM_VK_BACK_SPACE; break;
- case KEY_TAB: llqt_key = LL_DOM_VK_TAB; break;
-// case KEY_XXX: llqt_key = LL_DOM_VK_CLEAR; break;
- case KEY_RETURN: llqt_key = LL_DOM_VK_RETURN; break;
- case KEY_PAD_RETURN: llqt_key = LL_DOM_VK_ENTER; break;
- case KEY_SHIFT: llqt_key = LL_DOM_VK_SHIFT; break;
- case KEY_CONTROL: llqt_key = LL_DOM_VK_CONTROL; break;
- case KEY_ALT: llqt_key = LL_DOM_VK_ALT; break;
-// case KEY_XXX: llqt_key = LL_DOM_VK_PAUSE; break;
- case KEY_CAPSLOCK: llqt_key = LL_DOM_VK_CAPS_LOCK; break;
- case KEY_ESCAPE: llqt_key = LL_DOM_VK_ESCAPE; break;
- case KEY_PAGE_UP: llqt_key = LL_DOM_VK_PAGE_UP; break;
- case KEY_PAGE_DOWN: llqt_key = LL_DOM_VK_PAGE_DOWN; break;
- case KEY_END: llqt_key = LL_DOM_VK_END; break;
- case KEY_HOME: llqt_key = LL_DOM_VK_HOME; break;
- case KEY_LEFT: llqt_key = LL_DOM_VK_LEFT; break;
- case KEY_UP: llqt_key = LL_DOM_VK_UP; break;
- case KEY_RIGHT: llqt_key = LL_DOM_VK_RIGHT; break;
- case KEY_DOWN: llqt_key = LL_DOM_VK_DOWN; break;
-// case KEY_XXX: llqt_key = LL_DOM_VK_PRINTSCREEN; break;
- case KEY_INSERT: llqt_key = LL_DOM_VK_INSERT; break;
- case KEY_DELETE: llqt_key = LL_DOM_VK_DELETE; break;
-// case KEY_XXX: llqt_key = LL_DOM_VK_CONTEXT_MENU; break;
+ // ASCII codes for some standard keys
+ case LLQtWebKit::KEY_BACKSPACE: utf8_text = (char)8; break;
+ case LLQtWebKit::KEY_TAB: utf8_text = (char)9; break;
+ case LLQtWebKit::KEY_RETURN: utf8_text = (char)13; break;
+ case LLQtWebKit::KEY_PAD_RETURN: utf8_text = (char)13; break;
+ case LLQtWebKit::KEY_ESCAPE: utf8_text = (char)27; break;
- default:
- if(key < KEY_SPECIAL)
- {
- // Pass the incoming key through -- it should be regular ASCII, which should be correct for webkit.
- llqt_key = key;
- }
- else
- {
- // Don't pass through untranslated special keys -- they'll be all wrong.
- llqt_key = 0;
- }
+ default:
break;
}
-// std::cerr << "keypress, original code = 0x" << std::hex << key << ", converted code = 0x" << std::hex << llqt_key << std::dec << std::endl;
+// std::cerr << "key event " << (int)key_event << ", native_key_data = " << native_key_data << std::endl;
- if(llqt_key != 0)
- {
- LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, key_event, llqt_key, modifiers);
- }
+ uint32_t native_scan_code = 0;
+ uint32_t native_virtual_key = 0;
+ uint32_t native_modifiers = 0;
+ deserializeKeyboardData( native_key_data, native_scan_code, native_virtual_key, native_modifiers );
+
+ LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, key_event, (uint32_t)key, utf8_text.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers);
checkEditState();
};
////////////////////////////////////////////////////////////////////////////////
//
- void unicodeInput( const std::string &utf8str, LLQtWebKit::EKeyboardModifier modifiers)
- {
- LLWString wstr = utf8str_to_wstring(utf8str);
+ void unicodeInput( const std::string &utf8str, LLQtWebKit::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap())
+ {
+ uint32_t key = LLQtWebKit::KEY_NONE;
- unsigned int i;
- for(i=0; i < wstr.size(); i++)
+// std::cerr << "unicode input, native_key_data = " << native_key_data << std::endl;
+
+ if(utf8str.size() == 1)
{
-// std::cerr << "unicode input, code = 0x" << std::hex << (unsigned long)(wstr[i]) << std::dec << std::endl;
-
- if(wstr[i] == 32)
- {
- // For some reason, the webkit plugin really wants the space bar to come in through the key-event path, not the unicode path.
- LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_DOWN, 32, modifiers);
- LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_UP, 32, modifiers);
- }
- else
- {
- LLQtWebKit::getInstance()->unicodeInput(mBrowserWindowId, wstr[i], modifiers);
- }
+ // The only way a utf8 string can be one byte long is if it's actually a single 7-bit ascii character.
+ // In this case, use it as the key value.
+ key = utf8str[0];
}
+ uint32_t native_scan_code = 0;
+ uint32_t native_virtual_key = 0;
+ uint32_t native_modifiers = 0;
+ deserializeKeyboardData( native_key_data, native_scan_code, native_virtual_key, native_modifiers );
+
+ LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_DOWN, (uint32_t)key, utf8str.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers);
+ LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_UP, (uint32_t)key, utf8str.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers);
+
checkEditState();
};
@@ -608,6 +625,9 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_
mLastMouseX = 0;
mLastMouseY = 0;
mFirstFocus = true;
+ mBackgroundR = 0.0f;
+ mBackgroundG = 0.0f;
+ mBackgroundB = 0.0f;
}
MediaPluginWebKit::~MediaPluginWebKit()
@@ -725,6 +745,14 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
// std::cerr << "MediaPluginWebKit::receiveMessage: unknown base message: " << message_name << std::endl;
}
}
+ else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME)
+ {
+ if(message_name == "set_volume")
+ {
+ F32 volume = message_in.getValueReal("volume");
+ setVolume(volume);
+ }
+ }
else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA)
{
if(message_name == "size_change")
@@ -852,6 +880,7 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
std::string event = message_in.getValue("event");
S32 key = message_in.getValueS32("key");
std::string modifiers = message_in.getValue("modifiers");
+ LLSD native_key_data = message_in.getValueLLSD("native_key_data");
// Treat unknown events as key-up for safety.
LLQtWebKit::EKeyEvent key_event = LLQtWebKit::KE_KEY_UP;
@@ -864,14 +893,15 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
key_event = LLQtWebKit::KE_KEY_REPEAT;
}
- keyEvent(key_event, key, decodeModifiers(modifiers));
+ keyEvent(key_event, key, decodeModifiers(modifiers), native_key_data);
}
else if(message_name == "text_event")
{
std::string text = message_in.getValue("text");
std::string modifiers = message_in.getValue("modifiers");
+ LLSD native_key_data = message_in.getValueLLSD("native_key_data");
- unicodeInput(text, decodeModifiers(modifiers));
+ unicodeInput(text, decodeModifiers(modifiers), native_key_data);
}
if(message_name == "edit_cut")
{
@@ -989,6 +1019,13 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
}
}
+void MediaPluginWebKit::setVolume(F32 volume)
+{
+#if LL_LINUX
+ mLinuxVolumeCatcher.setVolume(volume);
+#endif // LL_LINUX
+}
+
int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data)
{
MediaPluginWebKit *self = new MediaPluginWebKit(host_send_func, host_user_data);
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 1c32c690a8..14eb75e457 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -7,6 +7,7 @@ include(Boost)
include(BuildVersion)
include(DBusGlib)
include(DirectX)
+include(DragDrop)
include(ELFIO)
include(FMOD)
include(OPENAL)
@@ -160,6 +161,7 @@ set(viewer_SOURCE_FILES
llfloatercustomize.cpp
llfloaterdaycycle.cpp
llfloaterenvsettings.cpp
+ llfloaterevent.cpp
llfloaterfonttest.cpp
llfloatergesture.cpp
llfloatergodtools.cpp
@@ -181,7 +183,6 @@ set(viewer_SOURCE_FILES
llfloatermediasettings.cpp
llfloatermemleak.cpp
llfloaternamedesc.cpp
- llfloaternearbymedia.cpp
llfloaternotificationsconsole.cpp
llfloateropenobject.cpp
llfloaterparcel.cpp
@@ -299,7 +300,6 @@ set(viewer_SOURCE_FILES
llpanelclassified.cpp
llpanelcontents.cpp
llpaneleditwearable.cpp
- llpanelevent.cpp
llpanelface.cpp
llpanelgroup.cpp
llpanelgroupgeneral.cpp
@@ -322,6 +322,7 @@ set(viewer_SOURCE_FILES
llpanelmediasettingspermissions.cpp
llpanelmediasettingssecurity.cpp
llpanelme.cpp
+ llpanelnearbymedia.cpp
llpanelobject.cpp
llpanelobjectinventory.cpp
llpaneloutfitsinventory.cpp
@@ -660,6 +661,7 @@ set(viewer_HEADER_FILES
llfloatercustomize.h
llfloaterdaycycle.h
llfloaterenvsettings.h
+ llfloaterevent.h
llfloaterfonttest.h
llfloatergesture.h
llfloatergodtools.h
@@ -681,7 +683,6 @@ set(viewer_HEADER_FILES
llfloatermediasettings.h
llfloatermemleak.h
llfloaternamedesc.h
- llfloaternearbymedia.h
llfloaternotificationsconsole.h
llfloateropenobject.h
llfloaterparcel.h
@@ -794,7 +795,6 @@ set(viewer_HEADER_FILES
llpanelclassified.h
llpanelcontents.h
llpaneleditwearable.h
- llpanelevent.h
llpanelface.h
llpanelgroup.h
llpanelgroupgeneral.h
@@ -817,6 +817,7 @@ set(viewer_HEADER_FILES
llpanelmediasettingspermissions.h
llpanelmediasettingssecurity.h
llpanelme.h
+ llpanelnearbymedia.h
llpanelobject.h
llpanelobjectinventory.h
llpaneloutfitsinventory.h
@@ -1623,13 +1624,6 @@ set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
if (LINUX)
- add_custom_command(
- OUTPUT secondlife-stripped
- COMMAND strip
- ARGS --strip-debug -o secondlife-stripped ${VIEWER_BINARY_NAME}
- DEPENDS ${VIEWER_BINARY_NAME}
- )
-
set(product SecondLife-${ARCH}-${viewer_VERSION})
add_custom_command(
@@ -1649,15 +1643,15 @@ if (LINUX)
--login_channel=${VIEWER_LOGIN_CHANNEL}
--source=${CMAKE_CURRENT_SOURCE_DIR}
--touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
- DEPENDS secondlife-stripped ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
+ DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
)
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_gstreamer010 media_plugin_webkit)
if (NOT INSTALL)
add_custom_target(package ALL DEPENDS ${product}.tar.bz2)
- add_dependencies(package linux-crash-logger-strip-target)
- add_dependencies(package linux-updater-strip-target)
+ add_dependencies(package linux-crash-logger-target)
+ add_dependencies(package linux-updater-target)
check_message_template(package)
endif (NOT INSTALL)
endif (LINUX)
diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml
index e825f13e82..d0e1f62a84 100644
--- a/indra/newview/app_settings/ignorable_dialogs.xml
+++ b/indra/newview/app_settings/ignorable_dialogs.xml
@@ -177,17 +177,6 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>FirstStreamingMedia</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstStreamingMedia warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>FirstTeleport</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 2a7c3b0f74..73c08c4867 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4,13 +4,13 @@
<key>AFKTimeout</key>
<map>
<key>Comment</key>
- <string>Time before automatically setting AFK (away from keyboard) mode (seconds)</string>
+ <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
- <real>300.0</real>
+ <real>0</real>
</map>
<key>AdvanceSnapshot</key>
<map>
@@ -197,7 +197,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>1.0</real>
+ <real>0.5</real>
</map>
<key>AudioLevelMic</key>
<map>
@@ -219,7 +219,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>1.0</real>
+ <real>0.5</real>
</map>
<key>AudioLevelRolloff</key>
<map>
@@ -241,7 +241,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>1.0</real>
+ <real>0.5</real>
</map>
<key>AudioLevelUI</key>
<map>
@@ -3607,7 +3607,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://lecs.viewer-sidebar.secondlife.com.s3.amazonaws.com/sidebar.html?p=[AUTH_TOKEN]&amp;lang=[LANGUAGE]&amp;channel=[CHANNEL]&amp;version=[VERSION]&amp;major=[VERSION_MAJOR]&amp;minor=[VERSION_MINOR]</string>
+ <string>https://viewer-sidebar.secondlife.com/sidebar.html?p=[AUTH_TOKEN]&amp;lang=[LANGUAGE]&amp;channel=[CHANNEL]&amp;version=[VERSION]&amp;major=[VERSION_MAJOR]&amp;minor=[VERSION_MINOR]&amp;firstlogin=[FIRST_LOGIN]</string>
</map>
<key>SearchURL</key>
<map>
@@ -4328,13 +4328,13 @@
<key>LoginLocation</key>
<map>
<key>Comment</key>
- <string>Login at same location you last logged out</string>
+ <string>Login location ('last', 'home')</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>last</string>
+ <string>home</string>
</map>
<key>LoginPage</key>
<map>
@@ -4578,6 +4578,50 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>MediaShowOnOthers</key>
+ <map>
+ <key>Comment</key>
+ <string>Whether or not to show media on other avatars</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>MediaShowOutsideParcel</key>
+ <map>
+ <key>Comment</key>
+ <string>Whether or not to show media from outside the current parcel</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>MediaShowWithinParcel</key>
+ <map>
+ <key>Comment</key>
+ <string>Whether or not to show media within the current parcel</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>MediaTentativeAutoPlay</key>
+ <map>
+ <key>Comment</key>
+ <string>This is a tentative flag that may be temporarily set off by the user, until she teleports</string>
+ <key>Persist</key>
+ <integer>0</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>MemoryLogFrequency</key>
<map>
<key>Comment</key>
@@ -4633,6 +4677,17 @@
<key>Value</key>
<integer>410</integer>
</map>
+ <key>MePanelOpened</key>
+ <map>
+ <key>Comment</key>
+ <string>Indicates that Me Panel was opened at least once after Viewer was installed</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <real>0</real>
+ </map>
<key>MigrateCacheDirectory</key>
<map>
<key>Comment</key>
@@ -5044,7 +5099,9 @@
<map>
<key>Comment</key>
<string>Default width of buttons in the toast.
- Note if required width will be less then this one, a button will be reshaped to default size , otherwise to required</string>
+ Notes:
+ If required width will be less then this one, a button will be reshaped to default size , otherwise to required
+ Change of this parameter will affect the layout of buttons in notification toast.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -5303,7 +5360,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>PerAccountSettingsFile</key>
<map>
@@ -5497,7 +5554,7 @@
<key>PreferredMaturity</key>
<map>
<key>Comment</key>
- <string>Setting for the user's preferred maturity level.</string>
+ <string>Setting for the user's preferred maturity level (consts in indra_constants.h)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -5527,6 +5584,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>PrimMediaDragNDrop</key>
+ <map>
+ <key>Comment</key>
+ <string>Enable drag and drop of URLs onto prim faces</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>PrimMediaMaxRetries</key>
<map>
<key>Comment</key>
@@ -7791,7 +7859,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>0</integer>
</map>
<key>ShowCrosshairs</key>
<map>
@@ -8388,7 +8456,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>0</integer>
</map>
<key>ShowTangentBasis</key>
<map>
@@ -8434,6 +8502,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>ShowVoiceVisualizersInCalls</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables in-world voice visualizers, voice gestures and lip-sync while in group or P2P calls.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>ShowVolumeSettingsPopup</key>
<map>
<key>Comment</key>
@@ -9927,50 +10006,6 @@
<key>Value</key>
<integer>15</integer>
</map>
- <key>UIButtonImageLeftPadding</key>
- <map>
- <key>Comment</key>
- <string>Button Overlay Image Left Padding</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>4</integer>
- </map>
- <key>UIButtonImageRightPadding</key>
- <map>
- <key>Comment</key>
- <string>Button Overlay Image Right Padding</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>4</integer>
- </map>
- <key>UIButtonImageTopPadding</key>
- <map>
- <key>Comment</key>
- <string>Button Overlay Image Top Padding</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>2</integer>
- </map>
- <key>UIButtonImageBottomPadding</key>
- <map>
- <key>Comment</key>
- <string>Button Overlay Image Bottom Padding</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>2</integer>
- </map>
<key>UploadBakedTexOld</key>
<map>
<key>Comment</key>
@@ -10079,7 +10114,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>UseFreezeFrame</key>
<map>
@@ -10358,17 +10393,6 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>VoiceDefaultInternalLevel</key>
- <map>
- <key>Comment</key>
- <string>Internal level of voice set by default. Is equivalent to 0.5 (from 0.0-1.0 range) external voice level (internal = 400 * external^2).</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>100</integer>
- </map>
<key>VoiceEarLocation</key>
<map>
<key>Comment</key>
@@ -10820,6 +10844,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>SLURLDragNDrop</key>
+ <map>
+ <key>Comment</key>
+ <string>Enable drag and drop of SLURLs onto the viewer</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>soundsbeacon</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/installers/darwin/firstlook-dmg/_DS_Store b/indra/newview/installers/darwin/firstlook-dmg/_DS_Store
index 9d9fd897e7..495ec37f53 100644
--- a/indra/newview/installers/darwin/firstlook-dmg/_DS_Store
+++ b/indra/newview/installers/darwin/firstlook-dmg/_DS_Store
Binary files differ
diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh
index a0b72a89f2..c6b92589db 100644
--- a/indra/newview/installers/darwin/fix_application_icon_position.sh
+++ b/indra/newview/installers/darwin/fix_application_icon_position.sh
@@ -4,11 +4,14 @@ cp -r ./../../../build-darwin-i386/newview/*.dmg ~/Desktop/TempBuild.dmg
hdid ~/Desktop/TempBuild.dmg
open -a finder /Volumes/Second\ Life\ Installer
osascript dmg-cleanup.applescript
-cp /Volumes/Second\ Life\ Installer/.DS_Store ~/Desktop/_DS_Store
-chflags nohidden ~/Desktop/_DS_Store
-cp ~/Desktop/_DS_Store ./firstlook-dmg/_DS_Store
-cp ~/Desktop/_DS_Store ./publicnightly-dmg/_DS_Store
-cp ~/Desktop/_DS_Store ./release-dmg/_DS_Store
-cp ~/Desktop/_DS_Store ./releasecandidate-dmg/_DS_Store
umount /Volumes/Second\ Life\ Installer/
-rm ~/Desktop/_DS_Store ~/Desktop/TempBuild.dmg
+hdid ~/Desktop/TempBuild.dmg
+open -a finder /Volumes/Second\ Life\ Installer
+#cp /Volumes/Second\ Life\ Installer/.DS_Store ~/Desktop/_DS_Store
+#chflags nohidden ~/Desktop/_DS_Store
+#cp ~/Desktop/_DS_Store ./firstlook-dmg/_DS_Store
+#cp ~/Desktop/_DS_Store ./publicnightly-dmg/_DS_Store
+#cp ~/Desktop/_DS_Store ./release-dmg/_DS_Store
+#cp ~/Desktop/_DS_Store ./releasecandidate-dmg/_DS_Store
+#umount /Volumes/Second\ Life\ Installer/
+#rm ~/Desktop/_DS_Store ~/Desktop/TempBuild.dmg
diff --git a/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store b/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store
index 9d9fd897e7..495ec37f53 100644
--- a/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store
+++ b/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store
Binary files differ
diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store
index 9d9fd897e7..495ec37f53 100644
--- a/indra/newview/installers/darwin/release-dmg/_DS_Store
+++ b/indra/newview/installers/darwin/release-dmg/_DS_Store
Binary files differ
diff --git a/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store b/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store
index 9d9fd897e7..495ec37f53 100644
--- a/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store
+++ b/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store
Binary files differ
diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt
index 92d321d8c0..e01b9e4bc6 100644
--- a/indra/newview/linux_tools/client-readme.txt
+++ b/indra/newview/linux_tools/client-readme.txt
@@ -15,7 +15,7 @@ Life itself - please see <http://www.secondlife.com/whatis/>.
5.3. Blank window after minimizing it
5.4. Audio
5.5. 'Alt' key for camera controls doesn't work
- 5.6. In-world streaming movie/music playback
+ 5.6. In-world streaming movie, music and Flash playback
6. Advanced Troubleshooting
6.1. Audio
6.2. OpenGL
@@ -169,12 +169,15 @@ SOLUTION:- Some window managers eat the Alt key for their own purposes; you
example, the 'Windows' key!) which will allow the Alt key to function
properly with mouse actions in Second Life and other applications.
-PROBLEM 6:- In-world movie and/or music playback doesn't work for me.
+PROBLEM 6:- In-world movie, music, or Flash playback doesn't work for me.
SOLUTION:- You need to have a working installation of GStreamer 0.10; this
is usually an optional package for most versions of Linux. If you have
installed GStreamer 0.10 and you can play some music/movies but not others
then you need to install a wider selection of GStreamer plugins, either
- from your vendor or an appropriate third party.
+ from your vendor (i.e. the 'Ugly' plugins) or an appropriate third party.
+ For Flash playback, you need to have Flash 10 installed for your normal
+ web browser (for example, Firefox). PulseAudio is required for Flash
+ volume control / muting to fully function inside Second Life.
6. ADVANCED TROUBLESHOOTING
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 9f2186f7f7..afd9d7b3f9 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -956,6 +956,7 @@ void LLAgent::sendMessage()
if (!mRegionp)
{
llerrs << "No region for agent yet!" << llendl;
+ return;
}
gMessageSystem->sendMessage(mRegionp->getHost());
}
@@ -4485,7 +4486,9 @@ void LLAgent::setCameraPosAndFocusGlobal(const LLVector3d& camera_pos, const LLV
{
const F64 ANIM_METERS_PER_SECOND = 10.0;
const F64 MIN_ANIM_SECONDS = 0.5;
+ const F64 MAX_ANIM_SECONDS = 10.0;
F64 anim_duration = llmax( MIN_ANIM_SECONDS, sqrt(focus_delta_squared) / ANIM_METERS_PER_SECOND );
+ anim_duration = llmin( anim_duration, MAX_ANIM_SECONDS );
setAnimationDuration( (F32)anim_duration );
}
@@ -5027,9 +5030,9 @@ void LLAgent::buildFullnameAndTitle(std::string& name) const
}
}
-BOOL LLAgent::isInGroup(const LLUUID& group_id) const
+BOOL LLAgent::isInGroup(const LLUUID& group_id, BOOL ignore_god_mode /* FALSE */) const
{
- if (isGodlike())
+ if (!ignore_god_mode && isGodlike())
return true;
S32 count = mGroups.count();
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index beede7fbe3..1573fd7131 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -982,7 +982,7 @@ private:
//--------------------------------------------------------------------
public:
// Checks against all groups in the entire agent group list.
- BOOL isInGroup(const LLUUID& group_id) const;
+ BOOL isInGroup(const LLUUID& group_id, BOOL ingnore_God_mod = FALSE) const;
protected:
// Only used for building titles.
BOOL isGroupMember() const { return !mGroupID.isNull(); }
diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp
index 7404fe5bc4..72ab9235cf 100644
--- a/indra/newview/llagentui.cpp
+++ b/indra/newview/llagentui.cpp
@@ -150,11 +150,17 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const
sim_access_string.c_str());
break;
case LOCATION_FORMAT_NO_MATURITY:
- case LOCATION_FORMAT_FULL:
buffer = llformat("%s (%d, %d, %d)",
region_name.c_str(),
pos_x, pos_y, pos_z);
break;
+ case LOCATION_FORMAT_FULL:
+ buffer = llformat("%s (%d, %d, %d)%s%s",
+ region_name.c_str(),
+ pos_x, pos_y, pos_z,
+ sim_access_string.empty() ? "" : " - ",
+ sim_access_string.c_str());
+ break;
}
}
else
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index b0ff3a5626..08cd101b01 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -286,6 +286,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i
}
if (mTodo & CALL_RECOVERDONE)
{
+ LLAppearanceManager::instance().addCOFItemLink(inv_item,false);
gAgentWearables.recoverMissingWearableDone();
}
/*
@@ -299,6 +300,10 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i
{
gAgentWearables.makeNewOutfitDone(mType, mIndex);
}
+ if (mTodo & CALL_WEARITEM)
+ {
+ LLAppearanceManager::instance().addCOFItemLink(inv_item, true);
+ }
}
void LLAgentWearables::addWearabletoAgentInventoryDone(const S32 type,
@@ -310,21 +315,24 @@ void LLAgentWearables::addWearabletoAgentInventoryDone(const S32 type,
return;
LLUUID old_item_id = getWearableItemID((EWearableType)type,index);
+
if (wearable)
{
wearable->setItemID(item_id);
- }
- if (old_item_id.notNull())
- {
- gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id);
- setWearable((EWearableType)type,index,wearable);
- }
- else
- {
- pushWearable((EWearableType)type,wearable);
+ if (old_item_id.notNull())
+ {
+ gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id);
+ setWearable((EWearableType)type,index,wearable);
+ }
+ else
+ {
+ pushWearable((EWearableType)type,wearable);
+ }
}
+
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
+
LLViewerInventoryItem* item = gInventory.getItem(item_id);
if (item && wearable)
{
@@ -507,7 +515,7 @@ void LLAgentWearables::saveWearableAs(const EWearableType type,
type,
index,
new_wearable,
- addWearableToAgentInventoryCallback::CALL_UPDATE);
+ addWearableToAgentInventoryCallback::CALL_WEARITEM);
LLUUID category_id;
if (save_in_lost_and_found)
{
@@ -761,6 +769,8 @@ void LLAgentWearables::wearableUpdated(LLWearable *wearable)
wearable->refreshName();
wearable->setLabelUpdated();
+ wearable->pullCrossWearableValues();
+
// Hack pt 2. If the wearable we just loaded has definition version 24,
// then force a re-save of this wearable after slamming the version number to 22.
// This number was incorrectly incremented for internal builds before release, and
@@ -927,13 +937,6 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
if (mInitialWearablesUpdateReceived)
return;
mInitialWearablesUpdateReceived = true;
-
- // If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
- // then auto-populate outfits from the library into the My Outfits folder.
- if (LLInventoryModel::getIsFirstTimeInViewer2() || gSavedSettings.getBOOL("MyOutfitsAutofill"))
- {
- gAgentWearables.populateMyOutfitsFolder();
- }
LLUUID agent_id;
gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id);
@@ -1036,7 +1039,7 @@ void LLAgentWearables::onInitialWearableAssetArrived(LLWearable* wearable, void*
{
return;
}
-
+
if (wearable)
{
llassert(type == wearable->getType());
@@ -1055,6 +1058,7 @@ void LLAgentWearables::onInitialWearableAssetArrived(LLWearable* wearable, void*
// Somehow the asset doesn't exist in the database.
gAgentWearables.recoverMissingWearable(type,index);
}
+
gInventory.notifyObservers();
@@ -1292,25 +1296,29 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,
j,
new_wearable,
todo);
- if (isWearableCopyable((EWearableType)type, j))
- {
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- folder_id,
- new_name,
- cb);
- }
- else
+ llassert(item);
+ if (item)
{
- move_inventory_item(
- gAgent.getID(),
- gAgent.getSessionID(),
- item->getUUID(),
- folder_id,
- new_name,
- cb);
+ if (isWearableCopyable((EWearableType)type, j))
+ {
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ folder_id,
+ new_name,
+ cb);
+ }
+ else
+ {
+ move_inventory_item(
+ gAgent.getID(),
+ gAgent.getSessionID(),
+ item->getUUID(),
+ folder_id,
+ new_name,
+ cb);
+ }
}
}
}
@@ -1417,7 +1425,7 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)
new_folder_name);
LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id);
- LLAppearanceManager::instance().shallowCopyCategory(LLAppearanceManager::instance().getCOF(),folder_id, cb);
+ LLAppearanceManager::instance().shallowCopyCategoryContents(LLAppearanceManager::instance().getCOF(),folder_id, cb);
LLAppearanceManager::instance().createBaseOutfitLink(folder_id, cb);
return folder_id;
@@ -1570,7 +1578,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
const LLDynamicArray< LLWearable* >& wearables,
BOOL remove)
{
- lldebugs << "setWearableOutfit() start" << llendl;
+ llinfos << "setWearableOutfit() start" << llendl;
BOOL wearables_to_remove[WT_COUNT];
wearables_to_remove[WT_SHAPE] = FALSE;
@@ -1599,32 +1607,35 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
LLWearable* new_wearable = wearables[i];
LLPointer<LLInventoryItem> new_item = items[i];
- const EWearableType type = new_wearable->getType();
- wearables_to_remove[type] = FALSE;
-
- // MULTI_WEARABLE: using 0th
- LLWearable* old_wearable = getWearable(type, 0);
- if (old_wearable)
+ llassert(new_wearable);
+ if (new_wearable)
{
- const LLUUID& old_item_id = getWearableItemID(type, 0);
- if ((old_wearable->getAssetID() == new_wearable->getAssetID()) &&
- (old_item_id == new_item->getUUID()))
- {
- lldebugs << "No change to wearable asset and item: " << LLWearableDictionary::getInstance()->getWearableEntry(type) << llendl;
- continue;
- }
+ const EWearableType type = new_wearable->getType();
+ wearables_to_remove[type] = FALSE;
- // Assumes existing wearables are not dirty.
- if (old_wearable->isDirty())
+ // MULTI_WEARABLE: using 0th
+ LLWearable* old_wearable = getWearable(type, 0);
+ if (old_wearable)
{
- llassert(0);
- continue;
+ const LLUUID& old_item_id = getWearableItemID(type, 0);
+ if ((old_wearable->getAssetID() == new_wearable->getAssetID()) &&
+ (old_item_id == new_item->getUUID()))
+ {
+ lldebugs << "No change to wearable asset and item: " << LLWearableDictionary::getInstance()->getWearableEntry(type) << llendl;
+ continue;
+ }
+
+ // Assumes existing wearables are not dirty.
+ if (old_wearable->isDirty())
+ {
+ llassert(0);
+ continue;
+ }
}
- }
- if (new_wearable)
new_wearable->setItemID(new_item->getUUID());
- setWearable(type,0,new_wearable);
+ setWearable(type,0,new_wearable);
+ }
}
std::vector<LLWearable*> wearables_being_removed;
@@ -1664,6 +1675,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
if (mAvatarObject)
{
mAvatarObject->updateVisualParams();
+ mAvatarObject->invalidateAll();
}
// Start rendering & update the server
@@ -2143,6 +2155,8 @@ void LLAgentWearables::updateServer()
void LLAgentWearables::populateMyOutfitsFolder(void)
{
+ llinfos << "starting outfit populate" << llendl;
+
LLLibraryOutfitsFetch* outfits = new LLLibraryOutfitsFetch();
// Get the complete information on the items in the inventory and
@@ -2300,7 +2314,7 @@ public:
virtual ~LLLibraryOutfitsCopyDone()
{
- if (mLibraryOutfitsFetcher)
+ if (!LLApp::isExiting() && mLibraryOutfitsFetcher)
{
gInventory.addObserver(mLibraryOutfitsFetcher);
mLibraryOutfitsFetcher->done();
@@ -2334,7 +2348,7 @@ void LLLibraryOutfitsFetch::libraryDone(void)
LLUUID folder_id = gInventory.createNewCategory(mImportedClothingID,
LLFolderType::FT_NONE,
iter->second);
- LLAppearanceManager::getInstance()->shallowCopyCategory(iter->first, folder_id, copy_waiter);
+ LLAppearanceManager::getInstance()->shallowCopyCategoryContents(iter->first, folder_id, copy_waiter);
}
}
else
@@ -2473,7 +2487,7 @@ class LLFetchAndLinkObserver: public LLInventoryFetchObserver
public:
LLFetchAndLinkObserver(LLInventoryFetchObserver::item_ref_t& ids):
m_ids(ids),
- LLInventoryFetchObserver(true)
+ LLInventoryFetchObserver(true) // retry for missing items
{
}
~LLFetchAndLinkObserver()
@@ -2482,7 +2496,9 @@ public:
virtual void done()
{
gInventory.removeObserver(this);
+
// Link to all fetched items in COF.
+ LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
for (LLInventoryFetchObserver::item_ref_t::iterator it = m_ids.begin();
it != m_ids.end();
++it)
@@ -2494,8 +2510,13 @@ public:
llwarns << "fetch failed!" << llendl;
continue;
}
- link_inventory_item(gAgent.getID(), item->getLinkedUUID(), LLAppearanceManager::instance().getCOF(), item->getName(),
- LLAssetType::AT_LINK, LLPointer<LLInventoryCallback>(NULL));
+
+ link_inventory_item(gAgent.getID(),
+ item->getLinkedUUID(),
+ LLAppearanceManager::instance().getCOF(),
+ item->getName(),
+ LLAssetType::AT_LINK,
+ link_waiter);
}
}
private:
@@ -2518,11 +2539,13 @@ void LLInitialWearablesFetch::processWearablesMessage()
#ifdef USE_CURRENT_OUTFIT_FOLDER
ids.push_back(wearable_data->mItemID);
#endif
- // Fetch the wearables
- LLWearableList::instance().getAsset(wearable_data->mAssetID,
- LLStringUtil::null,
- LLWearableDictionary::getAssetType(wearable_data->mType),
- LLAgentWearables::onInitialWearableAssetArrived, (void*)(wearable_data));
+#if 0
+// // Fetch the wearables
+// LLWearableList::instance().getAsset(wearable_data->mAssetID,
+// LLStringUtil::null,
+// LLWearableDictionary::getAssetType(wearable_data->mType),
+// LLAgentWearables::onInitialWearableAssetArrived, (void*)(wearable_data));
+#endif
}
else
{
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index b4f58674af..858540a5f5 100644
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -244,7 +244,8 @@ private:
CALL_UPDATE = 1,
CALL_RECOVERDONE = 2,
CALL_CREATESTANDARDDONE = 4,
- CALL_MAKENEWOUTFITDONE = 8
+ CALL_MAKENEWOUTFITDONE = 8,
+ CALL_WEARITEM = 16
};
// MULTI-WEARABLE: index is an EWearableType - more confusing usage.
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 8f4ce4498e..c9da08701d 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -48,6 +48,31 @@
#include "llviewerregion.h"
#include "llwearablelist.h"
+LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string& name)
+{
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+ LLNameCategoryCollector has_name(name);
+ gInventory.collectDescendentsIf(parent_id,
+ cat_array,
+ item_array,
+ LLInventoryModel::EXCLUDE_TRASH,
+ has_name);
+ if (0 == cat_array.count())
+ return LLUUID();
+ else
+ {
+ LLViewerInventoryCategory *cat = cat_array.get(0);
+ if (cat)
+ return cat->getUUID();
+ else
+ {
+ llwarns << "null cat" << llendl;
+ return LLUUID();
+ }
+ }
+}
+
// support for secondlife:///app/appearance SLapps
class LLAppearanceHandler : public LLCommandHandler
{
@@ -88,6 +113,8 @@ public:
protected:
~LLWearInventoryCategoryCallback()
{
+ llinfos << "done all inventory callbacks" << llendl;
+
// Is the destructor called by ordinary dereference, or because the app's shutting down?
// If the inventory callback manager goes away, we're shutting down, no longer want the callback.
if( LLInventoryCallbackManager::is_instantiated() )
@@ -125,12 +152,15 @@ protected:
void LLOutfitObserver::done()
{
+ llinfos << "done 2nd stage fetch" << llendl;
gInventory.removeObserver(this);
doOnIdle(boost::bind(&LLOutfitObserver::doWearCategory,this));
}
void LLOutfitObserver::doWearCategory()
{
+ llinfos << "starting" << llendl;
+
// We now have an outfit ready to be copied to agent inventory. Do
// it, and wear that outfit normally.
if(mCopyItems)
@@ -219,6 +249,8 @@ void LLOutfitFetch::done()
// What we do here is get the complete information on the items in
// the library, and set up an observer that will wait for that to
// happen.
+ llinfos << "done first stage fetch" << llendl;
+
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t item_array;
gInventory.collectDescendents(mCompleteFolders.front(),
@@ -269,44 +301,52 @@ void LLOutfitFetch::done()
delete this;
}
-class LLUpdateAppearanceOnDestroy: public LLInventoryCallback
+LLUpdateAppearanceOnDestroy::LLUpdateAppearanceOnDestroy():
+ mFireCount(0)
{
-public:
- LLUpdateAppearanceOnDestroy():
- mFireCount(0)
- {
- }
+}
- virtual ~LLUpdateAppearanceOnDestroy()
+LLUpdateAppearanceOnDestroy::~LLUpdateAppearanceOnDestroy()
+{
+ llinfos << "done update appearance on destroy" << llendl;
+
+ if (!LLApp::isExiting())
{
LLAppearanceManager::instance().updateAppearanceFromCOF();
}
+}
- /* virtual */ void fire(const LLUUID& inv_item)
- {
- mFireCount++;
- }
-private:
- U32 mFireCount;
-};
+void LLUpdateAppearanceOnDestroy::fire(const LLUUID& inv_item)
+{
+ llinfos << "callback fired" << llendl;
+ mFireCount++;
+}
struct LLFoundData
{
- LLFoundData() : mAssetType(LLAssetType::AT_NONE), mWearable(NULL) {}
+ LLFoundData() :
+ mAssetType(LLAssetType::AT_NONE),
+ mWearableType(WT_INVALID),
+ mWearable(NULL) {}
+
LLFoundData(const LLUUID& item_id,
- const LLUUID& asset_id,
- const std::string& name,
- LLAssetType::EType asset_type) :
+ const LLUUID& asset_id,
+ const std::string& name,
+ const LLAssetType::EType& asset_type,
+ const EWearableType& wearable_type
+ ) :
mItemID(item_id),
mAssetID(asset_id),
mName(name),
mAssetType(asset_type),
+ mWearableType(wearable_type),
mWearable( NULL ) {}
LLUUID mItemID;
LLUUID mAssetID;
std::string mName;
LLAssetType::EType mAssetType;
+ EWearableType mWearableType;
LLWearable* mWearable;
};
@@ -317,20 +357,34 @@ public:
LLWearableHoldingPattern();
~LLWearableHoldingPattern();
- bool pollCompletion();
- bool isDone();
+ bool pollFetchCompletion();
+ void onFetchCompletion();
+ bool isFetchCompleted();
bool isTimedOut();
+
+ void checkMissingWearables();
+ bool pollMissingWearables();
+ bool isMissingCompleted();
+ void recoverMissingWearable(EWearableType type);
+ void clearCOFLinksForMissingWearables();
+
+ void onAllComplete();
typedef std::list<LLFoundData> found_list_t;
found_list_t mFoundList;
LLInventoryModel::item_array_t mObjItems;
LLInventoryModel::item_array_t mGestItems;
+ typedef std::set<S32> type_set_t;
+ type_set_t mTypesToRecover;
+ type_set_t mTypesToLink;
S32 mResolved;
LLTimer mWaitTime;
+ bool mFired;
};
LLWearableHoldingPattern::LLWearableHoldingPattern():
- mResolved(0)
+ mResolved(0),
+ mFired(false)
{
}
@@ -338,67 +392,298 @@ LLWearableHoldingPattern::~LLWearableHoldingPattern()
{
}
-bool LLWearableHoldingPattern::isDone()
+bool LLWearableHoldingPattern::isFetchCompleted()
+{
+ return (mResolved >= (S32)mFoundList.size()); // have everything we were waiting for?
+}
+
+bool LLWearableHoldingPattern::isTimedOut()
+{
+ static F32 max_wait_time = 20.0; // give up if wearable fetches haven't completed in max_wait_time seconds.
+ return mWaitTime.getElapsedTimeF32() > max_wait_time;
+}
+
+void LLWearableHoldingPattern::checkMissingWearables()
{
- if (mResolved >= (S32)mFoundList.size())
- return true; // have everything we were waiting for
- else if (isTimedOut())
+ std::vector<S32> found_by_type(WT_COUNT,0);
+ std::vector<S32> requested_by_type(WT_COUNT,0);
+ for (found_list_t::iterator it = mFoundList.begin(); it != mFoundList.end(); ++it)
{
- llwarns << "Exceeded max wait time, updating appearance based on what has arrived" << llendl;
- return true;
+ LLFoundData &data = *it;
+ if (data.mWearableType < WT_COUNT)
+ requested_by_type[data.mWearableType]++;
+ if (data.mWearable)
+ found_by_type[data.mWearableType]++;
}
- return false;
+ for (S32 type = 0; type < WT_COUNT; ++type)
+ {
+ llinfos << "type " << type << " requested " << requested_by_type[type] << " found " << found_by_type[type] << llendl;
+ if (found_by_type[type] > 0)
+ continue;
+ if (
+ // Need to recover if at least one wearable of that type
+ // was requested but none was found (prevent missing
+ // pants)
+ (requested_by_type[type] > 0) ||
+ // or if type is a body part and no wearables were found.
+ ((type == WT_SHAPE) || (type == WT_SKIN) || (type == WT_HAIR) || (type == WT_EYES)))
+ {
+ mTypesToRecover.insert(type);
+ mTypesToLink.insert(type);
+ recoverMissingWearable((EWearableType)type);
+ llwarns << "need to replace " << type << llendl;
+ }
+ }
+
+ if (!pollMissingWearables())
+ {
+ mWaitTime.reset();
+ doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollMissingWearables,this));
+ }
}
-bool LLWearableHoldingPattern::isTimedOut()
+void LLWearableHoldingPattern::onAllComplete()
{
- static F32 max_wait_time = 15.0; // give up if wearable fetches haven't completed in max_wait_time seconds.
- return mWaitTime.getElapsedTimeF32() > max_wait_time;
+ // Activate all gestures in this folder
+ if (mGestItems.count() > 0)
+ {
+ llinfos << "Activating " << mGestItems.count() << " gestures" << llendl;
+
+ LLGestureManager::instance().activateGestures(mGestItems);
+
+ // Update the inventory item labels to reflect the fact
+ // they are active.
+ LLViewerInventoryCategory* catp =
+ gInventory.getCategory(LLAppearanceManager::instance().getCOF());
+
+ if (catp)
+ {
+ gInventory.updateCategory(catp);
+ gInventory.notifyObservers();
+ }
+ }
+
+ // Update wearables.
+ llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl;
+ LLAppearanceManager::instance().updateAgentWearables(this, false);
+
+ // Update attachments to match those requested.
+ LLVOAvatar* avatar = gAgent.getAvatarObject();
+ if( avatar )
+ {
+ llinfos << "Updating " << mObjItems.count() << " attachments" << llendl;
+ LLAgentWearables::userUpdateAttachments(mObjItems);
+ }
+
+ if (isFetchCompleted() && isMissingCompleted())
+ {
+ // Only safe to delete if all wearable callbacks and all missing wearables completed.
+ delete this;
+ }
}
-bool LLWearableHoldingPattern::pollCompletion()
+void LLWearableHoldingPattern::onFetchCompletion()
{
- bool done = isDone();
- llinfos << "polling, done status: " << done << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl;
+ checkMissingWearables();
+}
+
+// Runs as an idle callback until all wearables are fetched (or we time out).
+bool LLWearableHoldingPattern::pollFetchCompletion()
+{
+ bool completed = isFetchCompleted();
+ bool timed_out = isTimedOut();
+ bool done = completed || timed_out;
+
+ llinfos << "polling, done status: " << completed << " timed out " << timed_out << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl;
+
if (done)
{
- // Activate all gestures in this folder
- if (mGestItems.count() > 0)
+ mFired = true;
+
+ if (timed_out)
{
- llinfos << "Activating " << mGestItems.count() << " gestures" << llendl;
-
- LLGestureManager::instance().activateGestures(mGestItems);
-
- // Update the inventory item labels to reflect the fact
- // they are active.
- LLViewerInventoryCategory* catp =
- gInventory.getCategory(LLAppearanceManager::instance().getCOF());
+ llwarns << "Exceeded max wait time for wearables, updating appearance based on what has arrived" << llendl;
+ }
- if (catp)
- {
- gInventory.updateCategory(catp);
- gInventory.notifyObservers();
- }
+ onFetchCompletion();
+ }
+ return done;
+}
+
+class RecoveredItemLinkCB: public LLInventoryCallback
+{
+public:
+ RecoveredItemLinkCB(EWearableType type, LLWearable *wearable, LLWearableHoldingPattern* holder):
+ mHolder(holder),
+ mWearable(wearable),
+ mType(type)
+ {
+ }
+ void fire(const LLUUID& item_id)
+ {
+ llinfos << "Recovered item link for type " << mType << llendl;
+ mHolder->mTypesToLink.erase(mType);
+ // Add wearable to FoundData for actual wearing
+ LLViewerInventoryItem *item = gInventory.getItem(item_id);
+ LLViewerInventoryItem *linked_item = item ? item->getLinkedItem() : NULL;
+
+ gInventory.addChangedMask(LLInventoryObserver::LABEL, linked_item->getUUID());
+
+ if (item && linked_item)
+ {
+ LLFoundData found(linked_item->getUUID(),
+ linked_item->getAssetUUID(),
+ linked_item->getName(),
+ linked_item->getType(),
+ linked_item->isWearableType() ? linked_item->getWearableType() : WT_INVALID
+ );
+ found.mWearable = mWearable;
+ mHolder->mFoundList.push_front(found);
+ }
+ else
+ {
+ llwarns << "inventory item or link not found for recovered wearable" << llendl;
}
+ }
+private:
+ LLWearableHoldingPattern* mHolder;
+ LLWearable *mWearable;
+ EWearableType mType;
+};
- // Update wearables.
- llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl;
- LLAppearanceManager::instance().updateAgentWearables(this, false);
-
- // Update attachments to match those requested.
- LLVOAvatar* avatar = gAgent.getAvatarObject();
- if( avatar )
+class RecoveredItemCB: public LLInventoryCallback
+{
+public:
+ RecoveredItemCB(EWearableType type, LLWearable *wearable, LLWearableHoldingPattern* holder):
+ mHolder(holder),
+ mWearable(wearable),
+ mType(type)
+ {
+ }
+ void fire(const LLUUID& item_id)
+ {
+ llinfos << "Recovered item for type " << mType << llendl;
+ LLViewerInventoryItem *itemp = gInventory.getItem(item_id);
+ LLPointer<LLInventoryCallback> cb = new RecoveredItemLinkCB(mType,mWearable,mHolder);
+ mHolder->mTypesToRecover.erase(mType);
+ link_inventory_item( gAgent.getID(),
+ item_id,
+ LLAppearanceManager::instance().getCOF(),
+ itemp->getName(),
+ LLAssetType::AT_LINK,
+ cb);
+ }
+private:
+ LLWearableHoldingPattern* mHolder;
+ LLWearable *mWearable;
+ EWearableType mType;
+};
+
+void LLWearableHoldingPattern::recoverMissingWearable(EWearableType type)
+{
+ // Try to recover by replacing missing wearable with a new one.
+ LLNotificationsUtil::add("ReplacedMissingWearable");
+ lldebugs << "Wearable " << LLWearableDictionary::getTypeLabel(type)
+ << " could not be downloaded. Replaced inventory item with default wearable." << llendl;
+ LLWearable* wearable = LLWearableList::instance().createNewWearable(type);
+
+ // Add a new one in the lost and found folder.
+ const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+ LLPointer<LLInventoryCallback> cb = new RecoveredItemCB(type,wearable,this);
+
+ create_inventory_item(gAgent.getID(),
+ gAgent.getSessionID(),
+ lost_and_found_id,
+ wearable->getTransactionID(),
+ wearable->getName(),
+ wearable->getDescription(),
+ wearable->getAssetType(),
+ LLInventoryType::IT_WEARABLE,
+ wearable->getType(),
+ wearable->getPermissions().getMaskNextOwner(),
+ cb);
+}
+
+bool LLWearableHoldingPattern::isMissingCompleted()
+{
+ return mTypesToLink.size()==0 && mTypesToRecover.size()==0;
+}
+
+void LLWearableHoldingPattern::clearCOFLinksForMissingWearables()
+{
+ for (found_list_t::iterator it = mFoundList.begin(); it != mFoundList.end(); ++it)
+ {
+ LLFoundData &data = *it;
+ if ((data.mWearableType < WT_COUNT) && (!data.mWearable))
{
- llinfos << "Updating " << mObjItems.count() << " attachments" << llendl;
- LLAgentWearables::userUpdateAttachments(mObjItems);
+ // Wearable link that was never resolved; remove links to it from COF
+ llinfos << "removing link for unresolved item " << data.mItemID.asString() << llendl;
+ LLAppearanceManager::instance().removeCOFItemLinks(data.mItemID,false);
}
+ }
+}
- delete this;
+bool LLWearableHoldingPattern::pollMissingWearables()
+{
+ bool timed_out = isTimedOut();
+ bool missing_completed = isMissingCompleted();
+ bool done = timed_out || missing_completed;
+
+ llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size()
+ << " links " << mTypesToLink.size()
+ << " wearables, timed out " << timed_out
+ << " elapsed " << mWaitTime.getElapsedTimeF32()
+ << " done " << done << llendl;
+
+ if (done)
+ {
+ clearCOFLinksForMissingWearables();
+ onAllComplete();
}
return done;
}
+static void onWearableAssetFetch(LLWearable* wearable, void* data)
+{
+ LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data;
+ holder->mResolved += 1; // just counting callbacks, not successes.
+ llinfos << "onWearableAssetFetch, resolved count " << holder->mResolved << " of requested " << holder->mFoundList.size() << llendl;
+ if (wearable)
+ {
+ llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl;
+ }
+ else
+ {
+ llwarns << "no wearable found" << llendl;
+ }
+
+ if (holder->mFired)
+ {
+ llwarns << "called after holder fired" << llendl;
+ return;
+ }
+
+ if (!wearable)
+ {
+ return;
+ }
+
+ for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin();
+ iter != holder->mFoundList.end(); ++iter)
+ {
+ LLFoundData& data = *iter;
+ if(wearable->getAssetID() == data.mAssetID)
+ {
+ data.mWearable = wearable;
+ // Failing this means inventory or asset server are corrupted in a way we don't handle.
+ llassert((data.mWearableType < WT_COUNT) && (wearable->getType() == data.mWearableType));
+ break;
+ }
+ }
+}
+
+
static void removeDuplicateItems(LLInventoryModel::item_array_t& items)
{
LLInventoryModel::item_array_t new_items;
@@ -426,26 +711,6 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items)
items = new_items;
}
-static void onWearableAssetFetch(LLWearable* wearable, void* data)
-{
- LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data;
-
- if(wearable)
- {
- for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin();
- iter != holder->mFoundList.end(); ++iter)
- {
- LLFoundData& data = *iter;
- if(wearable->getAssetID() == data.mAssetID)
- {
- data.mWearable = wearable;
- break;
- }
- }
- }
- holder->mResolved += 1;
-}
-
const LLUUID LLAppearanceManager::getCOF() const
{
return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
@@ -503,9 +768,33 @@ void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, boo
LLAppearanceManager::instance().updateCOF(category,append);
}
+// Create a copy of src_id + contents as a subfolder of dst_id.
void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
LLPointer<LLInventoryCallback> cb)
{
+ LLInventoryCategory *src_cat = gInventory.getCategory(src_id);
+ if (!src_cat)
+ {
+ llwarns << "folder not found for src " << src_id.asString() << llendl;
+ return;
+ }
+ LLUUID parent_id = dst_id;
+ if(parent_id.isNull())
+ {
+ parent_id = gInventory.getRootFolderID();
+ }
+ LLUUID subfolder_id = gInventory.createNewCategory( parent_id,
+ LLFolderType::FT_NONE,
+ src_cat->getName());
+ shallowCopyCategoryContents(src_id, subfolder_id, cb);
+
+ gInventory.notifyObservers();
+}
+
+// Copy contents of src_id to dst_id.
+void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,
+ LLPointer<LLInventoryCallback> cb)
+{
LLInventoryModel::cat_array_t cats;
LLInventoryModel::item_array_t items;
gInventory.collectDescendents(src_id, cats, items,
@@ -601,6 +890,11 @@ void LLAppearanceManager::filterWearableItems(
if (!item->isWearableType())
continue;
EWearableType type = item->getWearableType();
+ if(type < 0 || type >= WT_COUNT)
+ {
+ LL_WARNS("Appearance") << "Invalid wearable type. Inventory type does not match wearable flag bitfield." << LL_ENDL;
+ continue;
+ }
items_by_type[type].push_back(item);
}
@@ -638,6 +932,9 @@ void LLAppearanceManager::linkAll(const LLUUID& category,
void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
{
+ LLViewerInventoryCategory *pcat = gInventory.getCategory(category);
+ llinfos << "starting, cat " << (pcat ? pcat->getName() : "[UNKNOWN]") << llendl;
+
const LLUUID cof = getCOF();
// Deactivate currently active gestures in the COF, if replacing outfit
@@ -695,6 +992,7 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
gInventory.notifyObservers();
// Create links to new COF contents.
+ llinfos << "creating LLUpdateAppearanceOnDestroy" << llendl;
LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
linkAll(cof, body_items, link_waiter);
@@ -707,6 +1005,7 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
{
createBaseOutfitLink(category, link_waiter);
}
+ llinfos << "waiting for LLUpdateAppearanceOnDestroy" << llendl;
}
void LLAppearanceManager::updatePanelOutfitName(const std::string& name)
@@ -778,6 +1077,8 @@ void LLAppearanceManager::updateAppearanceFromCOF()
{
// update dirty flag to see if the state of the COF matches
// the saved outfit stored as a folder link
+ llinfos << "starting" << llendl;
+
updateIsDirty();
dumpCat(getCOF(),"COF, start");
@@ -807,6 +1108,9 @@ void LLAppearanceManager::updateAppearanceFromCOF()
// wearables can be resolved immediately, then the
// callback will be called (and this object deleted)
// before the final getNextData().
+
+ // BAP future cleanup - no point having found_container when
+ // mFoundList already has all the info.
LLDynamicArray<LLFoundData> found_container;
for(S32 i = 0; i < wear_items.count(); ++i)
{
@@ -817,7 +1121,21 @@ void LLAppearanceManager::updateAppearanceFromCOF()
LLFoundData found(linked_item->getUUID(),
linked_item->getAssetUUID(),
linked_item->getName(),
- linked_item->getType());
+ linked_item->getType(),
+ linked_item->isWearableType() ? linked_item->getWearableType() : WT_INVALID
+ );
+
+#if 0
+ // Fault injection: uncomment this block to test asset
+ // fetch failures (should be replaced by new defaults in
+ // lost&found).
+ if (found.mWearableType == WT_SHAPE || found.mWearableType == WT_JACKET)
+ {
+ found.mAssetID.generate(); // Replace with new UUID, guaranteed not to exist in DB
+
+ }
+#endif
+
holder->mFoundList.push_front(found);
found_container.put(found);
}
@@ -837,7 +1155,9 @@ void LLAppearanceManager::updateAppearanceFromCOF()
for(S32 i = 0; i < found_container.count(); ++i)
{
LLFoundData& found = found_container.get(i);
-
+
+ llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;
+
// Fetch the wearables about to be worn.
LLWearableList::instance().getAsset(found.mAssetID,
found.mName,
@@ -847,9 +1167,9 @@ void LLAppearanceManager::updateAppearanceFromCOF()
}
- if (!holder->pollCompletion())
+ if (!holder->pollFetchCompletion())
{
- doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollCompletion,holder));
+ doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollFetchCompletion,holder));
}
}
@@ -908,8 +1228,9 @@ void LLAppearanceManager::wearInventoryCategory(LLInventoryCategory* category, b
{
if(!category) return;
- lldebugs << "wearInventoryCategory( " << category->getName()
+ llinfos << "wearInventoryCategory( " << category->getName()
<< " )" << llendl;
+
// What we do here is get the complete information on the items in
// the inventory, and set up an observer that will wait for that to
// happen.
@@ -938,7 +1259,8 @@ void LLAppearanceManager::wearInventoryCategoryOnAvatar( LLInventoryCategory* ca
// this up front to avoid having to deal with the case of multiple
// wearables being dirty.
if(!category) return;
- lldebugs << "wearInventoryCategoryOnAvatar( " << category->getName()
+
+ llinfos << "wearInventoryCategoryOnAvatar( " << category->getName()
<< " )" << llendl;
if( gFloaterCustomize )
@@ -1081,7 +1403,6 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up
// MULTI-WEARABLES: revisit if more than one per type is allowed.
else if (areMatchingWearables(vitem,inv_item))
{
- gAgentWearables.removeWearable(inv_item->getWearableType(),true,0);
if (inv_item->getIsLinkType())
{
gInventory.purgeObject(inv_item->getUUID());
@@ -1216,6 +1537,23 @@ void LLAppearanceManager::updateIsDirty()
}
}
+void LLAppearanceManager::onFirstFullyVisible()
+{
+ // If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
+ // then auto-populate outfits from the library into the My Outfits folder.
+
+ llinfos << "avatar fully visible" << llendl;
+
+ static bool check_populate_my_outfits = true;
+ if (check_populate_my_outfits &&
+ (LLInventoryModel::getIsFirstTimeInViewer2()
+ || gSavedSettings.getBOOL("MyOutfitsAutofill")))
+ {
+ gAgentWearables.populateMyOutfitsFolder();
+ }
+ check_populate_my_outfits = false;
+}
+
//#define DUMP_CAT_VERBOSE
void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg)
@@ -1338,6 +1676,11 @@ BOOL LLAppearanceManager::getIsInCOF(const LLUUID& obj_id) const
BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const
{
if (!getIsInCOF(obj_id)) return FALSE;
+
+ // For now, don't allow direct deletion from the COF. Instead, force users
+ // to choose "Detach" or "Take Off".
+ return TRUE;
+ /*
const LLInventoryObject *obj = gInventory.getObject(obj_id);
if (!obj) return FALSE;
@@ -1348,4 +1691,5 @@ BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const
if (obj->getActualType() == LLAssetType::AT_LINK_FOLDER) return TRUE;
return FALSE;
+ */
}
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 38d1e01d08..e7e2f33520 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -35,6 +35,8 @@
#include "llsingleton.h"
#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
+#include "llviewerinventory.h"
#include "llcallbacklist.h"
class LLWearable;
@@ -54,10 +56,14 @@ public:
void wearOutfitByName(const std::string& name);
void changeOutfit(bool proceed, const LLUUID& category, bool append);
- // Copy all items in a category.
+ // Copy all items and the src category itself.
void shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
LLPointer<LLInventoryCallback> cb);
+ // Copy all items in a category.
+ void shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,
+ LLPointer<LLInventoryCallback> cb);
+
// Find the Current Outfit folder.
const LLUUID getCOF() const;
@@ -107,6 +113,9 @@ public:
// should only be necessary to do on initial login.
void updateIsDirty();
+ // Called when self avatar is first fully visible.
+ void onFirstFullyVisible();
+
protected:
LLAppearanceManager();
~LLAppearanceManager();
@@ -142,8 +151,22 @@ public:
BOOL getIsProtectedCOFItem(const LLUUID& obj_id) const;
};
+class LLUpdateAppearanceOnDestroy: public LLInventoryCallback
+{
+public:
+ LLUpdateAppearanceOnDestroy();
+ virtual ~LLUpdateAppearanceOnDestroy();
+ /* virtual */ void fire(const LLUUID& inv_item);
+
+private:
+ U32 mFireCount;
+};
+
+
#define SUPPORT_ENSEMBLES 0
+LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string& name);
+
// Shim class and template function to allow arbitrary boost::bind
// expressions to be run as one-time idle callbacks.
template <typename T>
@@ -212,4 +235,103 @@ void doOnIdleRepeating(T callable)
gIdleCallbacks.addFunction(&OnIdleCallbackRepeating<T>::onIdle,cb_functor);
}
+template <class T>
+class CallAfterCategoryFetchStage2: public LLInventoryFetchObserver
+{
+public:
+ CallAfterCategoryFetchStage2(T callable):
+ mCallable(callable)
+ {
+ }
+ ~CallAfterCategoryFetchStage2()
+ {
+ }
+ virtual void done()
+ {
+ gInventory.removeObserver(this);
+ doOnIdle(mCallable);
+ delete this;
+ }
+protected:
+ T mCallable;
+};
+
+template <class T>
+class CallAfterCategoryFetchStage1: public LLInventoryFetchDescendentsObserver
+{
+public:
+ CallAfterCategoryFetchStage1(T callable):
+ mCallable(callable)
+ {
+ }
+ ~CallAfterCategoryFetchStage1()
+ {
+ }
+ virtual void done()
+ {
+ // What we do here is get the complete information on the items in
+ // the library, and set up an observer that will wait for that to
+ // happen.
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+ gInventory.collectDescendents(mCompleteFolders.front(),
+ cat_array,
+ item_array,
+ LLInventoryModel::EXCLUDE_TRASH);
+ S32 count = item_array.count();
+ if(!count)
+ {
+ llwarns << "Nothing fetched in category " << mCompleteFolders.front()
+ << llendl;
+ //dec_busy_count();
+ gInventory.removeObserver(this);
+ delete this;
+ return;
+ }
+
+ CallAfterCategoryFetchStage2<T> *stage2 = new CallAfterCategoryFetchStage2<T>(mCallable);
+ LLInventoryFetchObserver::item_ref_t ids;
+ for(S32 i = 0; i < count; ++i)
+ {
+ ids.push_back(item_array.get(i)->getUUID());
+ }
+
+ gInventory.removeObserver(this);
+
+ // do the fetch
+ stage2->fetchItems(ids);
+ if(stage2->isEverythingComplete())
+ {
+ // everything is already here - call done.
+ stage2->done();
+ }
+ else
+ {
+ // it's all on it's way - add an observer, and the inventory
+ // will call done for us when everything is here.
+ gInventory.addObserver(stage2);
+ }
+ delete this;
+ }
+protected:
+ T mCallable;
+};
+
+template <class T>
+void callAfterCategoryFetch(const LLUUID& cat_id, T callable)
+{
+ CallAfterCategoryFetchStage1<T> *stage1 = new CallAfterCategoryFetchStage1<T>(callable);
+ LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+ folders.push_back(cat_id);
+ stage1->fetchDescendents(folders);
+ if (stage1->isEverythingComplete())
+ {
+ stage1->done();
+ }
+ else
+ {
+ gInventory.addObserver(stage1);
+ }
+}
+
#endif
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 9eb793783b..948d38befb 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -40,6 +40,7 @@
#include "lluictrlfactory.h"
#include "lltexteditor.h"
#include "llerrorcontrol.h"
+#include "lleventtimer.h"
#include "llviewertexturelist.h"
#include "llgroupmgr.h"
#include "llagent.h"
@@ -1353,9 +1354,6 @@ bool LLAppViewer::cleanup()
llinfos << "Cache files removed" << llendflush;
-
- cleanup_menus();
-
// Wait for any pending VFS IO
while (1)
{
@@ -1681,7 +1679,7 @@ bool LLAppViewer::initThreads()
// Image decoding
LLAppViewer::sImageDecodeThread = new LLImageDecodeThread(enable_threads && true);
LLAppViewer::sTextureCache = new LLTextureCache(enable_threads && true);
- LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && false);
+ LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && true);
LLImage::initClass();
if (LLFastTimer::sLog || LLFastTimer::sMetricLog)
@@ -1935,7 +1933,6 @@ bool LLAppViewer::initConfiguration()
// LLFirstUse::addConfigVariable("FirstSandbox");
// LLFirstUse::addConfigVariable("FirstFlexible");
// LLFirstUse::addConfigVariable("FirstDebugMenus");
-// LLFirstUse::addConfigVariable("FirstStreamingMedia");
// LLFirstUse::addConfigVariable("FirstSculptedPrim");
// LLFirstUse::addConfigVariable("FirstVoice");
// LLFirstUse::addConfigVariable("FirstMedia");
@@ -2365,9 +2362,6 @@ bool LLAppViewer::initWindow()
// store setting in a global for easy access and modification
gNoRender = gSavedSettings.getBOOL("DisableRendering");
- // Hide the splash screen
- LLSplashScreen::hide();
-
// always start windowed
BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth");
gViewerWindow = new LLViewerWindow(gWindowTitle,
@@ -3010,7 +3004,7 @@ bool LLAppViewer::initCache()
// Purge cache if it belongs to an old version
else
{
- static const S32 cache_version = 5;
+ static const S32 cache_version = 6;
if (gSavedSettings.getS32("LocalCacheVersion") != cache_version)
{
mPurgeCache = true;
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index a011c5ebfd..a915b7fa50 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -36,6 +36,7 @@
#include "llallocator.h"
#include "llcontrol.h"
#include "llsys.h" // for LLOSInfo
+#include "lltimer.h"
class LLCommandLineParser;
class LLFrameTimer;
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 7eed2e7b9a..e6666c7f83 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -50,6 +50,7 @@
#include "llfloatergroups.h"
#include "llfloaterreg.h"
#include "llfloaterpay.h"
+#include "llfloaterworldmap.h"
#include "llinventorymodel.h" // for gInventory.findCategoryUUIDForType
#include "llimview.h" // for gIMMgr
#include "llmutelist.h"
@@ -181,7 +182,12 @@ void LLAvatarActions::startIM(const LLUUID& id)
return;
std::string name;
- gCacheName->getFullName(id, name);
+ if (!gCacheName->getFullName(id, name))
+ {
+ gCacheName->get(id, FALSE, boost::bind(&LLAvatarActions::startIM, id));
+ return;
+ }
+
LLUUID session_id = gIMMgr->addSession(name, IM_NOTHING_SPECIAL, id);
if (session_id != LLUUID::null)
{
@@ -312,6 +318,20 @@ void LLAvatarActions::showProfile(const LLUUID& id)
}
// static
+void LLAvatarActions::showOnMap(const LLUUID& id)
+{
+ std::string name;
+ if (!gCacheName->getFullName(id, name))
+ {
+ gCacheName->get(id, FALSE, boost::bind(&LLAvatarActions::showOnMap, id));
+ return;
+ }
+
+ gFloaterWorldMap->trackAvatar(id, name);
+ LLFloaterReg::showInstance("world_map");
+}
+
+// static
void LLAvatarActions::pay(const LLUUID& id)
{
LLNotification::Params params("BusyModePay");
@@ -612,3 +632,13 @@ bool LLAvatarActions::isBlocked(const LLUUID& id)
gCacheName->getFullName(id, name);
return LLMuteList::getInstance()->isMuted(id, name);
}
+
+// static
+bool LLAvatarActions::canBlock(const LLUUID& id)
+{
+ std::string firstname, lastname;
+ gCacheName->getName(id, firstname, lastname);
+ bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden");
+ bool is_self = id == gAgentID;
+ return !is_self && !is_linden;
+}
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index c751661acf..a7f3acad4f 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -99,6 +99,11 @@ public:
static void showProfile(const LLUUID& id);
/**
+ * Show avatar on world map.
+ */
+ static void showOnMap(const LLUUID& id);
+
+ /**
* Give money to the avatar.
*/
static void pay(const LLUUID& id);
@@ -124,6 +129,11 @@ public:
static bool isBlocked(const LLUUID& id);
/**
+ * @return true if you can block the avatar
+ */
+ static bool canBlock(const LLUUID& id);
+
+ /**
* Return true if the avatar is in a P2P voice call with a given user
*/
/* AD *TODO: Is this function needed any more?
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index a58a562378..aeed4fee08 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -57,11 +57,11 @@ public:
struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>
{
- Optional<bool> ignore_online_status; // show all items as online
- Optional<bool> show_last_interaction_time; // show most recent interaction time. *HACK: move this to a derived class
- Optional<bool> show_info_btn;
- Optional<bool> show_profile_btn;
- Optional<bool> show_speaking_indicator;
+ Optional<bool> ignore_online_status, // show all items as online
+ show_last_interaction_time, // show most recent interaction time. *HACK: move this to a derived class
+ show_info_btn,
+ show_profile_btn,
+ show_speaking_indicator;
Params();
};
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 2bcd097717..5011b191f4 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -48,6 +48,17 @@ S32 LLAvatarListItem::sLeftPadding = 0;
S32 LLAvatarListItem::sRightNamePadding = 0;
S32 LLAvatarListItem::sChildrenWidths[LLAvatarListItem::ALIC_COUNT];
+static LLWidgetNameRegistry::StaticRegistrar sRegisterAvatarListItemParams(&typeid(LLAvatarListItem::Params), "avatar_list_item");
+
+LLAvatarListItem::Params::Params()
+: default_style("default_style"),
+ voice_call_invited_style("voice_call_invited_style"),
+ voice_call_joined_style("voice_call_joined_style"),
+ voice_call_left_style("voice_call_left_style"),
+ online_style("online_style"),
+ offline_style("offline_style")
+{};
+
LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
: LLPanel(),
@@ -166,9 +177,30 @@ void LLAvatarListItem::setHighlight(const std::string& highlight)
void LLAvatarListItem::setState(EItemState item_style)
{
- item_style_map_t& item_styles_params_map = getItemStylesParams();
+ const LLAvatarListItem::Params& params = LLUICtrlFactory::getDefaultParams<LLAvatarListItem>();
- mAvatarNameStyle = item_styles_params_map[item_style];
+ switch(item_style)
+ {
+ default:
+ case IS_DEFAULT:
+ mAvatarNameStyle = params.default_style();
+ break;
+ case IS_VOICE_INVITED:
+ mAvatarNameStyle = params.voice_call_invited_style();
+ break;
+ case IS_VOICE_JOINED:
+ mAvatarNameStyle = params.voice_call_joined_style();
+ break;
+ case IS_VOICE_LEFT:
+ mAvatarNameStyle = params.voice_call_left_style();
+ break;
+ case IS_ONLINE:
+ mAvatarNameStyle = params.online_style();
+ break;
+ case IS_OFFLINE:
+ mAvatarNameStyle = params.offline_style();
+ break;
+ }
// *NOTE: You cannot set the style on a text box anymore, you must
// rebuild the text. This will cause problems if the text contains
@@ -353,58 +385,6 @@ std::string LLAvatarListItem::formatSeconds(U32 secs)
}
// static
-LLAvatarListItem::item_style_map_t& LLAvatarListItem::getItemStylesParams()
-{
- static item_style_map_t item_styles_params_map;
- if (!item_styles_params_map.empty()) return item_styles_params_map;
-
- LLPanel::Params params = LLUICtrlFactory::getDefaultParams<LLPanel>();
- LLPanel* params_panel = LLUICtrlFactory::create<LLPanel>(params);
-
- BOOL sucsess = LLUICtrlFactory::instance().buildPanel(params_panel, "panel_avatar_list_item_params.xml");
-
- if (sucsess)
- {
-
- item_styles_params_map.insert(
- std::make_pair(IS_DEFAULT,
- params_panel->getChild<LLTextBox>("default_style")->getDefaultStyle()));
-
- item_styles_params_map.insert(
- std::make_pair(IS_VOICE_INVITED,
- params_panel->getChild<LLTextBox>("voice_call_invited_style")->getDefaultStyle()));
-
- item_styles_params_map.insert(
- std::make_pair(IS_VOICE_JOINED,
- params_panel->getChild<LLTextBox>("voice_call_joined_style")->getDefaultStyle()));
-
- item_styles_params_map.insert(
- std::make_pair(IS_VOICE_LEFT,
- params_panel->getChild<LLTextBox>("voice_call_left_style")->getDefaultStyle()));
-
- item_styles_params_map.insert(
- std::make_pair(IS_ONLINE,
- params_panel->getChild<LLTextBox>("online_style")->getDefaultStyle()));
-
- item_styles_params_map.insert(
- std::make_pair(IS_OFFLINE,
- params_panel->getChild<LLTextBox>("offline_style")->getDefaultStyle()));
- }
- else
- {
- item_styles_params_map.insert(std::make_pair(IS_DEFAULT, LLStyle::Params()));
- item_styles_params_map.insert(std::make_pair(IS_VOICE_INVITED, LLStyle::Params()));
- item_styles_params_map.insert(std::make_pair(IS_VOICE_JOINED, LLStyle::Params()));
- item_styles_params_map.insert(std::make_pair(IS_VOICE_LEFT, LLStyle::Params()));
- item_styles_params_map.insert(std::make_pair(IS_ONLINE, LLStyle::Params()));
- item_styles_params_map.insert(std::make_pair(IS_OFFLINE, LLStyle::Params()));
- }
- if (params_panel) params_panel->die();
-
- return item_styles_params_map;
-}
-
-// static
LLAvatarListItem::icon_color_map_t& LLAvatarListItem::getItemIconColorMap()
{
static icon_color_map_t item_icon_color_map;
@@ -546,21 +526,30 @@ void LLAvatarListItem::updateChildren()
LLView* LLAvatarListItem::getItemChildView(EAvatarListItemChildIndex child_view_index)
{
LLView* child_view = mAvatarName;
- if (child_view_index < 0 || ALIC_COUNT <= child_view_index)
- {
- LL_WARNS("AvatarItemReshape") << "Child view index is out of range: " << child_view_index << LL_ENDL;
- return child_view;
- }
+
switch (child_view_index)
{
- case ALIC_ICON: child_view = mAvatarIcon; break;
- case ALIC_NAME: child_view = mAvatarName; break;
- case ALIC_INTERACTION_TIME: child_view = mLastInteractionTime; break;
- case ALIC_SPEAKER_INDICATOR: child_view = mSpeakingIndicator; break;
- case ALIC_INFO_BUTTON: child_view = mInfoBtn; break;
- case ALIC_PROFILE_BUTTON: child_view = mProfileBtn; break;
+ case ALIC_ICON:
+ child_view = mAvatarIcon;
+ break;
+ case ALIC_NAME:
+ child_view = mAvatarName;
+ break;
+ case ALIC_INTERACTION_TIME:
+ child_view = mLastInteractionTime;
+ break;
+ case ALIC_SPEAKER_INDICATOR:
+ child_view = mSpeakingIndicator;
+ break;
+ case ALIC_INFO_BUTTON:
+ child_view = mInfoBtn;
+ break;
+ case ALIC_PROFILE_BUTTON:
+ child_view = mProfileBtn;
+ break;
default:
LL_WARNS("AvatarItemReshape") << "Unexpected child view index is passed: " << child_view_index << LL_ENDL;
+ // leave child_view untouched
}
return child_view;
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index 61c0a8660e..426d80e0a8 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -46,6 +46,18 @@ class LLAvatarIconCtrl;
class LLAvatarListItem : public LLPanel, public LLFriendObserver
{
public:
+ struct Params : public LLInitParam::Block<Params, LLPanel::Params>
+ {
+ Optional<LLStyle::Params> default_style,
+ voice_call_invited_style,
+ voice_call_joined_style,
+ voice_call_left_style,
+ online_style,
+ offline_style;
+
+ Params();
+ };
+
typedef enum e_item_state_type {
IS_DEFAULT,
IS_VOICE_INVITED,
@@ -143,9 +155,6 @@ private:
std::string formatSeconds(U32 secs);
- typedef std::map<EItemState, LLStyle::Params> item_style_map_t;
- static item_style_map_t& getItemStylesParams();
-
typedef std::map<EItemState, LLColor4> icon_color_map_t;
static icon_color_map_t& getItemIconColorMap();
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index a2d594cfa2..24b8ef3320 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -60,6 +60,27 @@ namespace
const std::string& PANEL_MOVEMENT_NAME = "movement_panel";
const std::string& PANEL_CAMERA_NAME = "cam_panel";
const std::string& PANEL_GESTURE_NAME = "gesture_panel";
+
+ S32 get_panel_min_width(LLLayoutStack* stack, LLPanel* panel)
+ {
+ S32 minimal_width = 0;
+ llassert(stack);
+ if ( stack && panel && panel->getVisible() )
+ {
+ stack->getPanelMinSize(panel->getName(), &minimal_width, NULL);
+ }
+ return minimal_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
@@ -80,6 +101,14 @@ public:
{
mNearbyChatBar = getChild<LLNearbyChatBar>("chat_bar");
mGesturePanel = getChild<LLPanel>("gesture_panel");
+
+ // Hide "show_nearby_chat" button
+ LLLineEditor* chat_box = mNearbyChatBar->getChatBox();
+ LLUICtrl* show_btn = mNearbyChatBar->getChild<LLUICtrl>("show_nearby_chat");
+ S32 delta_width = show_btn->getRect().getWidth();
+ show_btn->setVisible(FALSE);
+ chat_box->reshape(chat_box->getRect().getWidth() + delta_width, chat_box->getRect().getHeight());
+
return TRUE;
}
@@ -280,7 +309,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b
break;
}
- mSpeakBtn->setEnabled(enable);
+ // We have to enable/disable right and left parts of speak button separately (EXT-4648)
+ mSpeakBtn->setSpeakBtnEnabled(enable);
+ // skipped to avoid button blinking
+ if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
+ {
+ mSpeakBtn->setFlyoutBtnEnabled(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking());
+ }
}
void LLBottomTray::onMouselookModeOut()
@@ -315,7 +350,7 @@ void LLBottomTray::setVisible(BOOL visible)
{
mBottomTrayLite->setVisible(visible);
}
- else
+ else
{
LLPanel::setVisible(visible);
}
@@ -387,6 +422,18 @@ void LLBottomTray::showSnapshotButton(BOOL visible)
setTrayButtonVisibleIfPossible(RS_BUTTON_SNAPSHOT, visible);
}
+void LLBottomTray::toggleMovementControls()
+{
+ if (mMovementButton)
+ mMovementButton->onCommit();
+}
+
+void LLBottomTray::toggleCameraControls()
+{
+ if (mCamButton)
+ mCamButton->onCommit();
+}
+
BOOL LLBottomTray::postBuild()
{
@@ -410,9 +457,10 @@ BOOL LLBottomTray::postBuild()
mSpeakPanel = getChild<LLPanel>("speak_panel");
mSpeakBtn = getChild<LLSpeakButton>("talk");
- // Speak button should be initially disabled because
+ // Both parts of speak button should be initially disabled because
// it takes some time between logging in to world and connecting to voice channel.
- mSpeakBtn->setEnabled(FALSE);
+ mSpeakBtn->setSpeakBtnEnabled(false);
+ mSpeakBtn->setFlyoutBtnEnabled(false);
// Localization tool doesn't understand custom buttons like <talk_button>
mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
@@ -426,6 +474,8 @@ BOOL LLBottomTray::postBuild()
mObjectDefaultWidthMap[RS_BUTTON_CAMERA] = mCamPanel->getRect().getWidth();
mObjectDefaultWidthMap[RS_BUTTON_SPEAK] = mSpeakPanel->getRect().getWidth();
+ mNearbyChatBar->getChatBox()->setContextMenu(NULL);
+
return TRUE;
}
@@ -474,6 +524,7 @@ void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata)
else if (item == "paste")
{
edit_box->paste();
+ edit_box->setFocus(TRUE);
}
else if (item == "delete")
{
@@ -875,13 +926,12 @@ void LLBottomTray::processShrinkButtons(S32* required_width, S32* buttons_freed_
}
else
{
- //
- mSpeakBtn->setLabelVisible(false);
S32 panel_width = mSpeakPanel->getRect().getWidth();
S32 possible_shrink_width = panel_width - panel_min_width;
if (possible_shrink_width > 0)
{
+ mSpeakBtn->setLabelVisible(false);
mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());
*required_width += possible_shrink_width;
@@ -956,18 +1006,18 @@ void LLBottomTray::processExtendButtons(S32* available_width)
if (*available_width > 0)
{
- processExtendButton(RS_BUTTON_CAMERA, available_width);
+ processExtendButton(RS_BUTTON_MOVEMENT, available_width);
}
if (*available_width > 0)
{
- processExtendButton(RS_BUTTON_MOVEMENT, available_width);
+ processExtendButton(RS_BUTTON_CAMERA, available_width);
}
if (*available_width > 0)
{
S32 panel_max_width = mObjectDefaultWidthMap[RS_BUTTON_SPEAK];
S32 panel_width = mSpeakPanel->getRect().getWidth();
S32 possible_extend_width = panel_max_width - panel_width;
- if (possible_extend_width > 0 && possible_extend_width <= *available_width)
+ if (possible_extend_width >= 0 && possible_extend_width <= *available_width) // HACK: this button doesn't change size so possible_extend_width will be 0
{
mSpeakBtn->setLabelVisible(true);
mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());
@@ -1076,58 +1126,131 @@ void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool vis
if (mDummiesMap.count(shown_object_type))
{
- mDummiesMap[shown_object_type]->setVisible(visible);
+ // Hide/show layout panel for dummy icon.
+ mDummiesMap[shown_object_type]->getParent()->setVisible(visible);
}
}
void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification)
{
- bool can_be_set = true;
-
- if (visible)
+ if (!setVisibleAndFitWidths(shown_object_type, visible) && visible && raise_notification)
{
- LLPanel* panel = mStateProcessedObjectMap[shown_object_type];
- if (NULL == panel)
- {
- lldebugs << "There is no object to process for state: " << shown_object_type << llendl;
- return;
- }
+ LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown",
+ LLSD(),
+ LLSD(),
+ LLNotificationFunctorRegistry::instance().DONOTHING);
+ }
+}
- const S32 dummy_width = mDummiesMap.count(shown_object_type) ? mDummiesMap[shown_object_type]->getRect().getWidth() : 0;
+bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible)
+{
+ LLPanel* cur_panel = mStateProcessedObjectMap[object_type];
+ if (NULL == cur_panel)
+ {
+ lldebugs << "There is no object to process for state: " << object_type << llendl;
+ return false;
+ }
- const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
- const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
+ const S32 dummy_width = mDummiesMap.count(object_type)
+ ? mDummiesMap[object_type]->getParent()->getRect().getWidth()
+ : 0;
- const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
- const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
+ bool is_set = true;
- const S32 available_width = (chatbar_panel_width - chatbar_panel_min_width)
- + (chiclet_panel_width - chiclet_panel_min_width);
+ if (visible)
+ {
+ // Assume that only chiclet panel can be auto-resized and
+ // don't take into account width of dummy widgets
+ const S32 available_width =
+ mChicletPanel->getParent()->getRect().getWidth() -
+ mChicletPanel->getMinWidth() -
+ dummy_width;
+
+ S32 preferred_width = mObjectDefaultWidthMap[object_type];
+ S32 current_width = cur_panel->getRect().getWidth();
+ S32 result_width = 0;
+ bool decrease_width = false;
+
+ // Mark this button to be shown
+ mResizeState |= object_type;
+
+ 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 =
+ mNearbyChatBar->getRect().getWidth() - mNearbyChatBar->getMinWidth();
+
+ const S32 sum_of_min_widths =
+ get_panel_min_width(mToolbarStack, mStateProcessedObjectMap[RS_BUTTON_CAMERA]) +
+ get_panel_min_width(mToolbarStack, mStateProcessedObjectMap[RS_BUTTON_MOVEMENT]) +
+ get_panel_min_width(mToolbarStack, mStateProcessedObjectMap[RS_BUTTON_GESTURES]) +
+ get_panel_min_width(mToolbarStack, mSpeakPanel);
+
+ const S32 sum_of_curr_widths =
+ get_curr_width(mStateProcessedObjectMap[RS_BUTTON_CAMERA]) +
+ get_curr_width(mStateProcessedObjectMap[RS_BUTTON_MOVEMENT]) +
+ get_curr_width(mStateProcessedObjectMap[RS_BUTTON_GESTURES]) +
+ get_curr_width(mSpeakPanel);
+
+ 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, NULL);
+
+ 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
+ {
+ // Nothing can be done, give up...
+ return false;
+ }
+ }
- const S32 required_width = panel->getRect().getWidth() + dummy_width;
- can_be_set = available_width >= required_width;
- }
+ if (result_width != current_width)
+ {
+ cur_panel->reshape(result_width, cur_panel->getRect().getHeight());
+ current_width = result_width;
+ }
- if (can_be_set)
- {
- setTrayButtonVisible(shown_object_type, visible);
+ is_set = processShowButton(object_type, &current_width);
- // if we hide the button mark it NOT to show while future bottom tray extending
- if (!visible)
+ // Shrink buttons if needed
+ if (is_set && decrease_width)
{
- mResizeState &= ~shown_object_type;
+ processWidthDecreased( -result_width - dummy_width );
}
}
else
{
- // mark this button to show it while future bottom tray extending
- mResizeState |= shown_object_type;
- if ( raise_notification )
- LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown",
- LLSD(),
- LLSD(),
- LLNotificationFunctorRegistry::instance().DONOTHING);
+ const S32 delta_width = get_curr_width(cur_panel);
+
+ setTrayButtonVisible(object_type, false);
+
+ // Mark button NOT to show while future bottom tray extending
+ mResizeState &= ~object_type;
+
+ // Extend other buttons if need
+ if (delta_width)
+ {
+ processWidthIncreased(delta_width + dummy_width);
+ }
}
+ return is_set;
}
//EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index ee0eb13218..18c14e5e19 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -94,6 +94,9 @@ public:
void showCameraButton(BOOL visible);
void showSnapshotButton(BOOL visible);
+ void toggleMovementControls();
+ void toggleCameraControls();
+
void onMouselookModeIn();
void onMouselookModeOut();
@@ -173,6 +176,14 @@ private:
*/
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);
+
MASK mResizeState;
typedef std::map<EResizeState, LLPanel*> state_object_map_t;
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index f62fd44bc0..76e058a1c3 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -52,6 +52,7 @@
#include "lltransientfloatermgr.h"
#include "llviewerwindow.h"
#include "llvoicechannel.h"
+#include "llviewerparcelmgr.h"
static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids);
void reshape_floater(LLCallFloater* floater, S32 delta_height);
@@ -302,8 +303,10 @@ void LLCallFloater::updateSession()
refreshParticipantList();
updateAgentModeratorState();
- //show floater for voice calls
- if (!is_local_chat)
+ //show floater for voice calls & only in CONNECTED to voice channel state
+ if (!is_local_chat &&
+ voice_channel &&
+ LLVoiceChannel::STATE_CONNECTED == voice_channel->getState())
{
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
bool show_me = !(im_floater && im_floater->getVisible());
@@ -332,6 +335,7 @@ void LLCallFloater::refreshParticipantList()
{
mParticipants = new LLParticipantList(mSpeakerManager, mAvatarList, true, mVoiceType != VC_GROUP_CHAT && mVoiceType != VC_AD_HOC_CHAT);
mParticipants->setValidateSpeakerCallback(boost::bind(&LLCallFloater::validateSpeaker, this, _1));
+ mParticipants->setSortOrder(LLParticipantList::E_SORT_BY_RECENT_SPEAKERS);
if (LLLocalSpeakerMgr::getInstance() == mSpeakerManager)
{
@@ -719,7 +723,15 @@ void LLCallFloater::connectToChannel(LLVoiceChannel* channel)
void LLCallFloater::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state)
{
- updateState(new_state);
+ // check is voice operational and if it doesn't work hide VCP (EXT-4397)
+ if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking())
+ {
+ updateState(new_state);
+ }
+ else
+ {
+ closeFloater();
+ }
}
void LLCallFloater::updateState(const LLVoiceChannel::EState& new_state)
@@ -731,11 +743,11 @@ void LLCallFloater::updateState(const LLVoiceChannel::EState& new_state)
}
else
{
- reset();
+ reset(new_state);
}
}
-void LLCallFloater::reset()
+void LLCallFloater::reset(const LLVoiceChannel::EState& new_state)
{
// lets forget states from the previous session
// for timers...
@@ -748,8 +760,26 @@ void LLCallFloater::reset()
mParticipants = NULL;
mAvatarList->clear();
- // update floater to show Loading while waiting for data.
- mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData"));
+ // These ifs were added instead of simply showing "loading" to make VCP work correctly in parcels
+ // with disabled voice (EXT-4648 and EXT-4649)
+ if (!LLViewerParcelMgr::getInstance()->allowAgentVoice() && LLVoiceChannel::STATE_HUNG_UP == new_state)
+ {
+ // hides "Leave Call" when call is ended in parcel with disabled voice- hiding usually happens in
+ // updateSession() which won't be called here because connect to nearby voice never happens
+ childSetVisible("leave_call_btn_panel", false);
+ // setting title to nearby chat an "no one near..." text- because in region with disabled
+ // voice we won't have chance to really connect to nearby, so VCP is changed here manually
+ setTitle(getString("title_nearby"));
+ mAvatarList->setNoItemsCommentText(getString("no_one_near"));
+ }
+ // "loading" is shown only when state is "ringing" to avoid showing it in nearby chat vcp
+ // of parcels with disabled voice all the time- "no_one_near" is now shown there (EXT-4648)
+ else if (new_state == LLVoiceChannel::STATE_RINGING)
+ {
+ // update floater to show Loading while waiting for data.
+ mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData"));
+ }
+
mAvatarList->setVisible(TRUE);
mNonAvatarCaller->setVisible(FALSE);
diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h
index 766191379b..0a8ea7de39 100644
--- a/indra/newview/llcallfloater.h
+++ b/indra/newview/llcallfloater.h
@@ -220,7 +220,7 @@ private:
*
* Clears all data from the latest voice session.
*/
- void reset();
+ void reset(const LLVoiceChannel::EState& new_state);
private:
speaker_state_map_t mSpeakerStateMap;
@@ -260,6 +260,10 @@ private:
* @see sOnCurrentChannelChanged()
*/
static LLVoiceChannel* sCurrentVoiceCanel;
+
+ /* virtual */
+ LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::IM; }
+
boost::signals2::connection mVoiceChannelStateChangeConnection;
};
diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp
index d988770f90..79a2631c31 100644
--- a/indra/newview/llcallingcard.cpp
+++ b/indra/newview/llcallingcard.cpp
@@ -56,12 +56,14 @@
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llresmgr.h"
+#include "llslurl.h"
#include "llimview.h"
#include "llviewercontrol.h"
#include "llviewernetwork.h"
#include "llviewerobjectlist.h"
#include "llviewerwindow.h"
#include "llvoavatar.h"
+#include "llavataractions.h"
///----------------------------------------------------------------------------
/// Local function declarations, constants, enums, and typedefs
@@ -680,9 +682,11 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
}
BOOL notify = FALSE;
LLSD args;
+ LLSD payload;
for(S32 i = 0; i < count; ++i)
{
msg->getUUIDFast(_PREHASH_AgentBlock, _PREHASH_AgentID, agent_id, i);
+ payload["FROM_ID"] = agent_id;
info = getBuddyInfo(agent_id);
if(info)
{
@@ -715,7 +719,21 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
if(notify)
{
// Popup a notify box with online status of this agent
- LLNotificationPtr notification = LLNotificationsUtil::add(online ? "FriendOnline" : "FriendOffline", args);
+ LLNotificationPtr notification;
+
+ if (online)
+ {
+ notification =
+ LLNotificationsUtil::add("FriendOnline",
+ args,
+ payload.with("respond_on_mousedown", TRUE),
+ boost::bind(&LLAvatarActions::startIM, agent_id));
+ }
+ else
+ {
+ notification =
+ LLNotificationsUtil::add("FriendOffline", args, payload);
+ }
// If there's an open IM session with this agent, send a notification there too.
LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, agent_id);
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index a570862675..5e8d5a63d0 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -53,8 +53,11 @@
#include "llagent.h"
#include "llnotificationsutil.h"
#include "lltoastnotifypanel.h"
+#include "lltooltip.h"
#include "llviewerregion.h"
+#include "llviewertexteditor.h"
#include "llworld.h"
+#include "lluiconstants.h"
#include "llsidetray.h"//for blocked objects panel
@@ -63,6 +66,9 @@ static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
const static std::string NEW_LINE(rawstr_to_utf8("\n"));
+const static std::string SLURL_APP_AGENT = "secondlife:///app/agent/";
+const static std::string SLURL_ABOUT = "/about";
+
// support for secondlife:///app/objectim/{UUID}/ SLapps
class LLObjectIMHandler : public LLCommandHandler
{
@@ -143,12 +149,7 @@ public:
}
else if (level == "add")
{
- std::string name;
- name.assign(getFirstName());
- name.append(" ");
- name.append(getLastName());
-
- LLAvatarActions::requestFriendshipDialog(getAvatarId(), name);
+ LLAvatarActions::requestFriendshipDialog(getAvatarId(), mFrom);
}
else if (level == "remove")
{
@@ -169,7 +170,10 @@ public:
menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_object_icon.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
mPopupMenuHandleObject = menu->getHandle();
- setDoubleClickCallback(boost::bind(&LLChatHistoryHeader::onHeaderPanelClick, this, _2, _3, _4));
+ setDoubleClickCallback(boost::bind(&LLChatHistoryHeader::showInspector, this));
+
+ setMouseEnterCallback(boost::bind(&LLChatHistoryHeader::showInfoCtrl, this));
+ setMouseLeaveCallback(boost::bind(&LLChatHistoryHeader::hideInfoCtrl, this));
return LLPanel::postBuild();
}
@@ -203,7 +207,7 @@ public:
return LLPanel::handleRightMouseDown(x,y,mask);
}
- void onHeaderPanelClick(S32 x, S32 y, MASK mask)
+ void showInspector()
{
if (mSourceType == CHAT_SOURCE_OBJECT)
{
@@ -216,9 +220,18 @@ public:
//if chat source is system, you may add "else" here to define behaviour.
}
+ static void onClickInfoCtrl(LLUICtrl* info_ctrl)
+ {
+ if (!info_ctrl) return;
+
+ LLChatHistoryHeader* header = dynamic_cast<LLChatHistoryHeader*>(info_ctrl->getParent());
+ if (!header) return;
+
+ header->showInspector();
+ }
+
+
const LLUUID& getAvatarId () const { return mAvatarID;}
- const std::string& getFirstName() const { return mFirstName; }
- const std::string& getLastName () const { return mLastName; }
void setup(const LLChat& chat,const LLStyle::Params& style_params)
{
@@ -226,27 +239,27 @@ public:
mSessionID = chat.mSessionID;
mSourceType = chat.mSourceType;
gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4));
- if(chat.mFromID.isNull())
+
+ //*TODO overly defensive thing, source type should be maintained out there
+ if((chat.mFromID.isNull() && chat.mFromName.empty()) || chat.mFromName == SYSTEM_FROM)
{
mSourceType = CHAT_SOURCE_SYSTEM;
}
- LLTextEditor* userName = getChild<LLTextEditor>("user_name");
+ LLTextBox* userName = getChild<LLTextBox>("user_name");
userName->setReadOnlyColor(style_params.readonly_color());
userName->setColor(style_params.color());
- if(!chat.mFromName.empty())
+ userName->setValue(chat.mFromName);
+ mFrom = chat.mFromName;
+ if (chat.mFromName.empty() || CHAT_SOURCE_SYSTEM == mSourceType)
{
- userName->setValue(chat.mFromName);
- mFrom = chat.mFromName;
- }
- else
- {
- std::string SL = LLTrans::getString("SECOND_LIFE");
- userName->setValue(SL);
+ mFrom = LLTrans::getString("SECOND_LIFE");
+ userName->setValue(mFrom);
}
+
mMinUserNameWidth = style_params.font()->getWidth(userName->getWText().c_str()) + PADDING;
setTimeField(chat);
@@ -256,20 +269,22 @@ public:
if(mSourceType != CHAT_SOURCE_AGENT)
icon->setDrawTooltip(false);
- if(!chat.mFromID.isNull())
- {
- icon->setValue(chat.mFromID);
- }
- else if (userName->getValue().asString()==LLTrans::getString("SECOND_LIFE"))
+ switch (mSourceType)
{
- icon->setValue(LLSD("SL_Logo"));
+ case CHAT_SOURCE_AGENT:
+ icon->setValue(chat.mFromID);
+ break;
+ case CHAT_SOURCE_OBJECT:
+ icon->setValue(LLSD("OBJECT_Icon"));
+ break;
+ case CHAT_SOURCE_SYSTEM:
+ icon->setValue(LLSD("SL_Logo"));
}
-
}
/*virtual*/ void draw()
{
- LLTextEditor* user_name = getChild<LLTextEditor>("user_name");
+ LLTextBox* user_name = getChild<LLTextBox>("user_name");
LLTextBox* time_box = getChild<LLTextBox>("time_box");
LLRect user_name_rect = user_name->getRect();
@@ -301,8 +316,7 @@ public:
{
if (id != mAvatarID)
return;
- mFirstName = first;
- mLastName = last;
+ mFrom = first + " " + last;
}
protected:
static const S32 PADDING = 20;
@@ -357,6 +371,33 @@ protected:
}
}
+ void showInfoCtrl()
+ {
+ if (mAvatarID.isNull() || mFrom.empty() || SYSTEM_FROM == mFrom) return;
+
+ if (!sInfoCtrl)
+ {
+ sInfoCtrl = LLUICtrlFactory::createFromFile<LLUICtrl>("inspector_info_ctrl.xml", NULL, LLPanel::child_registry_t::instance());
+ sInfoCtrl->setCommitCallback(boost::bind(&LLChatHistoryHeader::onClickInfoCtrl, sInfoCtrl));
+ }
+
+ LLTextBase* name = getChild<LLTextBase>("user_name");
+ LLRect sticky_rect = name->getRect();
+ S32 icon_x = llmin(sticky_rect.mLeft + name->getTextBoundingRect().getWidth() + 7, sticky_rect.mRight - 3);
+ sInfoCtrl->setOrigin(icon_x, sticky_rect.getCenterY() - sInfoCtrl->getRect().getHeight() / 2 ) ;
+ addChild(sInfoCtrl);
+ }
+
+ void hideInfoCtrl()
+ {
+ if (!sInfoCtrl) return;
+
+ if (sInfoCtrl->getParent() == this)
+ {
+ removeChild(sInfoCtrl);
+ }
+ }
+
private:
void setTimeField(const LLChat& chat)
{
@@ -385,16 +426,17 @@ protected:
LLHandle<LLView> mPopupMenuHandleAvatar;
LLHandle<LLView> mPopupMenuHandleObject;
+ static LLUICtrl* sInfoCtrl;
+
LLUUID mAvatarID;
EChatSourceType mSourceType;
- std::string mFirstName;
- std::string mLastName;
std::string mFrom;
LLUUID mSessionID;
S32 mMinUserNameWidth;
};
+LLUICtrl* LLChatHistoryHeader::sInfoCtrl = NULL;
LLChatHistory::LLChatHistory(const LLChatHistory::Params& p)
: LLUICtrl(p),
@@ -407,12 +449,14 @@ LLChatHistory::LLChatHistory(const LLChatHistory::Params& p)
mTopSeparatorPad(p.top_separator_pad),
mBottomSeparatorPad(p.bottom_separator_pad),
mTopHeaderPad(p.top_header_pad),
- mBottomHeaderPad(p.bottom_header_pad)
+ mBottomHeaderPad(p.bottom_header_pad),
+ mIsLastMessageFromLog(false)
{
LLTextEditor::Params editor_params(p);
editor_params.rect = getLocalRect();
editor_params.follows.flags = FOLLOWS_ALL;
editor_params.enabled = false; // read only
+ editor_params.show_context_menu = "true";
mEditor = LLUICtrlFactory::create<LLTextEditor>(editor_params, this);
}
@@ -507,6 +551,7 @@ void LLChatHistory::clear()
void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LLStyle::Params& input_append_params)
{
bool use_plain_text_chat_history = args["use_plain_text_chat_history"].asBoolean();
+
if (!mEditor->scrolledToEnd() && chat.mFromID != gAgent.getID() && !chat.mFromName.empty())
{
mUnreadChatSources.insert(chat.mFromName);
@@ -518,7 +563,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
chatters += *it;
if (++it != mUnreadChatSources.end())
{
- chatters += ",";
+ chatters += ", ";
}
}
LLStringUtil::format_map_t args;
@@ -554,9 +599,16 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
bool irc_me = prefix == "/me " || prefix == "/me'";
// Delimiter after a name in header copy/past and in plain text mode
- std::string delimiter = (chat.mChatType != CHAT_TYPE_SHOUT && chat.mChatType != CHAT_TYPE_WHISPER)
- ? ": "
- : " ";
+ std::string delimiter = ": ";
+ std::string shout = LLTrans::getString("shout");
+ std::string whisper = LLTrans::getString("whisper");
+ if (chat.mChatType == CHAT_TYPE_SHOUT ||
+ chat.mChatType == CHAT_TYPE_WHISPER ||
+ chat.mText.compare(0, shout.length(), shout) == 0 ||
+ chat.mText.compare(0, whisper.length(), whisper) == 0)
+ {
+ delimiter = " ";
+ }
// Don't add any delimiter after name in irc styled messages
if (irc_me || chat.mChatStyle == CHAT_STYLE_IRC)
@@ -565,6 +617,14 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
style_params.font.style = "ITALIC";
}
+ bool message_from_log = chat.mChatStyle == CHAT_STYLE_HISTORY;
+ // We graying out chat history by graying out messages that contains full date in a time string
+ if (message_from_log)
+ {
+ style_params.color(LLColor4::grey);
+ style_params.readonly_color(LLColor4::grey);
+ }
+
if (use_plain_text_chat_history)
{
mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, style_params);
@@ -579,24 +639,31 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
url += "?name=" + chat.mFromName;
url += "&owner=" + args["owner_id"].asString();
- LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent);
- if (region)
+ std::string slurl = args["slurl"].asString();
+ if (slurl.empty())
{
- S32 x, y, z;
- LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z);
- url += "&slurl=" + region->getName() + llformat("/%d/%d/%d", x, y, z);
+ LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent);
+ if (region)
+ {
+ S32 x, y, z;
+ LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z);
+ slurl = region->getName() + llformat("/%d/%d/%d", x, y, z);
+ }
}
+ url += "&slurl=" + slurl;
// set the link for the object name to be the objectim SLapp
+ // (don't let object names with hyperlinks override our objectim Url)
LLStyle::Params link_params(style_params);
link_params.color.control = "HTMLLinkColor";
link_params.link_href = url;
- mEditor->appendText(chat.mFromName + delimiter, false, link_params);
+ mEditor->appendText("<nolink>" + chat.mFromName + "</nolink>" + delimiter,
+ false, link_params);
}
- else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() )
+ else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() && !message_from_log)
{
LLStyle::Params link_params(style_params);
- link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
+ link_params.overwriteFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
// Convert the name to a hotlink and add to message.
mEditor->appendText(chat.mFromName + delimiter, false, link_params);
}
@@ -620,7 +687,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
&& mLastFromID == chat.mFromID
&& mLastMessageTime.notNull()
&& (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0
- && mLastMessageTimeStr.size() == chat.mTimeStr.size()) //*HACK to distinguish between current and previous chat session's histories
+ && mIsLastMessageFromLog == message_from_log) //distinguish between current and previous chat session's histories
{
view = getSeparator();
p.top_pad = mTopSeparatorPad;
@@ -654,7 +721,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
mLastFromName = chat.mFromName;
mLastFromID = chat.mFromID;
mLastMessageTime = new_message_time;
- mLastMessageTimeStr = chat.mTimeStr;
+ mIsLastMessageFromLog = message_from_log;
}
if (chat.mNotifId.notNull())
@@ -664,8 +731,40 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
{
LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(
notification);
+ //we can't set follows in xml since it broke toasts behavior
notify_box->setFollowsLeft();
notify_box->setFollowsRight();
+ notify_box->setFollowsTop();
+
+ ctrl_list_t ctrls = notify_box->getControlPanel()->getCtrlList();
+ S32 offset = 0;
+ for (ctrl_list_t::iterator it = ctrls.begin(); it != ctrls.end(); it++)
+ {
+ LLButton * button = dynamic_cast<LLButton*> (*it);
+ if (button != NULL)
+ {
+ button->setOrigin( offset,
+ button->getRect().mBottom);
+ button->setLeftHPad(2 * HPAD);
+ button->setRightHPad(2 * HPAD);
+ // set zero width before perform autoResize()
+ button->setRect(LLRect(button->getRect().mLeft,
+ button->getRect().mTop, button->getRect().mLeft,
+ button->getRect().mBottom));
+ button->setAutoResize(true);
+ button->autoResize();
+ offset += 2 * HPAD + button->getRect().getWidth();
+ button->setFollowsNone();
+ }
+ }
+
+ LLTextEditor* text_editor = notify_box->getChild<LLTextEditor>("text_editor_box", TRUE);
+ S32 text_heigth = 0;
+ if(text_editor != NULL)
+ {
+ text_heigth = text_editor->getTextBoundingRect().getHeight();
+ }
+
//Prepare the rect for the view
LLRect target_rect = mEditor->getDocumentView()->getRect();
// squeeze down the widget by subtracting padding off left and right
@@ -675,6 +774,15 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
notify_box->getRect().getHeight());
notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
+ if (text_editor != NULL)
+ {
+ S32 text_heigth_delta =
+ text_editor->getTextBoundingRect().getHeight()
+ - text_heigth;
+ notify_box->reshape(target_rect.getWidth(),
+ notify_box->getRect().getHeight() + text_heigth_delta);
+ }
+
LLInlineViewSegment::Params params;
params.view = notify_box;
params.left_pad = mLeftWidgetPad;
@@ -685,6 +793,26 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
else
{
std::string message = irc_me ? chat.mText.substr(3) : chat.mText;
+
+
+ //MESSAGE TEXT PROCESSING
+ //*HACK getting rid of redundant sender names in system notifications sent using sender name (see EXT-5010)
+ if (use_plain_text_chat_history && gAgentID != chat.mFromID && chat.mFromID.notNull())
+ {
+ std::string slurl_about = SLURL_APP_AGENT + chat.mFromID.asString() + SLURL_ABOUT;
+ if (message.length() > slurl_about.length() &&
+ message.compare(0, slurl_about.length(), slurl_about) == 0)
+ {
+ message = message.substr(slurl_about.length(), message.length()-1);
+ }
+ }
+
+ if (irc_me && !use_plain_text_chat_history)
+ {
+ message = chat.mFromName + message;
+ }
+
+
mEditor->appendText(message, FALSE, style_params);
}
mEditor->blockUndo();
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 32600bb71d..950b32861b 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -128,7 +128,8 @@ class LLChatHistory : public LLUICtrl
std::string mLastFromName;
LLUUID mLastFromID;
LLDate mLastMessageTime;
- std::string mLastMessageTimeStr;
+ bool mIsLastMessageFromLog;
+ //std::string mLastMessageTimeStr;
std::string mMessageHeaderFilename;
std::string mMessageSeparatorFilename;
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index f7f7ee83af..e164aa8fc4 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -258,8 +258,12 @@ BOOL LLNearbyChatToastPanel::handleMouseDown (S32 x, S32 y, MASK mask)
BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
{
+ /*
+ fix for request EXT-4780
+ leaving this commented since I don't remember why ew block those messages...
if(mSourceType != CHAT_SOURCE_AGENT)
return LLPanel::handleMouseUp(x,y,mask);
+ */
LLChatMsgBox* text_box = getChild<LLChatMsgBox>("msg_text", false);
S32 local_x = x - text_box->getRect().mLeft;
@@ -317,7 +321,10 @@ void LLNearbyChatToastPanel::draw()
if(icon)
{
icon->setDrawTooltip(mSourceType == CHAT_SOURCE_AGENT);
- icon->setValue(mFromID);
+ if(mSourceType == CHAT_SOURCE_AGENT)
+ icon->setValue(mFromID);
+ else
+ icon->setValue(LLSD("OBJECT_Icon"));
}
mIsDirty = false;
}
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index f646bcccb5..8efa814a2e 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -36,6 +36,7 @@
#include "llagent.h"
#include "llavataractions.h"
#include "llbottomtray.h"
+#include "lleventtimer.h"
#include "llgroupactions.h"
#include "lliconctrl.h"
#include "llimfloater.h"
@@ -545,6 +546,7 @@ void LLIMChiclet::toggleSpeakerControl()
}
setRequiredWidth();
+ mSpeakerCtrl->setSpeakerId(LLUUID::null);
mSpeakerCtrl->setVisible(getShowSpeaker());
}
@@ -954,7 +956,10 @@ LLIMGroupChiclet::~LLIMGroupChiclet()
void LLIMGroupChiclet::draw()
{
- switchToCurrentSpeaker();
+ if(getShowSpeaker())
+ {
+ switchToCurrentSpeaker();
+ }
LLIMChiclet::draw();
}
@@ -1154,10 +1159,10 @@ void im_chiclet_callback(LLChicletPanel* panel, const LLSD& data){
void object_chiclet_callback(const LLSD& data)
{
- LLUUID object_id = data["object_id"];
+ LLUUID notification_id = data["notification_id"];
bool new_message = data["new_message"];
- std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(object_id);
+ std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(notification_id);
std::list<LLChiclet *>::iterator iter;
for (iter = chiclets.begin(); iter != chiclets.end(); iter++)
{
@@ -1889,12 +1894,8 @@ void LLScriptChiclet::setSessionId(const LLUUID& session_id)
setShowNewMessagesIcon( getSessionId() != session_id );
LLIMChiclet::setSessionId(session_id);
- LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(session_id);
- LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
- if(notification)
- {
- setToolTip(notification->getSubstitutions()["TITLE"].asString());
- }
+
+ setToolTip(LLScriptFloaterManager::getObjectName(session_id));
}
void LLScriptChiclet::setCounter(S32 counter)
@@ -1943,13 +1944,10 @@ void LLInvOfferChiclet::setSessionId(const LLUUID& session_id)
{
setShowNewMessagesIcon( getSessionId() != session_id );
+ setToolTip(LLScriptFloaterManager::getObjectName(session_id));
+
LLIMChiclet::setSessionId(session_id);
- LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(session_id);
- LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
- if(notification)
- {
- setToolTip(notification->getSubstitutions()["TITLE"].asString());
- }
+ LLNotificationPtr notification = LLNotifications::getInstance()->find(session_id);
if ( notification && notification->getName() == INVENTORY_USER_OFFER )
{
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index b006ae3420..ba17c5970e 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -1228,12 +1228,15 @@ T* LLChicletPanel::findChiclet(const LLUUID& im_session_id)
{
LLChiclet* chiclet = *it;
+ llassert(chiclet);
+ if (!chiclet) continue;
if(chiclet->getSessionId() == im_session_id)
{
T* result = dynamic_cast<T*>(chiclet);
- if(!result && chiclet)
+ if(!result)
{
llwarns << "Found chiclet but of wrong type " << llendl;
+ continue;
}
return result;
}
diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp
index 00c05445e1..be6c15eab4 100644
--- a/indra/newview/llcurrencyuimanager.cpp
+++ b/indra/newview/llcurrencyuimanager.cpp
@@ -426,7 +426,7 @@ void LLCurrencyUIManager::Impl::prepare()
LLLineEditor* lindenAmount = mPanel.getChild<LLLineEditor>("currency_amt");
if (lindenAmount)
{
- lindenAmount->setPrevalidate(LLLineEditor::prevalidateNonNegativeS32);
+ lindenAmount->setPrevalidate(LLTextValidate::validateNonNegativeS32);
lindenAmount->setKeystrokeCallback(onCurrencyKey, this);
}
}
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index 244fed791f..38eda5bd2e 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -1046,9 +1046,13 @@ LLSpatialBridge::LLSpatialBridge(LLDrawable* root, BOOL render_by_group, U32 dat
llassert(mDrawable);
llassert(mDrawable->getRegion());
- llassert(mDrawable->getRegion()->getSpatialPartition(mPartitionType));
+ LLSpatialPartition *part = mDrawable->getRegion()->getSpatialPartition(mPartitionType);
+ llassert(part);
- mDrawable->getRegion()->getSpatialPartition(mPartitionType)->put(this);
+ if (part)
+ {
+ part->put(this);
+ }
}
LLSpatialBridge::~LLSpatialBridge()
@@ -1364,10 +1368,14 @@ BOOL LLSpatialBridge::updateMove()
{
llassert(mDrawable);
llassert(mDrawable->getRegion());
- llassert(mDrawable->getRegion()->getSpatialPartition(mPartitionType));
+ LLSpatialPartition* part = mDrawable->getRegion()->getSpatialPartition(mPartitionType);
+ llassert(part);
mOctree->balance();
- mDrawable->getRegion()->getSpatialPartition(mPartitionType)->move(this, getSpatialGroup(), TRUE);
+ if (part)
+ {
+ part->move(this, getSpatialGroup(), TRUE);
+ }
return TRUE;
}
diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h
index 5a10b688da..651dabff9e 100644
--- a/indra/newview/lldrawable.h
+++ b/indra/newview/lldrawable.h
@@ -44,7 +44,6 @@
#include "llquaternion.h"
#include "xform.h"
#include "llmemtype.h"
-#include "llprimitive.h"
#include "lldarray.h"
#include "llviewerobject.h"
#include "llrect.h"
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 6d77361414..7be6e82251 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -180,6 +180,7 @@ void LLDrawPoolAlpha::render(S32 pass)
if (LLPipeline::sFastAlpha && !deferred_render)
{
+ LLGLDisable blend_disable(GL_BLEND);
gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.33f);
if (mVertexShaderLevel > 0)
{
diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp
index 3961afe9af..830e975e8a 100644
--- a/indra/newview/lldriverparam.cpp
+++ b/indra/newview/lldriverparam.cpp
@@ -39,6 +39,7 @@
#include "llvoavatarself.h"
#include "llagent.h"
#include "llwearable.h"
+#include "llagentwearables.h"
//-----------------------------------------------------------------------------
// LLDriverParamInfo
@@ -431,6 +432,12 @@ const LLVector3* LLDriverParam::getNextDistortion(U32 *index, LLPolyMesh **poly_
}
}
+ llassert(driven);
+ if (!driven)
+ {
+ return NULL; // shouldn't happen, but...
+ }
+
// We're already in the middle of a param's distortions, so get the next one.
const LLVector3* v = driven->mParam->getNextDistortion( index, poly_mesh );
if( (!v) && (iter != mDriven.end()) )
@@ -528,6 +535,38 @@ void LLDriverParam::resetDrivenParams()
mDriven.reserve(getInfo()->mDrivenInfoList.size());
}
+void LLDriverParam::updateCrossDrivenParams(EWearableType driven_type)
+{
+ bool needs_update = (getWearableType()==driven_type);
+
+ // if the driver has a driven entry for the passed-in wearable type, we need to refresh the value
+ for( entry_list_t::iterator iter = mDriven.begin(); iter != mDriven.end(); iter++ )
+ {
+ LLDrivenEntry* driven = &(*iter);
+ if (driven && driven->mParam && driven->mParam->getCrossWearable() && driven->mParam->getWearableType() == driven_type)
+ {
+ needs_update = true;
+ }
+ }
+
+
+ if (needs_update)
+ {
+ EWearableType driver_type = (EWearableType)getWearableType();
+
+ // If we've gotten here, we've added a new wearable of type "type"
+ // Thus this wearable needs to get updates from the driver wearable.
+ // The call to setVisualParamWeight seems redundant, but is necessary
+ // as the number of driven wearables has changed since the last update. -Nyx
+ LLWearable *wearable = gAgentWearables.getTopWearable(driver_type);
+ if (wearable)
+ {
+ wearable->setVisualParamWeight(mID, wearable->getVisualParamWeight(mID), false);
+ }
+ }
+}
+
+
//-----------------------------------------------------------------------------
// getDrivenWeight()
//-----------------------------------------------------------------------------
diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h
index 4e2daf5ba7..e963a2d55a 100644
--- a/indra/newview/lldriverparam.h
+++ b/indra/newview/lldriverparam.h
@@ -34,6 +34,7 @@
#define LL_LLDRIVERPARAM_H
#include "llviewervisualparam.h"
+#include "llwearabledictionary.h"
class LLVOAvatar;
class LLWearable;
@@ -93,6 +94,7 @@ public:
void setWearable(LLWearable *wearablep);
void setAvatar(LLVOAvatar *avatarp);
+ void updateCrossDrivenParams(EWearableType driven_type);
/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;
@@ -112,6 +114,7 @@ public:
/*virtual*/ LLVector3 getVertexDistortion(S32 index, LLPolyMesh *poly_mesh);
/*virtual*/ const LLVector3* getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh);
/*virtual*/ const LLVector3* getNextDistortion(U32 *index, LLPolyMesh **poly_mesh);
+
protected:
F32 getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight);
void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake);
diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp
index eca9f8aba2..cc4e1a1868 100644
--- a/indra/newview/lleventpoll.cpp
+++ b/indra/newview/lleventpoll.cpp
@@ -39,7 +39,7 @@
#include "llhttpclient.h"
#include "llhttpstatuscodes.h"
#include "llsdserialize.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
#include "llviewerregion.h"
#include "message.h"
#include "lltrans.h"
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index 9f6412c0ab..3818ee6f78 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -116,7 +116,7 @@ LLExpandableTextBox::LLTextBoxEx::Params::Params()
}
LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)
-: LLTextBox(p),
+: LLTextEditor(p),
mExpanderLabel(p.more_label),
mExpanderVisible(false)
{
@@ -127,7 +127,7 @@ LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)
void LLExpandableTextBox::LLTextBoxEx::reshape(S32 width, S32 height, BOOL called_from_parent)
{
hideExpandText();
- LLTextBox::reshape(width, height, called_from_parent);
+ LLTextEditor::reshape(width, height, called_from_parent);
if (getTextPixelHeight() > getRect().getHeight())
{
@@ -140,7 +140,7 @@ void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,cons
// LLTextBox::setText will obliterate the expander segment, so make sure
// we generate it again by clearing mExpanderVisible
mExpanderVisible = false;
- LLTextBox::setText(text, input_params);
+ LLTextEditor::setText(text, input_params);
// text contents have changed, segments are cleared out
// so hide the expander and determine if we need it
@@ -169,8 +169,7 @@ void LLExpandableTextBox::LLTextBoxEx::showExpandText()
std::pair<S32, S32> visible_lines = getVisibleLines(true);
S32 last_line = visible_lines.second - 1;
- LLStyle::Params expander_style = getDefaultStyle();
- expander_style.font.name(LLFontGL::nameFromFont(expander_style.font));
+ LLStyle::Params expander_style(getDefaultStyleParams());
expander_style.font.style = "UNDERLINE";
expander_style.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
LLExpanderSegment* expanderp = new LLExpanderSegment(new LLStyle(expander_style), getLineStart(last_line), getLength() + 1, mExpanderLabel, *this);
@@ -186,8 +185,8 @@ void LLExpandableTextBox::LLTextBoxEx::hideExpandText()
if (mExpanderVisible)
{
// this will overwrite the expander segment and all text styling with a single style
- LLNormalTextSegment* segmentp = new LLNormalTextSegment(
- new LLStyle(getDefaultStyle()), 0, getLength() + 1, *this);
+ LLStyleConstSP sp(new LLStyle(getDefaultStyleParams()));
+ LLNormalTextSegment* segmentp = new LLNormalTextSegment(sp, 0, getLength() + 1, *this);
insertSegment(segmentp);
mExpanderVisible = false;
@@ -202,6 +201,11 @@ S32 LLExpandableTextBox::LLTextBoxEx::getVerticalTextDelta()
return text_height - textbox_height;
}
+S32 LLExpandableTextBox::LLTextBoxEx::getTextPixelHeight()
+{
+ return getTextBoundingRect().getHeight();
+}
+
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h
index 2b4f9e527c..58316ddb98 100644
--- a/indra/newview/llexpandabletextbox.h
+++ b/indra/newview/llexpandabletextbox.h
@@ -33,7 +33,7 @@
#ifndef LL_LLEXPANDABLETEXTBOX_H
#define LL_LLEXPANDABLETEXTBOX_H
-#include "lltextbox.h"
+#include "lltexteditor.h"
#include "llscrollcontainer.h"
/**
@@ -49,10 +49,10 @@ protected:
* Extended text box. "More" link will appear at end of text if
* text is too long to fit into text box size.
*/
- class LLTextBoxEx : public LLTextBox
+ class LLTextBoxEx : public LLTextEditor
{
public:
- struct Params : public LLInitParam::Block<Params, LLTextBox::Params>
+ struct Params : public LLInitParam::Block<Params, LLTextEditor::Params>
{
Mandatory<std::string> more_label;
Params();
@@ -70,6 +70,11 @@ protected:
virtual S32 getVerticalTextDelta();
/**
+ * Returns the height of text rect.
+ */
+ S32 getTextPixelHeight();
+
+ /**
* Shows "More" link
*/
void showExpandText();
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 965ac1cad0..80acc71a41 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -182,6 +182,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)
mAtlasInfop = NULL ;
mUsingAtlas = FALSE ;
+ mHasMedia = FALSE ;
}
@@ -301,7 +302,8 @@ void LLFace::switchTexture(LLViewerTexture* new_texture)
if(!new_texture)
{
- llerrs << "Can not switch to a null texture." << llendl ;
+ llerrs << "Can not switch to a null texture." << llendl;
+ return;
}
new_texture->addTextureStats(mTexture->getMaxVirtualSize()) ;
@@ -1040,17 +1042,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (rebuild_color)
{
- GLfloat alpha[4] =
- {
- 0.00f,
- 0.25f,
- 0.5f,
- 0.75f
- };
-
- if (getPoolType() != LLDrawPool::POOL_ALPHA && (LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny())))
+ if (tep)
{
- color.mV[3] = U8 (alpha[tep->getShiny()] * 255);
+ GLfloat alpha[4] =
+ {
+ 0.00f,
+ 0.25f,
+ 0.5f,
+ 0.75f
+ };
+
+ if (getPoolType() != LLDrawPool::POOL_ALPHA && (LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny())))
+ {
+ color.mV[3] = U8 (alpha[tep->getShiny()] * 255);
+ }
}
}
@@ -1323,17 +1328,33 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
return TRUE;
}
+//check if the face has a media
+BOOL LLFace::hasMedia() const
+{
+ if(mHasMedia)
+ {
+ return TRUE ;
+ }
+ if(mTexture.notNull())
+ {
+ return mTexture->hasParcelMedia() ; //if has a parcel media
+ }
+
+ return FALSE ; //no media.
+}
+
const F32 LEAST_IMPORTANCE = 0.05f ;
const F32 LEAST_IMPORTANCE_FOR_LARGE_IMAGE = 0.3f ;
F32 LLFace::getTextureVirtualSize()
{
F32 radius;
- F32 cos_angle_to_view_dir;
- mPixelArea = calcPixelArea(cos_angle_to_view_dir, radius);
+ F32 cos_angle_to_view_dir;
+ BOOL in_frustum = calcPixelArea(cos_angle_to_view_dir, radius);
- if (mPixelArea <= 0)
+ if (mPixelArea < 0.0001f || !in_frustum)
{
+ setVirtualSize(0.f) ;
return 0.f;
}
@@ -1370,23 +1391,48 @@ F32 LLFace::getTextureVirtualSize()
}
}
+ setVirtualSize(face_area) ;
+
return face_area;
}
-F32 LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
+BOOL LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
{
//get area of circle around face
LLVector3 center = getPositionAgent();
- LLVector3 size = (mExtents[1] - mExtents[0]) * 0.5f;
-
+ LLVector3 size = (mExtents[1] - mExtents[0]) * 0.5f;
LLViewerCamera* camera = LLViewerCamera::getInstance();
+
+ F32 size_squared = size.lengthSquared() ;
LLVector3 lookAt = center - camera->getOrigin();
- F32 dist = lookAt.normVec() ;
+ F32 dist = lookAt.normVec() ;
//get area of circle around node
- F32 app_angle = atanf(size.length()/dist);
+ F32 app_angle = atanf(fsqrtf(size_squared) / dist);
radius = app_angle*LLDrawable::sCurPixelAngle;
- F32 face_area = radius*radius * 3.14159f;
+ mPixelArea = radius*radius * 3.14159f;
+ cos_angle_to_view_dir = lookAt * camera->getXAxis() ;
+
+ //if has media, check if the face is out of the view frustum.
+ if(hasMedia())
+ {
+ if(!camera->AABBInFrustum(center, size))
+ {
+ mImportanceToCamera = 0.f ;
+ return false ;
+ }
+ if(cos_angle_to_view_dir > camera->getCosHalfFov()) //the center is within the view frustum
+ {
+ cos_angle_to_view_dir = 1.0f ;
+ }
+ else
+ {
+ if(dist * dist * (lookAt - camera->getXAxis()).lengthSquared() < size_squared)
+ {
+ cos_angle_to_view_dir = 1.0f ;
+ }
+ }
+ }
if(dist < mBoundingSphereRadius) //camera is very close
{
@@ -1394,12 +1440,11 @@ F32 LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
mImportanceToCamera = 1.0f ;
}
else
- {
- cos_angle_to_view_dir = lookAt * camera->getXAxis() ;
+ {
mImportanceToCamera = LLFace::calcImportanceToCamera(cos_angle_to_view_dir, dist) ;
}
- return face_area ;
+ return true ;
}
//the projection of the face partially overlaps with the screen
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index e12b64a2f2..67dd97e6f7 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -194,6 +194,9 @@ public:
F32 getTextureVirtualSize() ;
F32 getImportanceToCamera()const {return mImportanceToCamera ;}
+ void setHasMedia(bool has_media) { mHasMedia = has_media ;}
+ BOOL hasMedia() const ;
+
//for atlas
LLTextureAtlasSlot* getAtlasInfo() ;
void setAtlasInUse(BOOL flag);
@@ -208,7 +211,7 @@ public:
private:
F32 adjustPartialOverlapPixelArea(F32 cos_angle_to_view_dir, F32 radius );
- F32 calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) ;
+ BOOL calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) ;
public:
static F32 calcImportanceToCamera(F32 to_view_dir, F32 dist);
@@ -262,7 +265,7 @@ private:
//based on the distance from the face to the view point and the angle from the face center to the view direction.
F32 mImportanceToCamera ;
F32 mBoundingSphereRadius ;
-
+ bool mHasMedia ;
//atlas
LLPointer<LLTextureAtlasSlot> mAtlasInfop ;
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index f5bb777419..bf7c735488 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -34,7 +34,6 @@
#include "llfavoritesbar.h"
-#include "llbutton.h"
#include "llfloaterreg.h"
#include "llfocusmgr.h"
#include "llinventory.h"
@@ -48,7 +47,6 @@
#include "llclipboard.h"
#include "llinventoryclipboard.h"
#include "llinventorybridge.h"
-#include "llinventorymodel.h"
#include "llfloaterworldmap.h"
#include "lllandmarkactions.h"
#include "llnotificationsutil.h"
@@ -300,6 +298,20 @@ public:
return TRUE;
}
+ void setVisible(BOOL b)
+ {
+ // Overflow menu shouldn't hide when it still has focus. See EXT-4217.
+ if (!b && hasFocus())
+ return;
+ LLToggleableMenu::setVisible(b);
+ setFocus(b);
+ }
+
+ void onFocusLost()
+ {
+ setVisible(FALSE);
+ }
+
protected:
LLFavoriteLandmarkToggleableMenu(const LLToggleableMenu::Params& p):
LLToggleableMenu(p)
@@ -370,7 +382,8 @@ struct LLFavoritesSort
LLFavoritesBarCtrl::Params::Params()
: image_drag_indication("image_drag_indication"),
- chevron_button("chevron_button")
+ chevron_button("chevron_button"),
+ label("label")
{
}
@@ -401,6 +414,10 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
chevron_button_params.click_callback.function(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
mChevronButton = LLUICtrlFactory::create<LLButton> (chevron_button_params);
addChild(mChevronButton);
+
+ LLTextBox::Params label_param(p.label);
+ mBarLabel = LLUICtrlFactory::create<LLTextBox> (label_param);
+ addChild(mBarLabel);
}
LLFavoritesBarCtrl::~LLFavoritesBarCtrl()
@@ -625,8 +642,8 @@ void LLFavoritesBarCtrl::draw()
if (mShowDragMarker)
{
- S32 w = mImageDragIndication->getWidth() / 2;
- S32 h = mImageDragIndication->getHeight() / 2;
+ S32 w = mImageDragIndication->getWidth();
+ S32 h = mImageDragIndication->getHeight();
if (mLandingTab)
{
@@ -669,7 +686,14 @@ void LLFavoritesBarCtrl::updateButtons()
{
return;
}
-
+ if(mItems.empty())
+ {
+ mBarLabel->setVisible(TRUE);
+ }
+ else
+ {
+ mBarLabel->setVisible(FALSE);
+ }
const child_list_t* childs = getChildList();
child_list_const_iter_t child_it = childs->begin();
int first_changed_item_index = 0;
@@ -715,14 +739,22 @@ 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)
{
removeChild(mChevronButton);
}
int last_right_edge = 0;
+ //calculate new buttons offset
if (getChildList()->size() > 0)
{
- last_right_edge = getChildList()->back()->getRect().mRight;
+ //find last visible child to get the rightest button offset
+ child_list_const_reverse_iter_t last_visible_it = std::find_if(childs->rbegin(), childs->rend(),
+ std::mem_fun(&LLView::getVisible));
+ if(last_visible_it != childs->rend())
+ {
+ last_right_edge = (*last_visible_it)->getRect().mRight;
+ }
}
//last_right_edge is saving coordinates
LLButton* last_new_button = NULL;
@@ -759,6 +791,15 @@ void LLFavoritesBarCtrl::updateButtons()
mChevronButton->setRect(rect);
mChevronButton->setVisible(TRUE);
}
+ // Update overflow menu
+ LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mPopupMenuHandle.get());
+ if (overflow_menu && overflow_menu->getVisible())
+ {
+ overflow_menu->setFocus(FALSE);
+ overflow_menu->setVisible(FALSE);
+ if (mUpdateDropDownItems)
+ showDropDownMenu();
+ }
}
else
{
@@ -874,6 +915,8 @@ void LLFavoritesBarCtrl::showDropDownMenu()
if (menu)
{
+ // Release focus to allow changing of visibility.
+ menu->setFocus(FALSE);
if (!menu->toggleVisibility())
return;
@@ -1221,8 +1264,11 @@ LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLIn
void LLFavoritesBarCtrl::insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem)
{
LLViewerInventoryItem* beforeItem = gInventory.getItem(beforeItemId);
-
- items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem);
+ llassert(beforeItem);
+ if (beforeItem)
+ {
+ items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem);
+ }
}
// EOF
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 40dd551eef..2c6d8d1580 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -35,6 +35,7 @@
#include "llbutton.h"
#include "lluictrl.h"
+#include "lltextbox.h"
#include "llinventoryobserver.h"
#include "llinventorymodel.h"
@@ -46,6 +47,7 @@ public:
{
Optional<LLUIImage*> image_drag_indication;
Optional<LLButton::Params> chevron_button;
+ Optional<LLTextBox::Params> label;
Params();
};
@@ -139,6 +141,7 @@ private:
LLUICtrl* mLandingTab;
LLUICtrl* mLastTab;
LLButton* mChevronButton;
+ LLTextBox* mBarLabel;
LLUUID mDragItemId;
BOOL mStartDrag;
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index fb724f30e0..fbb90c69f3 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -287,6 +287,7 @@ BOOL LLFeatureManager::loadFeatureTables()
if (!flp)
{
LL_ERRS("RenderInit") << "Specified parameter before <list> keyword!" << LL_ENDL;
+ return FALSE;
}
S32 available;
F32 recommended;
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 60f150bd96..5ec58c8dd6 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -86,38 +86,40 @@ const F32 BASE_ANIM_TIME_OFFSET = 5.f;
std::string STATUS[] =
{
- "E_ST_OK",
- "E_ST_EOF",
- "E_ST_NO_CONSTRAINT",
- "E_ST_NO_FILE",
-"E_ST_NO_HIER",
-"E_ST_NO_JOINT",
-"E_ST_NO_NAME",
-"E_ST_NO_OFFSET",
-"E_ST_NO_CHANNELS",
-"E_ST_NO_ROTATION",
-"E_ST_NO_AXIS",
-"E_ST_NO_MOTION",
-"E_ST_NO_FRAMES",
-"E_ST_NO_FRAME_TIME",
-"E_ST_NO_POS",
-"E_ST_NO_ROT",
-"E_ST_NO_XLT_FILE",
-"E_ST_NO_XLT_HEADER",
-"E_ST_NO_XLT_NAME",
-"E_ST_NO_XLT_IGNORE",
-"E_ST_NO_XLT_RELATIVE",
-"E_ST_NO_XLT_OUTNAME",
-"E_ST_NO_XLT_MATRIX",
-"E_ST_NO_XLT_MERGECHILD",
-"E_ST_NO_XLT_MERGEPARENT",
-"E_ST_NO_XLT_PRIORITY",
-"E_ST_NO_XLT_LOOP",
-"E_ST_NO_XLT_EASEIN",
-"E_ST_NO_XLT_EASEOUT",
-"E_ST_NO_XLT_HAND",
-"E_ST_NO_XLT_EMOTE",
+ "E_ST_OK",
+ "E_ST_EOF",
+ "E_ST_NO_CONSTRAINT",
+ "E_ST_NO_FILE",
+ "E_ST_NO_HIER",
+ "E_ST_NO_JOINT",
+ "E_ST_NO_NAME",
+ "E_ST_NO_OFFSET",
+ "E_ST_NO_CHANNELS",
+ "E_ST_NO_ROTATION",
+ "E_ST_NO_AXIS",
+ "E_ST_NO_MOTION",
+ "E_ST_NO_FRAMES",
+ "E_ST_NO_FRAME_TIME",
+ "E_ST_NO_POS",
+ "E_ST_NO_ROT",
+ "E_ST_NO_XLT_FILE",
+ "E_ST_NO_XLT_HEADER",
+ "E_ST_NO_XLT_NAME",
+ "E_ST_NO_XLT_IGNORE",
+ "E_ST_NO_XLT_RELATIVE",
+ "E_ST_NO_XLT_OUTNAME",
+ "E_ST_NO_XLT_MATRIX",
+ "E_ST_NO_XLT_MERGECHILD",
+ "E_ST_NO_XLT_MERGEPARENT",
+ "E_ST_NO_XLT_PRIORITY",
+ "E_ST_NO_XLT_LOOP",
+ "E_ST_NO_XLT_EASEIN",
+ "E_ST_NO_XLT_EASEOUT",
+ "E_ST_NO_XLT_HAND",
+ "E_ST_NO_XLT_EMOTE",
+"E_ST_BAD_ROOT"
};
+
//-----------------------------------------------------------------------------
// LLFloaterAnimPreview()
//-----------------------------------------------------------------------------
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 9b88923e7e..d37bc01885 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -82,7 +82,10 @@ public:
virtual ~LLFloaterBuyLandUI();
/*virtual*/ void onClose(bool app_quitting);
-
+
+ // Left padding for maturity rating icon.
+ static const S32 ICON_PAD = 2;
+
private:
class SelectionObserver : public LLParcelObserver
{
@@ -501,6 +504,25 @@ void LLFloaterBuyLandUI::updateCovenantInfo()
{
std::string region_name_txt = region->getName() + " ("+rating +")";
region_name->setText(region_name_txt);
+
+ LLIconCtrl* rating_icon = getChild<LLIconCtrl>("rating_icon");
+ LLRect rect = rating_icon->getRect();
+ S32 icon_left_pad = region_name->getRect().mLeft + region_name->getTextBoundingRect().getWidth() + ICON_PAD;
+ rating_icon->setRect(rect.setOriginAndSize(icon_left_pad, rect.mBottom, rect.getWidth(), rect.getHeight()));
+
+ switch(sim_access)
+ {
+ case SIM_ACCESS_PG:
+ rating_icon->setValue(getString("icon_PG"));
+ break;
+
+ case SIM_ACCESS_ADULT:
+ rating_icon->setValue(getString("icon_R"));
+ break;
+
+ default:
+ rating_icon->setValue(getString("icon_M"));
+ }
}
LLTextBox* region_type = getChild<LLTextBox>("region_type_text");
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index 9496e94780..ecb6254f8a 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -65,7 +65,7 @@ public:
LLPanelCameraZoom();
/* virtual */ BOOL postBuild();
- /* virtual */ void onOpen(const LLSD& key);
+ /* virtual */ void draw();
protected:
void onZoomPlusHeldDown();
@@ -73,7 +73,6 @@ protected:
void onSliderValueChanged();
private:
- F32 mSavedSliderVal;
LLButton* mPlusBtn;
LLButton* mMinusBtn;
LLSlider* mSlider;
@@ -88,8 +87,7 @@ static LLRegisterPanelClassWrapper<LLPanelCameraZoom> t_camera_zoom_panel("camer
LLPanelCameraZoom::LLPanelCameraZoom()
: mPlusBtn( NULL ),
mMinusBtn( NULL ),
- mSlider( NULL ),
- mSavedSliderVal(0.f)
+ mSlider( NULL )
{
mCommitCallbackRegistrar.add("Zoom.minus", boost::bind(&LLPanelCameraZoom::onZoomPlusHeldDown, this));
mCommitCallbackRegistrar.add("Zoom.plus", boost::bind(&LLPanelCameraZoom::onZoomMinusHeldDown, this));
@@ -101,16 +99,13 @@ BOOL LLPanelCameraZoom::postBuild()
mPlusBtn = getChild <LLButton> ("zoom_plus_btn");
mMinusBtn = getChild <LLButton> ("zoom_minus_btn");
mSlider = getChild <LLSlider> ("zoom_slider");
- mSlider->setMinValue(.0f);
- mSlider->setMaxValue(8.f);
return LLPanel::postBuild();
}
-void LLPanelCameraZoom::onOpen(const LLSD& key)
+void LLPanelCameraZoom::draw()
{
- LLVector3d to_focus = gAgent.getPosGlobalFromAgent(LLViewerCamera::getInstance()->getOrigin()) - gAgent.calcFocusPositionTargetGlobal();
- mSavedSliderVal = 8.f - (F32)to_focus.magVec(); // maximum minus current
- mSlider->setValue( mSavedSliderVal );
+ mSlider->setValue(gAgent.getCameraZoomFraction());
+ LLPanel::draw();
}
void LLPanelCameraZoom::onZoomPlusHeldDown()
@@ -135,13 +130,8 @@ void LLPanelCameraZoom::onZoomMinusHeldDown()
void LLPanelCameraZoom::onSliderValueChanged()
{
- F32 val = mSlider->getValueF32();
- F32 rate = val - mSavedSliderVal;
-
- gAgent.unlockView();
- gAgent.cameraOrbitIn(rate);
-
- mSavedSliderVal = val;
+ F32 zoom_level = mSlider->getValueF32();
+ gAgent.setCameraZoomFraction(zoom_level);
}
void activate_camera_tool()
diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp
index 73b79d8e13..b65457c4eb 100644
--- a/indra/newview/llfloatercolorpicker.cpp
+++ b/indra/newview/llfloatercolorpicker.cpp
@@ -586,7 +586,7 @@ void LLFloaterColorPicker::draw()
gl_triangle_2d ( startX, startY,
startX + mLumMarkerSize, startY - mLumMarkerSize,
startX + mLumMarkerSize, startY + mLumMarkerSize,
- LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), TRUE );
+ LLColor4 ( 0.75f, 0.75f, 0.75f, 1.0f ), TRUE );
// draw luminance slider outline
gl_rect_2d ( mLumRegionLeft,
diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp
new file mode 100644
index 0000000000..64efa10ef9
--- /dev/null
+++ b/indra/newview/llfloaterevent.cpp
@@ -0,0 +1,324 @@
+/**
+ * @file llfloaterevent.cpp
+ * @brief Display for events in the finder
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterevent.h"
+
+#include "message.h"
+#include "llnotificationsutil.h"
+#include "llui.h"
+
+#include "llagent.h"
+#include "llviewerwindow.h"
+#include "llbutton.h"
+#include "llcachename.h"
+#include "llcommandhandler.h" // secondlife:///app/chat/ support
+#include "lleventflags.h"
+#include "lleventnotifier.h"
+#include "llexpandabletextbox.h"
+#include "llfloater.h"
+#include "llfloaterreg.h"
+#include "llfloaterworldmap.h"
+#include "llinventorymodel.h"
+#include "llsecondlifeurls.h"
+#include "llslurl.h"
+#include "lltextbox.h"
+#include "lltexteditor.h"
+#include "lluiconstants.h"
+#include "llviewercontrol.h"
+#include "llweb.h"
+#include "llworldmap.h"
+#include "lluictrlfactory.h"
+#include "lltrans.h"
+
+
+class LLEventHandler : public LLCommandHandler
+{
+public:
+ // requires trusted browser to trigger
+ LLEventHandler() : LLCommandHandler("event", UNTRUSTED_THROTTLE) { }
+ bool handle(const LLSD& params, const LLSD& query_map,
+ LLMediaCtrl* web)
+ {
+ if (params.size() < 1)
+ {
+ return false;
+ }
+
+ LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event");
+ if (floater)
+ {
+ floater->setEventID(params[0].asInteger());
+ LLFloaterReg::showTypedInstance<LLFloaterEvent>("event");
+ return true;
+ }
+
+ return false;
+ }
+};
+LLEventHandler gEventHandler;
+
+LLFloaterEvent::LLFloaterEvent(const LLSD& key)
+ : LLFloater(key),
+
+ mEventID(0)
+{
+}
+
+
+LLFloaterEvent::~LLFloaterEvent()
+{
+}
+
+
+BOOL LLFloaterEvent::postBuild()
+{
+ mTBName = getChild<LLTextBox>("event_name");
+
+ mTBCategory = getChild<LLTextBox>("event_category");
+
+ mTBDate = getChild<LLTextBox>("event_date");
+
+ mTBDuration = getChild<LLTextBox>("event_duration");
+
+ mTBDesc = getChild<LLExpandableTextBox>("event_desc");
+ mTBDesc->setEnabled(FALSE);
+
+ mTBRunBy = getChild<LLTextBox>("event_runby");
+ mTBLocation = getChild<LLTextBox>("event_location");
+ mTBCover = getChild<LLTextBox>("event_cover");
+
+ mTeleportBtn = getChild<LLButton>( "teleport_btn");
+ mTeleportBtn->setClickedCallback(onClickTeleport, this);
+
+ mMapBtn = getChild<LLButton>( "map_btn");
+ mMapBtn->setClickedCallback(onClickMap, this);
+
+ mNotifyBtn = getChild<LLButton>( "notify_btn");
+ mNotifyBtn->setClickedCallback(onClickNotify, this);
+
+ mCreateEventBtn = getChild<LLButton>( "create_event_btn");
+ mCreateEventBtn->setClickedCallback(onClickCreateEvent, this);
+
+ mGodDeleteEventBtn = getChild<LLButton>( "god_delete_event_btn");
+ mGodDeleteEventBtn->setClickedCallback(boost::bind(&LLFloaterEvent::onClickDeleteEvent, this));
+
+ return TRUE;
+}
+
+void LLFloaterEvent::setEventID(const U32 event_id)
+{
+ mEventID = event_id;
+ // Should reset all of the panel state here
+ resetInfo();
+
+ if (event_id != 0)
+ {
+ sendEventInfoRequest();
+ }
+}
+
+void LLFloaterEvent::onClickDeleteEvent()
+{
+ LLMessageSystem* msg = gMessageSystem;
+
+ msg->newMessageFast(_PREHASH_EventGodDelete);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+
+ msg->nextBlockFast(_PREHASH_EventData);
+ msg->addU32Fast(_PREHASH_EventID, mEventID);
+
+ gAgent.sendReliableMessage();
+}
+
+void LLFloaterEvent::sendEventInfoRequest()
+{
+ LLMessageSystem *msg = gMessageSystem;
+
+ msg->newMessageFast(_PREHASH_EventInfoRequest);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() );
+ msg->nextBlockFast(_PREHASH_EventData);
+ msg->addU32Fast(_PREHASH_EventID, mEventID);
+ gAgent.sendReliableMessage();
+}
+
+//static
+void LLFloaterEvent::processEventInfoReply(LLMessageSystem *msg, void **)
+{
+ // extract the agent id
+ LLUUID agent_id;
+ msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
+
+ LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event");
+
+ if(floater)
+ {
+ floater->mEventInfo.unpack(msg);
+ floater->mTBName->setText(floater->mEventInfo.mName);
+ floater->mTBCategory->setText(floater->mEventInfo.mCategoryStr);
+ floater->mTBDate->setText(floater->mEventInfo.mTimeStr);
+ floater->mTBDesc->setText(floater->mEventInfo.mDesc);
+ floater->mTBRunBy->setText(LLSLURL::buildCommand("agent", floater->mEventInfo.mRunByID, "inspect"));
+
+ floater->mTBDuration->setText(llformat("%d:%.2d", floater->mEventInfo.mDuration / 60, floater->mEventInfo.mDuration % 60));
+
+ if (!floater->mEventInfo.mHasCover)
+ {
+ floater->mTBCover->setText(floater->getString("none"));
+ }
+ else
+ {
+ floater->mTBCover->setText(llformat("%d", floater->mEventInfo.mCover));
+ }
+
+ F32 global_x = (F32)floater->mEventInfo.mPosGlobal.mdV[VX];
+ F32 global_y = (F32)floater->mEventInfo.mPosGlobal.mdV[VY];
+
+ S32 region_x = llround(global_x) % REGION_WIDTH_UNITS;
+ S32 region_y = llround(global_y) % REGION_WIDTH_UNITS;
+ S32 region_z = llround((F32)floater->mEventInfo.mPosGlobal.mdV[VZ]);
+
+ std::string desc = floater->mEventInfo.mSimName + llformat(" (%d, %d, %d)", region_x, region_y, region_z);
+ floater->mTBLocation->setText(desc);
+
+ if (floater->mEventInfo.mEventFlags & EVENT_FLAG_MATURE)
+ {
+ floater->childSetVisible("event_mature_yes", TRUE);
+ floater->childSetVisible("event_mature_no", FALSE);
+ }
+ else
+ {
+ floater->childSetVisible("event_mature_yes", FALSE);
+ floater->childSetVisible("event_mature_no", TRUE);
+ }
+
+ if (floater->mEventInfo.mUnixTime < time_corrected())
+ {
+ floater->mNotifyBtn->setEnabled(FALSE);
+ }
+ else
+ {
+ floater->mNotifyBtn->setEnabled(TRUE);
+ }
+
+ if (gEventNotifier.hasNotification(floater->mEventInfo.mID))
+ {
+ floater->mNotifyBtn->setLabel(floater->getString("dont_notify"));
+ }
+ else
+ {
+ floater->mNotifyBtn->setLabel(floater->getString("notify"));
+ }
+
+ floater->mMapBtn->setEnabled(TRUE);
+ floater->mTeleportBtn->setEnabled(TRUE);
+ }
+}
+
+
+void LLFloaterEvent::draw()
+{
+ mGodDeleteEventBtn->setVisible(gAgent.isGodlike());
+
+ LLPanel::draw();
+}
+
+void LLFloaterEvent::resetInfo()
+{
+ mTBName->setText(LLStringUtil::null);
+ mTBCategory->setText(LLStringUtil::null);
+ mTBDate->setText(LLStringUtil::null);
+ mTBDesc->setText(LLStringUtil::null);
+ mTBDuration->setText(LLStringUtil::null);
+ mTBCover->setText(LLStringUtil::null);
+ mTBLocation->setText(LLStringUtil::null);
+ mTBRunBy->setText(LLStringUtil::null);
+ mNotifyBtn->setEnabled(FALSE);
+ mMapBtn->setEnabled(FALSE);
+ mTeleportBtn->setEnabled(FALSE);
+}
+
+// static
+void LLFloaterEvent::onClickTeleport(void* data)
+{
+ LLFloaterEvent* self = (LLFloaterEvent*)data;
+ LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
+ if (!self->mEventInfo.mPosGlobal.isExactlyZero()&&worldmap_instance)
+ {
+ gAgent.teleportViaLocation(self->mEventInfo.mPosGlobal);
+ worldmap_instance->trackLocation(self->mEventInfo.mPosGlobal);
+ }
+}
+
+
+// static
+void LLFloaterEvent::onClickMap(void* data)
+{
+ LLFloaterEvent* self = (LLFloaterEvent*)data;
+ LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
+
+ if (!self->mEventInfo.mPosGlobal.isExactlyZero()&&worldmap_instance)
+ {
+ worldmap_instance->trackLocation(self->mEventInfo.mPosGlobal);
+ LLFloaterReg::showInstance("world_map", "center");
+ }
+}
+
+
+// static
+void LLFloaterEvent::onClickCreateEvent(void* data)
+{
+ LLNotificationsUtil::add("PromptGoToEventsPage");//, LLSD(), LLSD(), callbackCreateEventWebPage);
+}
+
+
+// static
+void LLFloaterEvent::onClickNotify(void *data)
+{
+ LLFloaterEvent* self = (LLFloaterEvent*)data;
+
+ if (!gEventNotifier.hasNotification(self->mEventID))
+ {
+ gEventNotifier.add(self->mEventInfo);
+ self->mNotifyBtn->setLabel(self->getString("dont_notify"));
+ }
+ else
+ {
+ gEventNotifier.remove(self->mEventInfo.mID);
+ self->mNotifyBtn->setLabel(self->getString("notify"));
+ }
+}
diff --git a/indra/newview/llfloaterevent.h b/indra/newview/llfloaterevent.h
new file mode 100644
index 0000000000..54aaaf6a0f
--- /dev/null
+++ b/indra/newview/llfloaterevent.h
@@ -0,0 +1,96 @@
+/**
+ * @file llfloaterevent.h
+ * @brief Display for events in the finder
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATEREVENT_H
+#define LL_LLFLOATEREVENT_H
+
+#include "llfloater.h"
+#include "lleventinfo.h"
+#include "lluuid.h"
+#include "v3dmath.h"
+
+class LLTextBox;
+class LLTextEditor;
+class LLButton;
+class LLExpandableTextBox;
+class LLMessageSystem;
+
+class LLFloaterEvent : public LLFloater
+{
+public:
+ LLFloaterEvent(const LLSD& key);
+ /*virtual*/ ~LLFloaterEvent();
+
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void draw();
+
+ void setEventID(const U32 event_id);
+ void sendEventInfoRequest();
+
+ static void processEventInfoReply(LLMessageSystem *msg, void **);
+
+ U32 getEventID() { return mEventID; }
+
+protected:
+ void resetInfo();
+
+ static void onClickTeleport(void*);
+ static void onClickMap(void*);
+ //static void onClickLandmark(void*);
+ static void onClickCreateEvent(void*);
+ static void onClickNotify(void*);
+ void onClickDeleteEvent();
+
+// static bool callbackCreateEventWebPage(const LLSD& notification, const LLSD& response);
+
+protected:
+ U32 mEventID;
+ LLEventInfo mEventInfo;
+
+ LLTextBox* mTBName;
+ LLTextBox* mTBCategory;
+ LLTextBox* mTBDate;
+ LLTextBox* mTBDuration;
+ LLExpandableTextBox* mTBDesc;
+
+ LLTextBox* mTBRunBy;
+ LLTextBox* mTBLocation;
+ LLTextBox* mTBCover;
+
+ LLButton* mTeleportBtn;
+ LLButton* mMapBtn;
+ LLButton* mCreateEventBtn;
+ LLButton* mGodDeleteEventBtn;
+ LLButton* mNotifyBtn;
+};
+
+#endif // LL_LLFLOATEREVENT_H
diff --git a/indra/newview/llfloaterfriends.cpp b/indra/newview/llfloaterfriends.cpp
index ccc5cab85a..4e2633d750 100644
--- a/indra/newview/llfloaterfriends.cpp
+++ b/indra/newview/llfloaterfriends.cpp
@@ -58,7 +58,7 @@
#include "llmenucommands.h"
#include "llviewercontrol.h"
#include "llviewermessage.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
#include "lltextbox.h"
#include "llvoiceclient.h"
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index b684e1f985..9c1ac2631d 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -203,12 +203,12 @@ BOOL LLFloaterGesture::postBuild()
gInventory.addObserver(this);
fetchDescendents(folders);
- buildGestureList();
-
- mGestureList->setFocus(TRUE);
-
if (mGestureList)
{
+ buildGestureList();
+
+ mGestureList->setFocus(TRUE);
+
const BOOL ascending = TRUE;
mGestureList->sortByColumn(std::string("name"), ascending);
mGestureList->selectFirstItem();
@@ -223,10 +223,10 @@ BOOL LLFloaterGesture::postBuild()
void LLFloaterGesture::refreshAll()
{
- buildGestureList();
-
if (!mGestureList) return;
+ buildGestureList();
+
if (mSelectedID.isNull())
{
mGestureList->selectFirstItem();
@@ -427,8 +427,13 @@ void LLFloaterGesture::onClickPlay()
BOOL inform_server = TRUE;
BOOL deactivate_similar = FALSE;
LLGestureManager::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id));
- LLGestureManager::instance().activateGestureWithAsset(item_id, gInventory.getItem(item_id)->getAssetUUID(), inform_server, deactivate_similar);
- LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL;
+ LLViewerInventoryItem *item = gInventory.getItem(item_id);
+ llassert(item);
+ if (item)
+ {
+ LLGestureManager::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar);
+ LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL;
+ }
}
else
{
@@ -510,15 +515,16 @@ void LLFloaterGesture::onCopyPasteAction(const LLSD& command)
if(ids.empty() || !gInventory.isCategoryComplete(mGestureFolderID))
return;
LLInventoryCategory* gesture_dir = gInventory.getCategory(mGestureFolderID);
+ llassert(gesture_dir);
LLPointer<GestureCopiedCallback> cb = new GestureCopiedCallback(this);
for(LLDynamicArray<LLUUID>::iterator it = ids.begin(); it != ids.end(); it++)
{
LLInventoryItem* item = gInventory.getItem(*it);
- LLStringUtil::format_map_t string_args;
- string_args["[COPY_NAME]"] = item->getName();
- if(item && item->getInventoryType() == LLInventoryType::IT_GESTURE)
+ if(gesture_dir && item && item->getInventoryType() == LLInventoryType::IT_GESTURE)
{
+ LLStringUtil::format_map_t string_args;
+ string_args["[COPY_NAME]"] = item->getName();
LL_DEBUGS("Gesture")<< "Copying gesture " << item->getName() << " "<< item->getUUID() << " into "
<< gesture_dir->getName() << " "<< gesture_dir->getUUID() << LL_ENDL;
copy_inventory_item(gAgent.getID(), item->getPermissions().getOwner(), item->getUUID(),
diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
index c2b0bd18fa..eb56f387cd 100644
--- a/indra/newview/llfloatergodtools.cpp
+++ b/indra/newview/llfloatergodtools.cpp
@@ -213,6 +213,9 @@ void LLFloaterGodTools::showPanel(const std::string& panel_name)
// static
void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg)
{
+ llassert(msg);
+ if (!msg) return;
+
LLHost host = msg->getSender();
if (host != gAgent.getRegionHost())
{
@@ -270,8 +273,7 @@ void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg)
if ( gAgent.isGodlike()
&& LLFloaterReg::instanceVisible("god_tools")
&& god_tools->mPanelRegionTools
- && god_tools->mPanelObjectTools
- && msg )
+ && god_tools->mPanelObjectTools)
{
LLPanelRegionTools* rtool = god_tools->mPanelRegionTools;
god_tools->mCurrentHost = host;
@@ -414,17 +416,17 @@ LLPanelRegionTools::LLPanelRegionTools()
BOOL LLPanelRegionTools::postBuild()
{
getChild<LLLineEditor>("region name")->setKeystrokeCallback(onChangeSimName, this);
- childSetPrevalidate("region name", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
- childSetPrevalidate("estate", &LLLineEditor::prevalidatePositiveS32);
- childSetPrevalidate("parentestate", &LLLineEditor::prevalidatePositiveS32);
+ childSetPrevalidate("region name", &LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("estate", &LLTextValidate::validatePositiveS32);
+ childSetPrevalidate("parentestate", &LLTextValidate::validatePositiveS32);
childDisable("parentestate");
- childSetPrevalidate("gridposx", &LLLineEditor::prevalidatePositiveS32);
+ childSetPrevalidate("gridposx", &LLTextValidate::validatePositiveS32);
childDisable("gridposx");
- childSetPrevalidate("gridposy", &LLLineEditor::prevalidatePositiveS32);
+ childSetPrevalidate("gridposy", &LLTextValidate::validatePositiveS32);
childDisable("gridposy");
- childSetPrevalidate("redirectx", &LLLineEditor::prevalidatePositiveS32);
- childSetPrevalidate("redirecty", &LLLineEditor::prevalidatePositiveS32);
+ childSetPrevalidate("redirectx", &LLTextValidate::validatePositiveS32);
+ childSetPrevalidate("redirecty", &LLTextValidate::validatePositiveS32);
return TRUE;
}
diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp
index e62e2c99a7..844f0ac509 100644
--- a/indra/newview/llfloaterinventory.cpp
+++ b/indra/newview/llfloaterinventory.cpp
@@ -41,6 +41,7 @@
#include "llpanelmaininventory.h"
#include "llresmgr.h"
#include "llviewerfoldertype.h"
+#include "lltransientfloatermgr.h"
///----------------------------------------------------------------------------
/// LLFloaterInventory
@@ -49,10 +50,12 @@
LLFloaterInventory::LLFloaterInventory(const LLSD& key)
: LLFloater(key)
{
+ LLTransientFloaterMgr::getInstance()->addControlView(this);
}
LLFloaterInventory::~LLFloaterInventory()
{
+ LLTransientFloaterMgr::getInstance()->removeControlView(this);
}
BOOL LLFloaterInventory::postBuild()
diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp
index 3753dcaaa8..85186cee6b 100644
--- a/indra/newview/llfloaterlagmeter.cpp
+++ b/indra/newview/llfloaterlagmeter.cpp
@@ -64,7 +64,7 @@ BOOL LLFloaterLagMeter::postBuild()
setIsChrome(TRUE);
// were we shrunk last time?
- if (gSavedSettings.getBOOL("LagMeterShrunk"))
+ if (isShrunk())
{
onClickShrink();
}
@@ -122,6 +122,7 @@ BOOL LLFloaterLagMeter::postBuild()
mStringArgs["[SERVER_FRAME_RATE_WARNING]"] = getString("server_frame_rate_warning_fps");
// childSetAction("minimize", onClickShrink, this);
+ updateControls(isShrunk()); // if expanded append colon to the labels (EXT-4079)
return TRUE;
}
@@ -130,7 +131,7 @@ LLFloaterLagMeter::~LLFloaterLagMeter()
// save shrunk status for next time
// gSavedSettings.setBOOL("LagMeterShrunk", mShrunk);
// expand so we save the large window rectangle
- if (gSavedSettings.getBOOL("LagMeterShrunk"))
+ if (isShrunk())
{
onClickShrink();
}
@@ -312,17 +313,15 @@ void LLFloaterLagMeter::determineServer()
}
}
-
-void LLFloaterLagMeter::onClickShrink() // toggle "LagMeterShrunk"
+void LLFloaterLagMeter::updateControls(bool shrink)
{
// LLFloaterLagMeter * self = (LLFloaterLagMeter*)data;
LLButton * button = getChild<LLButton>("minimize");
S32 delta_width = mMaxWidth -mMinWidth;
LLRect r = getRect();
- bool shrunk = gSavedSettings.getBOOL("LagMeterShrunk");
- if(shrunk)
+ if(!shrink)
{
setTitle(getString("max_title_msg", mStringArgs) );
// make left edge appear to expand
@@ -368,5 +367,16 @@ void LLFloaterLagMeter::onClickShrink() // toggle "LagMeterShrunk"
// self->childSetVisible("server_help", self->mShrunk);
// self->mShrunk = !self->mShrunk;
- gSavedSettings.setBOOL("LagMeterShrunk", !gSavedSettings.getBOOL("LagMeterShrunk"));
+}
+
+BOOL LLFloaterLagMeter::isShrunk()
+{
+ return gSavedSettings.getBOOL("LagMeterShrunk");
+}
+
+void LLFloaterLagMeter::onClickShrink() // toggle "LagMeterShrunk"
+{
+ bool shrunk = isShrunk();
+ updateControls(!shrunk);
+ gSavedSettings.setBOOL("LagMeterShrunk", !shrunk);
}
diff --git a/indra/newview/llfloaterlagmeter.h b/indra/newview/llfloaterlagmeter.h
index 592630636a..5416bca790 100644
--- a/indra/newview/llfloaterlagmeter.h
+++ b/indra/newview/llfloaterlagmeter.h
@@ -51,6 +51,8 @@ private:
void determineClient();
void determineNetwork();
void determineServer();
+ void updateControls(bool shrink);
+ BOOL isShrunk();
void onClickShrink();
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 0ad283d7c6..26c6db9652 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -353,7 +353,7 @@ BOOL LLPanelLandGeneral::postBuild()
{
mEditName = getChild<LLLineEditor>("Name");
mEditName->setCommitCallback(onCommitAny, this);
- childSetPrevalidate("Name", LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("Name", LLTextValidate::validateASCIIPrintableNoPipe);
mEditDesc = getChild<LLTextEditor>("Description");
mEditDesc->setCommitOnFocusLost(TRUE);
@@ -427,8 +427,26 @@ BOOL LLPanelLandGeneral::postBuild()
mBtnBuyLand = getChild<LLButton>("Buy Land...");
mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
- mBtnScriptLimits = getChild<LLButton>("Scripts...");
- mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+ // note: on region change this will not be re checked, should not matter on Agni as
+ // 99% of the time all regions will return the same caps. In case of an erroneous setting
+ // to enabled the floater will just throw an error when trying to get it's cap
+ std::string url = gAgent.getRegion()->getCapability("LandResources");
+ if (!url.empty())
+ {
+ mBtnScriptLimits = getChild<LLButton>("Scripts...");
+ if(mBtnScriptLimits)
+ {
+ mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+ }
+ }
+ else
+ {
+ mBtnScriptLimits = getChild<LLButton>("Scripts...");
+ if(mBtnScriptLimits)
+ {
+ mBtnScriptLimits->setVisible(false);
+ }
+ }
mBtnBuyGroupLand = getChild<LLButton>("Buy For Group...");
mBtnBuyGroupLand->setClickedCallback(onClickBuyLand, (void*)&BUY_GROUP_LAND);
@@ -1093,7 +1111,7 @@ BOOL LLPanelLandObjects::postBuild()
mCleanOtherObjectsTime->setFocusLostCallback(boost::bind(onLostFocus, _1, this));
mCleanOtherObjectsTime->setCommitCallback(onCommitClean, this);
- childSetPrevalidate("clean other time", LLLineEditor::prevalidateNonNegativeS32);
+ childSetPrevalidate("clean other time", LLTextValidate::validateNonNegativeS32);
mBtnRefresh = getChild<LLButton>("Refresh List");
mBtnRefresh->setClickedCallback(onClickRefresh, this);
diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp
index 976af121ae..62ec17f89a 100644
--- a/indra/newview/llfloatermediasettings.cpp
+++ b/indra/newview/llfloatermediasettings.cpp
@@ -149,13 +149,14 @@ void LLFloaterMediaSettings::apply()
{
LLSD settings;
sInstance->mPanelMediaSettingsGeneral->preApply();
- sInstance->mPanelMediaSettingsGeneral->getValues( settings );
+ sInstance->mPanelMediaSettingsGeneral->getValues( settings, false );
sInstance->mPanelMediaSettingsSecurity->preApply();
- sInstance->mPanelMediaSettingsSecurity->getValues( settings );
+ sInstance->mPanelMediaSettingsSecurity->getValues( settings, false );
sInstance->mPanelMediaSettingsPermissions->preApply();
- sInstance->mPanelMediaSettingsPermissions->getValues( settings );
- LLSelectMgr::getInstance()->selectionSetMedia( LLTextureEntry::MF_HAS_MEDIA );
- LLSelectMgr::getInstance()->selectionSetMediaData(settings);
+ sInstance->mPanelMediaSettingsPermissions->getValues( settings, false );
+
+ LLSelectMgr::getInstance()->selectionSetMedia( LLTextureEntry::MF_HAS_MEDIA, settings );
+
sInstance->mPanelMediaSettingsGeneral->postApply();
sInstance->mPanelMediaSettingsSecurity->postApply();
sInstance->mPanelMediaSettingsPermissions->postApply();
@@ -176,6 +177,8 @@ void LLFloaterMediaSettings::onClose(bool app_quitting)
//static
void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editable )
{
+ if (sInstance->hasFocus()) return;
+
sInstance->clearValues(editable);
// update all panels with values from simulator
sInstance->mPanelMediaSettingsGeneral->
@@ -204,7 +207,7 @@ void LLFloaterMediaSettings::commitFields()
if (hasFocus())
{
LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());
- if (cur_focus->acceptsTextInput())
+ if (cur_focus && cur_focus->acceptsTextInput())
{
cur_focus->onCommit();
};
diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp
index 810761e034..159ce41b79 100644
--- a/indra/newview/llfloaternamedesc.cpp
+++ b/indra/newview/llfloaternamedesc.cpp
@@ -111,7 +111,7 @@ BOOL LLFloaterNameDesc::postBuild()
if (NameEditor)
{
NameEditor->setMaxTextLength(DB_INV_ITEM_NAME_STR_LEN);
- NameEditor->setPrevalidate(&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ NameEditor->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
}
y -= llfloor(PREVIEW_LINE_HEIGHT * 1.2f);
@@ -123,7 +123,7 @@ BOOL LLFloaterNameDesc::postBuild()
if (DescEditor)
{
DescEditor->setMaxTextLength(DB_INV_ITEM_DESC_STR_LEN);
- DescEditor->setPrevalidate(&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ DescEditor->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
}
y -= llfloor(PREVIEW_LINE_HEIGHT * 1.2f);
diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp
index 90db8988b2..94b5ebba00 100644
--- a/indra/newview/llfloaternotificationsconsole.cpp
+++ b/indra/newview/llfloaternotificationsconsole.cpp
@@ -112,10 +112,15 @@ void LLNotificationChannelPanel::onClickNotification(void* user_data)
{
LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data;
if (!self) return;
- void* data = self->getChild<LLScrollListCtrl>("notifications_list")->getFirstSelected()->getUserdata();
- if (data)
+ LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notifications_list")->getFirstSelected();
+ llassert(firstselected);
+ if (firstselected)
{
- gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE);
+ void* data = firstselected->getUserdata();
+ if (data)
+ {
+ gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE);
+ }
}
}
@@ -124,10 +129,15 @@ void LLNotificationChannelPanel::onClickNotificationReject(void* user_data)
{
LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data;
if (!self) return;
- void* data = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected()->getUserdata();
- if (data)
+ LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected();
+ llassert(firstselected);
+ if (firstselected)
{
- gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE);
+ void* data = firstselected->getUserdata();
+ if (data)
+ {
+ gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE);
+ }
}
}
diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp
index 00959322e5..51364594e4 100644
--- a/indra/newview/llfloaterpay.cpp
+++ b/indra/newview/llfloaterpay.cpp
@@ -204,7 +204,7 @@ BOOL LLFloaterPay::postBuild()
getChild<LLLineEditor>("amount")->setKeystrokeCallback(&LLFloaterPay::onKeystroke, this);
childSetText("amount", last_amount);
- childSetPrevalidate("amount", LLLineEditor::prevalidateNonNegativeS32);
+ childSetPrevalidate("amount", LLTextValidate::validateNonNegativeS32);
info = new LLGiveMoneyInfo(this, 0);
mCallbackData.push_back(info);
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index ef444c8ba4..853693b927 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -110,8 +110,6 @@
const F32 MAX_USER_FAR_CLIP = 512.f;
const F32 MIN_USER_FAR_CLIP = 64.f;
-const S32 ASPECT_RATIO_STR_LEN = 100;
-
class LLVoiceSetKeyDialog : public LLModalDialog
{
public:
@@ -283,7 +281,6 @@ void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator)
}
// static
std::string LLFloaterPreference::sSkin = "";
-F32 LLFloaterPreference::sAspectRatio = 0.0;
//////////////////////////////////////////////
// LLFloaterPreference
@@ -318,17 +315,11 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.ClickEnablePopup", boost::bind(&LLFloaterPreference::onClickEnablePopup, this));
mCommitCallbackRegistrar.add("Pref.ClickDisablePopup", boost::bind(&LLFloaterPreference::onClickDisablePopup, this));
mCommitCallbackRegistrar.add("Pref.LogPath", boost::bind(&LLFloaterPreference::onClickLogPath, this));
- mCommitCallbackRegistrar.add("Pref.UpdateMeterText", boost::bind(&LLFloaterPreference::updateMeterText, this, _1));
mCommitCallbackRegistrar.add("Pref.HardwareSettings", boost::bind(&LLFloaterPreference::onOpenHardwareSettings, this));
mCommitCallbackRegistrar.add("Pref.HardwareDefaults", boost::bind(&LLFloaterPreference::setHardwareDefaults, this));
mCommitCallbackRegistrar.add("Pref.VertexShaderEnable", boost::bind(&LLFloaterPreference::onVertexShaderEnable, this));
mCommitCallbackRegistrar.add("Pref.WindowedMod", boost::bind(&LLFloaterPreference::onCommitWindowedMode, this));
mCommitCallbackRegistrar.add("Pref.UpdateSliderText", boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2));
- mCommitCallbackRegistrar.add("Pref.AutoDetectAspect", boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this));
- mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable", boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this));
- mCommitCallbackRegistrar.add("Pref.MediaEnabled", boost::bind(&LLFloaterPreference::onCommitMediaEnabled, this));
- mCommitCallbackRegistrar.add("Pref.MusicEnabled", boost::bind(&LLFloaterPreference::onCommitMusicEnabled, this));
- mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio", boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this));
mCommitCallbackRegistrar.add("Pref.QualityPerformance", boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));
mCommitCallbackRegistrar.add("Pref.applyUIColor", boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2));
mCommitCallbackRegistrar.add("Pref.getUIColor", boost::bind(&LLFloaterPreference::getUIColor, this ,_1, _2));
@@ -359,12 +350,7 @@ BOOL LLFloaterPreference::postBuild()
LLFloaterPreference::~LLFloaterPreference()
{
// clean up user data
- LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio");
LLComboBox* ctrl_window_size = getChild<LLComboBox>("windowsize combo");
- for (S32 i = 0; i < ctrl_aspect_ratio->getItemCount(); i++)
- {
- ctrl_aspect_ratio->setCurrentByIndex(i);
- }
for (S32 i = 0; i < ctrl_window_size->getItemCount(); i++)
{
ctrl_window_size->setCurrentByIndex(i);
@@ -514,8 +500,6 @@ void LLFloaterPreference::cancel()
LLFloaterReg::hideInstance("pref_voicedevicesettings");
- gSavedSettings.setF32("FullScreenAspectRatio", sAspectRatio);
-
}
void LLFloaterPreference::onOpen(const LLSD& key)
@@ -526,7 +510,8 @@ void LLFloaterPreference::onOpen(const LLSD& key)
// if we have no agent, we can't let them choose anything
// if we have an agent, then we only let them choose if they have a choice
bool can_choose_maturity =
- gAgent.getID().notNull() && (gAgent.isMature() || gAgent.isGodlike());
+ gAgent.getID().notNull() &&
+ (gAgent.isMature() || gAgent.isGodlike());
LLComboBox* maturity_combo = getChild<LLComboBox>("maturity_desired_combobox");
@@ -571,6 +556,16 @@ void LLFloaterPreference::setHardwareDefaults()
{
LLFeatureManager::getInstance()->applyRecommendedSettings();
refreshEnabledGraphics();
+ LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core");
+ child_list_t::const_iterator iter = tabcontainer->getChildList()->begin();
+ child_list_t::const_iterator end = tabcontainer->getChildList()->end();
+ for ( ; iter != end; ++iter)
+ {
+ LLView* view = *iter;
+ LLPanelPreference* panel = dynamic_cast<LLPanelPreference*>(view);
+ if (panel)
+ panel->setHardwareDefaults();
+ }
}
//virtual
@@ -592,7 +587,7 @@ void LLFloaterPreference::onBtnOK()
if (hasFocus())
{
LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());
- if (cur_focus->acceptsTextInput())
+ if (cur_focus && cur_focus->acceptsTextInput())
{
cur_focus->onCommit();
}
@@ -625,7 +620,7 @@ void LLFloaterPreference::onBtnApply( )
if (hasFocus())
{
LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());
- if (cur_focus->acceptsTextInput())
+ if (cur_focus && cur_focus->acceptsTextInput())
{
cur_focus->onCommit();
}
@@ -642,7 +637,7 @@ void LLFloaterPreference::onBtnCancel()
if (hasFocus())
{
LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());
- if (cur_focus->acceptsTextInput())
+ if (cur_focus && cur_focus->acceptsTextInput())
{
cur_focus->onCommit();
}
@@ -668,7 +663,8 @@ void LLFloaterPreference::refreshEnabledGraphics()
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
if(instance)
{
- instance->refreshEnabledState();
+ instance->refresh();
+ //instance->refreshEnabledState();
}
LLFloaterHardwareSettings* hardware_settings = LLFloaterReg::getTypedInstance<LLFloaterHardwareSettings>("prefs_hardware_settings");
if (hardware_settings)
@@ -677,21 +673,6 @@ void LLFloaterPreference::refreshEnabledGraphics()
}
}
-void LLFloaterPreference::updateMeterText(LLUICtrl* ctrl)
-{
- // get our UI widgets
- LLSliderCtrl* slider = (LLSliderCtrl*) ctrl;
-
- LLTextBox* m1 = getChild<LLTextBox>("DrawDistanceMeterText1");
- LLTextBox* m2 = getChild<LLTextBox>("DrawDistanceMeterText2");
-
- // toggle the two text boxes based on whether we have 1 or two digits
- F32 val = slider->getValueF32();
- bool two_digits = val < 100;
- m1->setVisible(two_digits);
- m2->setVisible(!two_digits);
-}
-
void LLFloaterPreference::onClickBrowserClearCache()
{
LLNotificationsUtil::add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache);
@@ -958,60 +939,6 @@ void LLFloaterPreference::disableUnavailableSettings()
}
}
-void LLFloaterPreference::onCommitAutoDetectAspect()
-{
- BOOL auto_detect = getChild<LLCheckBoxCtrl>("aspect_auto_detect")->get();
- F32 ratio;
-
- if (auto_detect)
- {
- S32 numerator = 0;
- S32 denominator = 0;
-
- // clear any aspect ratio override
- gViewerWindow->mWindow->setNativeAspectRatio(0.f);
- fractionFromDecimal(gViewerWindow->mWindow->getNativeAspectRatio(), numerator, denominator);
-
- std::string aspect;
- if (numerator != 0)
- {
- aspect = llformat("%d:%d", numerator, denominator);
- }
- else
- {
- aspect = llformat("%.3f", gViewerWindow->mWindow->getNativeAspectRatio());
- }
-
- getChild<LLComboBox>( "aspect_ratio")->setLabel(aspect);
-
- ratio = gViewerWindow->mWindow->getNativeAspectRatio();
- gSavedSettings.setF32("FullScreenAspectRatio", ratio);
- }
-}
-
-void LLFloaterPreference::onCommitParcelMediaAutoPlayEnable()
-{
- BOOL autoplay = getChild<LLCheckBoxCtrl>("autoplay_enabled")->get();
-
- gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, autoplay);
-
- lldebugs << "autoplay now = " << int(autoplay) << llendl;
-}
-
-void LLFloaterPreference::onCommitMediaEnabled()
-{
- LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled");
- bool enabled = media_enabled_ctrl->get();
- gSavedSettings.setBOOL("AudioStreamingMedia", enabled);
-}
-
-void LLFloaterPreference::onCommitMusicEnabled()
-{
- LLCheckBoxCtrl *music_enabled_ctrl = getChild<LLCheckBoxCtrl>("music_enabled");
- bool enabled = music_enabled_ctrl->get();
- gSavedSettings.setBOOL("AudioStreamingMusic", enabled);
-}
-
void LLFloaterPreference::refresh()
{
LLPanel::refresh();
@@ -1256,56 +1183,9 @@ void LLFloaterPreference::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_b
}
}
-void LLFloaterPreference::onKeystrokeAspectRatio()
-{
- getChild<LLCheckBoxCtrl>("aspect_auto_detect")->set(FALSE);
-}
-
void LLFloaterPreference::applyResolution()
{
- LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio");
gGL.flush();
- char aspect_ratio_text[ASPECT_RATIO_STR_LEN]; /*Flawfinder: ignore*/
- if (ctrl_aspect_ratio->getCurrentIndex() == -1)
- {
- // *Can't pass const char* from c_str() into strtok
- strncpy(aspect_ratio_text, ctrl_aspect_ratio->getSimple().c_str(), sizeof(aspect_ratio_text) -1); /*Flawfinder: ignore*/
- aspect_ratio_text[sizeof(aspect_ratio_text) -1] = '\0';
- char *element = strtok(aspect_ratio_text, ":/\\");
- if (!element)
- {
- sAspectRatio = 0.f; // will be clamped later
- }
- else
- {
- LLLocale locale(LLLocale::USER_LOCALE);
- sAspectRatio = (F32)atof(element);
- }
-
- // look for denominator
- element = strtok(NULL, ":/\\");
- if (element)
- {
- LLLocale locale(LLLocale::USER_LOCALE);
-
- F32 denominator = (F32)atof(element);
- if (denominator != 0.f)
- {
- sAspectRatio /= denominator;
- }
- }
- }
- else
- {
- sAspectRatio = (F32)ctrl_aspect_ratio->getValue().asReal();
- }
-
- // presumably, user entered a non-numeric value if aspect_ratio == 0.f
- if (sAspectRatio != 0.f)
- {
- sAspectRatio = llclamp(sAspectRatio, 0.2f, 5.f);
- gSavedSettings.setF32("FullScreenAspectRatio", sAspectRatio);
- }
// Screen resolution
S32 num_resolutions;
@@ -1383,48 +1263,6 @@ BOOL LLPanelPreference::postBuild()
childSetText("email_address",getString("log_in_to_change") );
// childSetText("busy_response", getString("log_in_to_change"));
}
-
-
- if(hasChild("aspect_ratio"))
- {
- // We used to set up fullscreen resolution and window size
- // controls here, see LLFloaterWindowSize::initWindowSizeControls()
-
- if (gSavedSettings.getBOOL("FullScreenAutoDetectAspectRatio"))
- {
- LLFloaterPreference::sAspectRatio = gViewerWindow->getDisplayAspectRatio();
- }
- else
- {
- LLFloaterPreference::sAspectRatio = gSavedSettings.getF32("FullScreenAspectRatio");
- }
-
- getChild<LLComboBox>("aspect_ratio")->setTextEntryCallback(boost::bind(&LLPanelPreference::setControlFalse, this, LLSD("FullScreenAutoDetectAspectRatio") ));
-
-
- S32 numerator = 0;
- S32 denominator = 0;
- fractionFromDecimal(LLFloaterPreference::sAspectRatio, numerator, denominator);
-
- LLUIString aspect_ratio_text = getString("aspect_ratio_text");
- if (numerator != 0)
- {
- aspect_ratio_text.setArg("[NUM]", llformat("%d", numerator));
- aspect_ratio_text.setArg("[DEN]", llformat("%d", denominator));
- }
- else
- {
- aspect_ratio_text = llformat("%.3f", LLFloaterPreference::sAspectRatio);
- }
-
- LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio");
- //mCtrlAspectRatio->setCommitCallback(onSelectAspectRatio, this);
- // add default aspect ratios
- ctrl_aspect_ratio->add(aspect_ratio_text, &LLFloaterPreference::sAspectRatio, ADD_TOP);
- ctrl_aspect_ratio->setCurrentByIndex(0);
-
- refresh();
- }
//////////////////////PanelPrivacy ///////////////////
if (hasChild("media_enabled"))
@@ -1525,3 +1363,93 @@ void LLPanelPreference::setControlFalse(const LLSD& user_data)
if (control)
control->set(LLSD(FALSE));
}
+
+static LLRegisterPanelClassWrapper<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics");
+
+BOOL LLPanelPreferenceGraphics::postBuild()
+{
+ return LLPanelPreference::postBuild();
+}
+void LLPanelPreferenceGraphics::draw()
+{
+ LLPanelPreference::draw();
+
+ LLButton* button_apply = findChild<LLButton>("Apply");
+
+ if(button_apply && button_apply->getVisible())
+ {
+ bool enable = hasDirtyChilds();
+
+ button_apply->setEnabled(enable);
+
+ }
+}
+bool LLPanelPreferenceGraphics::hasDirtyChilds()
+{
+ std::list<LLView*> view_stack;
+ view_stack.push_back(this);
+ while(!view_stack.empty())
+ {
+ // Process view on top of the stack
+ LLView* curview = view_stack.front();
+ view_stack.pop_front();
+
+ LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(curview);
+ if (ctrl)
+ {
+ if(ctrl->isDirty())
+ return true;
+ }
+ // Push children onto the end of the work stack
+ for (child_list_t::const_iterator iter = curview->getChildList()->begin();
+ iter != curview->getChildList()->end(); ++iter)
+ {
+ view_stack.push_back(*iter);
+ }
+ }
+ return false;
+}
+
+void LLPanelPreferenceGraphics::resetDirtyChilds()
+{
+ std::list<LLView*> view_stack;
+ view_stack.push_back(this);
+ while(!view_stack.empty())
+ {
+ // Process view on top of the stack
+ LLView* curview = view_stack.front();
+ view_stack.pop_front();
+
+ LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(curview);
+ if (ctrl)
+ {
+ ctrl->resetDirty();
+ }
+ // Push children onto the end of the work stack
+ for (child_list_t::const_iterator iter = curview->getChildList()->begin();
+ iter != curview->getChildList()->end(); ++iter)
+ {
+ view_stack.push_back(*iter);
+ }
+ }
+}
+void LLPanelPreferenceGraphics::apply()
+{
+ resetDirtyChilds();
+ LLPanelPreference::apply();
+}
+void LLPanelPreferenceGraphics::cancel()
+{
+ resetDirtyChilds();
+ LLPanelPreference::cancel();
+}
+void LLPanelPreferenceGraphics::saveSettings()
+{
+ resetDirtyChilds();
+ LLPanelPreference::saveSettings();
+}
+void LLPanelPreferenceGraphics::setHardwareDefaults()
+{
+ resetDirtyChilds();
+ LLPanelPreference::setHardwareDefaults();
+}
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 8778d76a5a..93b39d72bc 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -128,10 +128,8 @@ public:
void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box);
void onUpdateSliderText(LLUICtrl* ctrl, const LLSD& name);
- void onKeystrokeAspectRatio();
// void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator);
- void onCommitAutoDetectAspect();
void onCommitParcelMediaAutoPlayEnable();
void onCommitMediaEnabled();
void onCommitMusicEnabled();
@@ -142,7 +140,6 @@ public:
void buildPopupLists();
static void refreshSkin(void* data);
static void cleanupBadSetting();
- static F32 sAspectRatio;
private:
static std::string sSkin;
bool mGotPersonalInfo;
@@ -161,6 +158,7 @@ public:
virtual void apply();
virtual void cancel();
void setControlFalse(const LLSD& user_data);
+ virtual void setHardwareDefaults(){};
// This function squirrels away the current values of the controls so that
// cancel() can restore them.
@@ -177,4 +175,19 @@ private:
string_color_map_t mSavedColors;
};
+class LLPanelPreferenceGraphics : public LLPanelPreference
+{
+public:
+ BOOL postBuild();
+ void draw();
+ void apply();
+ void cancel();
+ void saveSettings();
+ void setHardwareDefaults();
+protected:
+ bool hasDirtyChilds();
+ void resetDirtyChilds();
+
+};
+
#endif // LL_LLPREFERENCEFLOATER_H
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index ff9002787c..5c0593ad29 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -130,9 +130,9 @@ BOOL LLFloaterProperties::postBuild()
{
// build the UI
// item name & description
- childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLFloaterProperties::onCommitName,this));
- childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLFloaterProperties:: onCommitDescription, this));
// Creator information
getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLFloaterProperties::onClickCreator,this));
@@ -880,7 +880,11 @@ void LLFloaterProperties::dirtyAll()
iter != inst_list.end(); ++iter)
{
LLFloaterProperties* floater = dynamic_cast<LLFloaterProperties*>(*iter);
- floater->dirty();
+ llassert(floater); // else cast failed - wrong type D:
+ if (floater)
+ {
+ floater->dirty();
+ }
}
}
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index 8875e35821..fdf128945e 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -59,10 +59,30 @@
/// LLFloaterScriptLimits
///----------------------------------------------------------------------------
-// due to server side bugs the full summary display is not possible
-// until they are fixed this define creates a simple version of the
-// summary which only shows available & correct information
-#define USE_SIMPLE_SUMMARY
+// debug switches, won't work in release
+#ifndef LL_RELEASE_FOR_DOWNLOAD
+
+// dump responder replies to llinfos for debugging
+//#define DUMP_REPLIES_TO_LLINFOS
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+#include "llsdserialize.h"
+#include "llwindow.h"
+#endif
+
+// use fake LLSD responses to check the viewer side is working correctly
+// I'm syncing this with the server side efforts so hopfully we can keep
+// the to-ing and fro-ing between the two teams to a minimum
+//#define USE_FAKE_RESPONSES
+
+#ifdef USE_FAKE_RESPONSES
+const S32 FAKE_NUMBER_OF_URLS = 329;
+const S32 FAKE_AVAILABLE_URLS = 731;
+const S32 FAKE_AMOUNT_OF_MEMORY = 66741;
+const S32 FAKE_AVAILABLE_MEMORY = 895577;
+#endif
+
+#endif
const S32 SIZE_OF_ONE_KB = 1024;
@@ -87,32 +107,41 @@ BOOL LLFloaterScriptLimits::postBuild()
}
mTab = getChild<LLTabContainer>("scriptlimits_panels");
+
+ if(!mTab)
+ {
+ llinfos << "Error! couldn't get scriptlimits_panels, aborting Script Information setup" << llendl;
+ return FALSE;
+ }
// contruct the panels
- LLPanelScriptLimitsRegionMemory* panel_memory;
- panel_memory = new LLPanelScriptLimitsRegionMemory;
- mInfoPanels.push_back(panel_memory);
+ std::string land_url = gAgent.getRegion()->getCapability("LandResources");
+ if (!land_url.empty())
+ {
+ LLPanelScriptLimitsRegionMemory* panel_memory;
+ panel_memory = new LLPanelScriptLimitsRegionMemory;
+ mInfoPanels.push_back(panel_memory);
+ LLUICtrlFactory::getInstance()->buildPanel(panel_memory, "panel_script_limits_region_memory.xml");
+ mTab->addTabPanel(panel_memory);
+ }
- LLUICtrlFactory::getInstance()->buildPanel(panel_memory, "panel_script_limits_region_memory.xml");
- mTab->addTabPanel(panel_memory);
-
- LLPanelScriptLimitsRegionURLs* panel_urls = new LLPanelScriptLimitsRegionURLs;
- mInfoPanels.push_back(panel_urls);
- LLUICtrlFactory::getInstance()->buildPanel(panel_urls, "panel_script_limits_region_urls.xml");
- mTab->addTabPanel(panel_urls);
-
- LLPanelScriptLimitsAttachment* panel_attachments = new LLPanelScriptLimitsAttachment;
- mInfoPanels.push_back(panel_attachments);
- LLUICtrlFactory::getInstance()->buildPanel(panel_attachments, "panel_script_limits_my_avatar.xml");
- mTab->addTabPanel(panel_attachments);
-
- if(selectParcelPanel)
+ std::string attachment_url = gAgent.getRegion()->getCapability("AttachmentResources");
+ if (!attachment_url.empty())
+ {
+ LLPanelScriptLimitsAttachment* panel_attachments = new LLPanelScriptLimitsAttachment;
+ mInfoPanels.push_back(panel_attachments);
+ LLUICtrlFactory::getInstance()->buildPanel(panel_attachments, "panel_script_limits_my_avatar.xml");
+ mTab->addTabPanel(panel_attachments);
+ }
+
+ if(mInfoPanels.size() > 0)
{
mTab->selectTab(0);
}
- else
+
+ if(!selectParcelPanel && (mInfoPanels.size() > 1))
{
- mTab->selectTab(2);
+ mTab->selectTab(1);
}
return TRUE;
@@ -160,6 +189,20 @@ void LLPanelScriptLimitsInfo::updateChild(LLUICtrl* child_ctr)
void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content)
{
+ //we don't need to test with a fake respose here (shouldn't anyway)
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+
+ LLSDNotationStreamer notation_streamer(content);
+ std::ostringstream nice_llsd;
+ nice_llsd << notation_streamer;
+
+ OSMessageBox(nice_llsd.str(), "main cap response:", 0);
+
+ llinfos << "main cap response:" << content << llendl;
+
+#endif
+
// at this point we have an llsd which should contain ether one or two urls to the services we want.
// first we look for the details service:
if(content.has("ScriptResourceDetails"))
@@ -173,24 +216,6 @@ void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content)
{
llinfos << "Failed to get llfloaterscriptlimits instance" << llendl;
}
- else
- {
-
-// temp - only show info if we get details - there's nothing to show if not until the sim gets fixed
-#ifdef USE_SIMPLE_SUMMARY
-
- LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
- std::string msg = LLTrans::getString("ScriptLimitsRequestDontOwnParcel");
- panel_memory->childSetValue("loading_text", LLSD(msg));
- LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
- panel_urls->childSetValue("loading_text", LLSD(msg));
-
- // intentional early out as we dont want the resource summary if we are using the "simple summary"
- // and the details are missing
- return;
-#endif
- }
}
// then the summary service:
@@ -205,8 +230,61 @@ void fetchScriptLimitsRegionInfoResponder::error(U32 status, const std::string&
llinfos << "Error from responder " << reason << llendl;
}
-void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content)
+void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref)
{
+#ifdef USE_FAKE_RESPONSES
+
+ LLSD fake_content;
+ LLSD summary = LLSD::emptyMap();
+ LLSD available = LLSD::emptyArray();
+ LLSD available_urls = LLSD::emptyMap();
+ LLSD available_memory = LLSD::emptyMap();
+ LLSD used = LLSD::emptyArray();
+ LLSD used_urls = LLSD::emptyMap();
+ LLSD used_memory = LLSD::emptyMap();
+
+ used_urls["type"] = "urls";
+ used_urls["amount"] = FAKE_NUMBER_OF_URLS;
+ available_urls["type"] = "urls";
+ available_urls["amount"] = FAKE_AVAILABLE_URLS;
+ used_memory["type"] = "memory";
+ used_memory["amount"] = FAKE_AMOUNT_OF_MEMORY;
+ available_memory["type"] = "memory";
+ available_memory["amount"] = FAKE_AVAILABLE_MEMORY;
+
+//summary response:{'summary':{'available':[{'amount':i731,'type':'urls'},{'amount':i895577,'type':'memory'},{'amount':i731,'type':'urls'},{'amount':i895577,'type':'memory'}],'used':[{'amount':i329,'type':'urls'},{'amount':i66741,'type':'memory'}]}}
+
+ used.append(used_urls);
+ used.append(used_memory);
+ available.append(available_urls);
+ available.append(available_memory);
+
+ summary["available"] = available;
+ summary["used"] = used;
+
+ fake_content["summary"] = summary;
+
+ const LLSD& content = fake_content;
+
+#else
+
+ const LLSD& content = content_ref;
+
+#endif
+
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+
+ LLSDNotationStreamer notation_streamer(content);
+ std::ostringstream nice_llsd;
+ nice_llsd << notation_streamer;
+
+ OSMessageBox(nice_llsd.str(), "summary response:", 0);
+
+ llinfos << "summary response:" << *content << llendl;
+
+#endif
+
LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
if(!instance)
{
@@ -217,8 +295,6 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content)
LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
panel_memory->setRegionSummary(content);
- LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
- panel_urls->setRegionSummary(content);
}
}
@@ -227,8 +303,82 @@ void fetchScriptLimitsRegionSummaryResponder::error(U32 status, const std::strin
llinfos << "Error from responder " << reason << llendl;
}
-void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content)
+void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content_ref)
{
+#ifdef USE_FAKE_RESPONSES
+/*
+Updated detail service, ** denotes field added:
+
+result (map)
++-parcels (array of maps)
+ +-id (uuid)
+ +-local_id (S32)**
+ +-name (string)
+ +-owner_id (uuid) (in ERS as owner, but owner_id in code)
+ +-objects (array of maps)
+ +-id (uuid)
+ +-name (string)
+ +-owner_id (uuid) (in ERS as owner, in code as owner_id)
+ +-owner_name (sting)**
+ +-location (map)**
+ +-x (float)
+ +-y (float)
+ +-z (float)
+ +-resources (map) (this is wrong in the ERS but right in code)
+ +-type (string)
+ +-amount (int)
+*/
+ LLSD fake_content;
+ LLSD resource = LLSD::emptyMap();
+ LLSD location = LLSD::emptyMap();
+ LLSD object = LLSD::emptyMap();
+ LLSD objects = LLSD::emptyArray();
+ LLSD parcel = LLSD::emptyMap();
+ LLSD parcels = LLSD::emptyArray();
+
+ resource["urls"] = FAKE_NUMBER_OF_URLS;
+ resource["memory"] = FAKE_AMOUNT_OF_MEMORY;
+
+ location["x"] = 128.0f;
+ location["y"] = 128.0f;
+ location["z"] = 0.0f;
+
+ object["id"] = LLUUID("d574a375-0c6c-fe3d-5733-da669465afc7");
+ object["name"] = "Gabs fake Object!";
+ object["owner_id"] = LLUUID("8dbf2d41-69a0-4e5e-9787-0c9d297bc570");
+ object["owner_name"] = "Gabs Linden";
+ object["location"] = location;
+ object["resources"] = resource;
+
+ objects.append(object);
+
+ parcel["id"] = LLUUID("da05fb28-0d20-e593-2728-bddb42dd0160");
+ parcel["local_id"] = 42;
+ parcel["name"] = "Gabriel Linden\'s Sub Plot";
+ parcel["objects"] = objects;
+ parcels.append(parcel);
+
+ fake_content["parcels"] = parcels;
+ const LLSD& content = fake_content;
+
+#else
+
+ const LLSD& content = content_ref;
+
+#endif
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+
+ LLSDNotationStreamer notation_streamer(content);
+ std::ostringstream nice_llsd;
+ nice_llsd << notation_streamer;
+
+ OSMessageBox(nice_llsd.str(), "details response:", 0);
+
+ llinfos << "details response:" << content << llendl;
+
+#endif
+
LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
if(!instance)
@@ -238,11 +388,22 @@ void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content)
else
{
LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
- panel_memory->setRegionDetails(content);
-
- LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
- panel_urls->setRegionDetails(content);
+ if(tab)
+ {
+ LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+ if(panel_memory)
+ {
+ panel_memory->setRegionDetails(content);
+ }
+ else
+ {
+ llinfos << "Failed to get scriptlimits memory panel" << llendl;
+ }
+ }
+ else
+ {
+ llinfos << "Failed to get scriptlimits_panels" << llendl;
+ }
}
}
@@ -251,8 +412,61 @@ void fetchScriptLimitsRegionDetailsResponder::error(U32 status, const std::strin
llinfos << "Error from responder " << reason << llendl;
}
-void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content)
+void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref)
{
+
+#ifdef USE_FAKE_RESPONSES
+
+ // just add the summary, as that's all I'm testing currently!
+ LLSD fake_content = LLSD::emptyMap();
+ LLSD summary = LLSD::emptyMap();
+ LLSD available = LLSD::emptyArray();
+ LLSD available_urls = LLSD::emptyMap();
+ LLSD available_memory = LLSD::emptyMap();
+ LLSD used = LLSD::emptyArray();
+ LLSD used_urls = LLSD::emptyMap();
+ LLSD used_memory = LLSD::emptyMap();
+
+ used_urls["type"] = "urls";
+ used_urls["amount"] = FAKE_NUMBER_OF_URLS;
+ available_urls["type"] = "urls";
+ available_urls["amount"] = FAKE_AVAILABLE_URLS;
+ used_memory["type"] = "memory";
+ used_memory["amount"] = FAKE_AMOUNT_OF_MEMORY;
+ available_memory["type"] = "memory";
+ available_memory["amount"] = FAKE_AVAILABLE_MEMORY;
+
+ used.append(used_urls);
+ used.append(used_memory);
+ available.append(available_urls);
+ available.append(available_memory);
+
+ summary["available"] = available;
+ summary["used"] = used;
+
+ fake_content["summary"] = summary;
+ fake_content["attachments"] = content_ref["attachments"];
+
+ const LLSD& content = fake_content;
+
+#else
+
+ const LLSD& content = content_ref;
+
+#endif
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+
+ LLSDNotationStreamer notation_streamer(content);
+ std::ostringstream nice_llsd;
+ nice_llsd << notation_streamer;
+
+ OSMessageBox(nice_llsd.str(), "attachment response:", 0);
+
+ llinfos << "attachment response:" << content << llendl;
+
+#endif
+
LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
if(!instance)
@@ -262,8 +476,22 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content)
else
{
LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
- panel->setAttachmentDetails(content);
+ if(tab)
+ {
+ LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
+ if(panel)
+ {
+ panel->setAttachmentDetails(content);
+ }
+ else
+ {
+ llinfos << "Failed to get script_limits_my_avatar_panel" << llendl;
+ }
+ }
+ else
+ {
+ llinfos << "Failed to get scriptlimits_panels" << llendl;
+ }
}
}
@@ -309,7 +537,7 @@ void LLPanelScriptLimitsRegionMemory::processParcelInfo(const LLParcelData& parc
{
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
childSetValue("loading_text", LLSD(msg_waiting));
- }
+ }
}
void LLPanelScriptLimitsRegionMemory::setParcelID(const LLUUID& parcel_id)
@@ -341,6 +569,11 @@ void LLPanelScriptLimitsRegionMemory::onNameCache(
std::string name = first_name + " " + last_name;
LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+ if(!list)
+ {
+ return;
+ }
+
std::vector<LLSD>::iterator id_itor;
for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor)
{
@@ -351,33 +584,8 @@ void LLPanelScriptLimitsRegionMemory::onNameCache(
if(item)
{
- item->getColumn(2)->setValue(LLSD(name));
- element["columns"][2]["value"] = name;
- }
- }
- }
-
- // fill in the url's tab if needed, all urls must have memory so we can do it all here
- LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
- if(instance)
- {
- LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-
- LLScrollListCtrl *list = panel->getChild<LLScrollListCtrl>("scripts_list");
- std::vector<LLSD>::iterator id_itor;
- for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor)
- {
- LLSD element = *id_itor;
- if(element["owner_id"].asUUID() == id)
- {
- LLScrollListItem* item = list->getItem(element["id"].asUUID());
-
- if(item)
- {
- item->getColumn(2)->setValue(LLSD(name));
- element["columns"][2]["value"] = name;
- }
+ item->getColumn(3)->setValue(LLSD(name));
+ element["columns"][3]["value"] = name;
}
}
}
@@ -386,6 +594,12 @@ void LLPanelScriptLimitsRegionMemory::onNameCache(
void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
{
LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+
+ if(!list)
+ {
+ llinfos << "Error getting the scripts_list control" << llendl;
+ return;
+ }
S32 number_parcels = content["parcels"].size();
@@ -394,130 +608,197 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);
childSetValue("parcels_listed", LLSD(msg_parcels));
- S32 total_objects = 0;
- S32 total_size = 0;
-
std::vector<LLUUID> names_requested;
+ // This makes the assumption that all objects will have the same set
+ // of attributes, ie they will all have, or none will have locations
+ // This is a pretty safe assumption as it's reliant on server version.
+ bool has_locations = false;
+ bool has_local_ids = false;
+
for(S32 i = 0; i < number_parcels; i++)
{
std::string parcel_name = content["parcels"][i]["name"].asString();
LLUUID parcel_id = content["parcels"][i]["id"].asUUID();
S32 number_objects = content["parcels"][i]["objects"].size();
+
+ S32 local_id = 0;
+ if(content["parcels"][i].has("local_id"))
+ {
+ // if any locations are found flag that we can use them and turn on the highlight button
+ has_local_ids = true;
+ local_id = content["parcels"][i]["local_id"].asInteger();
+ }
+
for(S32 j = 0; j < number_objects; j++)
{
S32 size = content["parcels"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB;
- total_size += size;
+
+ S32 urls = content["parcels"][i]["objects"][j]["resources"]["urls"].asInteger();
std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString();
LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID();
LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID();
-
+
+ F32 location_x = 0.0f;
+ F32 location_y = 0.0f;
+ F32 location_z = 0.0f;
+
+ if(content["parcels"][i]["objects"][j].has("location"))
+ {
+ // if any locations are found flag that we can use them and turn on the highlight button
+ LLVector3 vec = ll_vector3_from_sd(content["parcels"][i]["objects"][j]["location"]);
+ has_locations = true;
+ location_x = vec.mV[0];
+ location_y = vec.mV[1];
+ location_z = vec.mV[2];
+ }
+
std::string owner_buf;
-
- BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf);
- if(!name_is_cached)
+
+ // in the future the server will give us owner names, so see if we're there yet:
+ if(content["parcels"][i]["objects"][j].has("owner_name"))
{
- if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end())
+ owner_buf = content["parcels"][i]["objects"][j]["owner_name"].asString();
+ }
+ // ...and if not use the slightly more painful method of disovery:
+ else
+ {
+ BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf);
+ if(!name_is_cached)
{
- names_requested.push_back(owner_id);
- gCacheName->get(owner_id, TRUE,
- boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache,
- this, _1, _2, _3));
+ if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end())
+ {
+ names_requested.push_back(owner_id);
+ gCacheName->get(owner_id, TRUE,
+ boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache,
+ this, _1, _2, _3));
+ }
}
}
LLSD element;
element["id"] = task_id;
- element["owner_id"] = owner_id;
element["columns"][0]["column"] = "size";
element["columns"][0]["value"] = llformat("%d", size);
element["columns"][0]["font"] = "SANSSERIF";
- element["columns"][1]["column"] = "name";
- element["columns"][1]["value"] = name_buf;
+ element["columns"][1]["column"] = "urls";
+ element["columns"][1]["value"] = llformat("%d", urls);
element["columns"][1]["font"] = "SANSSERIF";
- element["columns"][2]["column"] = "owner";
- element["columns"][2]["value"] = owner_buf;
+ element["columns"][2]["column"] = "name";
+ element["columns"][2]["value"] = name_buf;
element["columns"][2]["font"] = "SANSSERIF";
- element["columns"][3]["column"] = "location";
- element["columns"][3]["value"] = parcel_name;
+ element["columns"][3]["column"] = "owner";
+ element["columns"][3]["value"] = owner_buf;
element["columns"][3]["font"] = "SANSSERIF";
+ element["columns"][4]["column"] = "parcel";
+ element["columns"][4]["value"] = parcel_name;
+ element["columns"][4]["font"] = "SANSSERIF";
+ element["columns"][5]["column"] = "location";
+ if(has_locations)
+ {
+ element["columns"][5]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z);
+ }
+ else
+ {
+ element["columns"][5]["value"] = "";
+ }
+ element["columns"][5]["font"] = "SANSSERIF";
list->addElement(element, ADD_SORTED);
+
+ element["owner_id"] = owner_id;
+ element["local_id"] = local_id;
mObjectListItems.push_back(element);
- total_objects++;
}
}
- mParcelMemoryUsed =total_size;
- mGotParcelMemoryUsed = TRUE;
- populateParcelMemoryText();
-}
+ if (has_locations)
+ {
+ LLButton* btn = getChild<LLButton>("highlight_btn");
+ if(btn)
+ {
+ btn->setVisible(true);
+ }
+ }
-void LLPanelScriptLimitsRegionMemory::populateParcelMemoryText()
-{
- if(mGotParcelMemoryUsed && mGotParcelMemoryMax)
+ if (has_local_ids)
{
-#ifdef USE_SIMPLE_SUMMARY
- LLStringUtil::format_map_t args_parcel_memory;
- args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed);
- std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsedSimple", args_parcel_memory);
- childSetValue("memory_used", LLSD(msg_parcel_memory));
-#else
- S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed;
+ LLButton* btn = getChild<LLButton>("return_btn");
+ if(btn)
+ {
+ btn->setVisible(true);
+ }
+ }
- LLStringUtil::format_map_t args_parcel_memory;
- args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed);
- args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax);
- args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available);
- std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory);
- childSetValue("memory_used", LLSD(msg_parcel_memory));
-#endif
+ // save the structure to make object return easier
+ mContent = content;
- childSetValue("loading_text", LLSD(std::string("")));
- }
+ childSetValue("loading_text", LLSD(std::string("")));
}
void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
{
- if(content["summary"]["available"][0]["type"].asString() == std::string("memory"))
+ if(content["summary"]["used"][0]["type"].asString() == std::string("memory"))
{
- mParcelMemoryMax = content["summary"]["available"][0]["amount"].asInteger();
- mGotParcelMemoryMax = TRUE;
+ mParcelMemoryUsed = content["summary"]["used"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
+ mParcelMemoryMax = content["summary"]["available"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
+ mGotParcelMemoryUsed = true;
}
- else if(content["summary"]["available"][1]["type"].asString() == std::string("memory"))
+ else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
{
- mParcelMemoryMax = content["summary"]["available"][1]["amount"].asInteger();
- mGotParcelMemoryMax = TRUE;
+ mParcelMemoryUsed = content["summary"]["used"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
+ mParcelMemoryMax = content["summary"]["available"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
+ mGotParcelMemoryUsed = true;
}
else
{
llinfos << "summary doesn't contain memory info" << llendl;
return;
}
-/*
- currently this is broken on the server, so we get this value from the details section
- and update via populateParcelMemoryText() when both sets of information have been returned
-
- when the sim is fixed this should be used instead:
- if(content["summary"]["used"][0]["type"].asString() == std::string("memory"))
+
+ if(content["summary"]["used"][0]["type"].asString() == std::string("urls"))
{
- mParcelMemoryUsed = content["summary"]["used"][0]["amount"].asInteger();
- mGotParcelMemoryUsed = TRUE;
+ mParcelURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
+ mParcelURLsMax = content["summary"]["available"][0]["amount"].asInteger();
+ mGotParcelURLsUsed = true;
}
- else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
+ else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
{
- mParcelMemoryUsed = content["summary"]["used"][1]["amount"].asInteger();
- mGotParcelMemoryUsed = TRUE;
+ mParcelURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
+ mParcelURLsMax = content["summary"]["available"][1]["amount"].asInteger();
+ mGotParcelURLsUsed = true;
}
else
{
- //ERROR!!!
+ llinfos << "summary doesn't contain urls info" << llendl;
return;
- }*/
+ }
+
+ if((mParcelMemoryUsed >= 0) && (mParcelMemoryMax >= 0))
+ {
+ S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed;
+
+ LLStringUtil::format_map_t args_parcel_memory;
+ args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed);
+ args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax);
+ args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available);
+ std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory);
+ childSetValue("memory_used", LLSD(msg_parcel_memory));
+ }
- populateParcelMemoryText();
+ if((mParcelURLsUsed >= 0) && (mParcelURLsMax >= 0))
+ {
+ S32 parcel_urls_available = mParcelURLsMax - mParcelURLsUsed;
+
+ LLStringUtil::format_map_t args_parcel_urls;
+ args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed);
+ args_parcel_urls["[MAX]"] = llformat ("%d", mParcelURLsMax);
+ args_parcel_urls["[AVAILABLE]"] = llformat ("%d", parcel_urls_available);
+ std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls);
+ childSetValue("urls_used", LLSD(msg_parcel_urls));
+ }
}
BOOL LLPanelScriptLimitsRegionMemory::postBuild()
@@ -530,6 +811,10 @@ BOOL LLPanelScriptLimitsRegionMemory::postBuild()
childSetValue("loading_text", LLSD(msg_waiting));
LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+ if(!list)
+ {
+ return FALSE;
+ }
//set all columns to resizable mode even if some columns will be empty
for(S32 column = 0; column < list->getNumColumns(); column++)
@@ -548,18 +833,11 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
LLFloaterLand* instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
if(!instance)
{
- //this isnt really an error...
-// llinfos << "Failed to get about land instance" << llendl;
-// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
childSetValue("loading_text", LLSD(std::string("")));
//might have to do parent post build here
//if not logic below could use early outs
return FALSE;
}
-
- LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-
LLParcel* parcel = instance->getCurrentSelectedParcel();
LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
@@ -575,7 +853,6 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
{
std::string msg_wrong_region = LLTrans::getString("ScriptLimitsRequestWrongRegion");
childSetValue("loading_text", LLSD(msg_wrong_region));
- panel_urls->childSetValue("loading_text", LLSD(msg_wrong_region));
return FALSE;
}
@@ -605,14 +882,12 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
childSetValue("loading_text", LLSD(msg_waiting));
- panel_urls->childSetValue("loading_text", LLSD(msg_waiting));
}
}
else
{
- std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+ std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestNoParcelSelected");
childSetValue("loading_text", LLSD(msg_waiting));
- panel_urls->childSetValue("loading_text", LLSD(msg_waiting));
}
return LLPanelScriptLimitsInfo::postBuild();
@@ -627,12 +902,15 @@ void LLPanelScriptLimitsRegionMemory::clearList()
list->operateOnAll(LLCtrlListInterface::OP_DELETE);
}
- mGotParcelMemoryUsed = FALSE;
- mGotParcelMemoryMax = FALSE;
+ mGotParcelMemoryUsed = false;
+ mGotParcelMemoryMax = false;
+ mGotParcelURLsUsed = false;
+ mGotParcelURLsMax = false;
LLStringUtil::format_map_t args_parcel_memory;
std::string msg_empty_string("");
childSetValue("memory_used", LLSD(msg_empty_string));
+ childSetValue("urls_used", LLSD(msg_empty_string));
childSetValue("parcels_listed", LLSD(msg_empty_string));
mObjectListItems.clear();
@@ -647,13 +925,16 @@ void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata)
if(instance)
{
LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
- panel_memory->clearList();
-
- LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
- panel_urls->clearList();
+ if(tab)
+ {
+ LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+ if(panel_memory)
+ {
+ panel_memory->clearList();
- panel_memory->StartRequestChain();
+ panel_memory->StartRequestChain();
+ }
+ }
return;
}
else
@@ -665,78 +946,80 @@ void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata)
void LLPanelScriptLimitsRegionMemory::showBeacon()
{
-/* LLScrollListCtrl* list = getChild<LLScrollListCtrl>("scripts_list");
+ LLScrollListCtrl* list = getChild<LLScrollListCtrl>("scripts_list");
if (!list) return;
LLScrollListItem* first_selected = list->getFirstSelected();
if (!first_selected) return;
- std::string name = first_selected->getColumn(1)->getValue().asString();
- std::string pos_string = first_selected->getColumn(3)->getValue().asString();
+ std::string name = first_selected->getColumn(2)->getValue().asString();
+ std::string pos_string = first_selected->getColumn(5)->getValue().asString();
- llinfos << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" <<llendl;
- llinfos << "name = " << name << " pos = " << pos_string << llendl;
-
F32 x, y, z;
S32 matched = sscanf(pos_string.c_str(), "<%g,%g,%g>", &x, &y, &z);
if (matched != 3) return;
LLVector3 pos_agent(x, y, z);
LLVector3d pos_global = gAgent.getPosGlobalFromAgent(pos_agent);
- llinfos << "name = " << name << " pos = " << pos_string << llendl;
+
std::string tooltip("");
- LLTracker::trackLocation(pos_global, name, tooltip, LLTracker::LOCATION_ITEM);*/
+ LLTracker::trackLocation(pos_global, name, tooltip, LLTracker::LOCATION_ITEM);
}
// static
void LLPanelScriptLimitsRegionMemory::onClickHighlight(void* userdata)
{
-/* llinfos << "LLPanelRegionGeneralInfo::onClickHighlight" << llendl;
+ llinfos << "LLPanelRegionGeneralInfo::onClickHighlight" << llendl;
LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
if(instance)
{
LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
- panel->showBeacon();
+ if(tab)
+ {
+ LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+ if(panel)
+ {
+ panel->showBeacon();
+ }
+ }
return;
}
else
{
llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
-// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
-// panel->childSetValue("loading_text", LLSD(msg_waiting));
return;
- }*/
+ }
}
-void LLPanelScriptLimitsRegionMemory::returnObjects()
+void LLPanelScriptLimitsRegionMemory::returnObjectsFromParcel(S32 local_id)
{
-/* llinfos << "started" << llendl;
LLMessageSystem *msg = gMessageSystem;
LLViewerRegion* region = gAgent.getRegion();
if (!region) return;
- llinfos << "got region" << llendl;
LLCtrlListInterface *list = childGetListInterface("scripts_list");
if (!list || list->getItemCount() == 0) return;
- llinfos << "got list" << llendl;
- std::vector<LLUUID>::iterator id_itor;
+ std::vector<LLSD>::iterator id_itor;
bool start_message = true;
- for (id_itor = mObjectListIDs.begin(); id_itor != mObjectListIDs.end(); ++id_itor)
+ for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor)
{
- LLUUID task_id = *id_itor;
- llinfos << task_id << llendl;
- if (!list->isSelected(task_id))
+ LLSD element = *id_itor;
+ if (!list->isSelected(element["id"].asUUID()))
{
- llinfos << "not selected" << llendl;
// Selected only
continue;
}
- llinfos << "selected" << llendl;
+
+ if(element["local_id"].asInteger() != local_id)
+ {
+ // Not the parcel we are looking for
+ continue;
+ }
+
if (start_message)
{
msg->newMessageFast(_PREHASH_ParcelReturnObjects);
@@ -744,285 +1027,74 @@ void LLPanelScriptLimitsRegionMemory::returnObjects()
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
msg->nextBlockFast(_PREHASH_ParcelData);
- msg->addS32Fast(_PREHASH_LocalID, -1); // Whole region
- msg->addS32Fast(_PREHASH_ReturnType, RT_LIST);
+ msg->addS32Fast(_PREHASH_LocalID, element["local_id"].asInteger());
+ msg->addU32Fast(_PREHASH_ReturnType, RT_LIST);
start_message = false;
- llinfos << "start message" << llendl;
}
msg->nextBlockFast(_PREHASH_TaskIDs);
- msg->addUUIDFast(_PREHASH_TaskID, task_id);
- llinfos << "added id" << llendl;
+ msg->addUUIDFast(_PREHASH_TaskID, element["id"].asUUID());
if (msg->isSendFullFast(_PREHASH_TaskIDs))
{
msg->sendReliable(region->getHost());
start_message = true;
- llinfos << "sent 1" << llendl;
}
}
if (!start_message)
{
msg->sendReliable(region->getHost());
- llinfos << "sent 2" << llendl;
- }*/
+ }
}
-// static
-void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata)
+void LLPanelScriptLimitsRegionMemory::returnObjects()
{
-/* llinfos << "LLPanelRegionGeneralInfo::onClickReturn" << llendl;
- LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
- if(instance)
+ if(!mContent.has("parcels"))
{
- LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
- panel->returnObjects();
return;
}
- else
- {
- llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
-// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
-// panel->childSetValue("loading_text", LLSD(msg_waiting));
- return;
- }*/
-}
-
-///----------------------------------------------------------------------------
-// URLs Panel
-///----------------------------------------------------------------------------
-
-void LLPanelScriptLimitsRegionURLs::setRegionDetails(LLSD content)
-{
- LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
-
- S32 number_parcels = content["parcels"].size();
-
- LLStringUtil::format_map_t args_parcels;
- args_parcels["[PARCELS]"] = llformat ("%d", number_parcels);
- std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);
- childSetValue("parcels_listed", LLSD(msg_parcels));
-
- S32 total_objects = 0;
- S32 total_size = 0;
+ S32 number_parcels = mContent["parcels"].size();
+
+ // a message per parcel containing all objects to be returned from that parcel
for(S32 i = 0; i < number_parcels; i++)
{
- std::string parcel_name = content["parcels"][i]["name"].asString();
- llinfos << parcel_name << llendl;
-
- S32 number_objects = content["parcels"][i]["objects"].size();
- for(S32 j = 0; j < number_objects; j++)
+ S32 local_id = 0;
+ if(mContent["parcels"][i].has("local_id"))
{
- if(content["parcels"][i]["objects"][j]["resources"].has("urls"))
- {
- S32 size = content["parcels"][i]["objects"][j]["resources"]["urls"].asInteger();
- total_size += size;
-
- std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString();
- LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID();
- LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID();
-
- std::string owner_buf;
- gCacheName->getFullName(owner_id, owner_buf); //dont care if this fails as the memory tab will request and fill the field
-
- LLSD element;
-
- element["id"] = task_id;
- element["columns"][0]["column"] = "urls";
- element["columns"][0]["value"] = llformat("%d", size);
- element["columns"][0]["font"] = "SANSSERIF";
- element["columns"][1]["column"] = "name";
- element["columns"][1]["value"] = name_buf;
- element["columns"][1]["font"] = "SANSSERIF";
- element["columns"][2]["column"] = "owner";
- element["columns"][2]["value"] = owner_buf;
- element["columns"][2]["font"] = "SANSSERIF";
- element["columns"][3]["column"] = "location";
- element["columns"][3]["value"] = parcel_name;
- element["columns"][3]["font"] = "SANSSERIF";
-
- list->addElement(element);
- mObjectListItems.push_back(element);
- total_objects++;
- }
+ local_id = mContent["parcels"][i]["local_id"].asInteger();
+ returnObjectsFromParcel(local_id);
}
}
-
- mParcelURLsUsed =total_size;
- mGotParcelURLsUsed = TRUE;
- populateParcelURLsText();
-}
-void LLPanelScriptLimitsRegionURLs::populateParcelURLsText()
-{
- if(mGotParcelURLsUsed && mGotParcelURLsMax)
- {
-
-#ifdef USE_SIMPLE_SUMMARY
- LLStringUtil::format_map_t args_parcel_urls;
- args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed);
- std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsedSimple", args_parcel_urls);
- childSetValue("urls_used", LLSD(msg_parcel_urls));
-#else
- S32 parcel_urls_available = mParcelURLsMax - mParcelURLsUsed;
-
- LLStringUtil::format_map_t args_parcel_urls;
- args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed);
- args_parcel_urls["[MAX]"] = llformat ("%d", mParcelURLsMax);
- args_parcel_urls["[AVAILABLE]"] = llformat ("%d", parcel_urls_available);
- std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls);
- childSetValue("urls_used", LLSD(msg_parcel_urls));
-#endif
-
- childSetValue("loading_text", LLSD(std::string("")));
-
- }
+ onClickRefresh(NULL);
}
-void LLPanelScriptLimitsRegionURLs::setRegionSummary(LLSD content)
-{
- if(content["summary"]["available"][0]["type"].asString() == std::string("urls"))
- {
- mParcelURLsMax = content["summary"]["available"][0]["amount"].asInteger();
- mGotParcelURLsMax = TRUE;
- }
- else if(content["summary"]["available"][1]["type"].asString() == std::string("urls"))
- {
- mParcelURLsMax = content["summary"]["available"][1]["amount"].asInteger();
- mGotParcelURLsMax = TRUE;
- }
- else
- {
- llinfos << "summary contains no url info" << llendl;
- return;
- }
-/*
- currently this is broken on the server, so we get this value from the details section
- and update via populateParcelMemoryText() when both sets of information have been returned
-
- when the sim is fixed this should be used instead:
- if(content["summary"]["used"][0]["type"].asString() == std::string("urls"))
- {
- mParcelURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
- mGotParcelURLsUsed = TRUE;
- }
- else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
- {
- mParcelURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
- mGotParcelURLsUsed = TRUE;
- }
- else
- {
- //ERROR!!!
- return;
- }*/
-
- populateParcelURLsText();
-}
-
-BOOL LLPanelScriptLimitsRegionURLs::postBuild()
-{
- childSetAction("refresh_list_btn", onClickRefresh, this);
- childSetAction("highlight_btn", onClickHighlight, this);
- childSetAction("return_btn", onClickReturn, this);
-
- std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
- childSetValue("loading_text", LLSD(msg_waiting));
- return FALSE;
-}
-
-void LLPanelScriptLimitsRegionURLs::clearList()
-{
- LLCtrlListInterface *list = childGetListInterface("scripts_list");
-
- if (list)
- {
- list->operateOnAll(LLCtrlListInterface::OP_DELETE);
- }
-
- mGotParcelURLsUsed = FALSE;
- mGotParcelURLsMax = FALSE;
-
- LLStringUtil::format_map_t args_parcel_urls;
- std::string msg_empty_string("");
- childSetValue("urls_used", LLSD(msg_empty_string));
- childSetValue("parcels_listed", LLSD(msg_empty_string));
-
- mObjectListItems.clear();
-}
-
-// static
-void LLPanelScriptLimitsRegionURLs::onClickRefresh(void* userdata)
-{
- llinfos << "Refresh clicked" << llendl;
-
- LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
- if(instance)
- {
- LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
- // use the memory panel to re-request all the info
- panel_memory->clearList();
-
- LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
- // but the urls panel to clear itself
- panel_urls->clearList();
-
- panel_memory->StartRequestChain();
- return;
- }
- else
- {
- llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after refresh button clicked" << llendl;
- return;
- }
-}
// static
-void LLPanelScriptLimitsRegionURLs::onClickHighlight(void* userdata)
+void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata)
{
-/* llinfos << "Highlight clicked" << llendl;
+ llinfos << "LLPanelRegionGeneralInfo::onClickReturn" << llendl;
LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
if(instance)
{
LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
- // use the beacon function from the memory panel
- panel->showBeacon();
+ if(tab)
+ {
+ LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+ if(panel)
+ {
+ panel->returnObjects();
+ }
+ }
return;
}
else
{
llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
-// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
-// panel->childSetValue("loading_text", LLSD(msg_waiting));
- return;
- }*/
-}
-
-// static
-void LLPanelScriptLimitsRegionURLs::onClickReturn(void* userdata)
-{
-/* llinfos << "Return clicked" << llendl;
- LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
- if(instance)
- {
- LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
- LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
- // use the return function from the memory panel
- panel->returnObjects();
return;
}
- else
- {
- llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
-// std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
-// panel->childSetValue("loading_text", LLSD(msg_waiting));
- return;
- }*/
}
///----------------------------------------------------------------------------
@@ -1047,6 +1119,12 @@ BOOL LLPanelScriptLimitsAttachment::requestAttachmentDetails()
void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content)
{
LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+
+ if(!list)
+ {
+ return;
+ }
+
S32 number_attachments = content["attachments"].size();
for(int i = 0; i < number_attachments; i++)
@@ -1096,6 +1174,8 @@ void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content)
list->addElement(element);
}
}
+
+ setAttachmentSummary(content);
childSetValue("loading_text", LLSD(std::string("")));
}
@@ -1122,6 +1202,69 @@ void LLPanelScriptLimitsAttachment::clearList()
childSetValue("loading_text", LLSD(msg_waiting));
}
+void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content)
+{
+ if(content["summary"]["used"][0]["type"].asString() == std::string("memory"))
+ {
+ mAttachmentMemoryUsed = content["summary"]["used"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
+ mAttachmentMemoryMax = content["summary"]["available"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
+ mGotAttachmentMemoryUsed = true;
+ }
+ else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
+ {
+ mAttachmentMemoryUsed = content["summary"]["used"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
+ mAttachmentMemoryMax = content["summary"]["available"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
+ mGotAttachmentMemoryUsed = true;
+ }
+ else
+ {
+ llinfos << "attachment details don't contain memory summary info" << llendl;
+ return;
+ }
+
+ if(content["summary"]["used"][0]["type"].asString() == std::string("urls"))
+ {
+ mAttachmentURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
+ mAttachmentURLsMax = content["summary"]["available"][0]["amount"].asInteger();
+ mGotAttachmentURLsUsed = true;
+ }
+ else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
+ {
+ mAttachmentURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
+ mAttachmentURLsMax = content["summary"]["available"][1]["amount"].asInteger();
+ mGotAttachmentURLsUsed = true;
+ }
+ else
+ {
+ llinfos << "attachment details don't contain urls summary info" << llendl;
+ return;
+ }
+
+ if((mAttachmentMemoryUsed >= 0) && (mAttachmentMemoryMax >= 0))
+ {
+ S32 attachment_memory_available = mAttachmentMemoryMax - mAttachmentMemoryUsed;
+
+ LLStringUtil::format_map_t args_attachment_memory;
+ args_attachment_memory["[COUNT]"] = llformat ("%d", mAttachmentMemoryUsed);
+ args_attachment_memory["[MAX]"] = llformat ("%d", mAttachmentMemoryMax);
+ args_attachment_memory["[AVAILABLE]"] = llformat ("%d", attachment_memory_available);
+ std::string msg_attachment_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_attachment_memory);
+ childSetValue("memory_used", LLSD(msg_attachment_memory));
+ }
+
+ if((mAttachmentURLsUsed >= 0) && (mAttachmentURLsMax >= 0))
+ {
+ S32 attachment_urls_available = mAttachmentURLsMax - mAttachmentURLsUsed;
+
+ LLStringUtil::format_map_t args_attachment_urls;
+ args_attachment_urls["[COUNT]"] = llformat ("%d", mAttachmentURLsUsed);
+ args_attachment_urls["[MAX]"] = llformat ("%d", mAttachmentURLsMax);
+ args_attachment_urls["[AVAILABLE]"] = llformat ("%d", attachment_urls_available);
+ std::string msg_attachment_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_attachment_urls);
+ childSetValue("urls_used", LLSD(msg_attachment_urls));
+ }
+}
+
// static
void LLPanelScriptLimitsAttachment::onClickRefresh(void* userdata)
{
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index e675d14515..0cba4d72f2 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -148,8 +148,8 @@ public:
: LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(),
mParcelId(LLUUID()),
- mGotParcelMemoryUsed(FALSE),
- mGotParcelMemoryMax(FALSE),
+ mGotParcelMemoryUsed(false),
+ mGotParcelMemoryMax(false),
mParcelMemoryMax(0),
mParcelMemoryUsed(0) {};
@@ -166,10 +166,10 @@ public:
BOOL StartRequestChain();
- void populateParcelMemoryText();
BOOL getLandScriptResources();
void clearList();
void showBeacon();
+ void returnObjectsFromParcel(S32 local_id);
void returnObjects();
private:
@@ -178,11 +178,21 @@ private:
const std::string& first_name,
const std::string& last_name);
+ LLSD mContent;
LLUUID mParcelId;
- BOOL mGotParcelMemoryUsed;
- BOOL mGotParcelMemoryMax;
+ bool mGotParcelMemoryUsed;
+ bool mGotParcelMemoryUsedDetails;
+ bool mGotParcelMemoryMax;
S32 mParcelMemoryMax;
S32 mParcelMemoryUsed;
+ S32 mParcelMemoryUsedDetails;
+
+ bool mGotParcelURLsUsed;
+ bool mGotParcelURLsUsedDetails;
+ bool mGotParcelURLsMax;
+ S32 mParcelURLsMax;
+ S32 mParcelURLsUsed;
+ S32 mParcelURLsUsedDetails;
std::vector<LLSD> mObjectListItems;
@@ -199,55 +209,6 @@ protected:
};
/////////////////////////////////////////////////////////////////////////////
-// URLs panel
-/////////////////////////////////////////////////////////////////////////////
-
-class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo
-{
-
-public:
- LLPanelScriptLimitsRegionURLs()
- : LLPanelScriptLimitsInfo(),
-
- mParcelId(LLUUID()),
- mGotParcelURLsUsed(FALSE),
- mGotParcelURLsMax(FALSE),
- mParcelURLsMax(0),
- mParcelURLsUsed(0)
- {
- };
-
- ~LLPanelScriptLimitsRegionURLs()
- {
- };
-
- // LLPanel
- virtual BOOL postBuild();
-
- void setRegionDetails(LLSD content);
- void setRegionSummary(LLSD content);
-
- void populateParcelURLsText();
- void clearList();
-
-private:
-
- LLUUID mParcelId;
- BOOL mGotParcelURLsUsed;
- BOOL mGotParcelURLsMax;
- S32 mParcelURLsMax;
- S32 mParcelURLsUsed;
-
- std::vector<LLSD> mObjectListItems;
-
-protected:
-
- static void onClickRefresh(void* userdata);
- static void onClickHighlight(void* userdata);
- static void onClickReturn(void* userdata);
-};
-
-/////////////////////////////////////////////////////////////////////////////
// Attachment panel
/////////////////////////////////////////////////////////////////////////////
@@ -256,7 +217,21 @@ class LLPanelScriptLimitsAttachment : public LLPanelScriptLimitsInfo
public:
LLPanelScriptLimitsAttachment()
- : LLPanelScriptLimitsInfo() {};
+ : LLPanelScriptLimitsInfo(),
+ mGotAttachmentMemoryUsed(false),
+ mGotAttachmentMemoryUsedDetails(false),
+ mGotAttachmentMemoryMax(false),
+ mAttachmentMemoryMax(0),
+ mAttachmentMemoryUsed(0),
+ mAttachmentMemoryUsedDetails(0),
+ mGotAttachmentURLsUsed(false),
+ mGotAttachmentURLsUsedDetails(false),
+ mGotAttachmentURLsMax(false),
+ mAttachmentURLsMax(0),
+ mAttachmentURLsUsed(0),
+ mAttachmentURLsUsedDetails(0)
+ {};
+
~LLPanelScriptLimitsAttachment()
{
};
@@ -266,11 +241,26 @@ public:
void setAttachmentDetails(LLSD content);
+ void setAttachmentSummary(LLSD content);
BOOL requestAttachmentDetails();
void clearList();
private:
+ bool mGotAttachmentMemoryUsed;
+ bool mGotAttachmentMemoryUsedDetails;
+ bool mGotAttachmentMemoryMax;
+ S32 mAttachmentMemoryMax;
+ S32 mAttachmentMemoryUsed;
+ S32 mAttachmentMemoryUsedDetails;
+
+ bool mGotAttachmentURLsUsed;
+ bool mGotAttachmentURLsUsedDetails;
+ bool mGotAttachmentURLsMax;
+ S32 mAttachmentURLsMax;
+ S32 mAttachmentURLsUsed;
+ S32 mAttachmentURLsUsedDetails;
+
protected:
static void onClickRefresh(void* userdata);
diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp
index a7401fdb6f..76caa0cf91 100644
--- a/indra/newview/llfloatersearch.cpp
+++ b/indra/newview/llfloatersearch.cpp
@@ -118,11 +118,9 @@ void LLFloaterSearch::onOpen(const LLSD& key)
void LLFloaterSearch::onClose(bool app_quitting)
{
- if (! app_quitting)
- {
- // Show the blank home page ready for the next onOpen()
- mBrowser->navigateHome();
- }
+ // tear down the web view so we don't show the previous search
+ // result when the floater is opened next time
+ destroy();
}
void LLFloaterSearch::handleMediaEvent(LLPluginClassMedia *self, EMediaEvent event)
@@ -158,11 +156,6 @@ void LLFloaterSearch::search(const LLSD &key)
return;
}
- // display the blank home page first, to clear the display of
- // any previous search results while the new results load.
- // The home page is set in floater_search.xml as start_url.
- mBrowser->navigateHome();
-
// reset the god level warning as we're sending the latest state
childHide("refresh_search");
mSearchGodLevel = gAgent.getGodLevel();
diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp
index e2b0c4b66f..eae6121e79 100644
--- a/indra/newview/llfloatersellland.cpp
+++ b/indra/newview/llfloatersellland.cpp
@@ -163,13 +163,14 @@ BOOL LLFloaterSellLandUI::postBuild()
{
childSetCommitCallback("sell_to", onChangeValue, this);
childSetCommitCallback("price", onChangeValue, this);
- childSetPrevalidate("price", LLLineEditor::prevalidateNonNegativeS32);
+ childSetPrevalidate("price", LLTextValidate::validateNonNegativeS32);
childSetCommitCallback("sell_objects", onChangeValue, this);
childSetAction("sell_to_select_agent", boost::bind( &LLFloaterSellLandUI::doSelectAgent, this));
childSetAction("cancel_btn", doCancel, this);
childSetAction("sell_btn", doSellLand, this);
childSetAction("show_objects", doShowObjects, this);
center();
+ getChild<LLUICtrl>("profile_scroll")->setTabStop(true);
return TRUE;
}
@@ -268,7 +269,7 @@ void LLFloaterSellLandUI::refreshUI()
std::string price_str = childGetValue("price").asString();
bool valid_price = false;
- valid_price = (price_str != "") && LLLineEditor::prevalidateNonNegativeS32(utf8str_to_wstring(price_str));
+ valid_price = (price_str != "") && LLTextValidate::validateNonNegativeS32(utf8str_to_wstring(price_str));
if (valid_price && mParcelActualArea > 0)
{
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index b6e9fb3f6c..a0031f0193 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -2084,10 +2084,6 @@ void LLFloaterSnapshot::draw()
S32 offset_x = (getRect().getWidth() - previewp->getThumbnailWidth()) / 2 ;
S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ;
- if (! gSavedSettings.getBOOL("AdvanceSnapshot"))
- {
- offset_y += getUIWinHeightShort() - getUIWinHeightLong();
- }
glMatrixMode(GL_MODELVIEW);
gl_draw_scaled_image(offset_x, offset_y,
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 241497aeaf..7c42a581ff 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -666,8 +666,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
if (mCheckCopyCenters) mCheckCopyCenters ->setVisible( create_visible );
if (mCheckCopyRotates) mCheckCopyRotates ->setVisible( create_visible );
- if (mCheckCopyCenters) mCheckCopyCenters->setEnabled( mCheckCopySelection->get() );
- if (mCheckCopyRotates) mCheckCopyRotates->setEnabled( mCheckCopySelection->get() );
+ if (mCheckCopyCenters && mCheckCopySelection) mCheckCopyCenters->setEnabled( mCheckCopySelection->get() );
+ if (mCheckCopyRotates && mCheckCopySelection) mCheckCopyRotates->setEnabled( mCheckCopySelection->get() );
// Land buttons
BOOL land_visible = (tool == LLToolBrushLand::getInstance() || tool == LLToolSelectLand::getInstance() );
@@ -1321,7 +1321,7 @@ bool LLFloaterTools::deleteMediaConfirm(const LLSD& notification, const LLSD& re
switch( option )
{
case 0: // "Yes"
- LLSelectMgr::getInstance()->selectionSetMedia( 0 );
+ LLSelectMgr::getInstance()->selectionSetMedia( 0, LLSD() );
if(LLFloaterReg::instanceVisible("media_settings"))
{
LLFloaterReg::hideInstance("media_settings");
@@ -1523,7 +1523,9 @@ void LLFloaterTools::updateMediaSettings()
mMediaSettings[ base_key + std::string( LLPanelContents::TENTATIVE_SUFFIX ) ] = ! identical;
// Auto play
- value_bool = default_media_data.getAutoPlay();
+ //value_bool = default_media_data.getAutoPlay();
+ // set default to auto play TRUE -- angela EXT-5172
+ value_bool = true;
struct functor_getter_auto_play : public LLSelectedTEGetFunctor< bool >
{
functor_getter_auto_play(const LLMediaEntry& entry) : mMediaEntry(entry) {}
@@ -1534,7 +1536,8 @@ void LLFloaterTools::updateMediaSettings()
if ( object->getTE(face) )
if ( object->getTE(face)->getMediaData() )
return object->getTE(face)->getMediaData()->getAutoPlay();
- return mMediaEntry.getAutoPlay();
+ //return mMediaEntry.getAutoPlay(); set default to auto play TRUE -- angela EXT-5172
+ return true;
};
const LLMediaEntry &mMediaEntry;
@@ -1547,7 +1550,9 @@ void LLFloaterTools::updateMediaSettings()
// Auto scale
- value_bool = default_media_data.getAutoScale();
+ // set default to auto scale TRUE -- angela EXT-5172
+ //value_bool = default_media_data.getAutoScale();
+ value_bool = true;
struct functor_getter_auto_scale : public LLSelectedTEGetFunctor< bool >
{
functor_getter_auto_scale(const LLMediaEntry& entry): mMediaEntry(entry) {}
@@ -1558,8 +1563,9 @@ void LLFloaterTools::updateMediaSettings()
if ( object->getTE(face) )
if ( object->getTE(face)->getMediaData() )
return object->getTE(face)->getMediaData()->getAutoScale();
- return mMediaEntry.getAutoScale();;
- };
+ // return mMediaEntry.getAutoScale(); set default to auto scale TRUE -- angela EXT-5172
+ return true;
+ };
const LLMediaEntry &mMediaEntry;
diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
index c930e99bad..8ab050beaa 100644
--- a/indra/newview/llfloatertopobjects.cpp
+++ b/indra/newview/llfloatertopobjects.cpp
@@ -283,8 +283,13 @@ void LLFloaterTopObjects::updateSelectionInfo()
std::string object_id_string = object_id.asString();
childSetValue("id_editor", LLSD(object_id_string));
- childSetValue("object_name_editor", list->getFirstSelected()->getColumn(1)->getValue().asString());
- childSetValue("owner_name_editor", list->getFirstSelected()->getColumn(2)->getValue().asString());
+ LLScrollListItem* sli = list->getFirstSelected();
+ llassert(sli);
+ if (sli)
+ {
+ childSetValue("object_name_editor", sli->getColumn(1)->getValue().asString());
+ childSetValue("owner_name_editor", sli->getColumn(2)->getValue().asString());
+ }
}
// static
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index 645f8ef054..f61c86db14 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -41,6 +41,7 @@
#include "llfloateruipreview.h" // Own header
// Internal utility
+#include "lleventtimer.h"
#include "llrender.h"
#include "llsdutil.h"
#include "llxmltree.h"
@@ -91,7 +92,6 @@ static std::string get_xui_dir()
}
// Forward declarations to avoid header dependencies
-class LLEventTimer;
class LLColor;
class LLScrollListCtrl;
class LLComboBox;
@@ -362,8 +362,7 @@ BOOL LLFadeEventTimer::tick()
if(NULL == mParent) // no more need to tick, so suicide
{
- delete this;
- return FALSE;
+ return TRUE;
}
// Set up colors
@@ -1091,7 +1090,9 @@ void LLFloaterUIPreview::onClickEditFloater()
char *args2 = new char[args.size() + 1]; // Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
strcpy(args2, args.c_str());
- if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, exe_dir.c_str(), &sinfo, &pinfo))
+ // we don't want the current directory to be the executable directory, since the file path is now relative. By using
+ // NULL for the current directory instead of exe_dir.c_str(), the path to the target file will work.
+ if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pinfo))
{
// DWORD dwErr = GetLastError();
std::string warning = "Creating editor process failed!";
diff --git a/indra/newview/llfloaterwater.cpp b/indra/newview/llfloaterwater.cpp
index 66a1f6701f..1bbee2625c 100644
--- a/indra/newview/llfloaterwater.cpp
+++ b/indra/newview/llfloaterwater.cpp
@@ -574,12 +574,10 @@ bool LLFloaterWater::deleteAlertCallback(const LLSD& notification, const LLSD& r
LLComboBox* combo_box = getChild<LLComboBox>("WaterPresetsCombo");
LLFloaterDayCycle* day_cycle = LLFloaterReg::findTypedInstance<LLFloaterDayCycle>("env_day_cycle");
LLComboBox* key_combo = NULL;
- LLMultiSliderCtrl* mult_sldr = NULL;
if (day_cycle)
{
key_combo = day_cycle->getChild<LLComboBox>("WaterKeyPresets");
- mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WaterDayCycleKeys");
}
std::string name = combo_box->getSelectedValue().asString();
diff --git a/indra/newview/llfloaterwindlight.cpp b/indra/newview/llfloaterwindlight.cpp
index ea6fda7303..c1b15c578c 100644
--- a/indra/newview/llfloaterwindlight.cpp
+++ b/indra/newview/llfloaterwindlight.cpp
@@ -749,12 +749,10 @@ bool LLFloaterWindLight::deleteAlertCallback(const LLSD& notification, const LLS
LLComboBox* combo_box = getChild<LLComboBox>("WLPresetsCombo");
LLFloaterDayCycle* day_cycle = LLFloaterReg::findTypedInstance<LLFloaterDayCycle>("env_day_cycle");
LLComboBox* key_combo = NULL;
- LLMultiSliderCtrl* mult_sldr = NULL;
if (day_cycle)
{
key_combo = day_cycle->getChild<LLComboBox>("WLKeyPresets");
- mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WLDayCycleKeys");
}
std::string name(combo_box->getSelectedValue().asString());
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index f4d4ea3553..b6de409611 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -788,8 +788,11 @@ void LLFloaterWorldMap::friendsChanged()
if(avatar_id.notNull())
{
LLCtrlSelectionInterface *iface = childGetSelectionInterface("friend combo");
- if(!iface || !iface->setCurrentByID(avatar_id) ||
- !t.getBuddyInfo(avatar_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) || gAgent.isGodlike())
+ const LLRelationship* buddy_info = t.getBuddyInfo(avatar_id);
+ if(!iface ||
+ !iface->setCurrentByID(avatar_id) ||
+ (buddy_info && !buddy_info->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION)) ||
+ gAgent.isGodlike())
{
LLTracker::stopTracking(NULL);
}
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index c6135d3bc3..7d527fa98a 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -195,7 +195,8 @@ LLFolderView::LLFolderView(const Params& p)
mCallbackRegistrar(NULL),
mParentPanel(p.parent_panel),
mUseEllipses(false),
- mDraggingOverItem(NULL)
+ mDraggingOverItem(NULL),
+ mStatusTextBox(NULL)
{
LLRect rect = p.rect;
LLRect new_rect(rect.mLeft, rect.mBottom + getRect().getHeight(), rect.mLeft + getRect().getWidth(), rect.mBottom);
@@ -221,16 +222,34 @@ LLFolderView::LLFolderView(const Params& p)
// Escape is handled by reverting the rename, not commiting it (default behavior)
LLLineEditor::Params params;
params.name("ren");
- params.rect(getRect());
+ params.rect(rect);
params.font(getLabelFontForStyle(LLFontGL::NORMAL));
params.max_length_bytes(DB_INV_ITEM_NAME_STR_LEN);
params.commit_callback.function(boost::bind(&LLFolderView::commitRename, this, _2));
- params.prevalidate_callback(&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ params.prevalidate_callback(&LLTextValidate::validateASCIIPrintableNoPipe);
params.commit_on_focus_lost(true);
params.visible(false);
mRenamer = LLUICtrlFactory::create<LLLineEditor> (params);
addChild(mRenamer);
+ // Textbox
+ LLTextBox::Params text_p;
+ LLFontGL* font = getLabelFontForStyle(mLabelStyle);
+ LLRect new_r = LLRect(rect.mLeft + ICON_PAD,
+ rect.mTop - TEXT_PAD,
+ rect.mRight,
+ rect.mTop - TEXT_PAD - llfloor(font->getLineHeight()));
+ text_p.rect(new_r);
+ text_p.name(std::string(p.name));
+ text_p.font(font);
+ text_p.visible(false);
+ text_p.allow_html(true);
+ mStatusTextBox = LLUICtrlFactory::create<LLTextBox> (text_p);
+ mStatusTextBox->setFollowsLeft();
+ mStatusTextBox->setFollowsTop();
+ //addChild(mStatusTextBox);
+
+
// make the popup menu available
LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if (!menu)
@@ -253,6 +272,7 @@ LLFolderView::~LLFolderView( void )
mScrollContainer = NULL;
mRenameItem = NULL;
mRenamer = NULL;
+ mStatusTextBox = NULL;
if( gEditMenuHandler == this )
{
@@ -399,6 +419,11 @@ S32 LLFolderView::arrange( S32* unused_width, S32* unused_height, S32 filter_gen
S32 total_width = LEFT_PAD;
S32 running_height = mDebugFilters ? llceil(LLFontGL::getFontMonospace()->getLineHeight()) : 0;
S32 target_height = running_height;
+ if(!mHasVisibleChildren)// is there any filtered items ?
+ {
+ //Nope. We need to display status textbox, let's reserve some place for it
+ target_height += mStatusTextBox->getTextPixelHeight();
+ }
S32 parent_item_height = getRect().getHeight();
for (folders_t::iterator iter = mFolders.begin();
@@ -874,7 +899,7 @@ void LLFolderView::draw()
LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
}
- LLFontGL* font = getLabelFontForStyle(mLabelStyle);
+ //LLFontGL* font = getLabelFontForStyle(mLabelStyle);
// if cursor has moved off of me during drag and drop
// close all auto opened folders
@@ -911,19 +936,23 @@ void LLFolderView::draw()
|| mFilter->getShowFolderState() == LLInventoryFilter::SHOW_ALL_FOLDERS)
{
mStatusText.clear();
+ mStatusTextBox->setVisible( FALSE );
}
else
{
if (gInventory.backgroundFetchActive() || mCompletedFilterGeneration < mFilter->getMinRequiredGeneration())
{
mStatusText = LLTrans::getString("Searching");
- font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
+ //font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
}
else
{
mStatusText = LLTrans::getString(getFilter()->getEmptyLookupMessage());
- font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
+ //font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
}
+ mStatusTextBox->setValue(mStatusText);
+ mStatusTextBox->setVisible( TRUE );
+
}
LLFolderViewFolder::draw();
@@ -1272,8 +1301,7 @@ BOOL LLFolderView::canCut() const
const LLFolderViewItem* item = *selected_it;
const LLFolderViewEventListener* listener = item->getListener();
- // *WARKAROUND: it is too many places where the "isItemRemovable" method should be changed with "const" modifier
- if (!listener || !(const_cast<LLFolderViewEventListener*>(listener))->isItemRemovable())
+ if (!listener || !listener->isItemRemovable())
{
return FALSE;
}
@@ -1608,7 +1636,11 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
LLFolderViewItem* parent_folder = last_selected->getParentFolder();
if (!last_selected->isOpen() && parent_folder && parent_folder->getParentFolder())
{
- setSelection(parent_folder, FALSE, TRUE);
+ // Don't change selectin to hidden folder. See EXT-5328.
+ if (!parent_folder->getHidden())
+ {
+ setSelection(parent_folder, FALSE, TRUE);
+ }
}
else
{
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 56ebdfcf79..faf6a9cf23 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -62,6 +62,7 @@ class LLLineEditor;
class LLMenuGL;
class LLScrollContainer;
class LLUICtrl;
+class LLTextBox;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLFolderViewFunctor
@@ -327,7 +328,7 @@ protected:
LLUUID mSelectThisID; // if non null, select this item
- LLPanel* mParentPanel;
+ LLPanel* mParentPanel;
/**
* Is used to determine if we need to cut text In LLFolderViewItem to avoid horizontal scroll.
@@ -344,6 +345,8 @@ protected:
public:
static F32 sAutoOpenTime;
+ LLTextBox* mStatusTextBox;
+
};
bool sort_item_name(LLFolderViewItem* a, LLFolderViewItem* b);
diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h
index d6c4459e6f..12e100caf4 100644
--- a/indra/newview/llfoldervieweventlistener.h
+++ b/indra/newview/llfoldervieweventlistener.h
@@ -73,7 +73,8 @@ public:
virtual BOOL isItemRenameable() const = 0;
virtual BOOL renameItem(const std::string& new_name) = 0;
virtual BOOL isItemMovable( void ) const = 0; // Can be moved to another folder
- virtual BOOL isItemRemovable( void ) = 0; // Can be destroyed
+ virtual BOOL isItemRemovable( void ) const = 0; // Can be destroyed
+ virtual BOOL isItemInTrash( void) const { return FALSE; } // TODO: make into pure virtual.
virtual BOOL removeItem() = 0;
virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch) = 0;
virtual void move( LLFolderViewEventListener* parent_listener ) = 0;
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index b05eb84e52..76607e4874 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -1339,10 +1339,6 @@ void LLFolderViewFolder::filter( LLInventoryFilter& filter)
if (folder->getFiltered() || folder->hasFilteredDescendants(filter.getMinRequiredGeneration()))
{
mMostFilteredDescendantGeneration = filter_generation;
- if (getRoot()->needsAutoSelect() && autoopen_folders)
- {
- folder->setOpenArrangeRecursively(TRUE);
- }
}
// just skip it, it has already been filtered
continue;
@@ -1859,10 +1855,9 @@ EInventorySortGroup LLFolderViewFolder::getSortGroup() const
return SG_TRASH_FOLDER;
}
- // Folders that can't be moved are 'system' folders.
if( mListener )
{
- if( !(mListener->isItemMovable()) )
+ if(LLFolderType::lookupIsProtectedType(mListener->getPreferredType()))
{
return SG_SYSTEM_FOLDER;
}
@@ -2540,18 +2535,20 @@ bool LLInventorySort::operator()(const LLFolderViewItem* const& a, const LLFolde
{
static const LLUUID& favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
- static const LLUUID& landmarks_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
LLUUID a_uuid = a->getParentFolder()->getListener()->getUUID();
LLUUID b_uuid = b->getParentFolder()->getListener()->getUUID();
- if ((a_uuid == favorites_folder_id && b_uuid == favorites_folder_id) ||
- (a_uuid == landmarks_folder_id && b_uuid == landmarks_folder_id))
+ if ((a_uuid == favorites_folder_id && b_uuid == favorites_folder_id))
{
// *TODO: mantipov: probably it is better to add an appropriate method to LLFolderViewItem
// or to LLInvFVBridge
- S32 a_sort = (static_cast<const LLItemBridge*>(a->getListener()))->getItem()->getSortField();
- S32 b_sort = (static_cast<const LLItemBridge*>(b->getListener()))->getItem()->getSortField();
+ LLViewerInventoryItem* aitem = (static_cast<const LLItemBridge*>(a->getListener()))->getItem();
+ LLViewerInventoryItem* bitem = (static_cast<const LLItemBridge*>(b->getListener()))->getItem();
+ if (!aitem || !bitem)
+ return false;
+ S32 a_sort = aitem->getSortField();
+ S32 b_sort = bitem->getSortField();
return a_sort < b_sort;
}
}
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index 3653371d76..00e2365ffd 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -161,12 +161,17 @@ void LLGroupActions::join(const LLUUID& group_id)
S32 cost = gdatap->mMembershipFee;
LLSD args;
args["COST"] = llformat("%d", cost);
+ args["NAME"] = gdatap->mName;
LLSD payload;
payload["group_id"] = group_id;
if (can_afford_transaction(cost))
{
- LLNotificationsUtil::add("JoinGroupCanAfford", args, payload, onJoinGroup);
+ if(cost > 0)
+ LLNotificationsUtil::add("JoinGroupCanAfford", args, payload, onJoinGroup);
+ else
+ LLNotificationsUtil::add("JoinGroupNoCost", args, payload, onJoinGroup);
+
}
else
{
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index e01709aa3a..bcfb516b81 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -72,6 +72,8 @@ public:
static const LLGroupComparator GROUP_COMPARATOR;
LLGroupList::Params::Params()
+: no_groups_msg("no_groups_msg")
+, no_filtered_groups_msg("no_filtered_groups_msg")
{
}
@@ -79,15 +81,14 @@ LLGroupList::Params::Params()
LLGroupList::LLGroupList(const Params& p)
: LLFlatListView(p)
, mDirty(true) // to force initial update
+ , mNoFilteredGroupsMsg(p.no_filtered_groups_msg)
+ , mNoGroupsMsg(p.no_groups_msg)
{
// Listen for agent group changes.
gAgent.addListener(this, "new group");
mShowIcons = gSavedSettings.getBOOL("GroupListShowIcons");
setCommitOnSelectionChange(true);
- // TODO: implement context menu
- // display a context menu appropriate for a list of group names
-// setContextMenu(LLScrollListCtrl::MENU_GROUP);
// Set default sort order.
setComparator(&GROUP_COMPARATOR);
@@ -158,6 +159,18 @@ void LLGroupList::refresh()
LLUUID id;
bool have_filter = !mNameFilter.empty();
+ // set no items message depend on filter state & total count of groups
+ if (have_filter)
+ {
+ // groups were filtered
+ setNoItemsCommentText(mNoFilteredGroupsMsg);
+ }
+ else if (0 == count)
+ {
+ // user is not a member of any group
+ setNoItemsCommentText(mNoGroupsMsg);
+ }
+
clear();
for(S32 i = 0; i < count; ++i)
@@ -173,7 +186,8 @@ void LLGroupList::refresh()
sort();
// Add "none" to list at top if filter not set (what's the point of filtering "none"?).
- if (!have_filter)
+ // but only if some real groups exists. EXT-4838
+ if (!have_filter && count > 0)
{
std::string loc_none = LLTrans::getString("GroupsNone");
addNewItem(LLUUID::null, loc_none, LLUUID::null, ADD_TOP);
@@ -273,7 +287,7 @@ bool LLGroupList::onContextMenuItemEnable(const LLSD& userdata)
return gAgent.getGroupID() != selected_group_id;
if (userdata.asString() == "call")
- return LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking();
+ return real_group_selected && LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking();
return real_group_selected;
}
diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h
index f7afe0c0b2..f3ac676edd 100644
--- a/indra/newview/llgrouplist.h
+++ b/indra/newview/llgrouplist.h
@@ -53,6 +53,15 @@ class LLGroupList: public LLFlatListView, public LLOldEvents::LLSimpleListener
public:
struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>
{
+ /**
+ * Contains a message for empty list when user is not a member of any group
+ */
+ Optional<std::string> no_groups_msg;
+
+ /**
+ * Contains a message for empty list when all groups don't match passed filter
+ */
+ Optional<std::string> no_filtered_groups_msg;
Params();
};
@@ -80,6 +89,8 @@ private:
bool mShowIcons;
bool mDirty;
std::string mNameFilter;
+ std::string mNoFilteredGroupsMsg;
+ std::string mNoGroupsMsg;
};
class LLButton;
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 8bd0e520c3..ea5462a3e3 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -677,9 +677,12 @@ void LLGroupMgrGroupData::sendRoleChanges()
break;
}
case RC_UPDATE_ALL:
+ // fall through
case RC_UPDATE_POWERS:
need_power_recalc = true;
+ // fall through
case RC_UPDATE_DATA:
+ // fall through
default:
{
LLGroupRoleData* group_role_data = (*role_it).second;
@@ -762,7 +765,7 @@ void LLGroupMgr::addObserver(LLGroupMgrObserver* observer)
mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer));
}
-void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer)
+void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer)
{
if(group_id.notNull() && observer)
{
@@ -792,7 +795,7 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer)
}
}
-void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer)
+void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupObserver* observer)
{
if(group_id.isNull() || !observer)
{
@@ -835,7 +838,8 @@ static void formatDateString(std::string &date_string)
std::string day = result[2];
// ISO 8601 date format
- date_string = llformat("%02s/%02s/%04s", month.c_str(), day.c_str(), year.c_str());
+ //date_string = llformat("%02s/%02s/%04s", month.c_str(), day.c_str(), year.c_str());
+ date_string = llformat("%04s/%02s/%04s", year.c_str(), month.c_str(), day.c_str());
}
}
@@ -1364,7 +1368,7 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc)
gi->second->mChanged = FALSE;
- // notify LLParticularGroupMgrObserver
+ // notify LLParticularGroupObserver
observer_map_t::iterator obs_it = mParticularObservers.find(group_id);
if(obs_it == mParticularObservers.end())
return;
@@ -1708,17 +1712,21 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
bool start_message = true;
LLMessageSystem* msg = gMessageSystem;
+
+
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
if (!group_datap) return;
for (std::vector<LLUUID>::iterator it = member_ids.begin();
it != member_ids.end(); ++it)
{
+ LLUUID& ejected_member_id = (*it);
+
// Can't use 'eject' to leave a group.
- if ((*it) == gAgent.getID()) continue;
+ if (ejected_member_id == gAgent.getID()) continue;
// Make sure they are in the group, and we need the member data
- LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(*it);
+ LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(ejected_member_id);
if (mit != group_datap->mMembers.end())
{
// Add them to the message
@@ -1734,7 +1742,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
}
msg->nextBlock("EjectData");
- msg->addUUID("EjecteeID",(*it));
+ msg->addUUID("EjecteeID",ejected_member_id);
if (msg->isSendFull())
{
@@ -1742,17 +1750,23 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
start_message = true;
}
+ LLGroupMemberData* member_data = (*mit).second;
+
// Clean up groupmgr
- for (LLGroupMemberData::role_list_t::iterator rit = (*mit).second->roleBegin();
- rit != (*mit).second->roleEnd(); ++rit)
+ for (LLGroupMemberData::role_list_t::iterator rit = member_data->roleBegin();
+ rit != member_data->roleEnd(); ++rit)
{
- if ((*rit).first.notNull())
+ if ((*rit).first.notNull() && (*rit).second!=0)
{
- (*rit).second->removeMember(*it);
+ (*rit).second->removeMember(ejected_member_id);
}
}
- delete (*mit).second;
- group_datap->mMembers.erase(*it);
+
+ group_datap->mMembers.erase(ejected_member_id);
+
+ // member_data was introduced and is used here instead of (*mit).second to avoid crash because of invalid iterator
+ // It becomes invalid after line with erase above. EXT-4778
+ delete member_data;
}
}
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
index 588b4a9034..2c86de8b97 100644
--- a/indra/newview/llgroupmgr.h
+++ b/indra/newview/llgroupmgr.h
@@ -53,10 +53,10 @@ protected:
LLUUID mID;
};
-class LLParticularGroupMgrObserver
+class LLParticularGroupObserver
{
public:
- virtual ~LLParticularGroupMgrObserver(){}
+ virtual ~LLParticularGroupObserver(){}
virtual void changed(const LLUUID& group_id, LLGroupChange gc) = 0;
};
@@ -313,9 +313,9 @@ public:
~LLGroupMgr();
void addObserver(LLGroupMgrObserver* observer);
- void addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer);
+ void addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer);
void removeObserver(LLGroupMgrObserver* observer);
- void removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer);
+ void removeObserver(const LLUUID& group_id, LLParticularGroupObserver* observer);
LLGroupMgrGroupData* getGroupData(const LLUUID& id);
void sendGroupPropertiesRequest(const LLUUID& group_id);
@@ -374,7 +374,7 @@ private:
typedef std::map<LLUUID, LLGroupMgrGroupData*> group_map_t;
group_map_t mGroups;
- typedef std::set<LLParticularGroupMgrObserver*> observer_set_t;
+ typedef std::set<LLParticularGroupObserver*> observer_set_t;
typedef std::map<LLUUID,observer_set_t> observer_map_t;
observer_map_t mParticularObservers;
};
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 4a18c8640f..098e540678 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -271,6 +271,7 @@ BOOL LLIMFloater::postBuild()
mInputEditor->setCommitOnFocusLost( FALSE );
mInputEditor->setRevertOnEsc( FALSE );
mInputEditor->setReplaceNewlinesWithSpaces( FALSE );
+ mInputEditor->setPassDelete( TRUE );
std::string session_name(LLIMModel::instance().getName(mSessionID));
@@ -407,12 +408,7 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
}
}
- if (floater_container)
- {
- //selecting the panel resets a chiclet's counter
- floater_container->selectFloater(floater);
- floater_container->setVisible(TRUE);
- }
+ floater->openFloater(floater->getKey());
}
else
{
@@ -446,7 +442,7 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
void LLIMFloater::getAllowedRect(LLRect& rect)
{
- rect = gViewerWindow->getWorldViewRectRaw();
+ rect = gViewerWindow->getWorldViewRectScaled();
static S32 right_padding = 0;
if (right_padding == 0)
{
@@ -493,11 +489,19 @@ void LLIMFloater::setVisible(BOOL visible)
channel->redrawToasts();
}
- if (visible && mChatHistory && mInputEditor)
+ BOOL is_minimized = visible && isChatMultiTab()
+ ? LLIMFloaterContainer::getInstance()->isMinimized()
+ : !visible;
+
+ if (!is_minimized && mChatHistory && mInputEditor)
{
//only if floater was construced and initialized from xml
updateMessages();
- mInputEditor->setFocus(TRUE);
+ //prevent steal focus when IM opened in multitab mode
+ if (!isChatMultiTab())
+ {
+ mInputEditor->setFocus(TRUE);
+ }
}
if(!visible)
@@ -515,8 +519,18 @@ BOOL LLIMFloater::getVisible()
if(isChatMultiTab())
{
LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
- // Tabbed IM window is "visible" when we minimize it.
- return !im_container->isMinimized() && im_container->getVisible();
+
+ // Treat inactive floater as invisible.
+ bool is_active = im_container->getActiveFloater() == this;
+
+ //torn off floater is always inactive
+ if (!is_active && getHost() != im_container)
+ {
+ return LLTransientDockableFloater::getVisible();
+ }
+
+ // getVisible() returns TRUE when Tabbed IM window is minimized.
+ return is_active && !im_container->isMinimized() && im_container->getVisible();
}
else
{
@@ -572,6 +586,12 @@ void LLIMFloater::sessionInitReplyReceived(const LLUUID& im_session_id)
setKey(im_session_id);
mControlPanel->setSessionId(im_session_id);
}
+
+ // updating "Call" button from group control panel here to enable it without placing into draw() (EXT-4796)
+ if(gAgent.isInGroup(im_session_id))
+ {
+ mControlPanel->updateCallButton();
+ }
//*TODO here we should remove "starting session..." warning message if we added it in postBuild() (IB)
@@ -613,12 +633,14 @@ void LLIMFloater::updateMessages()
LLUUID from_id = msg["from_id"].asUUID();
std::string from = msg["from"].asString();
std::string message = msg["message"].asString();
+ bool is_history = msg["is_history"].asBoolean();
LLChat chat;
chat.mFromID = from_id;
chat.mSessionID = mSessionID;
chat.mFromName = from;
chat.mTimeStr = time;
+ chat.mChatStyle = is_history ? CHAT_STYLE_HISTORY : chat.mChatStyle;
// process offer notification
if (msg.has("notification_id"))
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 784c2eaaf9..db7998fe6e 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -37,7 +37,9 @@
#include "llfloaterreg.h"
#include "llimview.h"
#include "llavatariconctrl.h"
+#include "llgroupiconctrl.h"
#include "llagent.h"
+#include "lltransientfloatermgr.h"
//
// LLIMFloaterContainer
@@ -46,12 +48,17 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
: LLMultiFloater(seed)
{
mAutoResize = FALSE;
+ LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::IM, this);
}
-LLIMFloaterContainer::~LLIMFloaterContainer(){}
+LLIMFloaterContainer::~LLIMFloaterContainer()
+{
+ LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this);
+}
BOOL LLIMFloaterContainer::postBuild()
{
+ LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1));
// Do not call base postBuild to not connect to mCloseSignal to not close all floaters via Close button
// mTabContainer will be initialized in LLMultiFloater::addChild()
return TRUE;
@@ -89,81 +96,50 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
LLUUID session_id = floaterp->getKey();
- if(gAgent.isInGroup(session_id))
+ LLIconCtrl* icon = 0;
+
+ if(gAgent.isInGroup(session_id, TRUE))
{
+ LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLGroupIconCtrl>();
+ icon_params.group_id = session_id;
+ icon = LLUICtrlFactory::instance().createWidget<LLGroupIconCtrl>(icon_params);
+
mSessions[session_id] = floaterp;
- LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(session_id);
- LLGroupMgr* gm = LLGroupMgr::getInstance();
- gm->addObserver(session_id, this);
floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id));
-
- if (group_data && group_data->mInsigniaID.notNull())
- {
- mTabContainer->setTabImage(get_ptr_in_map(mSessions, session_id), group_data->mInsigniaID);
- }
- else
- {
- mTabContainer->setTabImage(floaterp, "Generic_Group");
- gm->sendGroupPropertiesRequest(session_id);
- }
}
else
{
LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id);
- LLAvatarPropertiesProcessor& app = LLAvatarPropertiesProcessor::instance();
- app.addObserver(avatar_id, this);
- floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id));
- mSessions[avatar_id] = floaterp;
- LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(avatar_id);
- if(icon_id_ptr && icon_id_ptr->notNull())
- {
- mTabContainer->setTabImage(floaterp, *icon_id_ptr);
- }
- else
- {
- mTabContainer->setTabImage(floaterp, "Generic_Person");
- app.sendAvatarPropertiesRequest(avatar_id);
- }
+ LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLAvatarIconCtrl>();
+ icon_params.avatar_id = avatar_id;
+ icon = LLUICtrlFactory::instance().createWidget<LLAvatarIconCtrl>(icon_params);
+
+ mSessions[session_id] = floaterp;
+ floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id));
}
+ mTabContainer->setTabImage(floaterp, icon);
}
-void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorType type)
+void LLIMFloaterContainer::onCloseFloater(LLUUID& id)
{
- if (APT_PROPERTIES == type)
- {
- LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
- if (avatar_data)
- {
- LLUUID avatar_id = avatar_data->avatar_id;
- LLUUID* cached_avatarId = LLAvatarIconIDCache::getInstance()->get(avatar_id);
- if(cached_avatarId && cached_avatarId->notNull() && avatar_data->image_id != *cached_avatarId)
- {
- LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id);
- mTabContainer->setTabImage(get_ptr_in_map(mSessions, avatar_id), avatar_data->image_id);
- }
- }
- }
+ mSessions.erase(id);
}
-void LLIMFloaterContainer::changed(const LLUUID& group_id, LLGroupChange gc)
+void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data)
{
- if (GC_PROPERTIES == gc)
+ LLUUID session_id = data["session_id"].asUUID();
+ LLFloater* floaterp = get_ptr_in_map(mSessions, session_id);
+ LLFloater* current_floater = LLMultiFloater::getActiveFloater();
+
+ if(floaterp && current_floater && floaterp != current_floater)
{
- LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id);
- if (group_data && group_data->mInsigniaID.notNull())
- {
- mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID);
- }
+ if(LLMultiFloater::isFloaterFlashing(floaterp))
+ LLMultiFloater::setFloaterFlashing(floaterp, FALSE);
+ LLMultiFloater::setFloaterFlashing(floaterp, TRUE);
}
}
-void LLIMFloaterContainer::onCloseFloater(LLUUID id)
-{
- LLAvatarPropertiesProcessor::instance().removeObserver(id, this);
- LLGroupMgr::instance().removeObserver(id, this);
-}
-
LLIMFloaterContainer* LLIMFloaterContainer::findInstance()
{
return LLFloaterReg::findTypedInstance<LLIMFloaterContainer>("im_container");
@@ -174,4 +150,18 @@ LLIMFloaterContainer* LLIMFloaterContainer::getInstance()
return LLFloaterReg::getTypedInstance<LLIMFloaterContainer>("im_container");
}
+void LLIMFloaterContainer::setMinimized(BOOL b)
+{
+ if (isMinimized() == b) return;
+
+ LLMultiFloater::setMinimized(b);
+
+ if (isMinimized()) return;
+
+ if (getActiveFloater())
+ {
+ getActiveFloater()->setVisible(TRUE);
+ }
+}
+
// EOF
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index e4a32dbe1d..f6cdc25ebd 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -43,7 +43,7 @@
class LLTabContainer;
-class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLParticularGroupMgrObserver
+class LLIMFloaterContainer : public LLMultiFloater
{
public:
LLIMFloaterContainer(const LLSD& seed);
@@ -51,25 +51,26 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
+ void onCloseFloater(LLUUID& id);
/*virtual*/ void addFloater(LLFloater* floaterp,
BOOL select_added_floater,
LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END);
- void processProperties(void* data, EAvatarProcessorType type);
- void changed(const LLUUID& group_id, LLGroupChange gc);
-
static LLFloater* getCurrentVoiceFloater();
static LLIMFloaterContainer* findInstance();
static LLIMFloaterContainer* getInstance();
+ virtual void setMinimized(BOOL b);
+
private:
- typedef std::map<LLUUID,LLPanel*> avatarID_panel_map_t;
+ typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
avatarID_panel_map_t mSessions;
- void onCloseFloater(LLUUID avatar_id);
+
+ void onNewMessageReceived(const LLSD& data);
};
#endif // LL_LLIMFLOATERCONTAINER_H
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index db6b2041f8..faddffe0fc 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -77,6 +77,9 @@ const static std::string IM_FROM_ID("from_id");
const static std::string NO_SESSION("(IM Session Doesn't Exist)");
const static std::string ADHOC_NAME_SUFFIX(" Conference");
+const static std::string NEARBY_P2P_BY_OTHER("nearby_P2P_by_other");
+const static std::string NEARBY_P2P_BY_AGENT("nearby_P2P_by_agent");
+
std::string LLCallDialogManager::sPreviousSessionlName = "";
LLIMModel::LLIMSession::SType LLCallDialogManager::sPreviousSessionType = LLIMModel::LLIMSession::P2P_SESSION;
std::string LLCallDialogManager::sCurrentSessionlName = "";
@@ -253,12 +256,12 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES
{
case LLVoiceChannel::STATE_CALL_STARTED :
message = other_avatar_name + " " + started_call;
- LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message);
+ LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message);
break;
case LLVoiceChannel::STATE_CONNECTED :
message = you + " " + joined_call;
- LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message);
+ LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message);
default:
break;
}
@@ -269,11 +272,11 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES
{
case LLVoiceChannel::STATE_CALL_STARTED :
message = you + " " + started_call;
- LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message);
+ LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message);
break;
case LLVoiceChannel::STATE_CONNECTED :
message = other_avatar_name + " " + joined_call;
- LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message);
+ LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message);
default:
break;
}
@@ -288,7 +291,7 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES
{
case LLVoiceChannel::STATE_CONNECTED :
message = you + " " + joined_call;
- LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message);
+ LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message);
default:
break;
}
@@ -299,7 +302,7 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES
{
case LLVoiceChannel::STATE_CALL_STARTED :
message = you + " " + started_call;
- LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message);
+ LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message);
break;
default:
break;
@@ -354,7 +357,7 @@ void LLIMModel::LLIMSession::sessionInitReplyReceived(const LLUUID& new_session_
}
}
-void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time)
+void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time, const bool is_history)
{
LLSD message;
message["from"] = from;
@@ -362,6 +365,7 @@ void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& f
message["message"] = utf8_text;
message["time"] = time;
message["index"] = (LLSD::Integer)mMsgs.size();
+ message["is_history"] = is_history;
mMsgs.push_front(message);
@@ -390,7 +394,7 @@ void LLIMModel::LLIMSession::addMessagesFromHistory(const std::list<LLSD>& histo
std::string timestamp = msg[IM_TIME];
std::string text = msg[IM_TEXT];
- addMessage(from, from_id, text, timestamp);
+ addMessage(from, from_id, text, timestamp, true);
it++;
}
@@ -404,11 +408,11 @@ void LLIMModel::LLIMSession::chatFromLogFile(LLLogChat::ELogLineType type, const
if (type == LLLogChat::LOG_LINE)
{
- self->addMessage("", LLSD(), msg["message"].asString(), "");
+ self->addMessage("", LLSD(), msg["message"].asString(), "", true);
}
else if (type == LLLogChat::LOG_LLSD)
{
- self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString());
+ self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString(), true);
}
}
@@ -1372,7 +1376,7 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)
}
sSession = session;
- sSession->mVoiceChannel->setStateChangedCallback(boost::bind(LLCallDialogManager::onVoiceChannelStateChanged, _1, _2, _3));
+ sSession->mVoiceChannel->setStateChangedCallback(boost::bind(LLCallDialogManager::onVoiceChannelStateChanged, _1, _2, _3, _4));
if(sCurrentSessionlName != session->mName)
{
sPreviousSessionlName = sCurrentSessionlName;
@@ -1403,7 +1407,7 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)
}
-void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction)
+void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction, bool ended_by_agent)
{
LLSD mCallDialogPayload;
LLOutgoingCallDialog* ocd = NULL;
@@ -1423,6 +1427,7 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat
mCallDialogPayload["state"] = new_state;
mCallDialogPayload["disconnected_channel_name"] = sSession->mName;
mCallDialogPayload["session_type"] = sSession->mSessionType;
+ mCallDialogPayload["ended_by_agent"] = ended_by_agent;
switch(new_state)
{
@@ -1517,6 +1522,15 @@ void LLCallDialog::draw()
}
}
+// virtual
+void LLCallDialog::onOpen(const LLSD& key)
+{
+ LLDockableFloater::onOpen(key);
+
+ // it should be over the all floaters. EXT-5116
+ gFloaterView->bringToFront(this);
+}
+
void LLCallDialog::setIcon(const LLSD& session_id, const LLSD& participant_id)
{
// *NOTE: 12/28/2009: check avaline calls: LLVoiceClient::isParticipantAvatar returns false for them
@@ -1609,7 +1623,16 @@ void LLOutgoingCallDialog::show(const LLSD& key)
channel_name = LLTextUtil::formatPhoneNumber(channel_name);
}
childSetTextArg("nearby", "[VOICE_CHANNEL_NAME]", channel_name);
- childSetTextArg("nearby_P2P", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString());
+ childSetTextArg("nearby_P2P_by_other", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString());
+
+ // skipping "You will now be reconnected to nearby" in notification when call is ended by disabling voice,
+ // so no reconnection to nearby chat happens (EXT-4397)
+ bool voice_works = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
+ std::string reconnect_nearby = voice_works ? LLTrans::getString("reconnect_nearby") : std::string();
+ childSetTextArg("nearby", "[RECONNECT_NEARBY]", reconnect_nearby);
+
+ const std::string& nearby_str = mPayload["ended_by_agent"] ? NEARBY_P2P_BY_AGENT : NEARBY_P2P_BY_OTHER;
+ childSetTextArg(nearby_str, "[RECONNECT_NEARBY]", reconnect_nearby);
}
std::string callee_name = mPayload["session_name"].asString();
@@ -1643,6 +1666,7 @@ void LLOutgoingCallDialog::show(const LLSD& key)
{
case LLVoiceChannel::STATE_CALL_STARTED :
getChild<LLTextBox>("calling")->setVisible(true);
+ getChild<LLButton>("Cancel")->setVisible(true);
if(show_oldchannel)
{
getChild<LLTextBox>("leaving")->setVisible(true);
@@ -1664,7 +1688,8 @@ void LLOutgoingCallDialog::show(const LLSD& key)
case LLVoiceChannel::STATE_HUNG_UP :
if (mPayload["session_type"].asInteger() == LLIMModel::LLIMSession::P2P_SESSION)
{
- getChild<LLTextBox>("nearby_P2P")->setVisible(true);
+ const std::string& nearby_str = mPayload["ended_by_agent"] ? NEARBY_P2P_BY_AGENT : NEARBY_P2P_BY_OTHER;
+ getChild<LLTextBox>(nearby_str)->setVisible(true);
}
else
{
@@ -1683,7 +1708,8 @@ void LLOutgoingCallDialog::hideAllText()
getChild<LLTextBox>("calling")->setVisible(false);
getChild<LLTextBox>("leaving")->setVisible(false);
getChild<LLTextBox>("connecting")->setVisible(false);
- getChild<LLTextBox>("nearby_P2P")->setVisible(false);
+ getChild<LLTextBox>("nearby_P2P_by_other")->setVisible(false);
+ getChild<LLTextBox>("nearby_P2P_by_agent")->setVisible(false);
getChild<LLTextBox>("nearby")->setVisible(false);
getChild<LLTextBox>("noanswer")->setVisible(false);
}
@@ -1709,6 +1735,8 @@ BOOL LLOutgoingCallDialog::postBuild()
childSetAction("Cancel", onCancel, this);
+ setCanDrag(FALSE);
+
return success;
}
@@ -1808,6 +1836,8 @@ BOOL LLIncomingCallDialog::postBuild()
mLifetimeTimer.stop();
}
+ setCanDrag(FALSE);
+
return TRUE;
}
@@ -2985,48 +3015,6 @@ public:
}
};
-LLCallInfoDialog::LLCallInfoDialog(const LLSD& payload) : LLCallDialog(payload)
-{
-}
-
-BOOL LLCallInfoDialog::postBuild()
-{
- // init notification's lifetime
- std::istringstream ss( getString("lifetime") );
- if (!(ss >> mLifetime))
- {
- mLifetime = DEFAULT_LIFETIME;
- }
- return LLCallDialog::postBuild();
-}
-
-void LLCallInfoDialog::onOpen(const LLSD& key)
-{
- if(key.has("msg"))
- {
- std::string msg = key["msg"];
- getChild<LLTextBox>("msg")->setValue(msg);
- }
-
- mLifetimeTimer.start();
-}
-
-void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args)
-{
- LLUIString message = LLTrans::getString(status_name);
- message.setArgs(args);
-
- LLSD payload;
- payload["msg"] = message;
- LLFloater* inst = LLFloaterReg::findInstance("call_info");
-
- // avoid recreate instance with the same message
- if (inst == NULL || message.getString() != inst->getChild<LLTextBox>("msg")->getValue())
- {
- LLFloaterReg::showInstance("call_info", payload);
- }
-}
-
LLHTTPRegistration<LLViewerChatterBoxSessionStartReply>
gHTTPRegistrationMessageChatterboxsessionstartreply(
"/message/ChatterBoxSessionStartReply");
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index b573490fa3..e7404074e0 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -66,7 +66,7 @@ public:
void sessionInitReplyReceived(const LLUUID& new_session_id);
void addMessagesFromHistory(const std::list<LLSD>& history);
- void addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time);
+ void addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time, const bool is_history = false);
void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction);
/** @deprecated */
@@ -452,7 +452,7 @@ public:
static void initClass();
static void onVoiceChannelChanged(const LLUUID &session_id);
- static void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction);
+ static void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction, bool ended_by_agent);
protected:
static std::string sPreviousSessionlName;
@@ -472,6 +472,7 @@ public:
// check timer state
/*virtual*/ void draw();
+ /*virtual*/ void onOpen(const LLSD& key);
protected:
// lifetime timer for a notification
@@ -530,16 +531,6 @@ private:
void hideAllText();
};
-class LLCallInfoDialog : public LLCallDialog
-{
-public:
- LLCallInfoDialog(const LLSD& payload);
- /*virtual*/ BOOL postBuild();
- /*virtual*/ void onOpen(const LLSD& key);
-
- static void show(const std::string& status_name, const LLSD& args);
-};
-
// Globals
extern LLIMMgr *gIMMgr;
diff --git a/indra/newview/llinspect.cpp b/indra/newview/llinspect.cpp
index c7b8db9635..81cfce53b1 100644
--- a/indra/newview/llinspect.cpp
+++ b/indra/newview/llinspect.cpp
@@ -32,8 +32,10 @@
#include "llinspect.h"
+#include "lltooltip.h"
#include "llcontrol.h" // LLCachedControl
#include "llui.h" // LLUI::sSettingsGroups
+#include "llviewermenu.h"
LLInspect::LLInspect(const LLSD& key)
: LLFloater(key),
@@ -103,8 +105,51 @@ BOOL LLInspect::handleHover(S32 x, S32 y, MASK mask)
return LLView::handleHover(x, y, mask);
}
+BOOL LLInspect::handleToolTip(S32 x, S32 y, MASK mask)
+{
+ BOOL handled = FALSE;
+
+
+ //delegate handling of tooltip to the hovered child
+ LLView* child_handler = childFromPoint(x,y);
+ if (child_handler && !child_handler->getToolTip().empty())// show tooltip if a view has non-empty tooltip message
+ {
+ //build LLInspector params to get correct tooltip setting, etc. background image
+ LLInspector::Params params;
+ params.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
+ params.message = child_handler->getToolTip();
+ //set up delay if there is no visible tooltip at this moment
+ params.delay_time = LLToolTipMgr::instance().toolTipVisible() ? 0.f : LLUI::sSettingGroups["config"]->getF32( "ToolTipDelay" );
+ LLToolTipMgr::instance().show(params);
+ handled = TRUE;
+ }
+ return handled;
+}
// virtual
void LLInspect::onMouseLeave(S32 x, S32 y, MASK mask)
{
mOpenTimer.unpause();
}
+
+bool LLInspect::childHasVisiblePopupMenu()
+{
+ // Child text-box may spawn a pop-up menu, if mouse is over the menu, Inspector
+ // will hide(which is not expected).
+ // This is an attempt to find out if child control has spawned a menu.
+
+ LLView* child_menu = gMenuHolder->getVisibleMenu();
+ if(child_menu)
+ {
+ LLRect floater_rc = calcScreenRect();
+ LLRect menu_screen_rc = child_menu->calcScreenRect();
+ S32 mx, my;
+ LLUI::getMousePositionScreen(&mx, &my);
+
+ // This works wrong if we spawn a menu near Inspector and menu overlaps Inspector.
+ if(floater_rc.overlaps(menu_screen_rc) && menu_screen_rc.pointInRect(mx, my))
+ {
+ return true;
+ }
+ }
+ return false;
+}
diff --git a/indra/newview/llinspect.h b/indra/newview/llinspect.h
index a1cb9cd71c..6d994a8d7c 100644
--- a/indra/newview/llinspect.h
+++ b/indra/newview/llinspect.h
@@ -47,6 +47,7 @@ public:
/*virtual*/ void draw();
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
+ /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
/// Start open animation
@@ -56,6 +57,9 @@ public:
/*virtual*/ void onFocusLost();
protected:
+
+ virtual bool childHasVisiblePopupMenu();
+
LLFrameTimer mCloseTimer;
LLFrameTimer mOpenTimer;
};
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 3a41aebf28..14bc4376fe 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -51,6 +51,7 @@
#include "llviewermenu.h"
#include "llvoiceclient.h"
#include "llviewerobjectlist.h"
+#include "lltransientfloatermgr.h"
// Linden libraries
#include "llfloater.h"
@@ -71,7 +72,7 @@ class LLFetchAvatarData;
// Avatar Inspector, a small information window used when clicking
// on avatar names in the 2D UI and in the ambient inspector widget for
// the 3D world.
-class LLInspectAvatar : public LLInspect
+class LLInspectAvatar : public LLInspect, LLTransientFloater
{
friend class LLFloaterReg;
@@ -97,6 +98,8 @@ public:
// gear menu is not open
/* virtual */ void onMouseLeave(S32 x, S32 y, MASK mask);
+ virtual LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::GLOBAL; }
+
private:
// Make network requests for all the data to display in this view.
// Used on construction and if avatar id changes.
@@ -120,6 +123,7 @@ private:
void onClickTeleport();
void onClickInviteToGroup();
void onClickPay();
+ void onClickShare();
void onToggleMute();
void onClickReport();
void onClickFreeze();
@@ -213,6 +217,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)
mCommitCallbackRegistrar.add("InspectAvatar.Teleport", boost::bind(&LLInspectAvatar::onClickTeleport, this));
mCommitCallbackRegistrar.add("InspectAvatar.InviteToGroup", boost::bind(&LLInspectAvatar::onClickInviteToGroup, this));
mCommitCallbackRegistrar.add("InspectAvatar.Pay", boost::bind(&LLInspectAvatar::onClickPay, this));
+ mCommitCallbackRegistrar.add("InspectAvatar.Share", boost::bind(&LLInspectAvatar::onClickShare, this));
mCommitCallbackRegistrar.add("InspectAvatar.ToggleMute", boost::bind(&LLInspectAvatar::onToggleMute, this));
mCommitCallbackRegistrar.add("InspectAvatar.Freeze",
boost::bind(&LLInspectAvatar::onClickFreeze, this));
@@ -235,6 +240,9 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)
// can't make the properties request until the widgets are constructed
// as it might return immediately, so do it in postBuild.
+
+ LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
+ LLTransientFloater::init(this);
}
LLInspectAvatar::~LLInspectAvatar()
@@ -243,6 +251,8 @@ LLInspectAvatar::~LLInspectAvatar()
// view
delete mPropertiesRequest;
mPropertiesRequest = NULL;
+
+ LLTransientFloaterMgr::getInstance()->removeControlView(this);
}
/*virtual*/
@@ -393,11 +403,18 @@ void LLInspectAvatar::onMouseLeave(S32 x, S32 y, MASK mask)
{
LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu();
LLMenuGL* gear_menu_self = getChild<LLMenuButton>("gear_self_btn")->getMenu();
- if ( !(gear_menu && gear_menu->getVisible()) &&
- !(gear_menu_self && gear_menu_self->getVisible()))
+ if ( gear_menu && gear_menu->getVisible() &&
+ gear_menu_self && gear_menu_self->getVisible() )
{
- mOpenTimer.unpause();
+ return;
}
+
+ if(childHasVisiblePopupMenu())
+ {
+ return;
+ }
+
+ mOpenTimer.unpause();
}
void LLInspectAvatar::updateModeratorPanel()
@@ -671,6 +688,12 @@ void LLInspectAvatar::onClickPay()
closeFloater();
}
+void LLInspectAvatar::onClickShare()
+{
+ LLAvatarActions::share(mAvatarID);
+ closeFloater();
+}
+
void LLInspectAvatar::onToggleMute()
{
LLMute mute(mAvatarID, mAvatarName, LLMute::AGENT);
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index dd313c528d..91cbbbf430 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -51,6 +51,7 @@
#include "llmenubutton.h"
#include "llresmgr.h" // getMonetaryString
#include "llsafehandle.h"
+#include "llsidetray.h"
#include "lltextbox.h" // for description truncation
#include "lltrans.h"
#include "llui.h" // positionViewNearMouse()
@@ -575,10 +576,17 @@ void LLInspectObject::updateSecureBrowsing()
void LLInspectObject::onMouseLeave(S32 x, S32 y, MASK mask)
{
LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu();
- if ( !(gear_menu && gear_menu->getVisible()))
+ if ( gear_menu && gear_menu->getVisible() )
{
- mOpenTimer.unpause();
+ return;
+ }
+
+ if(childHasVisiblePopupMenu())
+ {
+ return;
}
+
+ mOpenTimer.unpause();
}
void LLInspectObject::onClickBuy()
@@ -636,8 +644,9 @@ void LLInspectObject::onClickOpen()
void LLInspectObject::onClickMoreInfo()
{
- // *TODO: Show object info side panel, once that is implemented.
- LLNotificationsUtil::add("ClickUnimplemented");
+ LLSD key;
+ key["task"] = "task";
+ LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
closeFloater();
}
diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp
index 898f1cd9ac..66e4a1bf66 100644
--- a/indra/newview/llinspectremoteobject.cpp
+++ b/indra/newview/llinspectremoteobject.cpp
@@ -167,7 +167,8 @@ void LLInspectRemoteObject::nameCallback(const LLUUID& id, const std::string& fi
void LLInspectRemoteObject::update()
{
// show the object name as the inspector's title
- getChild<LLUICtrl>("object_name")->setValue(mName);
+ // (don't hyperlink URLs in object names)
+ getChild<LLUICtrl>("object_name")->setValue("<nolink>" + mName + "</nolink>");
// show the object's owner - click it to show profile
std::string owner = mOwner;
@@ -192,7 +193,7 @@ void LLInspectRemoteObject::update()
std::string url;
if (! mSLurl.empty())
{
- std::string url = "secondlife:///app/teleport/" + mSLurl;
+ url = "secondlife:///app/teleport/" + mSLurl;
}
getChild<LLUICtrl>("object_slurl")->setValue(url);
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index e04d3ec5a0..d0513c35ce 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -174,17 +174,21 @@ time_t LLInvFVBridge::getCreationDate() const
}
// Can be destroyed (or moved to trash)
-BOOL LLInvFVBridge::isItemRemovable()
+BOOL LLInvFVBridge::isItemRemovable() const
{
const LLInventoryModel* model = getInventoryModel();
if(!model)
{
return FALSE;
}
+
+ // Can't delete an item that's in the library.
if(!model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID()))
{
return FALSE;
}
+
+ // Disable delete from COF folder; have users explicitly choose "detach/take off".
if (LLAppearanceManager::instance().getIsProtectedCOFItem(mUUID))
{
return FALSE;
@@ -289,12 +293,27 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
LLMessageSystem* msg = gMessageSystem;
const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
LLViewerInventoryItem* item = NULL;
- LLViewerInventoryCategory* cat = NULL;
std::vector<LLUUID> move_ids;
LLInventoryModel::update_map_t update;
bool start_new_message = true;
S32 count = batch.count();
S32 i;
+
+ // first, hide any 'preview' floaters that correspond to the items
+ // being deleted.
+ for(i = 0; i < count; ++i)
+ {
+ bridge = (LLInvFVBridge*)(batch.get(i));
+ if(!bridge || !bridge->isItemRemovable()) continue;
+ item = (LLViewerInventoryItem*)model->getItem(bridge->getUUID());
+ if(item)
+ {
+ LLPreview::hide(item->getUUID());
+ }
+ }
+
+ // do the inventory move to trash
+
for(i = 0; i < count; ++i)
{
bridge = (LLInvFVBridge*)(batch.get(i));
@@ -304,7 +323,6 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
{
if(item->getParentUUID() == trash_id) continue;
move_ids.push_back(item->getUUID());
- LLPreview::hide(item->getUUID());
--update[item->getParentUUID()];
++update[trash_id];
if(start_new_message)
@@ -336,11 +354,12 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
gInventory.accountForUpdate(update);
update.clear();
}
+
for(i = 0; i < count; ++i)
{
bridge = (LLInvFVBridge*)(batch.get(i));
if(!bridge || !bridge->isItemRemovable()) continue;
- cat = (LLViewerInventoryCategory*)model->getCategory(bridge->getUUID());
+ LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)model->getCategory(bridge->getUUID());
if(cat)
{
if(cat->getParentUUID() == trash_id) continue;
@@ -461,11 +480,15 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
}
void hide_context_entries(LLMenuGL& menu,
- const std::vector<std::string> &entries_to_show,
- const std::vector<std::string> &disabled_entries)
+ const menuentry_vec_t &entries_to_show,
+ const menuentry_vec_t &disabled_entries)
{
const LLView::child_list_t *list = menu.getChildList();
+ // For removing double separators or leading separator. Start at true so that
+ // if the first element is a separator, it will not be shown.
+ BOOL is_previous_entry_separator = TRUE;
+
LLView::child_list_t::const_iterator itor;
for (itor = list->begin(); itor != list->end(); ++itor)
{
@@ -480,7 +503,7 @@ void hide_context_entries(LLMenuGL& menu,
bool found = false;
- std::vector<std::string>::const_iterator itor2;
+ menuentry_vec_t::const_iterator itor2;
for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2)
{
if (*itor2 == name)
@@ -488,6 +511,17 @@ void hide_context_entries(LLMenuGL& menu,
found = true;
}
}
+
+ // Don't allow multiple separators in a row (e.g. such as if there are no items
+ // between two separators).
+ if (found)
+ {
+ const BOOL is_entry_separator = (dynamic_cast<LLMenuItemSeparatorGL *>(*itor) != NULL);
+ if (is_entry_separator && is_previous_entry_separator)
+ found = false;
+ is_previous_entry_separator = is_entry_separator;
+ }
+
if (!found)
{
(*itor)->setVisible(FALSE);
@@ -508,8 +542,8 @@ void hide_context_entries(LLMenuGL& menu,
// Helper for commonly-used entries
void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
- std::vector<std::string> &items,
- std::vector<std::string> &disabled_items, U32 flags)
+ menuentry_vec_t &items,
+ menuentry_vec_t &disabled_items, U32 flags)
{
const LLInventoryObject *obj = getInventoryObject();
@@ -565,8 +599,12 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
}
}
- items.push_back(std::string("Paste"));
- if (!isClipboardPasteable() || (flags & FIRST_SELECTED_ITEM) == 0)
+ // Don't allow items to be pasted directly into the COF.
+ if (!isCOFFolder())
+ {
+ items.push_back(std::string("Paste"));
+ }
+ if (!isClipboardPasteable() || ((flags & FIRST_SELECTED_ITEM) == 0))
{
disabled_items.push_back(std::string("Paste"));
}
@@ -582,16 +620,7 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
items.push_back(std::string("Paste Separator"));
- if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID))
- {
- items.push_back(std::string("Remove Link"));
- }
-
- items.push_back(std::string("Delete"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Delete"));
- }
+ addDeleteContextMenuOptions(items, disabled_items);
// If multiple items are selected, disable properties (if it exists).
if ((flags & FIRST_SELECTED_ITEM) == 0)
@@ -603,16 +632,11 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
lldebugs << "LLInvFVBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
+ if(isItemInTrash())
{
- items.push_back(std::string("PurgeItem"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("PurgeItem"));
- }
- items.push_back(std::string("RestoreItem"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
@@ -624,6 +648,53 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
hide_context_entries(menu, items, disabled_items);
}
+void LLInvFVBridge::addTrashContextMenuOptions(menuentry_vec_t &items,
+ menuentry_vec_t &disabled_items)
+{
+ const LLInventoryObject *obj = getInventoryObject();
+ if (obj && obj->getIsLinkType())
+ {
+ items.push_back(std::string("Find Original"));
+ if (isLinkedObjectMissing())
+ {
+ disabled_items.push_back(std::string("Find Original"));
+ }
+ }
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+ items.push_back(std::string("Restore Item"));
+}
+
+void LLInvFVBridge::addDeleteContextMenuOptions(menuentry_vec_t &items,
+ menuentry_vec_t &disabled_items)
+{
+ // Don't allow delete as a direct option from COF folder.
+ if (isCOFFolder())
+ {
+ return;
+ }
+
+ const LLInventoryObject *obj = getInventoryObject();
+
+ // "Remove link" and "Delete" are the same operation.
+ if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID))
+ {
+ items.push_back(std::string("Remove Link"));
+ }
+ else
+ {
+ items.push_back(std::string("Delete"));
+ }
+
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Delete"));
+ }
+}
+
// *TODO: remove this
BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
{
@@ -670,7 +741,7 @@ LLInventoryModel* LLInvFVBridge::getInventoryModel() const
return panel ? panel->getModel() : NULL;
}
-BOOL LLInvFVBridge::isInTrash() const
+BOOL LLInvFVBridge::isItemInTrash() const
{
LLInventoryModel* model = getInventoryModel();
if(!model) return FALSE;
@@ -680,7 +751,7 @@ BOOL LLInvFVBridge::isInTrash() const
BOOL LLInvFVBridge::isLinkedObjectInTrash() const
{
- if (isInTrash()) return TRUE;
+ if (isItemInTrash()) return TRUE;
const LLInventoryObject *obj = getInventoryObject();
if (obj && obj->getIsLinkType())
@@ -731,7 +802,7 @@ void LLInvFVBridge::changeItemParent(LLInventoryModel* model,
const LLUUID& new_parent_id,
BOOL restamp)
{
- if(item->getParentUUID() != new_parent_id)
+ if (item->getParentUUID() != new_parent_id)
{
LLInventoryModel::update_list_t update;
LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1);
@@ -1057,6 +1128,9 @@ void LLItemBridge::restoreItem()
void LLItemBridge::restoreToWorld()
{
+ //Similar functionality to the drag and drop rez logic
+ bool remove_from_inventory = false;
+
LLViewerInventoryItem* itemp = (LLViewerInventoryItem*)getItem();
if (itemp)
{
@@ -1069,23 +1143,20 @@ void LLItemBridge::restoreToWorld()
msg->nextBlockFast(_PREHASH_InventoryData);
itemp->packMessage(msg);
msg->sendReliable(gAgent.getRegion()->getHost());
- }
- //Similar functionality to the drag and drop rez logic
- BOOL remove_from_inventory = FALSE;
-
- //remove local inventory copy, sim will deal with permissions and removing the item
- //from the actual inventory if its a no-copy etc
- if(!itemp->getPermissions().allowCopyBy(gAgent.getID()))
- {
- remove_from_inventory = TRUE;
- }
-
- // Check if it's in the trash. (again similar to the normal rez logic)
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id))
- {
- remove_from_inventory = TRUE;
+ //remove local inventory copy, sim will deal with permissions and removing the item
+ //from the actual inventory if its a no-copy etc
+ if(!itemp->getPermissions().allowCopyBy(gAgent.getID()))
+ {
+ remove_from_inventory = true;
+ }
+
+ // Check if it's in the trash. (again similar to the normal rez logic)
+ const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id))
+ {
+ remove_from_inventory = true;
+ }
}
if(remove_from_inventory)
@@ -1412,7 +1483,7 @@ public:
};
// Can be destroyed (or moved to trash)
-BOOL LLFolderBridge::isItemRemovable()
+BOOL LLFolderBridge::isItemRemovable() const
{
LLInventoryModel* model = getInventoryModel();
if(!model)
@@ -1471,7 +1542,7 @@ BOOL LLFolderBridge::isUpToDate() const
BOOL LLFolderBridge::isItemCopyable() const
{
- return TRUE;
+ return FALSE;
}
BOOL LLFolderBridge::copyToClipboard() const
@@ -1854,7 +1925,7 @@ bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat,
// - links to attachments
// - links to gestures
// - links to ensemble folders
- LLViewerInventoryItem *linked_item = ((LLViewerInventoryItem*)item)->getLinkedItem(); // BAP - safe?
+ LLViewerInventoryItem *linked_item = ((LLViewerInventoryItem*)item)->getLinkedItem();
if (linked_item)
{
LLAssetType::EType type = linked_item->getType();
@@ -1865,7 +1936,7 @@ bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat,
}
else
{
- LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory(); // BAP - safe?
+ LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory();
// BAP remove AT_NONE support after ensembles are fully working?
return (linked_category &&
((linked_category->getPreferredType() == LLFolderType::FT_NONE) ||
@@ -2176,7 +2247,10 @@ void LLFolderBridge::determineFolderType()
{
LLInventoryModel* model = getInventoryModel();
LLViewerInventoryCategory* category = model->getCategory(mUUID);
- category->determineFolderType();
+ if (category)
+ {
+ category->determineFolderType();
+ }
}
}
@@ -2373,7 +2447,12 @@ void LLFolderBridge::pasteFromClipboard()
{
// move_inventory_item() is not enough,
//we have to update inventory locally too
- changeItemParent(model, dynamic_cast<LLViewerInventoryItem*>(item), parent_id, FALSE);
+ LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item);
+ llassert(viitem);
+ if (viitem)
+ {
+ changeItemParent(model, viitem, parent_id, FALSE);
+ }
}
else
{
@@ -2439,17 +2518,19 @@ void LLFolderBridge::staticFolderOptionsMenu()
void LLFolderBridge::folderOptionsMenu()
{
- std::vector<std::string> disabled_items;
+ menuentry_vec_t disabled_items;
LLInventoryModel* model = getInventoryModel();
if(!model) return;
const LLInventoryCategory* category = model->getCategory(mUUID);
+ if(!category) return;
+
LLFolderType::EType type = category->getPreferredType();
- const bool is_system_folder = category && LLFolderType::lookupIsProtectedType(type);
+ const bool is_system_folder = LLFolderType::lookupIsProtectedType(type);
// BAP change once we're no longer treating regular categories as ensembles.
- const bool is_ensemble = category && (type == LLFolderType::FT_NONE ||
- LLFolderType::lookupIsEnsembleType(type));
+ const bool is_ensemble = (type == LLFolderType::FT_NONE ||
+ LLFolderType::lookupIsEnsembleType(type));
// calling card related functionality for folders.
@@ -2457,7 +2538,7 @@ void LLFolderBridge::folderOptionsMenu()
if (is_sidepanel)
{
mItems.push_back("Rename");
- mItems.push_back("Delete");
+ addDeleteContextMenuOptions(mItems, disabled_items);
}
// Only enable calling-card related options for non-system folders.
@@ -2572,7 +2653,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
lldebugs << "LLFolderBridge::buildContextMenu()" << llendl;
-// std::vector<std::string> disabled_items;
+// menuentry_vec_t disabled_items;
LLInventoryModel* model = getInventoryModel();
if(!model) return;
const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
@@ -2589,17 +2670,11 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// This is the trash.
mItems.push_back(std::string("Empty Trash"));
}
- else if(model->isObjectDescendentOf(mUUID, trash_id))
+ else if(isItemInTrash())
{
// This is a folder in the trash.
mItems.clear(); // clear any items that used to exist
- mItems.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- mDisabledItems.push_back(std::string("Purge Item"));
- }
-
- mItems.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(mItems, mDisabledItems);
}
else if(isAgentInventory()) // do not allow creating in library
{
@@ -2617,24 +2692,27 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
mItems.push_back(std::string("New Gesture"));
mItems.push_back(std::string("New Clothes"));
mItems.push_back(std::string("New Body Parts"));
- mItems.push_back(std::string("Change Type"));
- LLViewerInventoryCategory *cat = getCategory();
+ // Changing folder types is just a debug feature; this is fairly unsupported
+ // and can lead to unexpected behavior if enabled.
+#if !LL_RELEASE_FOR_DOWNLOAD
+ mItems.push_back(std::string("Change Type"));
+ const LLViewerInventoryCategory *cat = getCategory();
if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
{
mDisabledItems.push_back(std::string("Change Type"));
}
-
+#endif
getClipboardEntries(false, mItems, mDisabledItems, flags);
}
else
{
// Want some but not all of the items from getClipboardEntries for outfits.
- if (cat && cat->getPreferredType()==LLFolderType::FT_OUTFIT)
+ if (cat && (cat->getPreferredType() == LLFolderType::FT_OUTFIT))
{
mItems.push_back(std::string("Rename"));
- mItems.push_back(std::string("Delete"));
+ addDeleteContextMenuOptions(mItems, mDisabledItems);
// EXT-4030: disallow deletion of currently worn outfit
const LLViewerInventoryItem *base_outfit_link = LLAppearanceManager::instance().getBaseOutfitLink();
if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory()))
@@ -2884,8 +2962,6 @@ void LLFolderBridge::modifyOutfit(BOOL append)
LLViewerInventoryCategory* cat = getCategory();
if(!cat) return;
- // BAP - was:
- // wear_inventory_category_on_avatar( cat, append );
LLAppearanceManager::instance().wearInventoryCategory( cat, FALSE, append );
}
@@ -2949,7 +3025,6 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
LLViewerObject* object = NULL;
if(LLToolDragAndDrop::SOURCE_AGENT == source)
{
-
BOOL is_movable = TRUE;
switch( inv_item->getActualType() )
{
@@ -2961,11 +3036,18 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
}
const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
+ const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
- BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
- BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
+ const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
+ const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
+ const BOOL move_is_outof_current_outfit = LLAppearanceManager::instance().getIsInCOF(inv_item->getUUID());
+ // Can't explicitly drag things out of the COF.
+ if (move_is_outof_current_outfit)
+ {
+ is_movable = FALSE;
+ }
+
if(is_movable && move_is_into_trash)
{
is_movable = inv_item->getIsLinkType() || !get_is_item_worn(inv_item->getUUID());
@@ -3203,17 +3285,11 @@ bool LLTextureBridge::canSaveTexture(void)
void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
lldebugs << "LLTextureBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
@@ -3296,18 +3372,12 @@ void LLSoundBridge::openSoundPreview(void* which)
void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
lldebugs << "LLSoundBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
- if(isInTrash())
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
@@ -3344,19 +3414,13 @@ LLUIImagePtr LLLandmarkBridge::getIcon() const
void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
lldebugs << "LLLandmarkBridge::buildContextMenu()" << llendl;
- if(isInTrash())
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
@@ -3570,18 +3634,12 @@ void LLCallingCardBridge::openItem()
void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
lldebugs << "LLCallingCardBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
- if(isInTrash())
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
@@ -3592,9 +3650,13 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
LLInventoryItem* item = getItem();
BOOL good_card = (item
- && (LLUUID::null != item->getCreatorUUID())
- && (item->getCreatorUUID() != gAgent.getID()));
- BOOL user_online = (LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()));
+ && (LLUUID::null != item->getCreatorUUID())
+ && (item->getCreatorUUID() != gAgent.getID()));
+ BOOL user_online = FALSE;
+ if (item)
+ {
+ user_online = (LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()));
+ }
items.push_back(std::string("Send Instant Message Separator"));
items.push_back(std::string("Send Instant Message"));
items.push_back(std::string("Offer Teleport..."));
@@ -3773,6 +3835,26 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
gInventory.updateItem(item);
gInventory.notifyObservers();
}
+ else if("play" == action)
+ {
+ if(!LLGestureManager::instance().isGestureActive(mUUID))
+ {
+ // we need to inform server about gesture activating to be consistent with LLPreviewGesture and LLGestureComboList.
+ BOOL inform_server = TRUE;
+ BOOL deactivate_similar = FALSE;
+ LLGestureManager::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID));
+ LLViewerInventoryItem* item = gInventory.getItem(mUUID);
+ llassert(item);
+ if (item)
+ {
+ LLGestureManager::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar);
+ }
+ }
+ else
+ {
+ playGesture(mUUID);
+ }
+ }
else LLItemBridge::performAction(folder, model, action);
}
@@ -3821,17 +3903,11 @@ BOOL LLGestureBridge::removeItem()
void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
lldebugs << "LLGestureBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
@@ -3858,6 +3934,20 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
hide_context_entries(menu, items, disabled_items);
}
+// static
+void LLGestureBridge::playGesture(const LLUUID& item_id)
+{
+ if (LLGestureManager::instance().isGesturePlaying(item_id))
+ {
+ LLGestureManager::instance().stopGesture(item_id);
+ }
+ else
+ {
+ LLGestureManager::instance().playGesture(item_id);
+ }
+}
+
+
// +=================================================+
// | LLAnimationBridge |
// +=================================================+
@@ -3869,19 +3959,13 @@ LLUIImagePtr LLAnimationBridge::getIcon() const
void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
lldebugs << "LLAnimationBridge::buildContextMenu()" << llendl;
- if(isInTrash())
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
@@ -4007,12 +4091,13 @@ void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model
gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
gMessageSystem->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
gMessageSystem->sendReliable( gAgent.getRegion()->getHost());
- }
- // this object might have been selected, so let the selection manager know it's gone now
- LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID());
- if (found_obj)
- {
- LLSelectMgr::getInstance()->remove(found_obj);
+
+ // this object might have been selected, so let the selection manager know it's gone now
+ LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID());
+ if (found_obj)
+ {
+ LLSelectMgr::getInstance()->remove(found_obj);
+ }
}
}
else LLItemBridge::performAction(folder, model, action);
@@ -4150,17 +4235,11 @@ static LLNotificationFunctorRegistration confirm_replace_attachment_rez_reg("Rep
void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
@@ -4186,9 +4265,10 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
if( get_is_item_worn( mUUID ) )
{
+ items.push_back(std::string("Attach Separator"));
items.push_back(std::string("Detach From Yourself"));
}
- else if (!isInTrash() && !isLinkedObjectInTrash() && !isLinkedObjectMissing())
+ else if (!isItemInTrash() && !isLinkedObjectInTrash() && !isLinkedObjectMissing())
{
items.push_back(std::string("Attach Separator"));
items.push_back(std::string("Object Wear"));
@@ -4526,7 +4606,7 @@ void LLWearableBridge::openItem()
LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
}
/*
- if( isInTrash() )
+ if( isItemInTrash() )
{
LLNotificationsUtil::add("CannotWearTrash");
}
@@ -4566,17 +4646,11 @@ void LLWearableBridge::openItem()
void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
lldebugs << "LLWearableBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{ // FWIW, it looks like SUPPRESS_OPEN_ITEM is not set anywhere
@@ -4634,6 +4708,7 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
case LLAssetType::AT_CLOTHING:
items.push_back(std::string("Take Off"));
+ // Fallthrough since clothing and bodypart share wear options
case LLAssetType::AT_BODYPART:
if (get_is_item_worn(item->getUUID()))
{
@@ -4883,8 +4958,12 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
}
// Find and remove this item from the COF.
+ // FIXME 2.1 - call removeCOFItemLinks in llappearancemgr instead.
LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(item_id, LLAppearanceManager::instance().getCOF());
- llassert(items.size() == 1); // Should always have one and only one item linked to this in the COF.
+ if (items.size() != 1)
+ {
+ llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl;
+ }
for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
iter != items.end();
++iter)
@@ -4920,7 +4999,10 @@ void LLWearableBridge::removeAllClothesFromAvatar()
// Find and remove this item from the COF.
LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(
item_id, LLAppearanceManager::instance().getCOF());
- llassert(items.size() == 1); // Should always have one and only one item linked to this in the COF.
+ if (items.size() != 1)
+ {
+ llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl;
+ }
for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
iter != items.end();
++iter)
@@ -5027,12 +5109,18 @@ void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
//static
void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
{
- LLAssetType::EType asset_type = model->getItem(uuid)->getType();
- LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
- if(action)
+ llassert(model);
+ LLViewerInventoryItem* item = model->getItem(uuid);
+ llassert(item);
+ if (item)
{
- action->doIt();
- delete action;
+ LLAssetType::EType asset_type = item->getType();
+ LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
+ if(action)
+ {
+ action->doIt();
+ delete action;
+ }
}
}
@@ -5162,7 +5250,7 @@ void LLLSLTextBridgeAction::doIt()
}
-BOOL LLWearableBridgeAction::isInTrash() const
+BOOL LLWearableBridgeAction::isItemInTrash() const
{
if(!mModel) return FALSE;
const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH);
@@ -5210,7 +5298,7 @@ void LLWearableBridgeAction::wearOnAvatar()
//virtual
void LLWearableBridgeAction::doIt()
{
- if(isInTrash())
+ if(isItemInTrash())
{
LLNotificationsUtil::add("CannotWearTrash");
}
@@ -5269,30 +5357,20 @@ void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
// *TODO: Translate
lldebugs << "LLLink::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
items.push_back(std::string("Find Original"));
disabled_items.push_back(std::string("Find Original"));
- if(isInTrash())
+ if(isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
items.push_back(std::string("Properties"));
- items.push_back(std::string("Delete"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Delete"));
- }
+ addDeleteContextMenuOptions(items, disabled_items);
}
hide_context_entries(menu, items, disabled_items);
}
@@ -5323,27 +5401,17 @@ void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
// *TODO: Translate
lldebugs << "LLLink::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
- if(isInTrash())
+ if (isItemInTrash())
{
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
+ addTrashContextMenuOptions(items, disabled_items);
}
else
{
items.push_back(std::string("Find Original"));
- items.push_back(std::string("Delete"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Delete"));
- }
+ addDeleteContextMenuOptions(items, disabled_items);
}
hide_context_entries(menu, items, disabled_items);
}
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index eeb8246b11..32504091cb 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -107,13 +107,15 @@ struct LLAttachmentRezAction
S32 mAttachPt;
};
+typedef std::vector<std::string> menuentry_vec_t;
+
const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type);
void hide_context_entries(LLMenuGL& menu,
- const std::vector<std::string> &entries_to_show,
- const std::vector<std::string> &disabled_entries);
+ const menuentry_vec_t &entries_to_show,
+ const menuentry_vec_t &disabled_entries);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInvFVBridge (& it's derived classes)
+// Class LLInvFVBridge (& its derived classes)
//
// Short for Inventory-Folder-View-Bridge. This is an
// implementation class to be able to view inventory items.
@@ -158,8 +160,10 @@ public:
virtual void showProperties();
virtual BOOL isItemRenameable() const { return TRUE; }
//virtual BOOL renameItem(const std::string& new_name) {}
- virtual BOOL isItemRemovable();
+ virtual BOOL isItemRemovable() const;
virtual BOOL isItemMovable() const;
+ virtual BOOL isItemInTrash() const;
+
//virtual BOOL removeItem() = 0;
virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch);
virtual void move(LLFolderViewEventListener* new_parent_bridge) {}
@@ -170,8 +174,8 @@ public:
virtual BOOL isClipboardPasteableAsLink() const;
virtual void pasteFromClipboard() {}
virtual void pasteLinkFromClipboard() {}
- void getClipboardEntries(bool show_asset_id, std::vector<std::string> &items,
- std::vector<std::string> &disabled_items, U32 flags);
+ void getClipboardEntries(bool show_asset_id, menuentry_vec_t &items,
+ menuentry_vec_t &disabled_items, U32 flags);
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const;
virtual BOOL dragOrDrop(MASK mask, BOOL drop,
@@ -185,13 +189,21 @@ public:
// Allow context menus to be customized for side panel.
bool isInOutfitsSidePanel() const;
+ //--------------------------------------------------------------------
+ // Convenience functions for adding various common menu options.
+ //--------------------------------------------------------------------
+protected:
+ virtual void addTrashContextMenuOptions(menuentry_vec_t &items,
+ menuentry_vec_t &disabled_items);
+ virtual void addDeleteContextMenuOptions(menuentry_vec_t &items,
+ menuentry_vec_t &disabled_items);
+
protected:
LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid);
LLInventoryObject* getInventoryObject() const;
LLInventoryModel* getInventoryModel() const;
- BOOL isInTrash() const;
BOOL isLinkedObjectInTrash() const; // Is this obj or its baseobj in the trash?
BOOL isLinkedObjectMissing() const; // Is this a linked obj whose baseobj is not in inventory?
@@ -306,7 +318,7 @@ public:
EDragAndDropType cargo_type,
void* cargo_data);
- virtual BOOL isItemRemovable();
+ virtual BOOL isItemRemovable() const;
virtual BOOL isItemMovable() const ;
virtual BOOL isUpToDate() const;
virtual BOOL isItemCopyable() const;
@@ -359,8 +371,8 @@ private:
BOOL mCallingCards;
BOOL mWearables;
LLMenuGL* mMenu;
- std::vector<std::string> mItems;
- std::vector<std::string> mDisabledItems;
+ menuentry_vec_t mItems;
+ menuentry_vec_t mDisabledItems;
};
// DEPRECATED
@@ -491,6 +503,8 @@ public:
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
+ static void playGesture(const LLUUID& item_id);
+
protected:
LLGestureBridge(LLInventoryPanel* inventory, const LLUUID& uuid)
: LLItemBridge(inventory, uuid) {}
@@ -784,7 +798,7 @@ protected:
LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
- BOOL isInTrash() const;
+ BOOL isItemInTrash() const;
// return true if the item is in agent inventory. if false, it
// must be lost or in the inventory library.
BOOL isAgentInventory() const;
@@ -812,7 +826,7 @@ void teleport_via_landmark(const LLUUID& asset_id);
// Utility function to hide all entries except those in the list
void hide_context_entries(LLMenuGL& menu,
- const std::vector<std::string> &entries_to_show,
- const std::vector<std::string> &disabled_entries);
+ const menuentry_vec_t &entries_to_show,
+ const menuentry_vec_t &disabled_entries);
#endif // LL_LLINVENTORYBRIDGE_H
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 33623539e9..3553137f53 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -195,6 +195,62 @@ void LLOpenFoldersWithSelection::doFolder(LLFolderViewFolder* folder)
}
}
+static void assign_clothing_bodypart_icon(EInventoryIcon &idx, U32 attachment_point)
+{
+ const EWearableType wearable_type = EWearableType(LLInventoryItem::II_FLAGS_WEARABLES_MASK & attachment_point);
+ switch(wearable_type)
+ {
+ case WT_SHAPE:
+ idx = BODYPART_SHAPE_ICON_NAME;
+ break;
+ case WT_SKIN:
+ idx = BODYPART_SKIN_ICON_NAME;
+ break;
+ case WT_HAIR:
+ idx = BODYPART_HAIR_ICON_NAME;
+ break;
+ case WT_EYES:
+ idx = BODYPART_EYES_ICON_NAME;
+ break;
+ case WT_SHIRT:
+ idx = CLOTHING_SHIRT_ICON_NAME;
+ break;
+ case WT_PANTS:
+ idx = CLOTHING_PANTS_ICON_NAME;
+ break;
+ case WT_SHOES:
+ idx = CLOTHING_SHOES_ICON_NAME;
+ break;
+ case WT_SOCKS:
+ idx = CLOTHING_SOCKS_ICON_NAME;
+ break;
+ case WT_JACKET:
+ idx = CLOTHING_JACKET_ICON_NAME;
+ break;
+ case WT_GLOVES:
+ idx = CLOTHING_GLOVES_ICON_NAME;
+ break;
+ case WT_UNDERSHIRT:
+ idx = CLOTHING_UNDERSHIRT_ICON_NAME;
+ break;
+ case WT_UNDERPANTS:
+ idx = CLOTHING_UNDERPANTS_ICON_NAME;
+ break;
+ case WT_SKIRT:
+ idx = CLOTHING_SKIRT_ICON_NAME;
+ break;
+ case WT_ALPHA:
+ idx = CLOTHING_ALPHA_ICON_NAME;
+ break;
+ case WT_TATTOO:
+ idx = CLOTHING_TATTOO_ICON_NAME;
+ break;
+ default:
+ break;
+ }
+}
+
+
const std::string& get_item_icon_name(LLAssetType::EType asset_type,
LLInventoryType::EType inventory_type,
U32 attachment_point,
@@ -249,62 +305,11 @@ const std::string& get_item_icon_name(LLAssetType::EType asset_type,
break;
case LLAssetType::AT_CLOTHING:
idx = CLOTHING_ICON_NAME;
- case LLAssetType::AT_BODYPART :
- if(LLAssetType::AT_BODYPART == asset_type)
- {
- idx = BODYPART_ICON_NAME;
- }
- switch(LLInventoryItem::II_FLAGS_WEARABLES_MASK & attachment_point)
- {
- case WT_SHAPE:
- idx = BODYPART_SHAPE_ICON_NAME;
- break;
- case WT_SKIN:
- idx = BODYPART_SKIN_ICON_NAME;
- break;
- case WT_HAIR:
- idx = BODYPART_HAIR_ICON_NAME;
- break;
- case WT_EYES:
- idx = BODYPART_EYES_ICON_NAME;
- break;
- case WT_SHIRT:
- idx = CLOTHING_SHIRT_ICON_NAME;
- break;
- case WT_PANTS:
- idx = CLOTHING_PANTS_ICON_NAME;
- break;
- case WT_SHOES:
- idx = CLOTHING_SHOES_ICON_NAME;
- break;
- case WT_SOCKS:
- idx = CLOTHING_SOCKS_ICON_NAME;
- break;
- case WT_JACKET:
- idx = CLOTHING_JACKET_ICON_NAME;
- break;
- case WT_GLOVES:
- idx = CLOTHING_GLOVES_ICON_NAME;
- break;
- case WT_UNDERSHIRT:
- idx = CLOTHING_UNDERSHIRT_ICON_NAME;
- break;
- case WT_UNDERPANTS:
- idx = CLOTHING_UNDERPANTS_ICON_NAME;
- break;
- case WT_SKIRT:
- idx = CLOTHING_SKIRT_ICON_NAME;
- break;
- case WT_ALPHA:
- idx = CLOTHING_ALPHA_ICON_NAME;
- break;
- case WT_TATTOO:
- idx = CLOTHING_TATTOO_ICON_NAME;
- break;
- default:
- // no-op, go with choice above
- break;
- }
+ assign_clothing_bodypart_icon(idx, attachment_point);
+ break;
+ case LLAssetType::AT_BODYPART:
+ idx = BODYPART_ICON_NAME;
+ assign_clothing_bodypart_icon(idx, attachment_point);
break;
case LLAssetType::AT_NOTECARD:
idx = NOTECARD_ICON_NAME;
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index bdf1ebddac..326f2a5577 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -142,105 +142,6 @@ bool LLCanCache::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
return rv;
}
-/*
-This namespace contains a functionality to remove LM prefixes were used to store sort order of
-Favorite Landmarks in landmarks' names.
-Once being in Favorites folder LM inventory Item has such prefix.
-Due to another solution is implemented in EXT-3985 these prefixes should be removed.
-
-*NOTE: It will be unnecessary after the first successful session in viewer 2.0.
-Can be removed before public release.
-
-Implementation details:
-At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and
-updates them on the viewer and server sides.
-Also it calls fetching agent's inventory to process not yet loaded landmarks too.
-If fetching is successfully done it will store special per-agent empty file-marker
-in the user temporary folder (where cached inventory is loaded) while caching agent's inventory.
-After that in will not affect the viewer until cached marker is removed.
-*/
-namespace LMSortPrefix
-{
- bool cleanup_done = false;
- const std::string getMarkerPath()
- {
- std::string path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, gAgentID.asString()));
- std::string marker_filename = llformat("%s-lm_prefix_marker", path.c_str());
-
- return marker_filename;
- }
- bool wasClean()
- {
- static bool was_clean = false;
- static bool already_init = false;
- if (already_init) return was_clean;
-
- already_init = true;
- std::string path_to_marker = getMarkerPath();
- was_clean = LLFile::isfile(path_to_marker);
-
- return was_clean;
- }
-
- void setLandmarksWereCleaned()
- {
- if (cleanup_done)
- {
- std::string path_to_marker = getMarkerPath();
- LLFILE* file = LLFile::fopen(path_to_marker, "w");
- if(!file)
- {
- llwarns << "unable to save marker that LM prefixes were removed: " << path_to_marker << llendl;
- return;
- }
-
- fclose(file);
- }
- }
-
- void removePrefix(LLPointer<LLViewerInventoryItem> inv_item)
- {
- if (wasClean())
- {
- LL_INFOS_ONCE("") << "Inventory was cleaned for this avatar. Patch can be removed." << LL_ENDL;
- return;
- }
-
- if (LLInventoryType::IT_LANDMARK != inv_item->getInventoryType()) return;
-
- std::string old_name = inv_item->getName();
-
- S32 sort_field = -1;
- std::string display_name;
- BOOL exists = LLViewerInventoryItem::extractSortFieldAndDisplayName(old_name, &sort_field, &display_name);
- if (exists && sort_field != -1)
- {
- llinfos << "Removing Landmark sort field and separator for: " << old_name << " | " << inv_item->getUUID() << llendl;
- LLUUID parent_uuid = inv_item->getParentUUID();
- if (gInventory.getCategory(parent_uuid))
- {
- llinfos << "parent folder is: " << gInventory.getCategory(parent_uuid)->getName() << llendl;
- }
-
-
- // mark item completed to avoid error while copying and updating server
- inv_item->setComplete(TRUE);
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(inv_item.get());
- new_item->rename(display_name);
- gInventory.updateItem(new_item);
- new_item->updateServer(FALSE);
-
- gInventory.notifyObservers();
- }
- }
-
- void completeCleanup()
- {
- // background fetch is completed. can save marker
- cleanup_done = true;
- }
-}
-
///----------------------------------------------------------------------------
/// Class LLInventoryModel
///----------------------------------------------------------------------------
@@ -317,7 +218,10 @@ BOOL LLInventoryModel::isObjectDescendentOf(const LLUUID& obj_id,
const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(const LLUUID& obj_id) const
{
const LLInventoryObject* obj = getObject(obj_id);
- const LLUUID& parent_id = obj->getParentUUID();
+
+ // Search up the parent chain until we get to root or an acceptable folder.
+ // This assumes there are no cycles in the tree else we'll get a hang.
+ LLUUID parent_id = obj->getParentUUID();
while (!parent_id.isNull())
{
const LLViewerInventoryCategory *cat = getCategory(parent_id);
@@ -329,6 +233,7 @@ const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(cons
{
return cat;
}
+ parent_id = cat->getParentUUID();
}
return NULL;
}
@@ -1835,8 +1740,6 @@ void LLInventoryModel::stopBackgroundFetch()
gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL);
sBulkFetchCount=0;
sMinTimeBetweenFetches=0.0f;
-
- LMSortPrefix::completeCleanup();
}
}
@@ -1983,13 +1886,6 @@ void LLInventoryModel::cache(
const LLUUID& parent_folder_id,
const LLUUID& agent_id)
{
- if (getRootFolderID() == parent_folder_id)
- {
- // *TODO: mantipov: can be removed before public release, EXT-3985
- //save marker to avoid fetching inventory on future sessions
- LMSortPrefix::setLandmarksWereCleaned();
- }
-
lldebugs << "Caching " << parent_folder_id << " for " << agent_id
<< llendl;
LLViewerInventoryCategory* root_cat = getCategory(parent_folder_id);
@@ -2041,23 +1937,26 @@ void LLInventoryModel::addItem(LLViewerInventoryItem* item)
{
//llinfos << "LLInventoryModel::addItem()" << llendl;
- // This can happen if assettype enums from llassettype.h ever change.
- // For example, there is a known backwards compatibility issue in some viewer prototypes prior to when
- // the AT_LINK enum changed from 23 to 24.
- if ((item->getType() == LLAssetType::AT_NONE)
- || LLAssetType::lookup(item->getType()) == LLAssetType::badLookup())
- {
- llwarns << "Got bad asset type for item [ name: " << item->getName() << " type: " << item->getType() << " inv-type: " << item->getInventoryType() << " ], ignoring." << llendl;
- return;
- }
+ llassert(item);
if(item)
{
+ // This can happen if assettype enums from llassettype.h ever change.
+ // For example, there is a known backwards compatibility issue in some viewer prototypes prior to when
+ // the AT_LINK enum changed from 23 to 24.
+ if ((item->getType() == LLAssetType::AT_NONE)
+ || LLAssetType::lookup(item->getType()) == LLAssetType::badLookup())
+ {
+ llwarns << "Got bad asset type for item [ name: " << item->getName() << " type: " << item->getType() << " inv-type: " << item->getInventoryType() << " ], ignoring." << llendl;
+ return;
+ }
+
// This condition means that we tried to add a link without the baseobj being in memory.
// The item will show up as a broken link.
if (item->getIsBrokenLink())
{
llinfos << "Adding broken link [ name: " << item->getName() << " itemID: " << item->getUUID() << " assetID: " << item->getAssetUUID() << " ) parent: " << item->getParentUUID() << llendl;
}
+
mItemMap[item->getUUID()] = item;
}
}
@@ -2800,28 +2699,6 @@ void LLInventoryModel::buildParentChildMap()
// The inv tree is built.
mIsAgentInvUsable = true;
- {// *TODO: mantipov: can be removed before public release, EXT-3985
- /*
- *HACK: mantipov: to cleanup landmarks were marked with sort index prefix in name.
- Is necessary to be called once per account after EXT-3985 is implemented.
- So, let fetch agent's inventory, processing will be done in processInventoryDescendents()
- Should be removed before public release.
- */
- if (!LMSortPrefix::wasClean())
- {
- cat_array_t cats;
- item_array_t items;
- collectDescendents(agent_inv_root_id, cats, items, INCLUDE_TRASH);
-
- for (item_array_t::const_iterator it= items.begin(); it != items.end(); ++it)
- {
- LMSortPrefix::removePrefix(*it);
- }
-
- gInventory.startBackgroundFetch(agent_inv_root_id);
- }
- }
-
llinfos << "Inventory initialized, notifying observers" << llendl;
addChangedMask(LLInventoryObserver::ALL, LLUUID::null);
notifyObservers();
@@ -3587,10 +3464,6 @@ void LLInventoryModel::processInventoryDescendents(LLMessageSystem* msg,void**)
continue;
}
gInventory.updateItem(titem);
-
- {// *TODO: mantipov: can be removed before public release, EXT-3985
- LMSortPrefix::removePrefix(titem);
- }
}
// set version and descendentcount according to message.
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 12a2c370d2..048ed10886 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -143,6 +143,7 @@ BOOL LLInventoryPanel::postBuild()
addChild(mScroller);
mScroller->addChild(mFolders);
mFolders->setScrollContainer(mScroller);
+ mFolders->addChild(mFolders->mStatusTextBox);
}
// Set up the callbacks from the inventory we're viewing, and then build everything.
@@ -289,8 +290,12 @@ void LLInventoryPanel::modelChanged(U32 mask)
if(bridge)
{ // Clear the display name first, so it gets properly re-built during refresh()
bridge->clearDisplayName();
+
+ view_item->refresh();
+
+ // Set the new tooltip with the new display name.
+ view_item->setToolTip(bridge->getDisplayName());
}
- view_item->refresh();
}
}
@@ -432,7 +437,26 @@ void LLInventoryPanel::initializeViews()
rebuildViewsFor(mStartFolderID);
mViewsInitialized = true;
+
openStartFolderOrMyInventory();
+
+ // Special case for new user login
+ if (gAgent.isFirstLogin())
+ {
+ // Auto open the user's library
+ LLFolderViewFolder* lib_folder = mFolders->getFolderByID(gInventory.getLibraryRootFolderID());
+ if (lib_folder)
+ {
+ lib_folder->setOpen(TRUE);
+ }
+
+ // Auto close the user's my inventory folder
+ LLFolderViewFolder* my_inv_folder = mFolders->getFolderByID(gInventory.getRootFolderID());
+ if (my_inv_folder)
+ {
+ my_inv_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN);
+ }
+ }
}
void LLInventoryPanel::rebuildViewsFor(const LLUUID& id)
@@ -503,6 +527,11 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
{
folderp->setHidden(TRUE);
}
+ const LLViewerInventoryCategory *cat = dynamic_cast<LLViewerInventoryCategory *>(objectp);
+ if (cat && getIsHiddenFolderType(cat->getPreferredType()))
+ {
+ folderp->setHidden(TRUE);
+ }
}
}
else
@@ -534,6 +563,12 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
if (itemp)
{
itemp->addToFolder(parent_folder, mFolders);
+
+ // Don't add children of hidden folders unless this is the panel's root folder.
+ if (itemp->getHidden() && (id != mStartFolderID))
+ {
+ return;
+ }
}
}
@@ -935,3 +970,16 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
return NULL;
}
+
+void LLInventoryPanel::addHideFolderType(LLFolderType::EType folder_type)
+{
+ if (!getIsHiddenFolderType(folder_type))
+ {
+ mHiddenFolderTypes.push_back(folder_type);
+ }
+}
+
+BOOL LLInventoryPanel::getIsHiddenFolderType(LLFolderType::EType folder_type) const
+{
+ return (std::find(mHiddenFolderTypes.begin(), mHiddenFolderTypes.end(), folder_type) != mHiddenFolderTypes.end());
+}
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index ccff795a51..f312b588b9 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -61,6 +61,9 @@ class LLTabContainer;
class LLInventoryPanel : public LLPanel
{
+ //--------------------------------------------------------------------
+ // Data
+ //--------------------------------------------------------------------
public:
static const std::string DEFAULT_SORT_ORDER;
static const std::string RECENTITEMS_SORT_ORDER;
@@ -97,13 +100,16 @@ public:
{}
};
+ //--------------------------------------------------------------------
+ // Initialization
+ //--------------------------------------------------------------------
protected:
LLInventoryPanel(const Params&);
friend class LLUICtrlFactory;
-
public:
virtual ~LLInventoryPanel();
+public:
LLInventoryModel* getModel() { return mInventory; }
BOOL postBuild();
@@ -187,6 +193,16 @@ protected:
const LLInventoryFVBridgeBuilder* mInvFVBridgeBuilder;
//--------------------------------------------------------------------
+ // Hidden folders
+ //--------------------------------------------------------------------
+public:
+ void addHideFolderType(LLFolderType::EType folder_type);
+protected:
+ BOOL getIsHiddenFolderType(LLFolderType::EType folder_type) const;
+private:
+ std::vector<LLFolderType::EType> mHiddenFolderTypes;
+
+ //--------------------------------------------------------------------
// Initialization routines for building up the UI ("views")
//--------------------------------------------------------------------
public:
diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp
index 69eb5fce2f..116d9bc446 100644
--- a/indra/newview/lllocaltextureobject.cpp
+++ b/indra/newview/lllocaltextureobject.cpp
@@ -70,6 +70,7 @@ LLLocalTextureObject::LLLocalTextureObject(const LLLocalTextureObject& lto) :
if (!original_layer)
{
llerrs << "could not clone Local Texture Object: unable to extract texlayer!" << llendl;
+ continue;
}
LLTexLayer* new_layer = new LLTexLayer(*original_layer);
diff --git a/indra/newview/lllocationhistory.h b/indra/newview/lllocationhistory.h
index 5f9976f87a..65f0dd2e1b 100644
--- a/indra/newview/lllocationhistory.h
+++ b/indra/newview/lllocationhistory.h
@@ -41,11 +41,13 @@
#include <boost/function.hpp>
class LLSD;
-
+/**
+ * This enum is responsible for identifying of history item.
+ */
enum ELocationType {
- TYPED_REGION_SURL//region name or surl
- ,LANDMARK // name of landmark
- ,TELEPORT_HISTORY
+ TYPED_REGION_SLURL//item added after the user had typed a region name or slurl
+ ,LANDMARK // item has been loaded from landmark folder
+ ,TELEPORT_HISTORY // item from session teleport history
};
class LLLocationHistoryItem {
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 0e93e28f2d..f8f9ea7379 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -176,7 +176,9 @@ private:
static LLDefaultChildRegistry::Register<LLLocationInputCtrl> r("location_input");
LLLocationInputCtrl::Params::Params()
-: add_landmark_image_enabled("add_landmark_image_enabled"),
+: icon_maturity_general("icon_maturity_general"),
+ icon_maturity_adult("icon_maturity_adult"),
+ add_landmark_image_enabled("add_landmark_image_enabled"),
add_landmark_image_disabled("add_landmark_image_disabled"),
add_landmark_image_hover("add_landmark_image_hover"),
add_landmark_image_selected("add_landmark_image_selected"),
@@ -185,6 +187,7 @@ LLLocationInputCtrl::Params::Params()
add_landmark_button("add_landmark_button"),
for_sale_button("for_sale_button"),
info_button("info_button"),
+ maturity_icon("maturity_icon"),
voice_icon("voice_icon"),
fly_icon("fly_icon"),
push_icon("push_icon"),
@@ -204,7 +207,9 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
mForSaleBtn(NULL),
mInfoBtn(NULL),
mLandmarkImageOn(NULL),
- mLandmarkImageOff(NULL)
+ mLandmarkImageOff(NULL),
+ mIconMaturityGeneral(NULL),
+ mIconMaturityAdult(NULL)
{
// Lets replace default LLLineEditor with LLLocationLineEditor
// to make needed escaping while copying and cutting url
@@ -227,6 +232,7 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
params.commit_on_focus_lost(false);
params.follows.flags(FOLLOWS_ALL);
mTextEntry = LLUICtrlFactory::create<LLURLLineEditor>(params);
+ mTextEntry->setContextMenu(NULL);
addChild(mTextEntry);
// LLLineEditor is replaced with LLLocationLineEditor
@@ -263,7 +269,20 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
mAddLandmarkBtn = LLUICtrlFactory::create<LLButton>(al_params);
enableAddLandmarkButton(true);
addChild(mAddLandmarkBtn);
-
+
+ if (p.icon_maturity_general())
+ {
+ mIconMaturityGeneral = p.icon_maturity_general;
+ }
+ if (p.icon_maturity_adult())
+ {
+ mIconMaturityAdult = p.icon_maturity_adult;
+ }
+
+ LLIconCtrl::Params maturity_icon = p.maturity_icon;
+ mMaturityIcon = LLUICtrlFactory::create<LLIconCtrl>(maturity_icon);
+ addChild(mMaturityIcon);
+
LLButton::Params for_sale_button = p.for_sale_button;
for_sale_button.tool_tip = LLTrans::getString("LocationCtrlForSaleTooltip");
for_sale_button.click_callback.function(
@@ -339,6 +358,20 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
getTextEntry()->setRightMouseUpCallback(boost::bind(&LLLocationInputCtrl::onTextEditorRightClicked,this,_2,_3,_4));
updateWidgetlayout();
+ // Connecting signal for updating location on "Show Coordinates" setting change.
+ LLControlVariable* coordinates_control = gSavedSettings.getControl("NavBarShowCoordinates").get();
+ if (coordinates_control)
+ {
+ mCoordinatesControlConnection = coordinates_control->getSignal()->connect(boost::bind(&LLLocationInputCtrl::refreshLocation, this));
+ }
+
+ // Connecting signal for updating parcel icons on "Show Parcel Properties" setting change.
+ LLControlVariable* parcel_properties_control = gSavedSettings.getControl("NavBarShowParcelProperties").get();
+ if (parcel_properties_control)
+ {
+ mParcelPropertiesControlConnection = parcel_properties_control->getSignal()->connect(boost::bind(&LLLocationInputCtrl::refreshParcelIcons, this));
+ }
+
// - Make the "Add landmark" button updated when either current parcel gets changed
// or a landmark gets created or removed from the inventory.
// - Update the location string on parcel change.
@@ -372,6 +405,8 @@ LLLocationInputCtrl::~LLLocationInputCtrl()
LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangeObserver);
delete mParcelChangeObserver;
+ mCoordinatesControlConnection.disconnect();
+ mParcelPropertiesControlConnection.disconnect();
mParcelMgrConnection.disconnect();
mLocationHistoryConnection.disconnect();
}
@@ -470,7 +505,10 @@ void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor)
*/
void LLLocationInputCtrl::setText(const LLStringExplicit& text)
{
- mTextEntry->setText(text);
+ if (mTextEntry)
+ {
+ mTextEntry->setText(text);
+ }
mHasAutocompletedText = FALSE;
}
@@ -479,7 +517,9 @@ void LLLocationInputCtrl::setFocus(BOOL b)
LLComboBox::setFocus(b);
if (mTextEntry && b && !mList->getVisible())
+ {
mTextEntry->setFocus(TRUE);
+ }
}
void LLLocationInputCtrl::handleLoginComplete()
@@ -521,6 +561,25 @@ void LLLocationInputCtrl::draw()
LLComboBox::draw();
}
+void LLLocationInputCtrl::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ LLComboBox::reshape(width, height, called_from_parent);
+
+ // Setting cursor to 0 to show the left edge of the text. See EXT-4967.
+ mTextEntry->setCursor(0);
+ if (mTextEntry->hasSelection())
+ {
+ // Deselecting because selection position is changed together with
+ // cursor position change.
+ mTextEntry->deselect();
+ }
+
+ if (isHumanReadableLocationVisible)
+ {
+ positionMaturityIcon();
+ }
+}
+
void LLLocationInputCtrl::onInfoButtonClicked()
{
LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
@@ -605,7 +664,7 @@ void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data)
value["item_type"] = TELEPORT_HISTORY;
value["global_pos"] = result->mGlobalPos.getValue();
std::string region_name = result->mTitle.substr(0, result->mTitle.find(','));
- //TODO*: add Surl to teleportitem or parse region name from title
+ //TODO*: add slurl to teleportitem or parse region name from title
value["tooltip"] = LLSLURL::buildSLURLfromPosGlobal(region_name,
result->mGlobalPos, false);
add(result->getTitle(), value);
@@ -615,6 +674,15 @@ void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data)
_1, filter));
}
}
+ if(mList->isEmpty())
+ {
+ /**
+ * Add a couple of empty items for a better view.
+ * EXT-5194
+ */
+ for(int i = 0; i < NUMBER_OF_EMPTY_ITEMS; i++ )
+ add("", LLSD());
+ }
sortByName();
mList->mouseOverHighlightNthItem(-1); // Clear highlight on the last selected item.
@@ -650,8 +718,8 @@ void LLLocationInputCtrl::refreshLocation()
{
// Is one of our children focused?
if (LLUICtrl::hasFocus() || mButton->hasFocus() || mList->hasFocus() ||
- (mTextEntry && mTextEntry->hasFocus()) || (mAddLandmarkBtn->hasFocus()))
-
+ (mTextEntry && mTextEntry->hasFocus()) ||
+ (mAddLandmarkBtn->hasFocus()))
{
llwarns << "Location input should not be refreshed when having focus" << llendl;
return;
@@ -671,6 +739,34 @@ void LLLocationInputCtrl::refreshLocation()
// store human-readable location to compare it in changeLocationPresentation()
mHumanReadableLocation = location_name;
setText(location_name);
+ isHumanReadableLocationVisible = true;
+
+ // Updating maturity rating icon.
+ LLViewerRegion* region = gAgent.getRegion();
+ if (!region)
+ return;
+
+ U8 sim_access = region->getSimAccess();
+ switch(sim_access)
+ {
+ case SIM_ACCESS_PG:
+ mMaturityIcon->setValue(mIconMaturityGeneral->getName());
+ mMaturityIcon->setVisible(TRUE);
+ break;
+
+ case SIM_ACCESS_ADULT:
+ mMaturityIcon->setValue(mIconMaturityAdult->getName());
+ mMaturityIcon->setVisible(TRUE);
+ break;
+
+ default:
+ mMaturityIcon->setVisible(FALSE);
+ }
+
+ if (mMaturityIcon->getVisible())
+ {
+ positionMaturityIcon();
+ }
}
// returns new right edge
@@ -691,17 +787,20 @@ void LLLocationInputCtrl::refreshParcelIcons()
{
// Our "cursor" moving right to left
S32 x = mAddLandmarkBtn->getRect().mLeft;
-
- static LLUICachedControl<bool> show_properties("NavBarShowParcelProperties", false);
- if (show_properties)
- {
- LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
- LLViewerRegion* agent_region = gAgent.getRegion();
- LLParcel* agent_parcel = vpm->getAgentParcel();
- if (!agent_region || !agent_parcel)
- return;
+ LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
+
+ LLViewerRegion* agent_region = gAgent.getRegion();
+ LLParcel* agent_parcel = vpm->getAgentParcel();
+ if (!agent_region || !agent_parcel)
+ return;
+
+ mForSaleBtn->setVisible(vpm->canAgentBuyParcel(agent_parcel, false));
+ x = layout_widget(mForSaleBtn, x);
+
+ if (gSavedSettings.getBOOL("NavBarShowParcelProperties"))
+ {
LLParcel* current_parcel;
LLViewerRegion* selection_region = vpm->getSelectionRegion();
LLParcel* selected_parcel = vpm->getParcelSelection()->getParcel();
@@ -721,18 +820,14 @@ void LLLocationInputCtrl::refreshParcelIcons()
current_parcel = agent_parcel;
}
- bool allow_buy = vpm->canAgentBuyParcel(current_parcel, false);
- bool allow_voice = agent_region->isVoiceEnabled() && current_parcel->getParcelFlagAllowVoice();
- bool allow_fly = !agent_region->getBlockFly() && current_parcel->getAllowFly();
- bool allow_push = !agent_region->getRestrictPushObject() && !current_parcel->getRestrictPushObject();
- bool allow_build = current_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610.
- bool allow_scripts = !(agent_region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) &&
- !(agent_region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) &&
- current_parcel->getAllowOtherScripts();
- bool allow_damage = agent_region->getAllowDamage() || current_parcel->getAllowDamage();
+ bool allow_voice = vpm->allowAgentVoice(agent_region, current_parcel);
+ bool allow_fly = vpm->allowAgentFly(agent_region, current_parcel);
+ bool allow_push = vpm->allowAgentPush(agent_region, current_parcel);
+ bool allow_build = vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610.
+ bool allow_scripts = vpm->allowAgentScripts(agent_region, current_parcel);
+ bool allow_damage = vpm->allowAgentDamage(agent_region, current_parcel);
// Most icons are "block this ability"
- mForSaleBtn->setVisible(allow_buy);
mParcelIcon[VOICE_ICON]->setVisible( !allow_voice );
mParcelIcon[FLY_ICON]->setVisible( !allow_fly );
mParcelIcon[PUSH_ICON]->setVisible( !allow_push );
@@ -740,11 +835,10 @@ void LLLocationInputCtrl::refreshParcelIcons()
mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
mParcelIcon[DAMAGE_ICON]->setVisible( allow_damage );
mDamageText->setVisible(allow_damage);
-
- x = layout_widget(mForSaleBtn, x);
+
// Padding goes to left of both landmark star and for sale btn
x -= mAddLandmarkHPad;
-
+
// Slide the parcel icons rect from right to left, adjusting rectangles
for (S32 i = 0; i < ICON_COUNT; ++i)
{
@@ -756,18 +850,20 @@ void LLLocationInputCtrl::refreshParcelIcons()
}
else
{
- mForSaleBtn->setVisible(false);
for (S32 i = 0; i < ICON_COUNT; ++i)
{
mParcelIcon[i]->setVisible(false);
}
mDamageText->setVisible(false);
}
-
- S32 left_pad, right_pad;
- mTextEntry->getTextPadding(&left_pad, &right_pad);
- right_pad = mTextEntry->getRect().mRight - x;
- mTextEntry->setTextPadding(left_pad, right_pad);
+
+ if (mTextEntry)
+ {
+ S32 left_pad, right_pad;
+ mTextEntry->getTextPadding(&left_pad, &right_pad);
+ right_pad = mTextEntry->getRect().mRight - x;
+ mTextEntry->setTextPadding(left_pad, right_pad);
+ }
}
void LLLocationInputCtrl::refreshHealth()
@@ -786,6 +882,25 @@ void LLLocationInputCtrl::refreshHealth()
}
}
+void LLLocationInputCtrl::positionMaturityIcon()
+{
+ const LLFontGL* font = mTextEntry->getFont();
+ if (!font)
+ return;
+
+ S32 left_pad, right_pad;
+ mTextEntry->getTextPadding(&left_pad, &right_pad);
+
+ // Calculate the right edge of rendered text + a whitespace.
+ left_pad = left_pad + font->getWidth(mTextEntry->getText()) + font->getWidth(" ");
+
+ LLRect rect = mMaturityIcon->getRect();
+ mMaturityIcon->setRect(rect.setOriginAndSize(left_pad, rect.mBottom, rect.getWidth(), rect.getHeight()));
+
+ // Hide icon if it text area is not width enough to display it, show otherwise.
+ mMaturityIcon->setVisible(rect.mRight < mTextEntry->getRect().getWidth() - right_pad);
+}
+
void LLLocationInputCtrl::rebuildLocationHistory(std::string filter)
{
LLLocationHistory::location_list_t filtered_items;
@@ -808,7 +923,7 @@ void LLLocationInputCtrl::rebuildLocationHistory(std::string filter)
LLSD value;
value["tooltip"] = it->getToolTip();
//location history can contain only typed locations
- value["item_type"] = TYPED_REGION_SURL;
+ value["item_type"] = TYPED_REGION_SLURL;
value["global_pos"] = it->mGlobalPos.getValue();
add(it->getLocation(), value);
}
@@ -886,16 +1001,23 @@ void LLLocationInputCtrl::updateWidgetlayout()
void LLLocationInputCtrl::changeLocationPresentation()
{
- //change location presentation only if user does not select/past anything and
- //human-readable region name is being displayed
+ if (!mTextEntry)
+ return;
+
+ //change location presentation only if user does not select/paste anything and
+ //human-readable region name is being displayed
std::string text = mTextEntry->getText();
LLStringUtil::trim(text);
- if(mTextEntry && !mTextEntry->hasSelection() && text == mHumanReadableLocation )
+ if(!mTextEntry->hasSelection() && text == mHumanReadableLocation)
{
//needs unescaped one
mTextEntry->setText(LLAgentUI::buildSLURL(false));
mTextEntry->selectAll();
- }
+
+ mMaturityIcon->setVisible(FALSE);
+
+ isHumanReadableLocationVisible = false;
+ }
}
void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
@@ -910,7 +1032,6 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
{
gSavedSettings.setBOOL("NavBarShowParcelProperties",
!gSavedSettings.getBOOL("NavBarShowParcelProperties"));
- refreshParcelIcons();
}
else if (item == "landmark")
{
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index a830b33f6f..ee128a5cf7 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -63,7 +63,9 @@ public:
struct Params
: public LLInitParam::Block<Params, LLComboBox::Params>
{
- Optional<LLUIImage*> add_landmark_image_enabled,
+ Optional<LLUIImage*> icon_maturity_general,
+ icon_maturity_adult,
+ add_landmark_image_enabled,
add_landmark_image_disabled,
add_landmark_image_hover,
add_landmark_image_selected;
@@ -72,7 +74,8 @@ public:
Optional<LLButton::Params> add_landmark_button,
for_sale_button,
info_button;
- Optional<LLIconCtrl::Params> voice_icon,
+ Optional<LLIconCtrl::Params> maturity_icon,
+ voice_icon,
fly_icon,
push_icon,
build_icon,
@@ -89,6 +92,7 @@ public:
/*virtual*/ void onFocusReceived();
/*virtual*/ void onFocusLost();
/*virtual*/ void draw();
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
//========================================================================
// LLUICtrl interface
@@ -116,6 +120,13 @@ private:
ICON_COUNT
};
+ /**
+ * This constant holds number of empty dropdown items, which will be displayed instead of doing nothing when the list is empty.
+ * Added due to EXT-5194
+ */
+ static const S32 NUMBER_OF_EMPTY_ITEMS = 3;
+
+
friend class LLUICtrlFactory;
LLLocationInputCtrl(const Params&);
virtual ~LLLocationInputCtrl();
@@ -131,6 +142,7 @@ private:
void refreshParcelIcons();
// Refresh the value in the health percentage text field
void refreshHealth();
+ void positionMaturityIcon();
void rebuildLocationHistory(std::string filter = "");
bool findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter);
@@ -160,7 +172,8 @@ private:
LLButton* mInfoBtn;
S32 mIconHPad; // pad between all icons
S32 mAddLandmarkHPad; // pad to left of landmark star
-
+
+ LLIconCtrl* mMaturityIcon;
LLIconCtrl* mParcelIcon[ICON_COUNT];
LLTextBox* mDamageText;
@@ -168,15 +181,20 @@ private:
LLRemoveLandmarkObserver* mRemoveLandmarkObserver;
LLParcelChangeObserver* mParcelChangeObserver;
+ boost::signals2::connection mCoordinatesControlConnection;
+ boost::signals2::connection mParcelPropertiesControlConnection;
boost::signals2::connection mParcelMgrConnection;
boost::signals2::connection mLocationHistoryConnection;
LLUIImage* mLandmarkImageOn;
LLUIImage* mLandmarkImageOff;
+ LLUIImage* mIconMaturityGeneral;
+ LLUIImage* mIconMaturityAdult;
std::string mAddLandmarkTooltip;
std::string mEditLandmarkTooltip;
// this field holds a human-readable form of the location string, it is needed to be able to compare copy-pated value and real location
std::string mHumanReadableLocation;
+ bool isHumanReadableLocationVisible;
};
#endif
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index dc187bf36c..16b13d9218 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -39,12 +39,17 @@
#include "llviewercontrol.h"
#include "llinstantmessage.h"
+#include "llsingleton.h" // for LLSingleton
#include <boost/algorithm/string/trim.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/regex.hpp>
#include <boost/regex/v4/match_results.hpp>
+#include <boost/date_time/gregorian/gregorian.hpp>
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/date_time/local_time_adjustor.hpp>
+
const S32 LOG_RECALL_SIZE = 2048;
const static std::string IM_TIME("time");
@@ -69,6 +74,8 @@ const static std::string MULTI_LINE_PREFIX(" ");
* Katar Ivercourt is Offline
* [3:00] Katar Ivercourt is Offline
* [2009/11/20 3:01] Corba ProductEngine is Offline
+ *
+ * Note: "You" was used as an avatar names in viewers of previous versions
*/
const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{2}\\]\\s+|\\[\\d{1,2}:\\d{2}\\]\\s+)?(.*)$");
@@ -78,11 +85,96 @@ const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+
*/
const static boost::regex NAME_AND_TEXT("(You:|Second Life:|[^\\s:]+\\s*[:]{1}|\\S+\\s+[^\\s:]+[:]{1})?(\\s*)(.*)");
+//is used to parse complex object names like "Xstreet SL Terminal v2.2.5 st"
+const static std::string NAME_TEXT_DIVIDER(": ");
+
+// is used for timestamps adjusting
+const static char* DATE_FORMAT("%Y/%m/%d %H:%M");
+const static char* TIME_FORMAT("%H:%M");
+
const static int IDX_TIMESTAMP = 1;
const static int IDX_STUFF = 2;
const static int IDX_NAME = 1;
const static int IDX_TEXT = 3;
+using namespace boost::posix_time;
+using namespace boost::gregorian;
+
+class LLLogChatTimeScanner: public LLSingleton<LLLogChatTimeScanner>
+{
+public:
+ LLLogChatTimeScanner()
+ {
+ // Note, date/time facets will be destroyed by string streams
+ mDateStream.imbue(std::locale(mDateStream.getloc(), new date_input_facet(DATE_FORMAT)));
+ mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_facet(TIME_FORMAT)));
+ mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_input_facet(DATE_FORMAT)));
+ }
+
+ date getTodayPacificDate()
+ {
+ typedef boost::date_time::local_adjustor<ptime, -8, no_dst> pst;
+ typedef boost::date_time::local_adjustor<ptime, -7, no_dst> pdt;
+ time_t t_time = time(NULL);
+ ptime p_time = LLStringOps::getPacificDaylightTime()
+ ? pdt::utc_to_local(from_time_t(t_time))
+ : pst::utc_to_local(from_time_t(t_time));
+ struct tm s_tm = to_tm(p_time);
+ return date_from_tm(s_tm);
+ }
+
+ void checkAndCutOffDate(std::string& time_str)
+ {
+ // Cuts off the "%Y/%m/%d" from string for todays timestamps.
+ // Assume that passed string has at least "%H:%M" time format.
+ date log_date(not_a_date_time);
+ date today(getTodayPacificDate());
+
+ // Parse the passed date
+ mDateStream.str(LLStringUtil::null);
+ mDateStream << time_str;
+ mDateStream >> log_date;
+ mDateStream.clear();
+
+ days zero_days(0);
+ days days_alive = today - log_date;
+
+ if ( days_alive == zero_days )
+ {
+ // Yep, today's so strip "%Y/%m/%d" info
+ ptime stripped_time(not_a_date_time);
+
+ mTimeStream.str(LLStringUtil::null);
+ mTimeStream << time_str;
+ mTimeStream >> stripped_time;
+ mTimeStream.clear();
+
+ time_str.clear();
+
+ mTimeStream.str(LLStringUtil::null);
+ mTimeStream << stripped_time;
+ mTimeStream >> time_str;
+ mTimeStream.clear();
+ }
+
+ LL_DEBUGS("LLChatLogParser")
+ << " log_date: "
+ << log_date
+ << " today: "
+ << today
+ << " days alive: "
+ << days_alive
+ << " new time: "
+ << time_str
+ << LL_ENDL;
+ }
+
+
+private:
+ std::stringstream mDateStream;
+ std::stringstream mTimeStream;
+};
+
//static
std::string LLLogChat::makeLogFileName(std::string filename)
{
@@ -138,16 +230,20 @@ void LLLogChat::saveHistory(const std::string& filename,
const LLUUID& from_id,
const std::string& line)
{
- if(!filename.size())
+ std::string tmp_filename = filename;
+ LLStringUtil::trim(tmp_filename);
+ if (tmp_filename.empty())
{
- llinfos << "Filename is Empty!" << llendl;
+ std::string warn = "Chat history filename [" + filename + "] is empty!";
+ llwarning(warn, 666);
+ llassert(tmp_filename.size());
return;
}
-
+
llofstream file (LLLogChat::makeLogFileName(filename), std::ios_base::app);
if (!file.is_open())
{
- llinfos << "Couldn't open chat history log!" << llendl;
+ llwarns << "Couldn't open chat history log! - " + filename << llendl;
return;
}
@@ -156,10 +252,19 @@ void LLLogChat::saveHistory(const std::string& filename,
if (gSavedPerAccountSettings.getBOOL("LogTimestamp"))
item["time"] = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate"));
- item["from"] = from;
item["from_id"] = from_id;
item["message"] = line;
+ //adding "Second Life:" for all system messages to make chat log history parsing more reliable
+ if (from.empty() && from_id.isNull())
+ {
+ item["from"] = SYSTEM_FROM;
+ }
+ else
+ {
+ item["from"] = from;
+ }
+
file << LLChatLogFormatter(item) << std::endl;
file.close();
@@ -359,7 +464,8 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im)
boost::trim(timestamp);
timestamp.erase(0, 1);
timestamp.erase(timestamp.length()-1, 1);
- im[IM_TIME] = timestamp;
+ LLLogChatTimeScanner::instance().checkAndCutOffDate(timestamp);
+ im[IM_TIME] = timestamp;
}
else
{
@@ -394,6 +500,18 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im)
im[IM_FROM_ID] = LLUUID::null;
}
+ //possibly a case of complex object names consisting of 3+ words
+ if (!has_name)
+ {
+ U32 divider_pos = stuff.find(NAME_TEXT_DIVIDER);
+ if (divider_pos != std::string::npos && divider_pos < (stuff.length() - NAME_TEXT_DIVIDER.length()))
+ {
+ im[IM_FROM] = stuff.substr(0, divider_pos);
+ im[IM_TEXT] = stuff.substr(divider_pos + NAME_TEXT_DIVIDER.length());
+ return true;
+ }
+ }
+
if (!has_name)
{
//text is mandatory
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 6fd6958d2e..bf33d8527e 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -542,9 +542,9 @@ void LLMediaCtrl::navigateToLocalPage( const std::string& subdir, const std::str
if (! gDirUtilp->fileExists(expanded_filename))
{
- if (language != "en-us")
+ if (language != "en")
{
- expanded_filename = gDirUtilp->findSkinnedFilename("html", "en-us", filename);
+ expanded_filename = gDirUtilp->findSkinnedFilename("html", "en", filename);
if (! gDirUtilp->fileExists(expanded_filename))
{
llwarns << "File " << subdir << delim << filename_in << "not found" << llendl;
@@ -982,16 +982,20 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
U32 target_type = self->getClickTargetType();
// is there is a target specified for the link?
- if (gSavedSettings.getBOOL("UseExternalBrowser") || target_type == LLPluginClassMedia::TARGET_EXTERNAL)
+ if (target_type == LLPluginClassMedia::TARGET_EXTERNAL ||
+ target_type == LLPluginClassMedia::TARGET_BLANK )
{
- LLSD payload;
- payload["url"] = url;
- payload["target_type"] = LLSD::Integer(target_type);
- LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget);
- }
- else if (target_type == LLPluginClassMedia::TARGET_BLANK)
- {
- clickLinkWithTarget(url, target_type);
+ if (gSavedSettings.getBOOL("UseExternalBrowser"))
+ {
+ LLSD payload;
+ payload["url"] = url;
+ payload["target_type"] = LLSD::Integer(target_type);
+ LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget);
+ }
+ else
+ {
+ clickLinkWithTarget(url, target_type);
+ }
}
else {
const std::string protocol1( "http://" );
@@ -1042,7 +1046,7 @@ bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD
// static
void LLMediaCtrl::clickLinkWithTarget(const std::string& url, const S32& target_type )
{
- if (gSavedSettings.getBOOL("UseExternalBrowser") || target_type == LLPluginClassMedia::TARGET_EXTERNAL)
+ if (target_type == LLPluginClassMedia::TARGET_EXTERNAL)
{
// load target in an external browser
LLWeb::loadURLExternal(url);
diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h
index 75d32e707b..8dd72cb595 100755
--- a/indra/newview/llmediadataclient.h
+++ b/indra/newview/llmediadataclient.h
@@ -37,7 +37,7 @@
#include <queue>
#include "llrefcount.h"
#include "llpointer.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
// Link seam for LLVOVolume
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 4bf2bac649..97e2b5b86e 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -250,6 +250,12 @@ void LLFloaterMove::setSittingMode(BOOL bSitting)
else
{
LLPanelStandStopFlying::clearStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STAND);
+
+ // show "Stop Flying" button if needed. EXT-871
+ if (gAgent.getFlying())
+ {
+ LLPanelStandStopFlying::setStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STOP_FLYING);
+ }
}
enableInstance(!bSitting);
}
@@ -684,10 +690,6 @@ void LLPanelStandStopFlying::onStandButtonClick()
gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);
setFocus(FALSE); // EXT-482
-
- BOOL fly = gAgent.getFlying();
- mStopFlyingButton->setVisible(fly);
- setVisible(fly);
}
void LLPanelStandStopFlying::onStopFlyingButtonClick()
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 8c875c9b63..114fef8712 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -152,6 +152,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
if (avatar_id.notNull())
{
// ...valid avatar id
+
LLScrollListCell* hit_cell = hit_item->getColumn(column_index);
if (hit_cell)
{
@@ -162,8 +163,8 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
localRectToScreen(cell_rect, &sticky_rect);
// Spawn at right side of cell
- LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop + (sticky_rect.getHeight()-16)/2 );
LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small");
+ LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop - (sticky_rect.getHeight() - icon->getHeight())/2 );
// Should we show a group or an avatar inspector?
bool is_group = hit_item->getValue()["is_group"].asBoolean();
@@ -338,8 +339,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,
LLScrollListItem* item = *iter;
if (item->getUUID() == id)
{
- LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0);
- cell = item->getColumn(mNameColumnIndex);
+ LLScrollListCell* cell = item->getColumn(mNameColumnIndex);
if (cell)
{
cell->setValue(fullname);
@@ -355,8 +355,9 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,
void LLNameListCtrl::refreshAll(const LLUUID& id, const std::string& first,
const std::string& last, BOOL is_group)
{
+ LLInstanceTrackerScopedGuard guard;
LLInstanceTracker<LLNameListCtrl>::instance_iter it;
- for (it = beginInstances(); it != endInstances(); ++it)
+ for (it = guard.beginInstances(); it != guard.endInstances(); ++it)
{
LLNameListCtrl& ctrl = *it;
ctrl.refresh(id, first, last, is_group);
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 71dc0f9011..d42e4bc250 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -34,6 +34,8 @@
#include "llnavigationbar.h"
+#include "v2math.h"
+
#include "llregionhandle.h"
#include "llfloaterreg.h"
@@ -181,6 +183,84 @@ void LLTeleportHistoryMenuItem::onMouseLeave(S32 x, S32 y, MASK mask)
mArrowIcon->setVisible(FALSE);
}
+static LLDefaultChildRegistry::Register<LLPullButton> menu_button("pull_button");
+
+LLPullButton::LLPullButton(const LLPullButton::Params& params) :
+ LLButton(params)
+{
+ setDirectionFromName(params.direction);
+}
+boost::signals2::connection LLPullButton::setClickDraggingCallback(const commit_signal_t::slot_type& cb)
+{
+ return mClickDraggingSignal.connect(cb);
+}
+
+/*virtual*/
+void LLPullButton::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+ LLButton::onMouseLeave(x, y, mask);
+
+ if (mMouseDownTimer.getStarted()) //an user have done a mouse down, if the timer started. see LLButton::handleMouseDown for details
+ {
+ const LLVector2 cursor_direction = LLVector2(F32(x), F32(y)) - mLastMouseDown;
+ /* For now cursor_direction points to the direction of mouse movement
+ * Need to decide whether should we fire a signal.
+ * We fire if angle between mDraggingDirection and cursor_direction is less that 45 degree
+ * Note:
+ * 0.5 * F_PI_BY_TWO equals to PI/4 radian that equals to angle of 45 degrees
+ */
+ if (angle_between(mDraggingDirection, cursor_direction) < 0.5 * F_PI_BY_TWO)//call if angle < pi/4
+ {
+ mClickDraggingSignal(this, LLSD());
+ }
+ }
+
+}
+
+/*virtual*/
+BOOL LLPullButton::handleMouseDown(S32 x, S32 y, MASK mask)
+{
+ BOOL handled = LLButton::handleMouseDown(x, y, mask);
+ if (handled)
+ {
+ //if mouse down was handled by button,
+ //capture mouse position to calculate the direction of mouse move after mouseLeave event
+ mLastMouseDown.set(F32(x), F32(y));
+ }
+ return handled;
+}
+
+/*virtual*/
+BOOL LLPullButton::handleMouseUp(S32 x, S32 y, MASK mask)
+{
+ // reset data to get ready for next circle
+ mLastMouseDown.clear();
+ return LLButton::handleMouseUp(x, y, mask);
+}
+/**
+ * this function is setting up dragging direction vector.
+ * Last one is just unit vector. It points to direction of mouse drag that we need to handle
+ */
+void LLPullButton::setDirectionFromName(const std::string& name)
+{
+ if (name == "left")
+ {
+ mDraggingDirection.set(F32(-1), F32(0));
+ }
+ else if (name == "right")
+ {
+ mDraggingDirection.set(F32(0), F32(1));
+ }
+ else if (name == "down")
+ {
+ mDraggingDirection.set(F32(0), F32(-1));
+ }
+ else if (name == "up")
+ {
+ mDraggingDirection.set(F32(0), F32(1));
+ }
+}
+
//-- LNavigationBar ----------------------------------------------------------
/*
@@ -215,8 +295,8 @@ LLNavigationBar::~LLNavigationBar()
BOOL LLNavigationBar::postBuild()
{
- mBtnBack = getChild<LLButton>("back_btn");
- mBtnForward = getChild<LLButton>("forward_btn");
+ mBtnBack = getChild<LLPullButton>("back_btn");
+ mBtnForward = getChild<LLPullButton>("forward_btn");
mBtnHome = getChild<LLButton>("home_btn");
mCmbLocation= getChild<LLLocationInputCtrl>("location_combo");
@@ -224,20 +304,15 @@ BOOL LLNavigationBar::postBuild()
fillSearchComboBox();
- if (!mBtnBack || !mBtnForward || !mBtnHome ||
- !mCmbLocation || !mSearchComboBox)
- {
- llwarns << "Malformed navigation bar" << llendl;
- return FALSE;
- }
-
mBtnBack->setEnabled(FALSE);
mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this));
- mBtnBack->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _2));
-
+ mBtnBack->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this,_1, _2));
+ mBtnBack->setClickDraggingCallback(boost::bind(&LLNavigationBar::showTeleportHistoryMenu, this,_1));
+
mBtnForward->setEnabled(FALSE);
mBtnForward->setClickedCallback(boost::bind(&LLNavigationBar::onForwardButtonClicked, this));
- mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _2));
+ mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _1, _2));
+ mBtnForward->setClickDraggingCallback(boost::bind(&LLNavigationBar::showTeleportHistoryMenu, this,_1));
mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this));
@@ -332,10 +407,10 @@ void LLNavigationBar::onBackButtonClicked()
LLTeleportHistory::getInstance()->goBack();
}
-void LLNavigationBar::onBackOrForwardButtonHeldDown(const LLSD& param)
+void LLNavigationBar::onBackOrForwardButtonHeldDown(LLUICtrl* ctrl, const LLSD& param)
{
if (param["count"].asInteger() == 0)
- showTeleportHistoryMenu();
+ showTeleportHistoryMenu(ctrl);
}
void LLNavigationBar::onForwardButtonClicked()
@@ -374,8 +449,14 @@ void LLNavigationBar::onLocationSelection()
// Will not teleport to empty location.
if (typed_location.empty())
return;
-
+ //get selected item from combobox item
LLSD value = mCmbLocation->getSelectedValue();
+ /* since navbar list support autocompletion it contains several types of item: landmark, teleport hystory item,
+ * typed by user slurl or region name. Let's find out which type of item the user has selected
+ * to make decision about adding this location into typed history. see mSaveToLocationHistory
+ * Note:
+ * Only TYPED_REGION_SLURL item will be added into LLLocationHistory
+ */
if(value.has("item_type"))
{
@@ -405,7 +486,7 @@ void LLNavigationBar::onLocationSelection()
case TELEPORT_HISTORY:
//in case of teleport item was selected, teleport by position too.
- case TYPED_REGION_SURL:
+ case TYPED_REGION_SLURL:
if(value.has("global_pos"))
{
gAgent.teleportViaLocation(LLVector3d(value["global_pos"]));
@@ -417,7 +498,7 @@ void LLNavigationBar::onLocationSelection()
break;
}
}
- //Let's parse surl or region name
+ //Let's parse slurl or region name
std::string region_name;
LLVector3 local_coords(128, 128, 0);
@@ -430,7 +511,17 @@ void LLNavigationBar::onLocationSelection()
local_coords.set(x, y, z);
else
return;
- }else
+ }
+ // we have to do this check after previous, because LLUrlRegistry contains handlers for slurl too
+ //but we need to know whether typed_location is a simple http url.
+ else if (LLUrlRegistry::instance().isUrl(typed_location))
+ {
+ // display http:// URLs in the media browser, or
+ // anything else is sent to the search floater
+ LLWeb::loadURL(typed_location);
+ return;
+ }
+ else
{
// assume that an user has typed the {region name} or possible {region_name, parcel}
region_name = typed_location.substr(0,typed_location.find(','));
@@ -456,7 +547,7 @@ void LLNavigationBar::onTeleportFinished(const LLVector3d& global_agent_pos)
return;
LLLocationHistory* lh = LLLocationHistory::getInstance();
- //TODO*: do we need convert surl into readable format?
+ //TODO*: do we need convert slurl into readable format?
std::string location;
/*NOTE:
* We can't use gAgent.getPositionAgent() in case of local teleport to build location.
@@ -468,7 +559,7 @@ void LLNavigationBar::onTeleportFinished(const LLVector3d& global_agent_pos)
std::string tooltip (LLSLURL::buildSLURLfromPosGlobal(gAgent.getRegion()->getName(), global_agent_pos, false));
LLLocationHistoryItem item (location,
- global_agent_pos, tooltip,TYPED_REGION_SURL);// we can add into history only TYPED location
+ global_agent_pos, tooltip,TYPED_REGION_SLURL);// we can add into history only TYPED location
//Touch it, if it is at list already, add new location otherwise
if ( !lh->touchItem(item) ) {
lh->addItem(item);
@@ -546,20 +637,7 @@ void LLNavigationBar::onRegionNameResponse(
// Invalid location?
if (!region_handle)
{
- // handle any secondlife:// SLapps, or
- // display http:// URLs in the media browser, or
- // anything else is sent to the search floater
- if (LLUrlRegistry::instance().isUrl(typed_location))
- {
- if (! LLURLDispatcher::dispatchFromTextEditor(typed_location))
- {
- LLWeb::loadURL(typed_location);
- }
- }
- else
- {
- invokeSearch(typed_location);
- }
+ invokeSearch(typed_location);
return;
}
@@ -571,7 +649,7 @@ void LLNavigationBar::onRegionNameResponse(
gAgent.teleportViaLocation(global_pos);
}
-void LLNavigationBar::showTeleportHistoryMenu()
+void LLNavigationBar::showTeleportHistoryMenu(LLUICtrl* btn_ctrl)
{
// Don't show the popup if teleport history is empty.
if (LLTeleportHistory::getInstance()->isEmpty())
@@ -585,14 +663,43 @@ void LLNavigationBar::showTeleportHistoryMenu()
if (mTeleportHistoryMenu == NULL)
return;
- // *TODO: why to draw/update anything before showing the menu?
- mTeleportHistoryMenu->buildDrawLabels();
mTeleportHistoryMenu->updateParent(LLMenuGL::sMenuContainer);
const S32 MENU_SPAWN_PAD = -1;
- LLMenuGL::showPopup(mBtnBack, mTeleportHistoryMenu, 0, MENU_SPAWN_PAD);
-
+ LLMenuGL::showPopup(btn_ctrl, mTeleportHistoryMenu, 0, MENU_SPAWN_PAD);
+ LLButton* nav_button = dynamic_cast<LLButton*>(btn_ctrl);
+ if(nav_button)
+ {
+ if(mHistoryMenuConnection.connected())
+ {
+ LL_WARNS("Navgationbar")<<"mHistoryMenuConnection should be disconnected at this moment."<<LL_ENDL;
+ mHistoryMenuConnection.disconnect();
+ }
+ mHistoryMenuConnection = gMenuHolder->setMouseUpCallback(boost::bind(&LLNavigationBar::onNavigationButtonHeldUp, this, nav_button));
+ // pressed state will be update after mouseUp in onBackOrForwardButtonHeldUp();
+ nav_button->setForcePressedState(true);
+ }
// *HACK pass the mouse capturing to the drop-down menu
- gFocusMgr.setMouseCapture( NULL );
+ // it need to let menu handle mouseup event
+ gFocusMgr.setMouseCapture(gMenuHolder);
+}
+/**
+ * Taking into account the HACK above, this callback-function is responsible for correct handling of mouseUp event in case of holding-down the navigation buttons..
+ * We need to process this case separately to update a pressed state of navigation button.
+ */
+void LLNavigationBar::onNavigationButtonHeldUp(LLButton* nav_button)
+{
+ if(nav_button)
+ {
+ nav_button->setForcePressedState(false);
+ }
+ if(gFocusMgr.getMouseCapture() == gMenuHolder)
+ {
+ // we had passed mouseCapture in showTeleportHistoryMenu()
+ // now we MUST release mouseCapture to continue a proper mouseevent workflow.
+ gFocusMgr.setMouseCapture(NULL);
+ }
+ //gMenuHolder is using to display bunch of menus. Disconnect signal to avoid unnecessary calls.
+ mHistoryMenuConnection.disconnect();
}
void LLNavigationBar::handleLoginComplete()
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 9d0687f193..b512f2a79c 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -34,14 +34,56 @@
#define LL_LLNAVIGATIONBAR_H
#include "llpanel.h"
+#include "llbutton.h"
-class LLButton;
class LLLocationInputCtrl;
class LLMenuGL;
class LLSearchEditor;
class LLSearchComboBox;
/**
+ * This button is able to handle click-dragging mouse event.
+ * It has appropriated signal for this event.
+ * Dragging direction can be set from xml attribute called 'direction'
+ *
+ * *TODO: move to llui?
+ */
+
+class LLPullButton: public LLButton
+{
+ LOG_CLASS(LLPullButton);
+
+public:
+ struct Params: public LLInitParam::Block<Params, LLButton::Params>
+ {
+ Optional<std::string> direction; // left, right, down, up
+
+ Params()
+ : direction("direction", "down")
+ {
+ }
+ };
+
+ /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+
+ /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
+
+ /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
+
+ boost::signals2::connection setClickDraggingCallback(const commit_signal_t::slot_type& cb);
+
+protected:
+ friend class LLUICtrlFactory;
+ // convert string name into direction vector
+ void setDirectionFromName(const std::string& name);
+ LLPullButton(const LLPullButton::Params& params);
+
+ commit_signal_t mClickDraggingSignal;
+ LLVector2 mLastMouseDown;
+ LLVector2 mDraggingDirection;
+};
+
+/**
* Web browser-like navigation bar.
*/
class LLNavigationBar
@@ -70,13 +112,14 @@ public:
private:
void rebuildTeleportHistoryMenu();
- void showTeleportHistoryMenu();
+ void showTeleportHistoryMenu(LLUICtrl* btn_ctrl);
void invokeSearch(std::string search_text);
// callbacks
void onTeleportHistoryMenuItemClicked(const LLSD& userdata);
void onTeleportHistoryChanged();
void onBackButtonClicked();
- void onBackOrForwardButtonHeldDown(const LLSD& param);
+ void onBackOrForwardButtonHeldDown(LLUICtrl* ctrl, const LLSD& param);
+ void onNavigationButtonHeldUp(LLButton* nav_button);
void onForwardButtonClicked();
void onHomeButtonClicked();
void onLocationSelection();
@@ -94,8 +137,8 @@ private:
void fillSearchComboBox();
LLMenuGL* mTeleportHistoryMenu;
- LLButton* mBtnBack;
- LLButton* mBtnForward;
+ LLPullButton* mBtnBack;
+ LLPullButton* mBtnForward;
LLButton* mBtnHome;
LLSearchComboBox* mSearchComboBox;
LLLocationInputCtrl* mCmbLocation;
@@ -103,6 +146,7 @@ private:
LLRect mDefaultFpRect;
boost::signals2::connection mTeleportFailedConnection;
boost::signals2::connection mTeleportFinishConnection;
+ boost::signals2::connection mHistoryMenuConnection;
bool mPurgeTPHistoryItems;
// if true, save location to location history when teleport finishes
bool mSaveToLocationHistory;
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 90482eb74d..16384ef6e0 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -62,6 +62,12 @@
static const S32 RESIZE_BAR_THICKNESS = 3;
+const static std::string IM_TIME("time");
+const static std::string IM_TEXT("message");
+const static std::string IM_FROM("from");
+const static std::string IM_FROM_ID("from_id");
+
+
LLNearbyChat::LLNearbyChat(const LLSD& key)
: LLDockableFloater(NULL, false, false, key)
,mChatHistory(NULL)
@@ -195,6 +201,16 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
if(mMessageArchive.size()>200)
mMessageArchive.erase(mMessageArchive.begin());
}
+
+ if (args["do_not_log"].asBoolean())
+ {
+ return;
+ }
+
+ if (gSavedPerAccountSettings.getBOOL("LogChat"))
+ {
+ LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
+ }
}
void LLNearbyChat::onNearbySpeakers()
@@ -262,6 +278,43 @@ void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
nearby_chat->updateChatHistoryStyle();
}
+void LLNearbyChat::loadHistory()
+{
+ LLSD do_not_log;
+ do_not_log["do_not_log"] = true;
+
+ std::list<LLSD> history;
+ LLLogChat::loadAllHistory("chat", history);
+
+ std::list<LLSD>::const_iterator it = history.begin();
+ while (it != history.end())
+ {
+ const LLSD& msg = *it;
+
+ std::string from = msg[IM_FROM];
+ LLUUID from_id = LLUUID::null;
+ if (msg[IM_FROM_ID].isUndefined())
+ {
+ gCacheName->getUUID(from, from_id);
+ }
+
+ LLChat chat;
+ chat.mFromName = from;
+ chat.mFromID = from_id;
+ chat.mText = msg[IM_TEXT].asString();
+ chat.mTimeStr = msg[IM_TIME].asString();
+ chat.mChatStyle = CHAT_STYLE_HISTORY;
+ addMessage(chat, true, do_not_log);
+
+ it++;
+ }
+}
+
+//static
+LLNearbyChat* LLNearbyChat::getInstance()
+{
+ return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+}
////////////////////////////////////////////////////////////////////////////////
//
@@ -278,3 +331,4 @@ void LLNearbyChat::onFocusLost()
setBackgroundOpaque(false);
LLPanel::onFocusLost();
}
+
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 5fb8ade19e..6ef2a1fee3 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -47,6 +47,8 @@ public:
~LLNearbyChat();
BOOL postBuild ();
+
+ /** @param archive true - to save a message to the chat history log */
void addMessage (const LLChat& message,bool archive = true, const LLSD &args = LLSD());
void onNearbyChatContextMenuItemClicked(const LLSD& userdata);
bool onNearbyChatCheckContextMenuItem(const LLSD& userdata);
@@ -65,6 +67,10 @@ public:
static void processChatHistoryStyleUpdate(const LLSD& newvalue);
+ void loadHistory();
+
+ static LLNearbyChat* getInstance();
+
private:
virtual void applySavedVariables();
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index c08ca30bab..3c390c0281 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -274,8 +274,15 @@ void LLNearbyChatScreenChannel::showToastsBottom()
toast->setRect(toast_rect);
toast->setIsHidden(false);
toast->setVisible(TRUE);
+
+ if(!toast->hasFocus())
+ {
+ // Fixing Z-order of toasts (EXT-4862)
+ // Next toast will be positioned under this one.
+ gFloaterView->sendChildToBack(toast);
+ }
- bottom = toast->getRect().mTop;
+ bottom = toast->getRect().mTop - toast->getTopPad();
}
}
}
@@ -338,8 +345,10 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
// tmp_chat.mFromName = tmp_chat.mFromID.asString();
}
nearby_chat->addMessage(chat_msg, true, args);
- if(nearby_chat->getVisible())
- return;//no need in toast if chat is visible
+ if( nearby_chat->getVisible()
+ || ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
+ && gSavedSettings.getBOOL("UseChatBubbles") ) )
+ return;//no need in toast if chat is visible or if bubble chat is enabled
// Handle irc styled messages for toast panel
if (tmp_chat.mChatStyle == CHAT_STYLE_IRC)
diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp
index 52de8355e9..60e41b64ac 100644
--- a/indra/newview/llnotificationalerthandler.cpp
+++ b/indra/newview/llnotificationalerthandler.cpp
@@ -36,6 +36,7 @@
#include "llnotificationhandler.h"
#include "llnotifications.h"
+#include "llprogressview.h"
#include "lltoastnotifypanel.h"
#include "llviewercontrol.h"
#include "llviewerwindow.h"
@@ -116,6 +117,11 @@ bool LLAlertHandler::processNotification(const LLSD& notify)
p.is_modal = mIsModal;
p.on_delete_toast = boost::bind(&LLAlertHandler::onDeleteToast, this, _1);
+ // 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);
+
LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel);
if(channel)
channel->addToast(p);
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index 5f4768e321..0d5c431d75 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -334,11 +334,6 @@ public:
* Adds notification panel to the IM floater.
*/
static void addNotifPanelToIM(const LLNotificationPtr& notification);
-
- /**
- * Reloads IM floater messages.
- */
- static void reloadIMFloaterMessages(const LLNotificationPtr& notification);
};
}
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index e2a748a1c5..9de9998cbd 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -54,6 +54,8 @@ const static std::string GRANTED_MODIFY_RIGHTS("GrantedModifyRights"),
OFFER_FRIENDSHIP("OfferFriendship"),
FRIENDSHIP_ACCEPTED("FriendshipAccepted"),
FRIENDSHIP_OFFERED("FriendshipOffered"),
+ FRIENDSHIP_ACCEPTED_BYME("FriendshipAcceptedByMe"),
+ FRIENDSHIP_DECLINED_BYME("FriendshipDeclinedByMe"),
FRIEND_ONLINE("FriendOnline"), FRIEND_OFFLINE("FriendOffline"),
SERVER_OBJECT_MESSAGE("ServerObjectMessage"),
TELEPORT_OFFERED("TeleportOffered");
@@ -66,6 +68,8 @@ bool LLHandlerUtil::canLogToIM(const LLNotificationPtr& notification)
|| PAYMENT_RECIVED == notification->getName()
|| OFFER_FRIENDSHIP == notification->getName()
|| FRIENDSHIP_OFFERED == notification->getName()
+ || FRIENDSHIP_ACCEPTED_BYME == notification->getName()
+ || FRIENDSHIP_DECLINED_BYME == notification->getName()
|| SERVER_OBJECT_MESSAGE == notification->getName()
|| INVENTORY_ACCEPTED == notification->getName()
|| INVENTORY_DECLINED == notification->getName();
@@ -94,7 +98,8 @@ bool LLHandlerUtil::canSpawnIMSession(const LLNotificationPtr& notification)
// static
bool LLHandlerUtil::canAddNotifPanelToIM(const LLNotificationPtr& notification)
{
- return OFFER_FRIENDSHIP == notification->getName();
+ return OFFER_FRIENDSHIP == notification->getName()
+ || USER_GIVE_ITEM == notification->getName();
}
@@ -168,6 +173,12 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi
session_name = "chat";
}
+ //there still appears a log history file with weird name " .txt"
+ if (" " == session_name || "{waiting}" == session_name || "{nobody}" == session_name)
+ {
+ llwarning("Weird session name (" + session_name + ") for notification " + notification->getName(), 666)
+ }
+
if(to_file_only)
{
logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(),
@@ -193,6 +204,7 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
llwarns
<< "Group notice for unkown group: "
<< payload["group_id"].asUUID() << llendl;
+ return;
}
const std::string group_name = groupData.mName;
@@ -214,6 +226,7 @@ void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChat
{
LLChat chat_msg(notification->getMessage());
chat_msg.mSourceType = type;
+ chat_msg.mFromName = SYSTEM_FROM;
nearby_chat->addMessage(chat_msg);
}
}
@@ -258,31 +271,8 @@ void LLHandlerUtil::addNotifPanelToIM(const LLNotificationPtr& notification)
offer["from_id"] = notification->getPayload()["from_id"];
offer["from"] = name;
offer["time"] = LLLogChat::timestamp(true);
+ offer["index"] = (LLSD::Integer)session->mMsgs.size();
session->mMsgs.push_front(offer);
LLIMFloater::show(session_id);
}
-
-// static
-void LLHandlerUtil::reloadIMFloaterMessages(
- const LLNotificationPtr& notification)
-{
- LLUUID from_id = notification->getPayload()["from_id"];
- LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, from_id);
- LLIMFloater* im_floater = LLFloaterReg::findTypedInstance<LLIMFloater>(
- "impanel", session_id);
- if (im_floater != NULL)
- {
- LLIMModel::LLIMSession * session = LLIMModel::getInstance()->findIMSession(
- session_id);
- if(session != NULL)
- {
- session->mMsgs.clear();
- std::list<LLSD> chat_history;
- LLLogChat::loadAllHistory(session->mHistoryFileName, chat_history);
- session->addMessagesFromHistory(chat_history);
- }
-
- im_floater->reloadMessages();
- }
-}
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
index 8c13b0fafa..8ebd5de258 100644
--- a/indra/newview/llnotificationofferhandler.cpp
+++ b/indra/newview/llnotificationofferhandler.cpp
@@ -155,10 +155,6 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
}
else
{
- if (LLHandlerUtil::canAddNotifPanelToIM(notification))
- {
- LLHandlerUtil::reloadIMFloaterMessages(notification);
- }
mChannel->killToastByNotificationID(notification->getID());
}
}
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 83a2215ac6..be76959d07 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -43,6 +43,37 @@
using namespace LLNotificationsUI;
+class LLOnlineStatusToast : public LLToastPanel
+{
+public:
+
+ struct Params
+ {
+ LLNotificationPtr notification;
+ LLUUID avatar_id;
+ std::string message;
+
+ Params() {}
+ };
+
+ LLOnlineStatusToast(Params& p) : LLToastPanel(p.notification)
+ {
+ LLUICtrlFactory::getInstance()->buildPanel(this, "panel_online_status_toast.xml");
+
+ childSetValue("avatar_icon", p.avatar_id);
+ childSetValue("message", p.message);
+
+ if (p.notification->getPayload().has("respond_on_mousedown")
+ && p.notification->getPayload()["respond_on_mousedown"] )
+ {
+ setMouseDownCallback(boost::bind(&LLNotification::respond, p.notification,
+ p.notification->getResponseTemplate()));
+ }
+
+ // set line max count to 2 in case of a very long name
+ snapToMessageHeight(getChild<LLTextBox>("message"), 2);
+ }
+};
//--------------------------------------------------------------------------
LLTipHandler::LLTipHandler(e_notification_type type, const LLSD& id)
@@ -114,7 +145,19 @@ bool LLTipHandler::processNotification(const LLSD& notify)
LLHandlerUtil::spawnIMSession(name, from_id);
}
- LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification);
+ LLToastPanel* notify_box = NULL;
+ if("FriendOffline" == notification->getName() || "FriendOnline" == notification->getName())
+ {
+ LLOnlineStatusToast::Params p;
+ p.notification = notification;
+ p.message = notification->getMessage();
+ p.avatar_id = notification->getPayload()["FROM_ID"];
+ notify_box = new LLOnlineStatusToast(p);
+ }
+ else
+ {
+ notify_box = new LLToastNotifyPanel(notification);
+ }
LLToast::Params p;
p.notif_id = notification->getID();
diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp
index 388fdeea7a..9857e37bc3 100644
--- a/indra/newview/lloutputmonitorctrl.cpp
+++ b/indra/newview/lloutputmonitorctrl.cpp
@@ -249,6 +249,11 @@ void LLOutputMonitorCtrl::draw()
void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id)
{
+ if (speaker_id.isNull() && mSpeakerId.notNull())
+ {
+ LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this);
+ }
+
if (speaker_id.isNull() || speaker_id == mSpeakerId) return;
if (mSpeakerId.notNull())
@@ -256,6 +261,7 @@ void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id)
// Unregister previous registration to avoid crash. EXT-4782.
LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this);
}
+
mSpeakerId = speaker_id;
LLSpeakingIndicatorManager::registerSpeakingIndicator(mSpeakerId, this);
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 48dd5513bd..57b478ffef 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -47,8 +47,6 @@
#include "lltooldraganddrop.h"
#include "llscrollcontainer.h"
#include "llavatariconctrl.h"
-#include "llweb.h"
-#include "llfloaterworldmap.h"
#include "llfloaterreg.h"
#include "llnotificationsutil.h"
#include "llvoiceclient.h"
@@ -196,10 +194,9 @@ void LLPanelAvatarNotes::fillRightsData()
childSetValue("map_check",LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE);
childSetValue("objects_check",LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE);
- childSetEnabled("status_check",TRUE);
- childSetEnabled("map_check",TRUE);
- childSetEnabled("objects_check",TRUE);
}
+
+ enableCheckboxes(NULL != relation);
}
void LLPanelAvatarNotes::onCommitNotes()
@@ -250,6 +247,17 @@ void LLPanelAvatarNotes::confirmModifyRights(bool grant, S32 rights)
void LLPanelAvatarNotes::onCommitRights()
{
+ const LLRelationship* buddy_relationship =
+ LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
+
+ if (NULL == buddy_relationship)
+ {
+ // Lets have a warning log message instead of having a crash. EXT-4947.
+ llwarns << "Trying to modify rights for non-friend avatar. Skipped." << llendl;
+ return;
+ }
+
+
S32 rights = 0;
if(childGetValue("status_check").asBoolean())
@@ -259,8 +267,6 @@ void LLPanelAvatarNotes::onCommitRights()
if(childGetValue("objects_check").asBoolean())
rights |= LLRelationship::GRANT_MODIFY_OBJECTS;
- const LLRelationship* buddy_relationship =
- LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
bool allow_modify_objects = childGetValue("objects_check").asBoolean();
// if modify objects checkbox clicked
@@ -304,9 +310,7 @@ void LLPanelAvatarNotes::resetControls()
//Disable "Add Friend" button for friends.
childSetEnabled("add_friend", TRUE);
- childSetEnabled("status_check",FALSE);
- childSetEnabled("map_check",FALSE);
- childSetEnabled("objects_check",FALSE);
+ enableCheckboxes(false);
}
void LLPanelAvatarNotes::onAddFriendButtonClick()
@@ -334,13 +338,22 @@ void LLPanelAvatarNotes::onShareButtonClick()
//*TODO not implemented.
}
+void LLPanelAvatarNotes::enableCheckboxes(bool enable)
+{
+ childSetEnabled("status_check", enable);
+ childSetEnabled("map_check", enable);
+ childSetEnabled("objects_check", enable);
+}
+
LLPanelAvatarNotes::~LLPanelAvatarNotes()
{
if(getAvatarId().notNull())
{
LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
- if(LLVoiceClient::getInstance())
+ if(LLVoiceClient::instanceExists())
+ {
LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
+ }
}
}
@@ -348,6 +361,9 @@ LLPanelAvatarNotes::~LLPanelAvatarNotes()
void LLPanelAvatarNotes::changed(U32 mask)
{
childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
+
+ // update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947.
+ fillRightsData();
}
// virtual
@@ -431,26 +447,25 @@ void LLPanelProfileTab::scrollToTop()
void LLPanelProfileTab::onMapButtonClick()
{
- std::string name;
- gCacheName->getFullName(getAvatarId(), name);
- gFloaterWorldMap->trackAvatar(getAvatarId(), name);
- LLFloaterReg::showInstance("world_map");
+ LLAvatarActions::showOnMap(getAvatarId());
}
void LLPanelProfileTab::updateButtons()
{
- bool is_avatar_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId());
+ bool is_buddy_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId());
if(LLAvatarActions::isFriend(getAvatarId()))
{
- childSetEnabled("teleport", is_avatar_online);
+ childSetEnabled("teleport", is_buddy_online);
}
else
{
childSetEnabled("teleport", true);
}
- bool enable_map_btn = is_avatar_online && gAgent.isGodlike() || is_agent_mappable(getAvatarId());
+ bool enable_map_btn = (is_buddy_online &&
+ is_agent_mappable(getAvatarId()))
+ || gAgent.isGodlike();
childSetEnabled("show_on_map_btn", enable_map_btn);
}
@@ -470,7 +485,6 @@ LLPanelAvatarProfile::LLPanelAvatarProfile()
BOOL LLPanelAvatarProfile::postBuild()
{
- childSetActionTextbox("homepage_edit", boost::bind(&LLPanelAvatarProfile::onHomepageTextboxClicked, this));
childSetCommitCallback("add_friend",(boost::bind(&LLPanelAvatarProfile::onAddFriendButtonClick,this)),NULL);
childSetCommitCallback("im",(boost::bind(&LLPanelAvatarProfile::onIMButtonClick,this)),NULL);
childSetCommitCallback("call",(boost::bind(&LLPanelAvatarProfile::onCallButtonClick,this)),NULL);
@@ -483,6 +497,7 @@ BOOL LLPanelAvatarProfile::postBuild()
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
registrar.add("Profile.Pay", boost::bind(&LLPanelAvatarProfile::pay, this));
registrar.add("Profile.Share", boost::bind(&LLPanelAvatarProfile::share, this));
+ registrar.add("Profile.BlockUnblock", boost::bind(&LLPanelAvatarProfile::toggleBlock, this));
registrar.add("Profile.Kick", boost::bind(&LLPanelAvatarProfile::kick, this));
registrar.add("Profile.Freeze", boost::bind(&LLPanelAvatarProfile::freeze, this));
registrar.add("Profile.Unfreeze", boost::bind(&LLPanelAvatarProfile::unfreeze, this));
@@ -490,6 +505,8 @@ BOOL LLPanelAvatarProfile::postBuild()
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable;
enable.add("Profile.EnableGod", boost::bind(&enable_god));
+ enable.add("Profile.EnableBlock", boost::bind(&LLPanelAvatarProfile::enableBlock, this));
+ enable.add("Profile.EnableUnblock", boost::bind(&LLPanelAvatarProfile::enableUnblock, this));
mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
@@ -676,6 +693,21 @@ void LLPanelAvatarProfile::share()
LLAvatarActions::share(getAvatarId());
}
+void LLPanelAvatarProfile::toggleBlock()
+{
+ LLAvatarActions::toggleBlock(getAvatarId());
+}
+
+bool LLPanelAvatarProfile::enableBlock()
+{
+ return LLAvatarActions::canBlock(getAvatarId()) && !LLAvatarActions::isBlocked(getAvatarId());
+}
+
+bool LLPanelAvatarProfile::enableUnblock()
+{
+ return LLAvatarActions::isBlocked(getAvatarId());
+}
+
void LLPanelAvatarProfile::kick()
{
LLAvatarActions::kick(getAvatarId());
@@ -698,20 +730,6 @@ void LLPanelAvatarProfile::csr()
LLAvatarActions::csr(getAvatarId(), name);
}
-void LLPanelAvatarProfile::onUrlTextboxClicked(const std::string& url)
-{
- LLWeb::loadURL(url);
-}
-
-void LLPanelAvatarProfile::onHomepageTextboxClicked()
-{
- std::string url = childGetValue("homepage_edit").asString();
- if(!url.empty())
- {
- onUrlTextboxClicked(url);
- }
-}
-
void LLPanelAvatarProfile::onAddFriendButtonClick()
{
LLAvatarActions::requestFriendshipDialog(getAvatarId());
@@ -759,8 +777,10 @@ LLPanelAvatarProfile::~LLPanelAvatarProfile()
if(getAvatarId().notNull())
{
LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
- if(LLVoiceClient::getInstance())
+ if(LLVoiceClient::instanceExists())
+ {
LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
+ }
}
}
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index ce59f1e93d..2bd23b6e9c 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -192,17 +192,21 @@ protected:
*/
void share();
+ /**
+ * Add/remove resident to/from your block list.
+ */
+ void toggleBlock();
+
void kick();
void freeze();
void unfreeze();
void csr();
-
+ bool enableBlock();
+ bool enableUnblock();
bool enableGod();
- void onUrlTextboxClicked(const std::string& url);
- void onHomepageTextboxClicked();
void onAddFriendButtonClick();
void onIMButtonClick();
void onCallButtonClick();
@@ -253,8 +257,8 @@ private:
};
/**
-* Panel for displaying Avatar's notes and modifying friend's rights.
-*/
+ * Panel for displaying Avatar's notes and modifying friend's rights.
+ */
class LLPanelAvatarNotes
: public LLPanelProfileTab
, public LLFriendObserver
@@ -305,6 +309,7 @@ protected:
void onCallButtonClick();
void onTeleportButtonClick();
void onShareButtonClick();
+ void enableCheckboxes(bool enable);
};
#endif // LL_LLPANELAVATAR_H
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 3f5d80c123..2a794a06b5 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -72,6 +72,7 @@
#include "llviewerwindow.h" // for window width, height
#include "llappviewer.h" // abortQuit()
#include "lltrans.h"
+#include "llscrollcontainer.h"
#include "llstatusbar.h"
const S32 MINIMUM_PRICE_FOR_LISTING = 50; // L$
@@ -242,7 +243,7 @@ BOOL LLPanelClassified::postBuild()
mNameEditor->setCommitOnFocusLost(TRUE);
mNameEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this));
mNameEditor->setCommitCallback(onCommitAny, this);
- mNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII );
+ mNameEditor->setPrevalidate( LLTextValidate::validateASCII );
mDescEditor = getChild<LLTextEditor>("desc_editor");
mDescEditor->setCommitOnFocusLost(TRUE);
@@ -1072,7 +1073,7 @@ BOOL LLFloaterPriceForListing::postBuild()
LLLineEditor* edit = getChild<LLLineEditor>("price_edit");
if (edit)
{
- edit->setPrevalidate(LLLineEditor::prevalidateNonNegativeS32);
+ edit->setPrevalidate(LLTextValidate::validateNonNegativeS32);
std::string min_price = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
edit->setText(min_price);
edit->selectAll();
@@ -1173,6 +1174,12 @@ BOOL LLPanelClassifiedInfo::postBuild()
childSetAction("show_on_map_btn", boost::bind(&LLPanelClassifiedInfo::onMapClick, this));
childSetAction("teleport_btn", boost::bind(&LLPanelClassifiedInfo::onTeleportClick, this));
+ mScrollingPanel = getChild<LLPanel>("scroll_content_panel");
+ mScrollContainer = getChild<LLScrollContainer>("profile_scroll");
+
+ mScrollingPanelMinHeight = mScrollContainer->getScrolledViewRect().getHeight();
+ mScrollingPanelWidth = mScrollingPanel->getRect().getWidth();
+
return TRUE;
}
@@ -1186,6 +1193,26 @@ void LLPanelClassifiedInfo::setEditClassifiedCallback(const commit_callback_t& c
getChild<LLButton>("edit_btn")->setClickedCallback(cb);
}
+void LLPanelClassifiedInfo::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */)
+{
+ LLPanel::reshape(width, height, called_from_parent);
+
+ if (!mScrollContainer || !mScrollingPanel)
+ return;
+
+ static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
+
+ S32 scroll_height = mScrollContainer->getRect().getHeight();
+ if (mScrollingPanelMinHeight >= scroll_height)
+ {
+ mScrollingPanel->reshape(mScrollingPanelWidth, mScrollingPanelMinHeight);
+ }
+ else
+ {
+ mScrollingPanel->reshape(mScrollingPanelWidth + scrollbar_size, scroll_height);
+ }
+}
+
void LLPanelClassifiedInfo::onOpen(const LLSD& key)
{
LLUUID avatar_id = key["avatar_id"];
@@ -1231,12 +1258,14 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t
static std::string mature_str = getString("type_mature");
static std::string pg_str = getString("type_pg");
+ static LLUIString price_str = getString("l$_price");
bool mature = is_cf_mature(c_info->flags);
childSetValue("content_type", mature ? mature_str : pg_str);
childSetValue("auto_renew", is_cf_auto_renew(c_info->flags));
- childSetTextArg("price_for_listing", "[PRICE]", llformat("%d", c_info->price_for_listing));
+ price_str.setArg("[PRICE]", llformat("%d", c_info->price_for_listing));
+ childSetValue("price_for_listing", LLSD(price_str));
setInfoLoaded(true);
}
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index e46806f576..9e33e55b88 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -55,6 +55,7 @@ class LLTextEditor;
class LLTextureCtrl;
class LLUICtrl;
class LLMessageSystem;
+class LLScrollContainer;
// *TODO deprecated, should be removed.
// New class implemented in ticket EXT-2095
@@ -253,6 +254,8 @@ public:
void setEditClassifiedCallback(const commit_callback_t& cb);
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+
protected:
LLPanelClassifiedInfo();
@@ -277,6 +280,12 @@ private:
LLVector3d mPosGlobal;
LLUUID mParcelId;
bool mInfoLoaded;
+
+ LLScrollContainer* mScrollContainer;
+ LLPanel* mScrollingPanel;
+
+ S32 mScrollingPanelMinHeight;
+ S32 mScrollingPanelWidth;
};
class LLPanelClassifiedEdit : public LLPanelClassifiedInfo
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 8c5208678e..b50c6442e1 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -265,10 +265,13 @@ void LLPanelFace::sendAlpha()
void LLPanelFace::sendGlow()
{
- LLSpinCtrl* mCtrlGlow = getChild<LLSpinCtrl>("glow");
- F32 glow = mCtrlGlow->get();
-
- LLSelectMgr::getInstance()->selectionSetGlow( glow );
+ LLSpinCtrl* mCtrlGlow = getChild<LLSpinCtrl>("glow");
+ llassert(mCtrlGlow);
+ if (mCtrlGlow)
+ {
+ F32 glow = mCtrlGlow->get();
+ LLSelectMgr::getInstance()->selectionSetGlow( glow );
+ }
}
struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor
@@ -286,6 +289,9 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor
LLCheckBoxCtrl* checkFlipScaleS = mPanel->getChild<LLCheckBoxCtrl>("checkbox flip s");
LLCheckBoxCtrl* checkFlipScaleT = mPanel->getChild<LLCheckBoxCtrl>("checkbox flip t");
LLComboBox* comboTexGen = mPanel->getChild<LLComboBox>("combobox texgen");
+ llassert(comboTexGen);
+ llassert(object);
+
if (ctrlTexScaleS)
{
valid = !ctrlTexScaleS->getTentative() || !checkFlipScaleS->getTentative();
@@ -296,7 +302,8 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor
{
value = -value;
}
- if (comboTexGen->getCurrentIndex() == 1)
+ if (comboTexGen &&
+ comboTexGen->getCurrentIndex() == 1)
{
value *= 0.5f;
}
@@ -314,7 +321,8 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor
{
value = -value;
}
- if (comboTexGen->getCurrentIndex() == 1)
+ if (comboTexGen &&
+ comboTexGen->getCurrentIndex() == 1)
{
value *= 0.5f;
}
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 469f1c1739..706787e824 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -90,6 +90,7 @@ LLPanelGroup::LLPanelGroup()
: LLPanel(),
LLGroupMgrObserver( LLUUID() ),
mSkipRefresh(FALSE),
+ mButtonJoin(NULL),
mShowingNotifyDialog(false)
{
// Set up the factory callbacks.
@@ -101,8 +102,10 @@ LLPanelGroup::LLPanelGroup()
LLPanelGroup::~LLPanelGroup()
{
LLGroupMgr::getInstance()->removeObserver(this);
- if(LLVoiceClient::getInstance())
+ if(LLVoiceClient::instanceExists())
+ {
LLVoiceClient::getInstance()->removeObserver(this);
+ }
}
void LLPanelGroup::onOpen(const LLSD& key)
@@ -159,10 +162,6 @@ BOOL LLPanelGroup::postBuild()
button = getChild<LLButton>("btn_chat");
button->setClickedCallback(onBtnGroupChatClicked, this);
- button = getChild<LLButton>("btn_join");
- button->setVisible(false);
- button->setEnabled(true);
-
button = getChild<LLButton>("btn_cancel");
button->setVisible(false); button->setEnabled(true);
@@ -174,7 +173,7 @@ BOOL LLPanelGroup::postBuild()
childSetCommitCallback("back",boost::bind(&LLPanelGroup::onBackBtnClick,this),NULL);
childSetCommitCallback("btn_create",boost::bind(&LLPanelGroup::onBtnCreate,this),NULL);
- childSetCommitCallback("btn_join",boost::bind(&LLPanelGroup::onBtnJoin,this),NULL);
+
childSetCommitCallback("btn_cancel",boost::bind(&LLPanelGroup::onBtnCancel,this),NULL);
LLPanelGroupTab* panel_general = findChild<LLPanelGroupTab>("group_general_tab_panel");
@@ -188,7 +187,17 @@ BOOL LLPanelGroup::postBuild()
if(panel_land) mTabs.push_back(panel_land);
if(panel_general)
+ {
panel_general->setupCtrls(this);
+ button = panel_general->getChild<LLButton>("btn_join");
+ button->setVisible(false);
+ button->setEnabled(true);
+
+ mButtonJoin = button;
+ mButtonJoin->setCommitCallback(boost::bind(&LLPanelGroup::onBtnJoin,this));
+
+ mJoinText = panel_general->getChild<LLUICtrl>("join_cost_text");
+ }
gVoiceClient->addObserver(this);
@@ -326,16 +335,13 @@ void LLPanelGroup::update(LLGroupChange gc)
{
childSetValue("group_name", gdatap->mName);
childSetToolTip("group_name",gdatap->mName);
-
- LLButton* btn_join = getChild<LLButton>("btn_join");
- LLUICtrl* join_text = getChild<LLUICtrl>("join_cost_text");
-
+
LLGroupData agent_gdatap;
- bool is_member = gAgent.getGroupData(mID,agent_gdatap);
+ bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlike();
bool join_btn_visible = !is_member && gdatap->mOpenEnrollment;
- btn_join->setVisible(join_btn_visible);
- join_text->setVisible(join_btn_visible);
+ mButtonJoin->setVisible(join_btn_visible);
+ mJoinText->setVisible(join_btn_visible);
if(join_btn_visible)
{
@@ -351,7 +357,7 @@ void LLPanelGroup::update(LLGroupChange gc)
{
fee_buff = getString("group_join_free", string_args);
}
- childSetValue("join_cost_text",fee_buff);
+ mJoinText->setValue(fee_buff);
}
}
}
@@ -380,7 +386,7 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
LLButton* button_apply = findChild<LLButton>("btn_apply");
LLButton* button_refresh = findChild<LLButton>("btn_refresh");
LLButton* button_create = findChild<LLButton>("btn_create");
- LLButton* button_join = findChild<LLButton>("btn_join");
+
LLButton* button_cancel = findChild<LLButton>("btn_cancel");
LLButton* button_call = findChild<LLButton>("btn_call");
LLButton* button_chat = findChild<LLButton>("btn_chat");
@@ -417,8 +423,8 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
if(!tab_general || !tab_roles || !tab_notices || !tab_land)
return;
- if(button_join)
- button_join->setVisible(false);
+ if(mButtonJoin)
+ mButtonJoin->setVisible(false);
if(is_null_group_id)//creating new group
@@ -460,7 +466,7 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
}
LLGroupData agent_gdatap;
- bool is_member = gAgent.getGroupData(mID,agent_gdatap);
+ bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlike();
tab_roles->setVisible(is_member);
tab_notices->setVisible(is_member);
@@ -478,6 +484,7 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
}
reposButtons();
+ update(GC_ALL);//show/hide "join" button if data is already ready
}
bool LLPanelGroup::apply(LLPanelGroupTab* tab)
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 6e23eedffb..136868a60d 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -130,6 +130,9 @@ protected:
std::vector<LLPanelGroupTab* > mTabs;
+ LLButton* mButtonJoin;
+ LLUICtrl* mJoinText;
+
};
class LLPanelGroupTab : public LLPanel
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index 51fc670d87..517204b232 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -111,6 +111,8 @@ BOOL LLPanelGroupGeneral::postBuild()
{
mListVisibleMembers->setDoubleClickCallback(openProfile, this);
mListVisibleMembers->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
+
+ mListVisibleMembers->setSortCallback(boost::bind(&LLPanelGroupGeneral::sortMembersList,this,_1,_2,_3));
}
// Options
@@ -206,15 +208,19 @@ BOOL LLPanelGroupGeneral::postBuild()
void LLPanelGroupGeneral::setupCtrls(LLPanel* panel_group)
{
- mInsignia = panel_group->getChild<LLTextureCtrl>("insignia");
+ mInsignia = getChild<LLTextureCtrl>("insignia");
if (mInsignia)
{
mInsignia->setCommitCallback(onCommitAny, this);
mDefaultIconID = mInsignia->getImageAssetID();
}
- mFounderName = panel_group->getChild<LLNameBox>("founder_name");
+ mFounderName = getChild<LLNameBox>("founder_name");
+
+
mGroupNameEditor = panel_group->getChild<LLLineEditor>("group_name_editor");
- mGroupNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII );
+ mGroupNameEditor->setPrevalidate( LLTextValidate::validateASCII );
+
+
}
// static
@@ -940,4 +946,18 @@ void LLPanelGroupGeneral::setGroupID(const LLUUID& id)
activate();
}
+S32 LLPanelGroupGeneral::sortMembersList(S32 col_idx,const LLScrollListItem* i1,const LLScrollListItem* i2)
+{
+ const LLScrollListCell *cell1 = i1->getColumn(col_idx);
+ const LLScrollListCell *cell2 = i2->getColumn(col_idx);
+ if(col_idx == 2)
+ {
+ if(LLStringUtil::compareDict(cell1->getValue().asString(),"Online") == 0 )
+ return 1;
+ if(LLStringUtil::compareDict(cell2->getValue().asString(),"Online") == 0 )
+ return -1;
+ }
+
+ return LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString());
+}
diff --git a/indra/newview/llpanelgroupgeneral.h b/indra/newview/llpanelgroupgeneral.h
index 7e90e43cf9..cc3101539a 100644
--- a/indra/newview/llpanelgroupgeneral.h
+++ b/indra/newview/llpanelgroupgeneral.h
@@ -83,6 +83,9 @@ private:
static void onReceiveNotices(LLUICtrl* ctrl, void* data);
static void openProfile(void* data);
+ S32 sortMembersList(S32,const LLScrollListItem*,const LLScrollListItem*);
+ //void sortMembersList(S32 column);
+
static bool joinDlgCB(const LLSD& notification, const LLSD& response);
void updateMembers();
diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp
index 06a682c905..05261a65de 100644
--- a/indra/newview/llpanelgroupinvite.cpp
+++ b/indra/newview/llpanelgroupinvite.cpp
@@ -36,6 +36,7 @@
#include "llagent.h"
#include "llfloateravatarpicker.h"
#include "llbutton.h"
+#include "llcallingcard.h"
#include "llcombobox.h"
#include "llgroupactions.h"
#include "llgroupmgr.h"
@@ -405,16 +406,13 @@ void LLPanelGroupInvite::addUsers(std::vector<LLUUID>& agent_ids)
{
LLUUID agent_id = agent_ids[i];
LLViewerObject* dest = gObjectList.findObject(agent_id);
+ std::string fullname;
if(dest && dest->isAvatar())
{
- std::string fullname;
- LLSD args;
LLNameValue* nvfirst = dest->getNVPair("FirstName");
LLNameValue* nvlast = dest->getNVPair("LastName");
if(nvfirst && nvlast)
{
- args["FIRST"] = std::string(nvfirst->getString());
- args["LAST"] = std::string(nvlast->getString());
fullname = std::string(nvfirst->getString()) + " " + std::string(nvlast->getString());
}
if (!fullname.empty())
@@ -427,10 +425,44 @@ void LLPanelGroupInvite::addUsers(std::vector<LLUUID>& agent_ids)
names.push_back("(Unknown)");
}
}
+ else
+ {
+ //looks like user try to invite offline friend
+ //for offline avatar_id gObjectList.findObject() will return null
+ //so we need to do this additional search in avatar tracker, see EXT-4732
+ if (LLAvatarTracker::instance().isBuddy(agent_id))
+ {
+ if (!gCacheName->getFullName(agent_id, fullname))
+ {
+ // actually it should happen, just in case
+ gCacheName->get(LLUUID(agent_id), false, boost::bind(
+ &LLPanelGroupInvite::addUserCallback, this, _1, _2,
+ _3));
+ // for this special case!
+ //when there is no cached name we should remove resident from agent_ids list to avoid breaking of sequence
+ // removed id will be added in callback
+ agent_ids.erase(agent_ids.begin() + i);
+ }
+ else
+ {
+ names.push_back(fullname);
+ }
+ }
+ }
}
mImplementation->addUsers(names, agent_ids);
}
+void LLPanelGroupInvite::addUserCallback(const LLUUID& id, const std::string& first_name, const std::string& last_name)
+{
+ std::vector<std::string> names;
+ std::vector<LLUUID> agent_ids;
+ std::string full_name = first_name + " " + last_name;
+ agent_ids.push_back(id);
+ names.push_back(first_name + " " + last_name);
+
+ mImplementation->addUsers(names, agent_ids);
+}
void LLPanelGroupInvite::draw()
{
LLPanel::draw();
diff --git a/indra/newview/llpanelgroupinvite.h b/indra/newview/llpanelgroupinvite.h
index 37135b488a..b095dd2395 100644
--- a/indra/newview/llpanelgroupinvite.h
+++ b/indra/newview/llpanelgroupinvite.h
@@ -43,6 +43,10 @@ public:
~LLPanelGroupInvite();
void addUsers(std::vector<LLUUID>& agent_ids);
+ /**
+ * this callback is being used to add a user whose fullname isn't been loaded before invoking of addUsers().
+ */
+ void addUserCallback(const LLUUID& id, const std::string& first_name, const std::string& last_name);
void clear();
void update();
diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp
index 6210973dae..5f913d5469 100644
--- a/indra/newview/llpanelgroupnotices.cpp
+++ b/indra/newview/llpanelgroupnotices.cpp
@@ -652,6 +652,9 @@ void LLPanelGroupNotices::setGroupID(const LLUUID& id)
LLGroupDropTarget* target = getChild<LLGroupDropTarget> ("drop_target");
target->setPanel (this);
target->setGroup (mGroupID);
+
+ if(mViewMessage)
+ mViewMessage->clear();
activate();
}
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index ff1e43b526..c34f0633b9 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -81,11 +81,15 @@ void LLPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::E
void LLPanelChatControlPanel::updateCallButton()
{
- // hide/show call button
bool voice_enabled = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId);
- if (!session) return;
+
+ if (!session)
+ {
+ childSetEnabled("call_btn", false);
+ return;
+ }
bool session_initialized = session->mSessionInitialized;
bool callback_enabled = session->mCallBackEnabled;
@@ -108,8 +112,10 @@ void LLPanelChatControlPanel::updateButtons(bool is_call_started)
LLPanelChatControlPanel::~LLPanelChatControlPanel()
{
mVoiceChannelStateChangeConnection.disconnect();
- if(LLVoiceClient::getInstance())
+ if(LLVoiceClient::instanceExists())
+ {
LLVoiceClient::getInstance()->removeObserver(this);
+ }
}
BOOL LLPanelChatControlPanel::postBuild()
@@ -220,14 +226,6 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
childSetEnabled("share_btn", FALSE);
childSetEnabled("teleport_btn", FALSE);
childSetEnabled("pay_btn", FALSE);
-
- getChild<LLTextBox>("avatar_name")->setValue(im_session->mName);
- getChild<LLTextBox>("avatar_name")->setToolTip(im_session->mName);
- }
- else
- {
- // If the participant is an avatar, fetch the currect name
- gCacheName->get(mAvatarID, FALSE, boost::bind(&LLPanelIMControlPanel::nameUpdatedCallback, this, _1, _2, _3, _4));
}
}
@@ -243,19 +241,6 @@ void LLPanelIMControlPanel::changed(U32 mask)
}
}
-void LLPanelIMControlPanel::nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group)
-{
- if ( id == mAvatarID )
- {
- std::string avatar_name;
- avatar_name.assign(first);
- avatar_name.append(" ");
- avatar_name.append(last);
- getChild<LLTextBox>("avatar_name")->setValue(avatar_name);
- getChild<LLTextBox>("avatar_name")->setToolTip(avatar_name);
- }
-}
-
LLPanelGroupControlPanel::LLPanelGroupControlPanel(const LLUUID& session_id):
mParticipantList(NULL)
{
@@ -280,8 +265,6 @@ void LLPanelGroupControlPanel::draw()
// Need to resort the participant list if it's in sort by recent speaker order.
if (mParticipantList)
mParticipantList->updateRecentSpeakersOrder();
- //* TODO: find better way to properly enable call button for group and remove this call from draw()
- updateCallButton();
LLPanelChatControlPanel::draw();
}
diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h
index 3ab505a084..ce8fc58e56 100644
--- a/indra/newview/llpanelimcontrolpanel.h
+++ b/indra/newview/llpanelimcontrolpanel.h
@@ -89,9 +89,6 @@ public:
// LLFriendObserver trigger
virtual void changed(U32 mask);
-protected:
- void nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group);
-
private:
void onViewProfileButtonClicked();
void onAddFriendButtonClicked();
diff --git a/indra/newview/llpanellandaudio.cpp b/indra/newview/llpanellandaudio.cpp
index 6a4c909759..a92b4357ed 100644
--- a/indra/newview/llpanellandaudio.cpp
+++ b/indra/newview/llpanellandaudio.cpp
@@ -153,6 +153,13 @@ void LLPanelLandAudio::refresh()
mCheckParcelEnableVoice->set(allow_voice);
mCheckParcelVoiceLocal->set(!parcel->getParcelFlagUseEstateVoiceChannel());
+ // don't display urls if you're not able to change it
+ // much requested change in forums so people can't 'steal' urls
+ // NOTE: bug#2009 means this is still vunerable - however, bug
+ // should be closed since this bug opens up major security issues elsewhere.
+ bool obscure_music = ! can_change_media && parcel->getObscureMusic();
+
+ mMusicURLEdit->setDrawAsterixes(obscure_music);
mMusicURLEdit->setText(parcel->getMusicURL());
mMusicURLEdit->setEnabled( can_change_media );
}
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index 36a542cfa0..56d52ccc65 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -376,21 +376,31 @@ void LLPanelLandmarkInfo::createLandmark(const LLUUID& folder_id)
// static
std::string LLPanelLandmarkInfo::getFullFolderName(const LLViewerInventoryCategory* cat)
{
- std::string name = cat->getName();
+ std::string name;
LLUUID parent_id;
- // translate category name, if it's right below the root
- // FIXME: it can throw notification about non existent string in strings.xml
- if (cat->getParentUUID().notNull() && cat->getParentUUID() == gInventory.getRootFolderID())
+ llassert(cat);
+ if (cat)
{
- LLTrans::findString(name, "InvFolder " + name);
- }
+ name = cat->getName();
- // we don't want "My Inventory" to appear in the name
- while ((parent_id = cat->getParentUUID()).notNull() && parent_id != gInventory.getRootFolderID())
- {
- cat = gInventory.getCategory(parent_id);
- name = cat->getName() + "/" + name;
+ // translate category name, if it's right below the root
+ // FIXME: it can throw notification about non existent string in strings.xml
+ if (cat->getParentUUID().notNull() && cat->getParentUUID() == gInventory.getRootFolderID())
+ {
+ LLTrans::findString(name, "InvFolder " + name);
+ }
+
+ // we don't want "My Inventory" to appear in the name
+ while ((parent_id = cat->getParentUUID()).notNull() && parent_id != gInventory.getRootFolderID())
+ {
+ cat = gInventory.getCategory(parent_id);
+ llassert(cat);
+ if (cat)
+ {
+ name = cat->getName() + "/" + name;
+ }
+ }
}
return name;
@@ -406,21 +416,24 @@ void LLPanelLandmarkInfo::populateFoldersList()
// Put the "Landmarks" folder first in list.
LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
- const LLViewerInventoryCategory* cat = gInventory.getCategory(landmarks_id);
- if (!cat)
+ const LLViewerInventoryCategory* lmcat = gInventory.getCategory(landmarks_id);
+ if (!lmcat)
{
llwarns << "Cannot find the landmarks folder" << llendl;
}
- std::string cat_full_name = getFullFolderName(cat);
- mFolderCombo->add(cat_full_name, cat->getUUID());
+ else
+ {
+ std::string cat_full_name = getFullFolderName(lmcat);
+ mFolderCombo->add(cat_full_name, lmcat->getUUID());
+ }
typedef std::vector<folder_pair_t> folder_vec_t;
folder_vec_t folders;
// Sort the folders by their full name.
for (S32 i = 0; i < cats.count(); i++)
{
- cat = cats.get(i);
- cat_full_name = getFullFolderName(cat);
+ const LLViewerInventoryCategory* cat = cats.get(i);
+ std::string cat_full_name = getFullFolderName(cat);
folders.push_back(folder_pair_t(cat->getUUID(), cat_full_name));
}
sort(folders.begin(), folders.end(), cmp_folders);
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 47feef496a..45a8dc4cbe 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -69,6 +69,10 @@ static const std::string TRASH_BUTTON_NAME = "trash_btn";
// helper functions
static void filter_list(LLPlacesInventoryPanel* inventory_list, const std::string& string);
static bool category_has_descendents(LLPlacesInventoryPanel* inventory_list);
+static void collapse_all_folders(LLFolderView* root_folder);
+static void expand_all_folders(LLFolderView* root_folder);
+static bool has_expanded_folders(LLFolderView* root_folder);
+static bool has_collapsed_folders(LLFolderView* root_folder);
/**
* Functor counting expanded and collapsed folders in folder view tree to know
@@ -111,25 +115,76 @@ void LLCheckFolderState::doFolder(LLFolderViewFolder* folder)
}
}
+// Functor searching and opening a folder specified by UUID
+// in a folder view tree.
+class LLOpenFolderByID : public LLFolderViewFunctor
+{
+public:
+ LLOpenFolderByID(const LLUUID& folder_id)
+ : mFolderID(folder_id)
+ , mIsFolderOpen(false)
+ {}
+ virtual ~LLOpenFolderByID() {}
+ /*virtual*/ void doFolder(LLFolderViewFolder* folder);
+ /*virtual*/ void doItem(LLFolderViewItem* item) {}
+
+ bool isFolderOpen() { return mIsFolderOpen; }
+
+private:
+ bool mIsFolderOpen;
+ LLUUID mFolderID;
+};
+
+// virtual
+void LLOpenFolderByID::doFolder(LLFolderViewFolder* folder)
+{
+ if (folder->getListener() && folder->getListener()->getUUID() == mFolderID)
+ {
+ if (!folder->isOpen())
+ {
+ folder->setOpen(TRUE);
+ mIsFolderOpen = true;
+ }
+ }
+}
+
/**
* Bridge to support knowing when the inventory has changed to update Landmarks tab
* ShowFolderState filter setting to show all folders when the filter string is empty and
* empty folder message when Landmarks inventory category has no children.
+ * Ensures that "Landmarks" folder in the Library is open on strart up.
*/
class LLLandmarksPanelObserver : public LLInventoryObserver
{
public:
- LLLandmarksPanelObserver(LLLandmarksPanel* lp) : mLP(lp) {}
+ LLLandmarksPanelObserver(LLLandmarksPanel* lp)
+ : mLP(lp),
+ mIsLibraryLandmarksOpen(false)
+ {}
virtual ~LLLandmarksPanelObserver() {}
/*virtual*/ void changed(U32 mask);
private:
LLLandmarksPanel* mLP;
+ bool mIsLibraryLandmarksOpen;
};
void LLLandmarksPanelObserver::changed(U32 mask)
{
mLP->updateShowFolderState();
+
+ LLPlacesInventoryPanel* library = mLP->getLibraryInventoryPanel();
+ if (!mIsLibraryLandmarksOpen && library)
+ {
+ // Search for "Landmarks" folder in the Library and open it once on start up. See EXT-4827.
+ const LLUUID &landmarks_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false, true);
+ if (landmarks_cat.notNull())
+ {
+ LLOpenFolderByID opener(landmarks_cat);
+ library->getRootFolder()->applyFunctorRecursively(opener);
+ mIsLibraryLandmarksOpen = opener.isFolderOpen();
+ }
+ }
}
LLLandmarksPanel::LLLandmarksPanel()
@@ -171,8 +226,6 @@ BOOL LLLandmarksPanel::postBuild()
initLandmarksInventoryPanel();
initMyInventoryPanel();
initLibraryInventoryPanel();
- getChild<LLAccordionCtrlTab>("tab_favorites")->setDisplayChildren(true);
- getChild<LLAccordionCtrlTab>("tab_landmarks")->setDisplayChildren(true);
return TRUE;
}
@@ -462,7 +515,7 @@ void LLLandmarksPanel::initFavoritesInventoryPanel()
initLandmarksPanel(mFavoritesInventoryPanel);
mFavoritesInventoryPanel->getFilter()->setEmptyLookupMessage("FavoritesNoMatchingItems");
- initAccordion("tab_favorites", mFavoritesInventoryPanel);
+ initAccordion("tab_favorites", mFavoritesInventoryPanel, true);
}
void LLLandmarksPanel::initLandmarksInventoryPanel()
@@ -481,7 +534,7 @@ void LLLandmarksPanel::initLandmarksInventoryPanel()
// subscribe to have auto-rename functionality while creating New Folder
mLandmarksInventoryPanel->setSelectCallback(boost::bind(&LLInventoryPanel::onSelectionChange, mLandmarksInventoryPanel, _1, _2));
- initAccordion("tab_landmarks", mLandmarksInventoryPanel);
+ initAccordion("tab_landmarks", mLandmarksInventoryPanel, true);
}
void LLLandmarksPanel::initMyInventoryPanel()
@@ -490,7 +543,7 @@ void LLLandmarksPanel::initMyInventoryPanel()
initLandmarksPanel(mMyInventoryPanel);
- initAccordion("tab_inventory", mMyInventoryPanel);
+ initAccordion("tab_inventory", mMyInventoryPanel, false);
}
void LLLandmarksPanel::initLibraryInventoryPanel()
@@ -499,7 +552,15 @@ void LLLandmarksPanel::initLibraryInventoryPanel()
initLandmarksPanel(mLibraryInventoryPanel);
- initAccordion("tab_library", mLibraryInventoryPanel);
+ // We want to fetch only "Landmarks" category from the library.
+ const LLUUID &landmarks_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false, true);
+ if (landmarks_cat.notNull())
+ {
+ gInventory.startBackgroundFetch(landmarks_cat);
+ }
+
+ // Expanding "Library" tab for new users who have no landmarks in "My Inventory".
+ initAccordion("tab_library", mLibraryInventoryPanel, true);
}
void LLLandmarksPanel::initLandmarksPanel(LLPlacesInventoryPanel* inventory_list)
@@ -520,20 +581,21 @@ void LLLandmarksPanel::initLandmarksPanel(LLPlacesInventoryPanel* inventory_list
{
root_folder->setupMenuHandle(LLInventoryType::IT_CATEGORY, mGearFolderMenu->getHandle());
root_folder->setupMenuHandle(LLInventoryType::IT_LANDMARK, mGearLandmarkMenu->getHandle());
+
+ root_folder->setParentLandmarksPanel(this);
}
- root_folder->setParentLandmarksPanel(this);
inventory_list->saveFolderState();
}
-void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list)
+void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list, bool expand_tab)
{
LLAccordionCtrlTab* accordion_tab = getChild<LLAccordionCtrlTab>(accordion_tab_name);
mAccordionTabs.push_back(accordion_tab);
accordion_tab->setDropDownStateChangedCallback(
boost::bind(&LLLandmarksPanel::onAccordionExpandedCollapsed, this, _2, inventory_list));
- accordion_tab->setDisplayChildren(false);
+ accordion_tab->setDisplayChildren(expand_tab);
}
void LLLandmarksPanel::onAccordionExpandedCollapsed(const LLSD& param, LLPlacesInventoryPanel* inventory_list)
@@ -625,31 +687,29 @@ void LLLandmarksPanel::updateListCommands()
// keep Options & Add Landmark buttons always enabled
mListCommands->childSetEnabled(ADD_FOLDER_BUTTON_NAME, add_folder_enabled);
mListCommands->childSetEnabled(TRASH_BUTTON_NAME, trash_enabled);
- mListCommands->childSetEnabled(OPTIONS_BUTTON_NAME,getCurSelectedItem() != NULL);
}
void LLLandmarksPanel::onActionsButtonClick()
{
+ LLMenuGL* menu = mGearFolderMenu;
+
LLFolderViewItem* cur_item = NULL;
if(mCurrentSelectedList)
- cur_item = mCurrentSelectedList->getRootFolder()->getCurSelectedItem();
-
- if(!cur_item)
- return;
-
- LLFolderViewEventListener* listenerp = cur_item->getListener();
-
- LLMenuGL* menu =NULL;
- if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK)
- {
- menu = mGearLandmarkMenu;
- }
- else if (listenerp->getInventoryType() == LLInventoryType::IT_CATEGORY)
{
- mGearFolderMenu->getChild<LLMenuItemCallGL>("expand")->setVisible(!cur_item->isOpen());
- mGearFolderMenu->getChild<LLMenuItemCallGL>("collapse")->setVisible(cur_item->isOpen());
- menu = mGearFolderMenu;
+ cur_item = mCurrentSelectedList->getRootFolder()->getCurSelectedItem();
+ if(!cur_item)
+ return;
+
+ LLFolderViewEventListener* listenerp = cur_item->getListener();
+ if(!listenerp)
+ return;
+
+ if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK)
+ {
+ menu = mGearLandmarkMenu;
+ }
}
+
showActionMenu(menu,OPTIONS_BUTTON_NAME);
}
@@ -747,26 +807,33 @@ void LLLandmarksPanel::onClipboardAction(const LLSD& userdata) const
void LLLandmarksPanel::onFoldingAction(const LLSD& userdata)
{
- if(!mCurrentSelectedList) return;
-
- LLFolderView* root_folder = mCurrentSelectedList->getRootFolder();
std::string command_name = userdata.asString();
if ("expand_all" == command_name)
{
- root_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
- root_folder->arrangeAll();
+ expand_all_folders(mFavoritesInventoryPanel->getRootFolder());
+ expand_all_folders(mLandmarksInventoryPanel->getRootFolder());
+ expand_all_folders(mMyInventoryPanel->getRootFolder());
+ expand_all_folders(mLibraryInventoryPanel->getRootFolder());
+
+ for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter)
+ {
+ (*iter)->changeOpenClose(false);
+ }
}
else if ("collapse_all" == command_name)
{
- root_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN);
+ collapse_all_folders(mFavoritesInventoryPanel->getRootFolder());
+ collapse_all_folders(mLandmarksInventoryPanel->getRootFolder());
+ collapse_all_folders(mMyInventoryPanel->getRootFolder());
+ collapse_all_folders(mLibraryInventoryPanel->getRootFolder());
- // The top level folder is invisible, it must be open to
- // display its sub-folders.
- root_folder->openTopLevelFolders();
- root_folder->arrangeAll();
+ for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter)
+ {
+ (*iter)->changeOpenClose(true);
+ }
}
- else if ( "sort_by_date" == command_name)
+ else if ("sort_by_date" == command_name)
{
mSortByDate = !mSortByDate;
updateSortOrder(mLandmarksInventoryPanel, mSortByDate);
@@ -775,7 +842,10 @@ void LLLandmarksPanel::onFoldingAction(const LLSD& userdata)
}
else
{
- root_folder->doToSelected(&gInventory, userdata);
+ if(mCurrentSelectedList)
+ {
+ mCurrentSelectedList->getRootFolder()->doToSelected(&gInventory, userdata);
+ }
}
}
@@ -795,53 +865,87 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
{
std::string command_name = userdata.asString();
-
- LLPlacesFolderView* rootFolderView = mCurrentSelectedList ?
+ LLPlacesFolderView* root_folder_view = mCurrentSelectedList ?
static_cast<LLPlacesFolderView*>(mCurrentSelectedList->getRootFolder()) : NULL;
- if (NULL == rootFolderView) return false;
-
- // disable some commands for multi-selection. EXT-1757
- if (rootFolderView->getSelectedCount() > 1)
+ if ("collapse_all" == command_name)
{
- if ( "teleport" == command_name
- || "more_info" == command_name
- || "rename" == command_name
- || "show_on_map" == command_name
- || "copy_slurl" == command_name
- )
+ bool disable_collapse_all = !has_expanded_folders(mFavoritesInventoryPanel->getRootFolder())
+ && !has_expanded_folders(mLandmarksInventoryPanel->getRootFolder())
+ && !has_expanded_folders(mMyInventoryPanel->getRootFolder())
+ && !has_expanded_folders(mLibraryInventoryPanel->getRootFolder());
+ if (disable_collapse_all)
{
- return false;
+ for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter)
+ {
+ if ((*iter)->isExpanded())
+ {
+ disable_collapse_all = false;
+ break;
+ }
+ }
}
+ return !disable_collapse_all;
}
+ else if ("expand_all" == command_name)
+ {
+ bool disable_expand_all = !has_collapsed_folders(mFavoritesInventoryPanel->getRootFolder())
+ && !has_collapsed_folders(mLandmarksInventoryPanel->getRootFolder())
+ && !has_collapsed_folders(mMyInventoryPanel->getRootFolder())
+ && !has_collapsed_folders(mLibraryInventoryPanel->getRootFolder());
+ if (disable_expand_all)
+ {
+ for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter)
+ {
+ if (!(*iter)->isExpanded())
+ {
+ disable_expand_all = false;
+ break;
+ }
+ }
+ }
- // disable some commands for Favorites accordion. EXT-1758
- if (mCurrentSelectedList == mFavoritesInventoryPanel)
+ return !disable_expand_all;
+ }
+ else if ("sort_by_date" == command_name)
{
- if ( "expand_all" == command_name
- || "collapse_all" == command_name
- || "sort_by_date" == command_name
- )
+ // disable "sort_by_date" for Favorites accordion because
+ // it has its own items order. EXT-1758
+ if (mCurrentSelectedList == mFavoritesInventoryPanel)
+ {
return false;
+ }
}
-
- LLCheckFolderState checker;
- rootFolderView->applyFunctorRecursively(checker);
-
- // We assume that the root folder is always expanded so we enable "collapse_all"
- // command when we have at least one more expanded folder.
- if (checker.getExpandedFolders() < 2 && "collapse_all" == command_name)
+ else if (!root_folder_view)
{
return false;
}
-
- if (checker.getCollapsedFolders() < 1 && "expand_all" == command_name)
+ else if ( "paste" == command_name
+ || "rename" == command_name
+ || "cut" == command_name
+ || "copy" == command_name
+ || "delete" == command_name
+ || "collapse" == command_name
+ || "expand" == command_name
+ )
{
- return false;
+ return canSelectedBeModified(command_name);
}
-
- if("category" == command_name)
+ else if ( "teleport" == command_name
+ || "more_info" == command_name
+ || "rename" == command_name
+ || "show_on_map" == command_name
+ || "copy_slurl" == command_name
+ )
+ {
+ // disable some commands for multi-selection. EXT-1757
+ if (root_folder_view->getSelectedCount() > 1)
+ {
+ return false;
+ }
+ }
+ else if("category" == command_name)
{
// we can add folder only in Landmarks Accordion
if (mCurrentSelectedList == mLandmarksInventoryPanel)
@@ -851,10 +955,6 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
}
else return false;
}
- else if("paste" == command_name || "rename" == command_name || "cut" == command_name || "delete" == command_name)
- {
- return canSelectedBeModified(command_name);
- }
else if("create_pick" == command_name)
{
std::set<LLUUID> selection;
@@ -912,6 +1012,9 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co
{
// validate own rules first
+ LLFolderViewItem* selected = getCurSelectedItem();
+ if (!selected) return false;
+
// nothing can be modified in Library
if (mLibraryInventoryPanel == mCurrentSelectedList) return false;
@@ -938,24 +1041,41 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co
}
// then ask LLFolderView permissions
+
+ LLFolderView* root_folder = mCurrentSelectedList->getRootFolder();
+
+ if ("copy" == command_name)
+ {
+ return root_folder->canCopy();
+ }
+ else if ("collapse" == command_name)
+ {
+ return selected->isOpen();
+ }
+ else if ("expand" == command_name)
+ {
+ return !selected->isOpen();
+ }
+
if (can_be_modified)
{
- LLFolderViewItem* selected = getCurSelectedItem();
+ LLFolderViewEventListener* listenerp = selected->getListener();
+
if ("cut" == command_name)
{
- can_be_modified = mCurrentSelectedList->getRootFolder()->canCut();
+ can_be_modified = root_folder->canCut();
}
else if ("rename" == command_name)
{
- can_be_modified = selected ? selected->getListener()->isItemRenameable() : false;
+ can_be_modified = listenerp ? listenerp->isItemRenameable() : false;
}
else if ("delete" == command_name)
{
- can_be_modified = selected ? selected->getListener()->isItemRemovable(): false;
+ can_be_modified = listenerp ? listenerp->isItemRemovable() : false;
}
else if("paste" == command_name)
{
- return mCurrentSelectedList->getRootFolder()->canPaste();
+ can_be_modified = root_folder->canPaste();
}
else
{
@@ -1139,4 +1259,54 @@ static bool category_has_descendents(LLPlacesInventoryPanel* inventory_list)
return false;
}
+
+static void collapse_all_folders(LLFolderView* root_folder)
+{
+ if (!root_folder)
+ return;
+
+ root_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN);
+
+ // The top level folder is invisible, it must be open to
+ // display its sub-folders.
+ root_folder->openTopLevelFolders();
+ root_folder->arrangeAll();
+}
+
+static void expand_all_folders(LLFolderView* root_folder)
+{
+ if (!root_folder)
+ return;
+
+ root_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
+ root_folder->arrangeAll();
+}
+
+static bool has_expanded_folders(LLFolderView* root_folder)
+{
+ LLCheckFolderState checker;
+ root_folder->applyFunctorRecursively(checker);
+
+ // We assume that the root folder is always expanded so we enable "collapse_all"
+ // command when we have at least one more expanded folder.
+ if (checker.getExpandedFolders() < 2)
+ {
+ return false;
+ }
+
+ return true;
+}
+
+static bool has_collapsed_folders(LLFolderView* root_folder)
+{
+ LLCheckFolderState checker;
+ root_folder->applyFunctorRecursively(checker);
+
+ if (checker.getCollapsedFolders() < 1)
+ {
+ return false;
+ }
+
+ return true;
+}
// EOF
diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h
index 96b790844c..f1ce1a18b5 100644
--- a/indra/newview/llpanellandmarks.h
+++ b/indra/newview/llpanellandmarks.h
@@ -78,6 +78,8 @@ public:
*/
void setItemSelected(const LLUUID& obj_id, BOOL take_keyboard_focus);
+ LLPlacesInventoryPanel* getLibraryInventoryPanel() { return mLibraryInventoryPanel; }
+
protected:
/**
* @return true - if current selected panel is not null and selected item is a landmark
@@ -110,7 +112,7 @@ private:
void initMyInventoryPanel();
void initLibraryInventoryPanel();
void initLandmarksPanel(LLPlacesInventoryPanel* inventory_list);
- void initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list);
+ void initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list, bool expand_tab);
void onAccordionExpandedCollapsed(const LLSD& param, LLPlacesInventoryPanel* inventory_list);
void deselectOtherThan(const LLPlacesInventoryPanel* inventory_list);
@@ -153,14 +155,14 @@ private:
void doCreatePick(LLLandmark* landmark);
private:
- LLPlacesInventoryPanel* mFavoritesInventoryPanel;
- LLPlacesInventoryPanel* mLandmarksInventoryPanel;
- LLPlacesInventoryPanel* mMyInventoryPanel;
- LLPlacesInventoryPanel* mLibraryInventoryPanel;
+ LLPlacesInventoryPanel* mFavoritesInventoryPanel;
+ LLPlacesInventoryPanel* mLandmarksInventoryPanel;
+ LLPlacesInventoryPanel* mMyInventoryPanel;
+ LLPlacesInventoryPanel* mLibraryInventoryPanel;
LLMenuGL* mGearLandmarkMenu;
LLMenuGL* mGearFolderMenu;
LLMenuGL* mMenuAdd;
- LLPlacesInventoryPanel* mCurrentSelectedList;
+ LLPlacesInventoryPanel* mCurrentSelectedList;
LLInventoryObserver* mInventoryObserver;
LLPanel* mListCommands;
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 87d101b00f..7bd03167fd 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -213,8 +213,8 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
}
#if !USE_VIEWER_AUTH
- childSetPrevalidate("first_name_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace);
- childSetPrevalidate("last_name_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace);
+ childSetPrevalidate("first_name_edit", LLTextValidate::validateASCIIPrintableNoSpace);
+ childSetPrevalidate("last_name_edit", LLTextValidate::validateASCIIPrintableNoSpace);
childSetCommitCallback("password_edit", mungePassword, this);
getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);
@@ -232,6 +232,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
if(sim_string.empty())
{
LLURLSimString::setString(gSavedSettings.getString("LoginLocation"));
+ sim_string = LLURLSimString::sInstance.mSimString;
}
if (!sim_string.empty())
@@ -675,8 +676,7 @@ void LLPanelLogin::refreshLocation( bool force_visible )
{
// Don't show on first run after install
// Otherwise ShowStartLocation defaults to true.
- show_start = gSavedSettings.getBOOL("ShowStartLocation")
- && !gSavedSettings.getBOOL("FirstRunThisInstall");
+ show_start = gSavedSettings.getBOOL("ShowStartLocation");
}
sInstance->childSetVisible("start_location_combo", show_start);
@@ -689,6 +689,23 @@ void LLPanelLogin::refreshLocation( bool force_visible )
}
// static
+void LLPanelLogin::updateLocationUI()
+{
+ if (!sInstance) return;
+
+ std::string sim_string = LLURLSimString::sInstance.mSimString;
+ if (!sim_string.empty())
+ {
+ // Replace "<Type region name>" with this region name
+ LLComboBox* combo = sInstance->getChild<LLComboBox>("start_location_combo");
+ combo->remove(2);
+ combo->add( sim_string );
+ combo->setTextEntry(sim_string);
+ combo->setCurrentByIndex( 2 );
+ }
+}
+
+// static
void LLPanelLogin::closePanel()
{
if (sInstance)
@@ -829,8 +846,7 @@ void LLPanelLogin::loadLoginPage()
{
oStr << "&auto_login=TRUE";
}
- if (gSavedSettings.getBOOL("ShowStartLocation")
- && !gSavedSettings.getBOOL("FirstRunThisInstall"))
+ if (gSavedSettings.getBOOL("ShowStartLocation"))
{
oStr << "&show_start_location=TRUE";
}
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index 97350ce5c7..1fdc3a9361 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -71,6 +71,7 @@ public:
static void addServer(const std::string& server, S32 domain_name);
static void refreshLocation( bool force_visible );
+ static void updateLocationUI();
static void getFields(std::string *firstname, std::string *lastname,
std::string *password);
@@ -102,7 +103,7 @@ private:
static void onPassKey(LLLineEditor* caller, void* user_data);
static void onSelectServer(LLUICtrl*, void*);
static void onServerComboLostFocus(LLFocusableElement*);
-
+
private:
LLPointer<LLUIImage> mLogoImage;
boost::scoped_ptr<LLPanelLoginListener> mListener;
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index a5a61f0c7b..2d3401966b 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -1003,7 +1003,10 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
}
const LLUUID item_id = current_item->getListener()->getUUID();
LLViewerInventoryItem *item = gInventory.getItem(item_id);
- item->regenerateLink();
+ if (item)
+ {
+ item->regenerateLink();
+ }
active_panel->setSelection(item_id, TAKE_FOCUS_NO);
}
if (command_name == "find_original")
@@ -1071,7 +1074,11 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
{
const LLUUID &item_id = (*iter);
LLFolderViewItem *item = folder->getItemByID(item_id);
- can_delete &= item->getListener()->isItemRemovable();
+ const LLFolderViewEventListener *listener = item->getListener();
+ llassert(listener);
+ if (!listener) return FALSE;
+ can_delete &= listener->isItemRemovable();
+ can_delete &= !listener->isItemInTrash();
}
return can_delete;
}
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 0f0fb4b94e..3504cbd1ef 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -41,6 +41,7 @@
#include "llsidetray.h"
#include "lltabcontainer.h"
#include "lltexturectrl.h"
+#include "llviewercontrol.h"
#define PICKER_SECOND_LIFE "2nd_life_pic"
#define PICKER_FIRST_LIFE "real_world_pic"
@@ -69,6 +70,18 @@ BOOL LLPanelMe::postBuild()
void LLPanelMe::onOpen(const LLSD& key)
{
LLPanelProfile::onOpen(key);
+
+ // 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)
@@ -198,6 +211,10 @@ void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_d
{
fillCommonData(avatar_data);
+ // 'Home page' was hidden in LLPanelAvatarProfile::fillCommonData() to fix EXT-4734
+ // Show 'Home page' in Edit My Profile (EXT-4873)
+ childSetVisible("homepage_edit", true);
+
fillPartnerData(avatar_data);
fillAccountStatus(avatar_data);
diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp
index f574f55beb..f601a8d51c 100644
--- a/indra/newview/llpanelmediasettingsgeneral.cpp
+++ b/indra/newview/llpanelmediasettingsgeneral.cpp
@@ -250,18 +250,18 @@ bool LLPanelMediaSettingsGeneral::isMultiple()
////////////////////////////////////////////////////////////////////////////////
// static
-void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_settings ,bool editable)
+void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& _media_settings, bool editable)
{
LLPanelMediaSettingsGeneral *self =(LLPanelMediaSettingsGeneral *)userdata;
self->mMediaEditable = editable;
+ LLSD media_settings = _media_settings;
+
if ( LLPanelMediaSettingsGeneral::isMultiple() )
{
- self->clearValues(self, self->mMediaEditable);
- // only show multiple
- self->mHomeURL->setText(LLTrans::getString("Multiple Media"));
- self->mCurrentURL->setText(LLTrans::getString("Multiple Media"));
- return;
+ // *HACK: "edit" the incoming media_settings
+ media_settings[LLMediaEntry::CURRENT_URL_KEY] = LLTrans::getString("Multiple Media");
+ media_settings[LLMediaEntry::HOME_URL_KEY] = LLTrans::getString("Multiple Media");
}
std::string base_key( "" );
@@ -286,7 +286,7 @@ void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_
{ LLMediaEntry::WIDTH_PIXELS_KEY, self->mWidthPixels, "LLSpinCtrl" },
{ "", NULL , "" }
};
-
+
for( int i = 0; data_set[ i ].key_name.length() > 0; ++i )
{
base_key = std::string( data_set[ i ].key_name );
@@ -405,20 +405,21 @@ void LLPanelMediaSettingsGeneral::preApply()
////////////////////////////////////////////////////////////////////////////////
//
-void LLPanelMediaSettingsGeneral::getValues( LLSD &fill_me_in )
+void LLPanelMediaSettingsGeneral::getValues( LLSD &fill_me_in, bool include_tentative )
{
- fill_me_in[LLMediaEntry::AUTO_LOOP_KEY] = (LLSD::Boolean)mAutoLoop->getValue();
- fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = (LLSD::Boolean)mAutoPlay->getValue();
- fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = (LLSD::Boolean)mAutoScale->getValue();
- fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = (LLSD::Boolean)mAutoZoom->getValue();
+ if (include_tentative || !mAutoLoop->getTentative()) fill_me_in[LLMediaEntry::AUTO_LOOP_KEY] = (LLSD::Boolean)mAutoLoop->getValue();
+ if (include_tentative || !mAutoPlay->getTentative()) fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = (LLSD::Boolean)mAutoPlay->getValue();
+ if (include_tentative || !mAutoScale->getTentative()) fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = (LLSD::Boolean)mAutoScale->getValue();
+ if (include_tentative || !mAutoZoom->getTentative()) fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = (LLSD::Boolean)mAutoZoom->getValue();
//Don't fill in current URL: this is only supposed to get changed via navigate
- // fill_me_in[LLMediaEntry::CURRENT_URL_KEY] = mCurrentURL->getValue();
- fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = (LLSD::Integer)mHeightPixels->getValue();
+ // if (include_tentative || !mCurrentURL->getTentative()) fill_me_in[LLMediaEntry::CURRENT_URL_KEY] = mCurrentURL->getValue();
+ if (include_tentative || !mHeightPixels->getTentative()) fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = (LLSD::Integer)mHeightPixels->getValue();
// Don't fill in the home URL if it is the special "Multiple Media" string!
- if (LLTrans::getString("Multiple Media") != mHomeURL->getValue())
- fill_me_in[LLMediaEntry::HOME_URL_KEY] = (LLSD::String)mHomeURL->getValue();
- fill_me_in[LLMediaEntry::FIRST_CLICK_INTERACT_KEY] = (LLSD::Boolean)mFirstClick->getValue();
- fill_me_in[LLMediaEntry::WIDTH_PIXELS_KEY] = (LLSD::Integer)mWidthPixels->getValue();
+ if ((include_tentative || !mHomeURL->getTentative())
+ && LLTrans::getString("Multiple Media") != mHomeURL->getValue())
+ fill_me_in[LLMediaEntry::HOME_URL_KEY] = (LLSD::String)mHomeURL->getValue();
+ if (include_tentative || !mFirstClick->getTentative()) fill_me_in[LLMediaEntry::FIRST_CLICK_INTERACT_KEY] = (LLSD::Boolean)mFirstClick->getValue();
+ if (include_tentative || !mWidthPixels->getTentative()) fill_me_in[LLMediaEntry::WIDTH_PIXELS_KEY] = (LLSD::Integer)mWidthPixels->getValue();
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h
index 5f90321362..a3f0990f35 100644
--- a/indra/newview/llpanelmediasettingsgeneral.h
+++ b/indra/newview/llpanelmediasettingsgeneral.h
@@ -54,7 +54,8 @@ public:
// Hook that the floater calls before applying changes from the panel
void preApply();
// Function that asks the panel to fill in values associated with the panel
- void getValues(LLSD &fill_me_in);
+ // 'include_tentative' means fill in tentative values as well, otherwise do not
+ void getValues(LLSD &fill_me_in, bool include_tentative = true);
// Hook that the floater calls after applying changes to the panel
void postApply();
diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp
index a23aed2e98..e5caaaaffc 100644
--- a/indra/newview/llpanelmediasettingspermissions.cpp
+++ b/indra/newview/llpanelmediasettingspermissions.cpp
@@ -149,27 +149,6 @@ void LLPanelMediaSettingsPermissions::clearValues( void* userdata, bool editable
void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& media_settings , bool editable)
{
LLPanelMediaSettingsPermissions *self =(LLPanelMediaSettingsPermissions *)userdata;
-
- if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo )
- {
- if(LLFloaterMediaSettings::getInstance()->mMultipleMedia)
- {
- self->clearValues(self, editable);
- // only show multiple
- return;
- }
-
- }
- else
- {
- if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia)
- {
- self->clearValues(self, editable);
- // only show multiple
- return;
- }
-
- }
std::string base_key( "" );
std::string tentative_key( "" );
@@ -215,7 +194,29 @@ void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& me
data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() );
};
};
-
+
+ // *NOTE: If any of a particular flavor is tentative, we have to disable
+ // them all because of an architectural issue: namely that we represent
+ // these as a bit field, and we can't selectively apply only one bit to all selected
+ // faces if they don't match. Also see the *NOTE below.
+ if ( self->mPermsOwnerInteract->getTentative() ||
+ self->mPermsGroupInteract->getTentative() ||
+ self->mPermsWorldInteract->getTentative())
+ {
+ self->mPermsOwnerInteract->setEnabled(false);
+ self->mPermsGroupInteract->setEnabled(false);
+ self->mPermsWorldInteract->setEnabled(false);
+ }
+ if ( self->mPermsOwnerControl->getTentative() ||
+ self->mPermsGroupControl->getTentative() ||
+ self->mPermsWorldControl->getTentative())
+ {
+ self->mPermsOwnerControl->setEnabled(false);
+ self->mPermsGroupControl->setEnabled(false);
+ self->mPermsWorldControl->setEnabled(false);
+ }
+
+
self->childSetEnabled("media_perms_label_owner", editable );
self->childSetText("media_perms_label_owner", LLTrans::getString("Media Perms Owner") );
self->childSetEnabled("media_perms_label_group", editable );
@@ -233,29 +234,47 @@ void LLPanelMediaSettingsPermissions::preApply()
////////////////////////////////////////////////////////////////////////////////
//
-void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in )
+void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in, bool include_tentative )
{
// moved over from the 'General settings' tab
- fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex();
-
- // *NOTE: For some reason, gcc does not like these symbol references in the
- // expressions below (inside the static_casts). I have NO idea why :(.
- // For some reason, assigning them to const temp vars here fixes the link
- // error. Bizarre.
- const U8 none = LLMediaEntry::PERM_NONE;
- const U8 owner = LLMediaEntry::PERM_OWNER;
- const U8 group = LLMediaEntry::PERM_GROUP;
- const U8 anyone = LLMediaEntry::PERM_ANYONE;
- const LLSD::Integer control = static_cast<LLSD::Integer>(
+ if (include_tentative || !mControls->getTentative()) fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex();
+
+ // *NOTE: For some reason, gcc does not like these symbol references in the
+ // expressions below (inside the static_casts). I have NO idea why :(.
+ // For some reason, assigning them to const temp vars here fixes the link
+ // error. Bizarre.
+ const U8 none = LLMediaEntry::PERM_NONE;
+ const U8 owner = LLMediaEntry::PERM_OWNER;
+ const U8 group = LLMediaEntry::PERM_GROUP;
+ const U8 anyone = LLMediaEntry::PERM_ANYONE;
+ const LLSD::Integer control = static_cast<LLSD::Integer>(
(mPermsOwnerControl->getValue() ? owner : none ) |
(mPermsGroupControl->getValue() ? group: none ) |
(mPermsWorldControl->getValue() ? anyone : none ));
- const LLSD::Integer interact = static_cast<LLSD::Integer>(
- (mPermsOwnerInteract->getValue() ? owner: none ) |
+ const LLSD::Integer interact = static_cast<LLSD::Integer>(
+ (mPermsOwnerInteract->getValue() ? owner: none ) |
(mPermsGroupInteract->getValue() ? group : none ) |
(mPermsWorldInteract->getValue() ? anyone : none ));
- fill_me_in[LLMediaEntry::PERMS_CONTROL_KEY] = control;
- fill_me_in[LLMediaEntry::PERMS_INTERACT_KEY] = interact;
+
+ // *TODO: This will fill in the values of all permissions values, even if
+ // one or more is tentative. This is not quite the user expectation...what
+ // it should do is only change the bit that was made "untentative", but in
+ // a multiple-selection situation, this isn't possible given the architecture
+ // for how settings are applied.
+ if (include_tentative ||
+ !mPermsOwnerControl->getTentative() ||
+ !mPermsGroupControl->getTentative() ||
+ !mPermsWorldControl->getTentative())
+ {
+ fill_me_in[LLMediaEntry::PERMS_CONTROL_KEY] = control;
+ }
+ if (include_tentative ||
+ !mPermsOwnerInteract->getTentative() ||
+ !mPermsGroupInteract->getTentative() ||
+ !mPermsWorldInteract->getTentative())
+ {
+ fill_me_in[LLMediaEntry::PERMS_INTERACT_KEY] = interact;
+ }
}
diff --git a/indra/newview/llpanelmediasettingspermissions.h b/indra/newview/llpanelmediasettingspermissions.h
index bd0c3b8ab5..858544605c 100644
--- a/indra/newview/llpanelmediasettingspermissions.h
+++ b/indra/newview/llpanelmediasettingspermissions.h
@@ -57,7 +57,8 @@ public:
// Hook that the floater calls before applying changes from the panel
void preApply();
// Function that asks the panel to fill in values associated with the panel
- void getValues(LLSD &fill_me_in);
+ // 'include_tentative' means fill in tentative values as well, otherwise do not
+ void getValues(LLSD &fill_me_in, bool include_tentative = true);
// Hook that the floater calls after applying changes to the panel
void postApply();
diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp
index 81842e3851..1b1346c41a 100644
--- a/indra/newview/llpanelmediasettingssecurity.cpp
+++ b/indra/newview/llpanelmediasettingssecurity.cpp
@@ -94,27 +94,6 @@ void LLPanelMediaSettingsSecurity::draw()
void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media_settings , bool editable)
{
LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata;
-
- if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo )
- {
- if(LLFloaterMediaSettings::getInstance()->mMultipleMedia)
- {
- self->clearValues(self, editable);
- // only show multiple
- return;
- }
-
- }
- else
- {
- if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia)
- {
- self->clearValues(self, editable);
- // only show multiple
- return;
- }
-
- }
std::string base_key( "" );
std::string tentative_key( "" );
@@ -136,6 +115,8 @@ void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media
base_key = std::string( data_set[ i ].key_name );
tentative_key = base_key + std::string( LLPanelContents::TENTATIVE_SUFFIX );
+ bool enabled_overridden = false;
+
// TODO: CP - I bet there is a better way to do this using Boost
if ( media_settings[ base_key ].isDefined() )
{
@@ -150,20 +131,31 @@ void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media
// get control
LLScrollListCtrl* list = static_cast< LLScrollListCtrl* >( data_set[ i ].ctrl_ptr );
list->deleteAllItems();
-
+
// points to list of white list URLs
LLSD url_list = media_settings[ base_key ];
-
- // iterate over them and add to scroll list
- LLSD::array_iterator iter = url_list.beginArray();
- while( iter != url_list.endArray() )
+
+ // better be the whitelist
+ llassert(data_set[ i ].ctrl_ptr == self->mWhiteListList);
+
+ // If tentative, don't add entries
+ if (media_settings[ tentative_key ].asBoolean())
{
- std::string entry = *iter;
- self->addWhiteListEntry( entry );
- ++iter;
- };
+ self->mWhiteListList->setEnabled(false);
+ enabled_overridden = true;
+ }
+ else {
+ // iterate over them and add to scroll list
+ LLSD::array_iterator iter = url_list.beginArray();
+ while( iter != url_list.endArray() )
+ {
+ std::string entry = *iter;
+ self->addWhiteListEntry( entry );
+ ++iter;
+ }
+ }
};
- data_set[ i ].ctrl_ptr->setEnabled(editable);
+ if ( ! enabled_overridden) data_set[ i ].ctrl_ptr->setEnabled(editable);
data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() );
};
};
@@ -192,25 +184,29 @@ void LLPanelMediaSettingsSecurity::preApply()
////////////////////////////////////////////////////////////////////////////////
//
-void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in )
+void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in, bool include_tentative )
{
- fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = (LLSD::Boolean)mEnableWhiteList->getValue();
-
- // iterate over white list and extract items
- std::vector< LLScrollListItem* > whitelist_items = mWhiteListList->getAllData();
- std::vector< LLScrollListItem* >::iterator iter = whitelist_items.begin();
-
- // *NOTE: need actually set the key to be an emptyArray(), or the merge
- // we do with this LLSD will think there's nothing to change.
- fill_me_in[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray();
- while( iter != whitelist_items.end() )
- {
- LLScrollListCell* cell = (*iter)->getColumn( ENTRY_COLUMN );
- std::string whitelist_url = cell->getValue().asString();
-
- fill_me_in[ LLMediaEntry::WHITELIST_KEY ].append( whitelist_url );
- ++iter;
- };
+ if (include_tentative || !mEnableWhiteList->getTentative())
+ fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = (LLSD::Boolean)mEnableWhiteList->getValue();
+
+ if (include_tentative || !mWhiteListList->getTentative())
+ {
+ // iterate over white list and extract items
+ std::vector< LLScrollListItem* > whitelist_items = mWhiteListList->getAllData();
+ std::vector< LLScrollListItem* >::iterator iter = whitelist_items.begin();
+
+ // *NOTE: need actually set the key to be an emptyArray(), or the merge
+ // we do with this LLSD will think there's nothing to change.
+ fill_me_in[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray();
+ while( iter != whitelist_items.end() )
+ {
+ LLScrollListCell* cell = (*iter)->getColumn( ENTRY_COLUMN );
+ std::string whitelist_url = cell->getValue().asString();
+
+ fill_me_in[ LLMediaEntry::WHITELIST_KEY ].append( whitelist_url );
+ ++iter;
+ };
+ }
}
////////////////////////////////////////////////////////////////////////////////
@@ -247,6 +243,10 @@ const std::string LLPanelMediaSettingsSecurity::makeValidUrl( const std::string&
// white list list box widget and build a list to test against.
bool LLPanelMediaSettingsSecurity::urlPassesWhiteList( const std::string& test_url )
{
+ // If the whitlelist list is tentative, it means we have multiple settings.
+ // In that case, we have no choice but to return true
+ if ( mWhiteListList->getTentative() ) return true;
+
// the checkUrlAgainstWhitelist(..) function works on a vector
// of strings for the white list entries - in this panel, the white list
// is stored in the widgets themselves so we need to build something compatible.
@@ -330,7 +330,7 @@ void LLPanelMediaSettingsSecurity::addWhiteListEntry( const std::string& entry )
// always add in the entry itself
row[ "columns" ][ ENTRY_COLUMN ][ "type" ] = "text";
row[ "columns" ][ ENTRY_COLUMN ][ "value" ] = entry;
-
+
// add to the white list scroll box
mWhiteListList->addElement( row );
};
diff --git a/indra/newview/llpanelmediasettingssecurity.h b/indra/newview/llpanelmediasettingssecurity.h
index 66ccb23f46..94f2fdc89c 100644
--- a/indra/newview/llpanelmediasettingssecurity.h
+++ b/indra/newview/llpanelmediasettingssecurity.h
@@ -53,11 +53,12 @@ public:
// Hook that the floater calls before applying changes from the panel
void preApply();
// Function that asks the panel to fill in values associated with the panel
- void getValues(LLSD &fill_me_in);
+ // 'include_tentative' means fill in tentative values as well, otherwise do not
+ void getValues(LLSD &fill_me_in, bool include_tentative = true);
// Hook that the floater calls after applying changes to the panel
void postApply();
- static void initValues( void* userdata, const LLSD& media_settings,bool editable );
+ static void initValues( void* userdata, const LLSD& media_settings, bool editable);
static void clearValues( void* userdata, bool editable);
void addWhiteListEntry( const std::string& url );
void setParent( LLFloaterMediaSettings* parent );
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
new file mode 100644
index 0000000000..173ff8d68b
--- /dev/null
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -0,0 +1,1219 @@
+/**
+ * @file llpanelnearbymedia.cpp
+ * @brief Management interface for muting and controlling nearby media
+ *
+ * $LicenseInfo:firstyear=2005&license=viewergpl$
+ *
+ * Copyright (c) 2005-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llpanelnearbymedia.h"
+
+#include "llaudioengine.h"
+#include "llcheckboxctrl.h"
+#include "llcombobox.h"
+#include "llresizebar.h"
+#include "llresizehandle.h"
+#include "llscrolllistctrl.h"
+#include "llscrolllistitem.h"
+#include "llscrolllistcell.h"
+#include "llslider.h"
+#include "llsliderctrl.h"
+#include "llagent.h"
+#include "llagentui.h"
+#include "llbutton.h"
+#include "lltextbox.h"
+#include "llviewermedia.h"
+#include "llviewerparcelmedia.h"
+#include "llviewerregion.h"
+#include "llviewermediafocus.h"
+#include "llviewerparcelmgr.h"
+#include "llparcel.h"
+#include "llpluginclassmedia.h"
+#include "llvovolume.h"
+#include "llstatusbar.h"
+#include "llsdutil.h"
+
+#include "llfloaterreg.h"
+#include "llfloaterpreference.h" // for the gear icon
+#include "lltabcontainer.h"
+
+#include <stringize.h>
+
+extern LLControlGroup gSavedSettings;
+
+static const LLUUID PARCEL_MEDIA_LIST_ITEM_UUID = LLUUID("CAB5920F-E484-4233-8621-384CF373A321");
+static const LLUUID PARCEL_AUDIO_LIST_ITEM_UUID = LLUUID("DF4B020D-8A24-4B95-AB5D-CA970D694822");
+
+//
+// LLPanelNearByMedia
+//
+
+LLPanelNearByMedia::LLPanelNearByMedia()
+: mMediaList(NULL),
+ mEnableAllCtrl(NULL),
+ mAllMediaDisabled(false),
+ mDebugInfoVisible(false),
+ mParcelMediaItem(NULL),
+ mParcelAudioItem(NULL)
+{
+ mParcelAudioAutoStart = gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) &&
+ gSavedSettings.getBOOL("MediaTentativeAutoPlay");
+
+ mCommitCallbackRegistrar.add("MediaListCtrl.EnableAll", boost::bind(&LLPanelNearByMedia::onClickEnableAll, this));
+ mCommitCallbackRegistrar.add("MediaListCtrl.DisableAll", boost::bind(&LLPanelNearByMedia::onClickDisableAll, this));
+ mCommitCallbackRegistrar.add("MediaListCtrl.GoMediaPrefs", boost::bind(&LLPanelNearByMedia::onAdvancedButtonClick, this));
+ mCommitCallbackRegistrar.add("MediaListCtrl.MoreLess", boost::bind(&LLPanelNearByMedia::onMoreLess, this));
+ mCommitCallbackRegistrar.add("SelectedMediaCtrl.Stop", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaStop, this));
+ mCommitCallbackRegistrar.add("SelectedMediaCtrl.Play", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaPlay, this));
+ mCommitCallbackRegistrar.add("SelectedMediaCtrl.Pause", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaPause, this));
+ mCommitCallbackRegistrar.add("SelectedMediaCtrl.Mute", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaMute, this));
+ mCommitCallbackRegistrar.add("SelectedMediaCtrl.Volume", boost::bind(&LLPanelNearByMedia::onCommitSelectedMediaVolume, this));
+ mCommitCallbackRegistrar.add("SelectedMediaCtrl.Zoom", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaZoom, this));
+ mCommitCallbackRegistrar.add("SelectedMediaCtrl.Unzoom", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaUnzoom, this));
+
+ LLUICtrlFactory::instance().buildPanel(this, "panel_nearby_media.xml");
+}
+
+LLPanelNearByMedia::~LLPanelNearByMedia()
+{
+}
+
+BOOL LLPanelNearByMedia::postBuild()
+{
+ LLPanel::postBuild();
+
+ const S32 RESIZE_BAR_THICKNESS = 6;
+ LLResizeBar::Params p;
+ p.rect = LLRect(0, RESIZE_BAR_THICKNESS, getRect().getWidth(), 0);
+ p.name = "resizebar_bottom";
+ p.min_size = getRect().getHeight();
+ p.side = LLResizeBar::BOTTOM;
+ p.resizing_view = this;
+ addChild( LLUICtrlFactory::create<LLResizeBar>(p) );
+
+ p.rect = LLRect( 0, getRect().getHeight(), RESIZE_BAR_THICKNESS, 0);
+ p.name = "resizebar_left";
+ p.min_size = getRect().getWidth();
+ p.side = LLResizeBar::LEFT;
+ addChild( LLUICtrlFactory::create<LLResizeBar>(p) );
+
+ LLResizeHandle::Params resize_handle_p;
+ resize_handle_p.rect = LLRect( 0, RESIZE_HANDLE_HEIGHT, RESIZE_HANDLE_WIDTH, 0 );
+ resize_handle_p.mouse_opaque(false);
+ resize_handle_p.min_width(getRect().getWidth());
+ resize_handle_p.min_height(getRect().getHeight());
+ resize_handle_p.corner(LLResizeHandle::LEFT_BOTTOM);
+ addChild(LLUICtrlFactory::create<LLResizeHandle>(resize_handle_p));
+
+ mNearbyMediaPanel = getChild<LLUICtrl>("nearby_media_panel");
+ mMediaList = getChild<LLScrollListCtrl>("media_list");
+ mEnableAllCtrl = getChild<LLUICtrl>("all_nearby_media_enable_btn");
+ mDisableAllCtrl = getChild<LLUICtrl>("all_nearby_media_disable_btn");
+ mItemCountText = getChild<LLTextBox>("media_item_count");
+ mShowCtrl = getChild<LLComboBox>("show_combo");
+
+ // Dynamic (selection-dependent) controls
+ mStopCtrl = getChild<LLUICtrl>("stop");
+ mPlayCtrl = getChild<LLUICtrl>("play");
+ mPauseCtrl = getChild<LLUICtrl>("pause");
+ mMuteCtrl = getChild<LLUICtrl>("mute");
+ mVolumeSliderCtrl = getChild<LLUICtrl>("volume_slider_ctrl");
+ mZoomCtrl = getChild<LLUICtrl>("zoom");
+ mUnzoomCtrl = getChild<LLUICtrl>("unzoom");
+ mVolumeSlider = getChild<LLSlider>("volume_slider");
+ mMuteBtn = getChild<LLButton>("mute_btn");
+
+ mEmptyNameString = getString("empty_item_text");
+ mParcelMediaName = getString("parcel_media_name");
+ mParcelAudioName = getString("parcel_audio_name");
+ mPlayingString = getString("playing_suffix");
+
+ mMediaList->setDoubleClickCallback(onZoomMedia, this);
+ mMediaList->sortByColumnIndex(PROXIMITY_COLUMN, TRUE);
+ mMediaList->sortByColumnIndex(VISIBILITY_COLUMN, FALSE);
+
+ refreshList();
+ updateControls();
+ updateColumns();
+
+ LLView* minimized_controls = getChildView("minimized_controls");
+ mMoreRect = getRect();
+ mLessRect = getRect();
+ mLessRect.mBottom = minimized_controls->getRect().mBottom;
+
+ getChild<LLUICtrl>("more_less_btn")->setValue(false);
+ onMoreLess();
+
+ return TRUE;
+}
+
+/*virtual*/
+void LLPanelNearByMedia::onMouseEnter(S32 x, S32 y, MASK mask)
+{
+ mHoverTimer.stop();
+ LLPanel::onMouseEnter(x,y,mask);
+}
+
+
+/*virtual*/
+void LLPanelNearByMedia::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+ mHoverTimer.start();
+ LLPanel::onMouseLeave(x,y,mask);
+}
+
+/*virtual*/
+void LLPanelNearByMedia::handleVisibilityChange ( BOOL new_visibility )
+{
+ if (new_visibility)
+ {
+ mHoverTimer.start(); // timer will be stopped when mouse hovers over panel
+ //gFocusMgr.setTopCtrl(this);
+ }
+ else
+ {
+ mHoverTimer.stop();
+ //if (gFocusMgr.getTopCtrl() == this)
+ //{
+ // gFocusMgr.setTopCtrl(NULL);
+ //}
+ }
+}
+
+/*virtual*/
+void LLPanelNearByMedia::onTopLost ()
+{
+ //LLUICtrl* new_top = gFocusMgr.getTopCtrl();
+ //if (!new_top || !new_top->hasAncestor(this))
+ //{
+ // setVisible(FALSE);
+ //}
+}
+
+/*virtual*/
+void LLPanelNearByMedia::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ LLPanel::reshape(width, height, called_from_parent);
+
+ LLButton* more_less_btn = getChild<LLButton>("more_less_btn");
+ if (more_less_btn->getValue().asBoolean())
+ {
+ mMoreRect = getRect();
+ }
+
+}
+
+const F32 AUTO_CLOSE_FADE_TIME_START= 4.0f;
+const F32 AUTO_CLOSE_FADE_TIME_END = 5.0f;
+
+void LLPanelNearByMedia::draw()
+{
+ //LLUICtrl* new_top = gFocusMgr.getTopCtrl();
+ //if (new_top != this)
+ //{
+ // // reassert top ctrl
+ // gFocusMgr.setTopCtrl(this);
+ //}
+
+ // keep bottom of panel on screen
+ LLRect screen_rect = calcScreenRect();
+ if (screen_rect.mBottom < 0)
+ {
+ LLRect new_rect = getRect();
+ new_rect.mBottom += 0 - screen_rect.mBottom;
+ setShape(new_rect);
+ }
+
+ mItemCountText->setValue(llformat(getString("media_item_count_format").c_str(), mMediaList->getItemCount()));
+
+ refreshList();
+ updateControls();
+
+ F32 alpha = mHoverTimer.getStarted()
+ ? clamp_rescale(mHoverTimer.getElapsedTimeF32(), AUTO_CLOSE_FADE_TIME_START, AUTO_CLOSE_FADE_TIME_END, 1.f, 0.f)
+ : 1.0f;
+ LLViewDrawContext context(alpha);
+
+ LLPanel::draw();
+
+ if (alpha == 0.f)
+ {
+ setVisible(false);
+ }
+}
+
+bool LLPanelNearByMedia::getParcelAudioAutoStart()
+{
+ return mParcelAudioAutoStart;
+}
+
+LLScrollListItem* LLPanelNearByMedia::addListItem(const LLUUID &id)
+{
+ if (NULL == mMediaList) return NULL;
+
+ // Just set up the columns -- the values will be filled in by updateListItem().
+
+ LLSD row;
+ row["id"] = id;
+
+ LLSD &columns = row["columns"];
+
+ columns[CHECKBOX_COLUMN]["column"] = "media_checkbox_ctrl";
+ columns[CHECKBOX_COLUMN]["type"] = "checkbox";
+ //if(mDebugInfoVisible)
+ {
+ columns[PROXIMITY_COLUMN]["column"] = "media_proximity";
+ columns[PROXIMITY_COLUMN]["value"] = "";
+ columns[VISIBILITY_COLUMN]["column"] = "media_visibility";
+ columns[VISIBILITY_COLUMN]["value"] = "";
+ columns[CLASS_COLUMN]["column"] = "media_class";
+ columns[CLASS_COLUMN]["type"] = "text";
+ columns[CLASS_COLUMN]["value"] = "";
+ }
+ columns[NAME_COLUMN]["column"] = "media_name";
+ columns[NAME_COLUMN]["type"] = "text";
+ columns[NAME_COLUMN]["value"] = "";
+ //if(mDebugInfoVisible)
+ {
+ columns[DEBUG_COLUMN]["column"] = "media_debug";
+ columns[DEBUG_COLUMN]["type"] = "text";
+ columns[DEBUG_COLUMN]["value"] = "";
+ }
+
+ LLScrollListItem* new_item = mMediaList->addElement(row);
+ if (NULL != new_item)
+ {
+ LLScrollListCheck* scroll_list_check = dynamic_cast<LLScrollListCheck*>(new_item->getColumn(CHECKBOX_COLUMN));
+ if (scroll_list_check)
+ {
+ LLCheckBoxCtrl *check = scroll_list_check->getCheckBox();
+ check->setCommitCallback(boost::bind(&LLPanelNearByMedia::onCheckItem, this, _1, id));
+ }
+ }
+ return new_item;
+}
+
+void LLPanelNearByMedia::updateListItem(LLScrollListItem* item, LLViewerMediaImpl* impl)
+{
+ std::string item_name;
+ std::string item_tooltip;
+ std::string debug_str;
+ LLPanelNearByMedia::MediaClass media_class = MEDIA_CLASS_ALL;
+
+ getNameAndUrlHelper(impl, item_name, item_tooltip, mEmptyNameString);
+ // Focused
+ if (impl->hasFocus())
+ {
+ media_class = MEDIA_CLASS_FOCUSED;
+ }
+ // Is attached to another avatar?
+ else if (impl->isAttachedToAnotherAvatar())
+ {
+ media_class = MEDIA_CLASS_ON_OTHERS;
+ }
+ // Outside agent parcel
+ else if (!impl->isInAgentParcel())
+ {
+ media_class = MEDIA_CLASS_OUTSIDE_PARCEL;
+ }
+ else {
+ // inside parcel
+ media_class = MEDIA_CLASS_WITHIN_PARCEL;
+ }
+
+ if(mDebugInfoVisible)
+ {
+ debug_str += llformat("%g/", (float)impl->getInterest());
+
+ // proximity distance is actually distance squared -- display it as straight distance.
+ debug_str += llformat("%g/", fsqrtf(impl->getProximityDistance()));
+
+ // s += llformat("%g/", (float)impl->getCPUUsage());
+ // s += llformat("%g/", (float)impl->getApproximateTextureInterest());
+ debug_str += llformat("%g/", (float)(NULL == impl->getSomeObject()) ? 0.0 : impl->getSomeObject()->getPixelArea());
+
+ debug_str += LLPluginClassMedia::priorityToString(impl->getPriority());
+
+ if(impl->hasMedia())
+ {
+ debug_str += '@';
+ }
+ else if(impl->isPlayable())
+ {
+ debug_str += '+';
+ }
+ else if(impl->isForcedUnloaded())
+ {
+ debug_str += '!';
+ }
+ }
+
+ updateListItem(item,
+ item_name,
+ item_tooltip,
+ impl->getProximity(),
+ impl->isMediaDisabled(),
+ impl->hasMedia(),
+ impl->isMediaTimeBased() && impl->isMediaPlaying(),
+ media_class,
+ debug_str);
+}
+
+void LLPanelNearByMedia::updateListItem(LLScrollListItem* item,
+ const std::string &item_name,
+ const std::string &item_tooltip,
+ S32 proximity,
+ bool is_disabled,
+ bool has_media,
+ bool is_time_based_and_playing,
+ LLPanelNearByMedia::MediaClass media_class,
+ const std::string &debug_str)
+{
+ LLScrollListCell* cell = item->getColumn(PROXIMITY_COLUMN);
+ if(cell)
+ {
+ // since we are forced to sort by text, encode sort order as string
+ std::string proximity_string = STRINGIZE(proximity);
+ std::string old_proximity_string = cell->getValue().asString();
+ if(proximity_string != old_proximity_string)
+ {
+ cell->setValue(proximity_string);
+ mMediaList->setNeedsSort(true);
+ }
+ }
+
+ cell = item->getColumn(CHECKBOX_COLUMN);
+ if(cell)
+ {
+ cell->setValue(!is_disabled);
+ }
+
+ cell = item->getColumn(VISIBILITY_COLUMN);
+ if(cell)
+ {
+ S32 old_visibility = cell->getValue();
+ // *HACK ALERT: force ordering of Media before Audio before the rest of the list
+ S32 new_visibility =
+ item->getUUID() == PARCEL_MEDIA_LIST_ITEM_UUID ? 3
+ : item->getUUID() == PARCEL_AUDIO_LIST_ITEM_UUID ? 2
+ : (has_media) ? 1
+ : ((is_disabled) ? 0
+ : -1);
+ cell->setValue(STRINGIZE(new_visibility));
+ if (new_visibility != old_visibility)
+ {
+ mMediaList->setNeedsSort(true);
+ }
+ }
+
+ cell = item->getColumn(NAME_COLUMN);
+ if(cell)
+ {
+ std::string name = item_name;
+ std::string old_name = cell->getValue().asString();
+ if (has_media)
+ {
+ name += " " + mPlayingString;
+ }
+ if (name != old_name)
+ {
+ cell->setValue(name);
+ }
+ cell->setToolTip(item_tooltip);
+
+ // *TODO: Make these font styles/colors configurable via XUI
+ U8 font_style = LLFontGL::NORMAL;
+ LLColor4 cell_color = LLColor4::white;
+
+ // Only colorize by class in debug
+ if (mDebugInfoVisible)
+ {
+ switch (media_class) {
+ case MEDIA_CLASS_FOCUSED:
+ cell_color = LLColor4::yellow;
+ break;
+ case MEDIA_CLASS_ON_OTHERS:
+ cell_color = LLColor4::red;
+ break;
+ case MEDIA_CLASS_OUTSIDE_PARCEL:
+ cell_color = LLColor4::orange;
+ break;
+ case MEDIA_CLASS_WITHIN_PARCEL:
+ default:
+ break;
+ }
+ }
+ if (is_disabled)
+ {
+ if (mDebugInfoVisible)
+ {
+ font_style |= LLFontGL::ITALIC;
+ cell_color = LLColor4::black;
+ }
+ else {
+ // Dim it if it is disabled
+ cell_color.setAlpha(0.25);
+ }
+ }
+ // Dim it if it isn't "showing"
+ else if (!has_media)
+ {
+ cell_color.setAlpha(0.25);
+ }
+ // Bold it if it is time-based media and it is playing
+ else if (is_time_based_and_playing)
+ {
+ if (mDebugInfoVisible) font_style |= LLFontGL::BOLD;
+ }
+ cell->setColor(cell_color);
+ LLScrollListText *text_cell = dynamic_cast<LLScrollListText*> (cell);
+ if (text_cell)
+ {
+ text_cell->setFontStyle(font_style);
+ }
+ }
+
+ cell = item->getColumn(CLASS_COLUMN);
+ if(cell)
+ {
+ // TODO: clean this up!
+ cell->setValue(STRINGIZE(media_class));
+ }
+
+ if(mDebugInfoVisible)
+ {
+ cell = item->getColumn(DEBUG_COLUMN);
+ if(cell)
+ {
+ cell->setValue(debug_str);
+ }
+ }
+}
+
+void LLPanelNearByMedia::removeListItem(const LLUUID &id)
+{
+ if (NULL == mMediaList) return;
+
+ mMediaList->deleteSingleItem(mMediaList->getItemIndex(id));
+}
+
+void LLPanelNearByMedia::refreshParcelItems()
+{
+ //
+ // First add/remove the "fake" items Parcel Media and Parcel Audio.
+ // These items will have special UUIDs
+ // PARCEL_MEDIA_LIST_ITEM_UUID
+ // PARCEL_AUDIO_LIST_ITEM_UUID
+ //
+ // Get the filter choice.
+ const LLSD &choice_llsd = mShowCtrl->getSelectedValue();
+ MediaClass choice = (MediaClass)choice_llsd.asInteger();
+ // Only show "special parcel items" if "All" or "Within" filter
+ // (and if media is "enabled")
+ bool should_include = gSavedSettings.getBOOL("AudioStreamingMedia") &&
+ (choice == MEDIA_CLASS_ALL || choice == MEDIA_CLASS_WITHIN_PARCEL);
+
+ // First Parcel Media: add or remove it as necessary
+ if (should_include && LLViewerMedia::hasParcelMedia())
+ {
+ // Yes, there is parcel media.
+ if (NULL == mParcelMediaItem)
+ {
+ mParcelMediaItem = addListItem(PARCEL_MEDIA_LIST_ITEM_UUID);
+ mMediaList->setNeedsSort(true);
+ }
+ }
+ else {
+ if (NULL != mParcelMediaItem) {
+ removeListItem(PARCEL_MEDIA_LIST_ITEM_UUID);
+ mParcelMediaItem = NULL;
+ mMediaList->setNeedsSort(true);
+ }
+ }
+
+ // ... then update it
+ if (NULL != mParcelMediaItem)
+ {
+ std::string name, url, tooltip;
+ getNameAndUrlHelper(LLViewerParcelMedia::getParcelMedia(), name, url, "");
+ if (name.empty() || name == url)
+ {
+ tooltip = url;
+ }
+ else {
+ tooltip = name + " : " + url;
+ }
+ LLViewerMediaImpl *impl = LLViewerParcelMedia::getParcelMedia();
+ updateListItem(mParcelMediaItem,
+ mParcelMediaName,
+ tooltip,
+ -2, // Proximity closer than anything else, before Parcel Audio
+ impl == NULL || impl->isMediaDisabled(),
+ impl != NULL && !LLViewerParcelMedia::getURL().empty(),
+ impl != NULL && impl->isMediaTimeBased() && impl->isMediaPlaying(),
+ MEDIA_CLASS_ALL,
+ "parcel media");
+ }
+
+ // Next Parcel Audio: add or remove it as necessary (don't show if disabled in prefs)
+ if (should_include && LLViewerMedia::hasParcelAudio() && gSavedSettings.getBOOL("AudioStreamingMusic"))
+ {
+ // Yes, there is parcel audio.
+ if (NULL == mParcelAudioItem)
+ {
+ mParcelAudioItem = addListItem(PARCEL_AUDIO_LIST_ITEM_UUID);
+ mMediaList->setNeedsSort(true);
+ }
+ }
+ else {
+ if (NULL != mParcelAudioItem) {
+ removeListItem(PARCEL_AUDIO_LIST_ITEM_UUID);
+ mParcelAudioItem = NULL;
+ mMediaList->setNeedsSort(true);
+ }
+ }
+
+ // ... then update it
+ if (NULL != mParcelAudioItem)
+ {
+ bool is_playing = LLViewerMedia::isParcelAudioPlaying();
+
+ updateListItem(mParcelAudioItem,
+ mParcelAudioName,
+ LLViewerMedia::getParcelAudioURL(),
+ -1, // Proximity after Parcel Media, but closer than anything else
+ (!is_playing),
+ is_playing,
+ is_playing,
+ MEDIA_CLASS_ALL,
+ "parcel audio");
+ }
+}
+
+void LLPanelNearByMedia::refreshList()
+{
+ bool all_items_deleted = false;
+
+ if(!mMediaList)
+ {
+ // None of this makes any sense if the media list isn't there.
+ return;
+ }
+
+ // Check whether the debug column has been shown/hidden.
+ bool debug_info_visible = gSavedSettings.getBOOL("MediaPerformanceManagerDebug");
+ if(debug_info_visible != mDebugInfoVisible)
+ {
+ mDebugInfoVisible = debug_info_visible;
+
+ // Clear all items so the list gets regenerated.
+ mMediaList->deleteAllItems();
+ mParcelAudioItem = NULL;
+ mParcelMediaItem = NULL;
+ all_items_deleted = true;
+
+ updateColumns();
+ }
+
+ refreshParcelItems();
+
+ // Get the canonical list from LLViewerMedia
+ LLViewerMedia::impl_list impls = LLViewerMedia::getPriorityList();
+ LLViewerMedia::impl_list::iterator priority_iter;
+
+ U32 enabled_count = 0;
+ U32 disabled_count = 0;
+
+ // iterate over the impl list, creating rows as necessary.
+ for(priority_iter = impls.begin(); priority_iter != impls.end(); priority_iter++)
+ {
+ LLViewerMediaImpl *impl = *priority_iter;
+
+ // If we just emptied out the list, every flag needs to be reset.
+ if(all_items_deleted)
+ {
+ impl->setInNearbyMediaList(false);
+ }
+
+ if (!impl->isParcelMedia())
+ {
+ LLUUID media_id = impl->getMediaTextureID();
+ S32 proximity = impl->getProximity();
+ // This is expensive (i.e. a linear search) -- don't use it here. We now use mInNearbyMediaList instead.
+ //S32 index = mMediaList->getItemIndex(media_id);
+ if (proximity < 0 || !shouldShow(impl))
+ {
+ if (impl->getInNearbyMediaList())
+ {
+ // There's a row for this impl -- remove it.
+ removeListItem(media_id);
+ impl->setInNearbyMediaList(false);
+ }
+ }
+ else
+ {
+ if (!impl->getInNearbyMediaList())
+ {
+ // We don't have a row for this impl -- add one.
+ addListItem(media_id);
+ impl->setInNearbyMediaList(true);
+ }
+ }
+ // Update counts
+ if (impl->isMediaDisabled())
+ {
+ disabled_count++;
+ }
+ else {
+ enabled_count++;
+ }
+ }
+ }
+ mDisableAllCtrl->setEnabled(gSavedSettings.getBOOL("AudioStreamingMedia") &&
+ (LLViewerMedia::isAnyMediaShowing() ||
+ LLViewerMedia::isParcelMediaPlaying() ||
+ LLViewerMedia::isParcelAudioPlaying()));
+ mEnableAllCtrl->setEnabled(gSavedSettings.getBOOL("AudioStreamingMedia") &&
+ (disabled_count > 0 ||
+ // parcel media (if we have it, and it isn't playing, enable "start")
+ (LLViewerMedia::hasParcelMedia() && ! LLViewerMedia::isParcelMediaPlaying()) ||
+ // parcel audio (if we have it, and it isn't playing, enable "start")
+ (LLViewerMedia::hasParcelAudio() && ! LLViewerMedia::isParcelAudioPlaying())));
+
+ // Iterate over the rows in the control, updating ones whose impl exists, and deleting ones whose impl has gone away.
+ std::vector<LLScrollListItem*> items = mMediaList->getAllData();
+
+ for (std::vector<LLScrollListItem*>::iterator item_it = items.begin();
+ item_it != items.end();
+ ++item_it)
+ {
+ LLScrollListItem* item = (*item_it);
+ LLUUID row_id = item->getUUID();
+
+ if (row_id != PARCEL_MEDIA_LIST_ITEM_UUID &&
+ row_id != PARCEL_AUDIO_LIST_ITEM_UUID)
+ {
+ LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(row_id);
+ if(impl)
+ {
+ updateListItem(item, impl);
+ }
+ else
+ {
+ // This item's impl has been deleted -- remove the row.
+ // Removing the row won't throw off our iteration, since we have a local copy of the array.
+ // We just need to make sure we don't access this item after the delete.
+ removeListItem(row_id);
+ }
+ }
+ }
+
+ // Set the selection to whatever media impl the media focus/hover is on.
+ // This is an experiment, and can be removed by ifdefing out these 4 lines.
+ LLUUID media_target = LLViewerMediaFocus::getInstance()->getControlsMediaID();
+ if(media_target.notNull())
+ {
+ mMediaList->selectByID(media_target);
+ }
+}
+
+void LLPanelNearByMedia::updateColumns()
+{
+ if (!mDebugInfoVisible)
+ {
+ if (mMediaList->getColumn(CHECKBOX_COLUMN)) mMediaList->getColumn(VISIBILITY_COLUMN)->setWidth(-1);
+ if (mMediaList->getColumn(VISIBILITY_COLUMN)) mMediaList->getColumn(VISIBILITY_COLUMN)->setWidth(-1);
+ if (mMediaList->getColumn(PROXIMITY_COLUMN)) mMediaList->getColumn(PROXIMITY_COLUMN)->setWidth(-1);
+ if (mMediaList->getColumn(CLASS_COLUMN)) mMediaList->getColumn(CLASS_COLUMN)->setWidth(-1);
+ if (mMediaList->getColumn(DEBUG_COLUMN)) mMediaList->getColumn(DEBUG_COLUMN)->setWidth(-1);
+ }
+ else {
+ if (mMediaList->getColumn(CHECKBOX_COLUMN)) mMediaList->getColumn(VISIBILITY_COLUMN)->setWidth(20);
+ if (mMediaList->getColumn(VISIBILITY_COLUMN)) mMediaList->getColumn(VISIBILITY_COLUMN)->setWidth(20);
+ if (mMediaList->getColumn(PROXIMITY_COLUMN)) mMediaList->getColumn(PROXIMITY_COLUMN)->setWidth(30);
+ if (mMediaList->getColumn(CLASS_COLUMN)) mMediaList->getColumn(CLASS_COLUMN)->setWidth(20);
+ if (mMediaList->getColumn(DEBUG_COLUMN)) mMediaList->getColumn(DEBUG_COLUMN)->setWidth(200);
+ }
+}
+
+void LLPanelNearByMedia::onClickEnableAll()
+{
+ LLViewerMedia::setAllMediaEnabled(true);
+}
+
+void LLPanelNearByMedia::onClickDisableAll()
+{
+ LLViewerMedia::setAllMediaEnabled(false);
+}
+
+void LLPanelNearByMedia::onClickEnableParcelMedia()
+{
+ if ( ! LLViewerMedia::isParcelMediaPlaying() )
+ {
+ LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel());
+ }
+}
+
+void LLPanelNearByMedia::onClickDisableParcelMedia()
+{
+ // This actually unloads the impl, as opposed to "stop"ping the media
+ LLViewerParcelMedia::stop();
+}
+
+void LLPanelNearByMedia::onCheckItem(LLUICtrl* ctrl, const LLUUID &row_id)
+{
+ LLCheckBoxCtrl* check = static_cast<LLCheckBoxCtrl*>(ctrl);
+
+ setDisabled(row_id, ! check->getValue());
+}
+
+bool LLPanelNearByMedia::setDisabled(const LLUUID &row_id, bool disabled)
+{
+ if (row_id == PARCEL_AUDIO_LIST_ITEM_UUID)
+ {
+ if (disabled) onClickParcelAudioStop();
+ else onClickParcelAudioStart();
+ return true;
+ }
+ else if (row_id == PARCEL_MEDIA_LIST_ITEM_UUID)
+ {
+ if (disabled) onClickDisableParcelMedia();
+ else onClickEnableParcelMedia();
+ return true;
+ }
+ else {
+ LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(row_id);
+ if(impl)
+ {
+ impl->setDisabled(disabled, true);
+ return true;
+ }
+ }
+ return false;
+}
+
+//static
+void LLPanelNearByMedia::onZoomMedia(void* user_data)
+{
+ LLPanelNearByMedia* panelp = (LLPanelNearByMedia*)user_data;
+ LLUUID media_id = panelp->mMediaList->getValue().asUUID();
+
+ LLViewerMediaFocus::getInstance()->focusZoomOnMedia(media_id);
+}
+
+void LLPanelNearByMedia::onClickParcelMediaPlay()
+{
+ LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel());
+}
+
+void LLPanelNearByMedia::onClickParcelMediaStop()
+{
+ if (LLViewerParcelMedia::getParcelMedia())
+ {
+ // This stops the media playing, as opposed to unloading it like
+ // LLViewerParcelMedia::stop() does
+ LLViewerParcelMedia::getParcelMedia()->stop();
+ }
+}
+
+void LLPanelNearByMedia::onClickParcelMediaPause()
+{
+ LLViewerParcelMedia::pause();
+}
+
+void LLPanelNearByMedia::onClickParcelAudioStart()
+{
+ // User *explicitly* started the internet stream, so keep the stream
+ // playing and updated as they cross to other parcels etc.
+ mParcelAudioAutoStart = true;
+
+ if (!gAudiop)
+ return;
+
+ gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL());
+}
+
+void LLPanelNearByMedia::onClickParcelAudioPlay()
+{
+ // User *explicitly* started the internet stream, so keep the stream
+ // playing and updated as they cross to other parcels etc.
+ mParcelAudioAutoStart = true;
+
+ if (!gAudiop)
+ return;
+
+ if (LLAudioEngine::AUDIO_PAUSED == gAudiop->isInternetStreamPlaying())
+ {
+ // 'false' means unpause
+ gAudiop->pauseInternetStream(false);
+ }
+ else {
+ gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL());
+ }
+}
+
+void LLPanelNearByMedia::onClickParcelAudioStop()
+{
+ // User *explicitly* stopped the internet stream, so don't
+ // re-start audio when i.e. they move to another parcel, until
+ // they explicitly start it again.
+ mParcelAudioAutoStart = false;
+
+ if (!gAudiop)
+ return;
+
+ gAudiop->stopInternetStream();
+}
+
+void LLPanelNearByMedia::onClickParcelAudioPause()
+{
+ if (!gAudiop)
+ return;
+
+ // 'true' means pause
+ gAudiop->pauseInternetStream(true);
+}
+
+bool LLPanelNearByMedia::shouldShow(LLViewerMediaImpl* impl)
+{
+ const LLSD &choice_llsd = mShowCtrl->getSelectedValue();
+ MediaClass choice = (MediaClass)choice_llsd.asInteger();
+
+ switch (choice)
+ {
+ case MEDIA_CLASS_ALL:
+ return true;
+ break;
+ case MEDIA_CLASS_WITHIN_PARCEL:
+ return impl->isInAgentParcel();
+ break;
+ case MEDIA_CLASS_OUTSIDE_PARCEL:
+ return ! impl->isInAgentParcel();
+ break;
+ case MEDIA_CLASS_ON_OTHERS:
+ return impl->isAttachedToAnotherAvatar();
+ break;
+ default:
+ break;
+ }
+ return true;
+}
+
+void LLPanelNearByMedia::onAdvancedButtonClick()
+{
+ // bring up the prefs floater
+ LLFloaterPreference* prefsfloater = dynamic_cast<LLFloaterPreference*>(LLFloaterReg::showInstance("preferences"));
+ if (prefsfloater)
+ {
+ // grab the 'audio' panel from the preferences floater and
+ // bring it the front!
+ LLTabContainer* tabcontainer = prefsfloater->getChild<LLTabContainer>("pref core");
+ LLPanel* audiopanel = prefsfloater->getChild<LLPanel>("audio");
+ if (tabcontainer && audiopanel)
+ {
+ tabcontainer->selectTabPanel(audiopanel);
+ }
+ }
+}
+
+void LLPanelNearByMedia::onMoreLess()
+{
+ bool is_more = getChild<LLUICtrl>("more_less_btn")->getValue();
+ mNearbyMediaPanel->setVisible(is_more);
+
+ // enable resizing when expanded
+ getChildView("resizebar_bottom")->setEnabled(is_more);
+
+ LLRect new_rect = is_more ? mMoreRect : mLessRect;
+ new_rect.translate(getRect().mRight - new_rect.mRight, getRect().mTop - new_rect.mTop);
+
+ setShape(new_rect);
+}
+
+void LLPanelNearByMedia::updateControls()
+{
+ if (! gSavedSettings.getBOOL("AudioStreamingMedia"))
+ {
+ // Just show disabled controls
+ showDisabledControls();
+ return;
+ }
+
+ LLUUID selected_media_id = mMediaList->getValue().asUUID();
+
+ if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID)
+ {
+ if (!LLViewerMedia::hasParcelAudio() || !gSavedSettings.getBOOL("AudioStreamingMusic"))
+ {
+ // Shouldn't happen, but do this anyway
+ showDisabledControls();
+ }
+ else {
+ showTimeBasedControls(LLViewerMedia::isParcelAudioPlaying(),
+ false, // include_zoom
+ false, // is_zoomed
+ gSavedSettings.getBOOL("MuteMusic"),
+ gSavedSettings.getF32("AudioLevelMusic") );
+ }
+ }
+ else if (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID)
+ {
+ if (!LLViewerMedia::hasParcelMedia())
+ {
+ // Shouldn't happen, but do this anyway
+ showDisabledControls();
+ }
+ else {
+ LLViewerMediaImpl* impl = LLViewerParcelMedia::getParcelMedia();
+ if (NULL == impl)
+ {
+ // Just means it hasn't started yet
+ showBasicControls(false, false, false);
+ }
+ else if (impl->isMediaTimeBased())
+ {
+ showTimeBasedControls(impl->isMediaPlaying(),
+ false, // include_zoom
+ false, // is_zoomed
+ impl->getVolume() == 0.0,
+ impl->getVolume() );
+ }
+ else {
+ // non-time-based parcel media
+ showBasicControls(LLViewerMedia::isParcelMediaPlaying(), false, false);
+ }
+ }
+ }
+ else {
+ LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(selected_media_id);
+
+ if (NULL == impl)
+ {
+ showDisabledControls();
+ }
+ else {
+ if (impl->isMediaTimeBased())
+ {
+ showTimeBasedControls(impl->isMediaPlaying(),
+ ! impl->isParcelMedia(), // include_zoom
+ LLViewerMediaFocus::getInstance()->isZoomed(),
+ impl->getVolume() == 0.0,
+ impl->getVolume());
+ }
+ else {
+ showBasicControls(!impl->isMediaDisabled(),
+ ! impl->isParcelMedia(), // include_zoom
+ LLViewerMediaFocus::getInstance()->isZoomed());
+ }
+ }
+ }
+}
+
+void LLPanelNearByMedia::showBasicControls(bool playing, bool include_zoom, bool is_zoomed)
+{
+ mStopCtrl->setVisible(playing);
+ mPlayCtrl->setVisible(!playing);
+ mPauseCtrl->setVisible(false);
+ mMuteCtrl->setVisible(false);
+ mVolumeSliderCtrl->setVisible(false);
+ mZoomCtrl->setVisible(include_zoom && !is_zoomed);
+ mUnzoomCtrl->setVisible(include_zoom && is_zoomed);
+ mStopCtrl->setEnabled(true);
+ mZoomCtrl->setEnabled(true);
+}
+
+void LLPanelNearByMedia::showTimeBasedControls(bool playing, bool include_zoom, bool is_zoomed, bool muted, F32 volume)
+{
+ mStopCtrl->setVisible(true);
+ mPlayCtrl->setVisible(!playing);
+ mPauseCtrl->setVisible(playing);
+ mMuteCtrl->setVisible(true);
+ mVolumeSliderCtrl->setVisible(true);
+ mZoomCtrl->setVisible(include_zoom);
+ mZoomCtrl->setVisible(include_zoom && !is_zoomed);
+ mUnzoomCtrl->setVisible(include_zoom && is_zoomed);
+ mStopCtrl->setEnabled(true);
+ mZoomCtrl->setEnabled(true);
+ mMuteBtn->setValue(muted);
+ mVolumeSlider->setValue(volume);
+}
+
+void LLPanelNearByMedia::showDisabledControls()
+{
+ mStopCtrl->setVisible(true);
+ mPlayCtrl->setVisible(false);
+ mPauseCtrl->setVisible(false);
+ mMuteCtrl->setVisible(false);
+ mVolumeSliderCtrl->setVisible(false);
+ mZoomCtrl->setVisible(true);
+ mUnzoomCtrl->setVisible(false);
+ mStopCtrl->setEnabled(false);
+ mZoomCtrl->setEnabled(false);
+}
+
+void LLPanelNearByMedia::onClickSelectedMediaStop()
+{
+ setDisabled(mMediaList->getValue().asUUID(), true);
+}
+
+void LLPanelNearByMedia::onClickSelectedMediaPlay()
+{
+ LLUUID selected_media_id = mMediaList->getValue().asUUID();
+
+ // First enable it
+ setDisabled(selected_media_id, false);
+
+ // Special code to make play "unpause" if time-based and playing
+ if (selected_media_id != PARCEL_AUDIO_LIST_ITEM_UUID)
+ {
+ LLViewerMediaImpl *impl = (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) ?
+ ((LLViewerMediaImpl*)LLViewerParcelMedia::getParcelMedia()) : LLViewerMedia::getMediaImplFromTextureID(selected_media_id);
+ if (NULL != impl)
+ {
+ if (impl->isMediaTimeBased() && impl->isMediaPaused())
+ {
+ // Aha! It's really time-based media that's paused, so unpause
+ impl->play();
+ return;
+ }
+ else if (impl->isParcelMedia())
+ {
+ LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel());
+ }
+ }
+ }
+}
+
+void LLPanelNearByMedia::onClickSelectedMediaPause()
+{
+ LLUUID selected_media_id = mMediaList->getValue().asUUID();
+ if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID)
+ {
+ onClickParcelAudioPause();
+ }
+ else if (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID)
+ {
+ onClickParcelMediaPause();
+ }
+ else {
+ LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(selected_media_id);
+ if (NULL != impl && impl->isMediaTimeBased() && impl->isMediaPlaying())
+ {
+ impl->pause();
+ }
+ }
+}
+
+void LLPanelNearByMedia::onClickSelectedMediaMute()
+{
+ LLUUID selected_media_id = mMediaList->getValue().asUUID();
+ if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID)
+ {
+ gSavedSettings.setBOOL("MuteMusic", mMuteBtn->getValue());
+ }
+ else {
+ LLViewerMediaImpl* impl = (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) ?
+ ((LLViewerMediaImpl*)LLViewerParcelMedia::getParcelMedia()) : LLViewerMedia::getMediaImplFromTextureID(selected_media_id);
+ if (NULL != impl && impl->isMediaTimeBased())
+ {
+ F32 volume = impl->getVolume();
+ if(volume > 0.0)
+ {
+ impl->setVolume(0.0);
+ }
+ else if (mVolumeSlider->getValueF32() == 0.0)
+ {
+ impl->setVolume(1.0);
+ mVolumeSlider->setValue(1.0);
+ }
+ else
+ {
+ impl->setVolume(mVolumeSlider->getValueF32());
+ }
+ }
+ }
+}
+
+void LLPanelNearByMedia::onCommitSelectedMediaVolume()
+{
+ LLUUID selected_media_id = mMediaList->getValue().asUUID();
+ if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID)
+ {
+ F32 vol = mVolumeSlider->getValueF32();
+ gSavedSettings.setF32("AudioLevelMusic", vol);
+ }
+ else {
+ LLViewerMediaImpl* impl = (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) ?
+ ((LLViewerMediaImpl*)LLViewerParcelMedia::getParcelMedia()) : LLViewerMedia::getMediaImplFromTextureID(selected_media_id);
+ if (NULL != impl && impl->isMediaTimeBased())
+ {
+ impl->setVolume(mVolumeSlider->getValueF32());
+ }
+ }
+}
+
+void LLPanelNearByMedia::onClickSelectedMediaZoom()
+{
+ LLUUID selected_media_id = mMediaList->getValue().asUUID();
+ if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID || selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID)
+ return;
+ LLViewerMediaFocus::getInstance()->focusZoomOnMedia(selected_media_id);
+}
+
+void LLPanelNearByMedia::onClickSelectedMediaUnzoom()
+{
+ LLViewerMediaFocus::getInstance()->unZoom();
+}
+
+
+// static
+void LLPanelNearByMedia::getNameAndUrlHelper(LLViewerMediaImpl* impl, std::string& name, std::string & url, const std::string &defaultName)
+{
+ if (NULL == impl) return;
+
+ name = impl->getName();
+ url = impl->getCurrentMediaURL(); // This is the URL the media impl actually has loaded
+ if (url.empty())
+ {
+ url = impl->getMediaEntryURL(); // This is the current URL from the media data
+ }
+ if (url.empty())
+ {
+ url = impl->getHomeURL(); // This is the home URL from the media data
+ }
+ if (name.empty())
+ {
+ name = url;
+ }
+ if (name.empty())
+ {
+ name = defaultName;
+ }
+}
+
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
new file mode 100644
index 0000000000..6fe724266b
--- /dev/null
+++ b/indra/newview/llpanelnearbymedia.h
@@ -0,0 +1,185 @@
+/**
+ * @file llpanelnearbymedia.h
+ * @brief Management interface for muting and controlling nearby media
+ *
+ * $LicenseInfo:firstyear=2005&license=viewergpl$
+ *
+ * Copyright (c) 2005-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPANELNEARBYMEDIA_H
+#define LL_LLPANELNEARBYMEDIA_H
+
+#include "llpanel.h"
+
+class LLPanelNearbyMedia;
+class LLButton;
+class LLScrollListCtrl;
+class LLSlider;
+class LLSliderCtrl;
+class LLCheckBoxCtrl;
+class LLTextBox;
+class LLComboBox;
+class LLViewerMediaImpl;
+
+class LLPanelNearByMedia : public LLPanel
+{
+public:
+
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void draw();
+ /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
+ /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
+ /*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
+ /*virtual*/ void onTopLost ();
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent);
+
+ // this is part of the nearby media *dialog* so we can track whether
+ // the user *implicitly* wants audio on or off via their *explicit*
+ // interaction with our buttons.
+ bool getParcelAudioAutoStart();
+
+ LLPanelNearByMedia();
+ virtual ~LLPanelNearByMedia();
+
+private:
+
+ enum ColumnIndex {
+ CHECKBOX_COLUMN = 0,
+ PROXIMITY_COLUMN = 1,
+ VISIBILITY_COLUMN = 2,
+ CLASS_COLUMN = 3,
+ NAME_COLUMN = 4,
+ DEBUG_COLUMN = 5
+ };
+
+ // Media "class" enumeration
+ enum MediaClass {
+ MEDIA_CLASS_ALL = 0,
+ MEDIA_CLASS_FOCUSED = 1,
+ MEDIA_CLASS_WITHIN_PARCEL = 2,
+ MEDIA_CLASS_OUTSIDE_PARCEL = 3,
+ MEDIA_CLASS_ON_OTHERS = 4
+ };
+
+ // Add/remove an LLViewerMediaImpl to/from the list
+ LLScrollListItem* addListItem(const LLUUID &id);
+ void updateListItem(LLScrollListItem* item, LLViewerMediaImpl* impl);
+ void updateListItem(LLScrollListItem* item,
+ const std::string &item_name,
+ const std::string &item_tooltip,
+ S32 proximity,
+ bool is_disabled,
+ bool has_media,
+ bool is_time_based_and_playing,
+ MediaClass media_class,
+ const std::string &debug_str);
+ void removeListItem(const LLUUID &id);
+
+ // Refresh the list in the UI
+ void refreshList();
+
+ void refreshParcelItems();
+
+ // UI Callbacks
+ void onClickEnableAll();
+ void onClickDisableAll();
+ void onClickEnableParcelMedia();
+ void onClickDisableParcelMedia();
+ void onClickMuteParcelMedia();
+ void onParcelMediaVolumeSlider();
+ void onClickParcelMediaPlay();
+ void onClickParcelMediaStop();
+ void onClickParcelMediaPause();
+ void onClickParcelAudioPlay();
+ void onClickParcelAudioStop();
+ void onClickParcelAudioStart();
+ void onClickParcelAudioPause();
+ void onCheckAutoPlay();
+ void onAdvancedButtonClick();
+ void onMoreLess();
+
+ void onCheckItem(LLUICtrl* ctrl, const LLUUID &row_id);
+
+ static void onZoomMedia(void* user_data);
+
+private:
+ bool setDisabled(const LLUUID &id, bool disabled);
+
+ static void getNameAndUrlHelper(LLViewerMediaImpl* impl, std::string& name, std::string & url, const std::string &defaultName);
+
+ void updateColumns();
+
+ bool shouldShow(LLViewerMediaImpl* impl);
+
+ void showBasicControls(bool playing, bool include_zoom, bool is_zoomed);
+ void showTimeBasedControls(bool playing, bool include_zoom, bool is_zoomed, bool muted, F32 volume);
+ void showDisabledControls();
+ void updateControls();
+
+ void onClickSelectedMediaStop();
+ void onClickSelectedMediaPlay();
+ void onClickSelectedMediaPause();
+ void onClickSelectedMediaMute();
+ void onCommitSelectedMediaVolume();
+ void onClickSelectedMediaZoom();
+ void onClickSelectedMediaUnzoom();
+
+ LLUICtrl* mNearbyMediaPanel;
+ LLTextBox* mItemCountText;
+ LLScrollListCtrl* mMediaList;
+ LLUICtrl* mEnableAllCtrl;
+ LLUICtrl* mDisableAllCtrl;
+ LLComboBox* mShowCtrl;
+
+ // Dynamic (selection-dependent) controls
+ LLUICtrl* mStopCtrl;
+ LLUICtrl* mPlayCtrl;
+ LLUICtrl* mPauseCtrl;
+ LLUICtrl* mMuteCtrl;
+ LLUICtrl* mVolumeSliderCtrl;
+ LLUICtrl* mZoomCtrl;
+ LLUICtrl* mUnzoomCtrl;
+ LLSlider* mVolumeSlider;
+ LLButton* mMuteBtn;
+
+ bool mAllMediaDisabled;
+ bool mDebugInfoVisible;
+ bool mParcelAudioAutoStart;
+ std::string mEmptyNameString;
+ std::string mPlayingString;
+ std::string mParcelMediaName;
+ std::string mParcelAudioName;
+
+ LLRect mMoreRect;
+ LLRect mLessRect;
+ LLFrameTimer mHoverTimer;
+ LLScrollListItem* mParcelMediaItem;
+ LLScrollListItem* mParcelAudioItem;
+};
+
+
+#endif // LL_LLPANELNEARBYMEDIA_H
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 5c5c35141e..5ddbdf7f01 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -117,7 +117,7 @@ public:
virtual BOOL isItemRenameable() const;
virtual BOOL renameItem(const std::string& new_name);
virtual BOOL isItemMovable() const;
- virtual BOOL isItemRemovable();
+ virtual BOOL isItemRemovable() const;
virtual BOOL removeItem();
virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch);
virtual void move(LLFolderViewEventListener* parent_listener);
@@ -412,9 +412,9 @@ BOOL LLTaskInvFVBridge::isItemMovable() const
return TRUE;
}
-BOOL LLTaskInvFVBridge::isItemRemovable()
+BOOL LLTaskInvFVBridge::isItemRemovable() const
{
- LLViewerObject* object = gObjectList.findObject(mPanel->getTaskUUID());
+ const LLViewerObject* object = gObjectList.findObject(mPanel->getTaskUUID());
if(object
&& (object->permModify() || object->permYouOwner()))
{
@@ -710,7 +710,7 @@ public:
virtual BOOL isItemRenameable() const;
// virtual BOOL isItemCopyable() const { return FALSE; }
virtual BOOL renameItem(const std::string& new_name);
- virtual BOOL isItemRemovable();
+ virtual BOOL isItemRemovable() const;
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
virtual BOOL hasChildren() const;
virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const;
@@ -742,7 +742,7 @@ BOOL LLTaskCategoryBridge::renameItem(const std::string& new_name)
return FALSE;
}
-BOOL LLTaskCategoryBridge::isItemRemovable()
+BOOL LLTaskCategoryBridge::isItemRemovable() const
{
return FALSE;
}
@@ -1568,7 +1568,7 @@ void LLPanelObjectInventory::reset()
{
clearContents();
- setBorderVisible(FALSE);
+ //setBorderVisible(FALSE);
mCommitCallbackRegistrar.pushScope(); // push local callbacks
@@ -1583,10 +1583,16 @@ void LLPanelObjectInventory::reset()
mFolders->getFilter()->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);
mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
+ if (hasFocus())
+ {
+ LLEditMenuHandler::gEditMenuHandler = mFolders;
+ }
+
LLRect scroller_rect(0, getRect().getHeight(), getRect().getWidth(), 0);
LLScrollContainer::Params scroll_p;
scroll_p.name("task inventory scroller");
scroll_p.rect(scroller_rect);
+ scroll_p.tab_stop(true);
scroll_p.follows.flags(FOLLOWS_ALL);
mScroller = LLUICtrlFactory::create<LLScrollContainer>(scroll_p);
addChild(mScroller);
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index cf903958ee..c2f2d32142 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -159,6 +159,27 @@ void LLPanelOutfitsInventory::onOpen(const LLSD& key)
// Make sure we know which tab is selected, update the filter,
// and update verbs.
onTabChange();
+
+ // Auto open the first outfit newly created so new users can see sample outfit contents
+ static bool should_open_outfit = true;
+ if (should_open_outfit && gAgent.isFirstLogin())
+ {
+ LLInventoryPanel* outfits_panel = getChild<LLInventoryPanel>(OUTFITS_TAB_NAME);
+ if (outfits_panel)
+ {
+ LLUUID my_outfits_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+ LLFolderViewFolder* my_outfits_folder = outfits_panel->getRootFolder()->getFolderByID(my_outfits_id);
+ if (my_outfits_folder)
+ {
+ LLFolderViewFolder* first_outfit = dynamic_cast<LLFolderViewFolder*>(my_outfits_folder->getFirstChild());
+ if (first_outfit)
+ {
+ first_outfit->setOpen(TRUE);
+ }
+ }
+ }
+ }
+ should_open_outfit = false;
}
void LLPanelOutfitsInventory::updateVerbs()
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index b01cdcc832..d2a518a06a 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -36,6 +36,7 @@
#include "llfloaterreg.h"
#include "llmenugl.h"
#include "llnotificationsutil.h"
+#include "lleventtimer.h"
#include "llfiltereditor.h"
#include "lltabcontainer.h"
#include "lluictrlfactory.h"
@@ -462,8 +463,10 @@ LLPanelPeople::~LLPanelPeople()
delete mFriendListUpdater;
delete mRecentListUpdater;
- if(LLVoiceClient::getInstance())
+ if(LLVoiceClient::instanceExists())
+ {
LLVoiceClient::getInstance()->removeObserver(this);
+ }
LLView::deleteViewByHandle(mGroupPlusMenuHandle);
LLView::deleteViewByHandle(mNearbyViewSortMenuHandle);
@@ -516,7 +519,6 @@ BOOL LLPanelPeople::postBuild()
mRecentList->setShowIcons("RecentListShowIcons");
mGroupList = getChild<LLGroupList>("group_list");
- mGroupList->setNoItemsCommentText(getString("no_groups"));
mNearbyList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu);
mRecentList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu);
@@ -668,6 +670,11 @@ void LLPanelPeople::updateFriendList()
lldebugs << "Friends Cards were not found" << llendl;
}
+ // show special help text for just created account to help found friends. EXT-4836
+ static LLTextBox* no_friends_text = getChild<LLTextBox>("no_friends_msg");
+ no_friends_text->setVisible(all_friendsp.size() == 0);
+
+
LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
for (; buddy_it != all_buddies.end(); ++buddy_it)
{
diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
index 470cfca8fe..854651cd01 100644
--- a/indra/newview/llpanelpeoplemenus.cpp
+++ b/indra/newview/llpanelpeoplemenus.cpp
@@ -39,6 +39,7 @@
#include "llpanelpeoplemenus.h"
// newview
+#include "llagent.h"
#include "llagentdata.h" // for gAgentID
#include "llavataractions.h"
#include "llviewermenu.h" // for gMenuHolder
@@ -121,10 +122,11 @@ LLContextMenu* NearbyMenu::createMenu()
const LLUUID& id = mUUIDs.front();
registrar.add("Avatar.Profile", boost::bind(&LLAvatarActions::showProfile, id));
registrar.add("Avatar.AddFriend", boost::bind(&LLAvatarActions::requestFriendshipDialog, id));
+ registrar.add("Avatar.RemoveFriend", boost::bind(&LLAvatarActions::removeFriendDialog, id));
registrar.add("Avatar.IM", boost::bind(&LLAvatarActions::startIM, id));
registrar.add("Avatar.Call", boost::bind(&LLAvatarActions::startCall, id));
registrar.add("Avatar.OfferTeleport", boost::bind(&NearbyMenu::offerTeleport, this));
- registrar.add("Avatar.ShowOnMap", boost::bind(&LLAvatarActions::startIM, id)); // *TODO: unimplemented
+ registrar.add("Avatar.ShowOnMap", boost::bind(&LLAvatarActions::showOnMap, id));
registrar.add("Avatar.Share", boost::bind(&LLAvatarActions::share, id));
registrar.add("Avatar.Pay", boost::bind(&LLAvatarActions::pay, id));
registrar.add("Avatar.BlockUnblock", boost::bind(&LLAvatarActions::toggleBlock, id));
@@ -143,6 +145,7 @@ LLContextMenu* NearbyMenu::createMenu()
// registrar.add("Avatar.AddFriend", boost::bind(&LLAvatarActions::requestFriendshipDialog, mUUIDs)); // *TODO: unimplemented
registrar.add("Avatar.IM", boost::bind(&LLAvatarActions::startConference, mUUIDs));
registrar.add("Avatar.Call", boost::bind(&LLAvatarActions::startAdhocCall, mUUIDs));
+ registrar.add("Avatar.RemoveFriend",boost::bind(&LLAvatarActions::removeFriendsDialog, mUUIDs));
// registrar.add("Avatar.Share", boost::bind(&LLAvatarActions::startIM, mUUIDs)); // *TODO: unimplemented
// registrar.add("Avatar.Pay", boost::bind(&LLAvatarActions::pay, mUUIDs)); // *TODO: unimplemented
enable_registrar.add("Avatar.EnableItem", boost::bind(&NearbyMenu::enableContextMenuItem, this, _2));
@@ -164,11 +167,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)
if (item == std::string("can_block"))
{
const LLUUID& id = mUUIDs.front();
- std::string firstname, lastname;
- gCacheName->getName(id, firstname, lastname);
- bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden");
- bool is_self = id == gAgentID;
- return !is_self && !is_linden;
+ return LLAvatarActions::canBlock(id);
}
else if (item == std::string("can_add"))
{
@@ -195,13 +194,38 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)
}
else if (item == std::string("can_delete"))
{
- const LLUUID& id = mUUIDs.front();
- return LLAvatarActions::isFriend(id);
+ // We can remove friends if:
+ // - there are selected people
+ // - and there are only friends among selection.
+
+ bool result = (mUUIDs.size() > 0);
+
+ std::vector<LLUUID>::const_iterator
+ id = mUUIDs.begin(),
+ uuids_end = mUUIDs.end();
+
+ for (;id != uuids_end; ++id)
+ {
+ if ( !LLAvatarActions::isFriend(*id) )
+ {
+ result = false;
+ break;
+ }
+ }
+
+ return result;
}
else if (item == std::string("can_call"))
{
return LLAvatarActions::canCall();
}
+ else if (item == std::string("can_show_on_map"))
+ {
+ const LLUUID& id = mUUIDs.front();
+
+ return (LLAvatarTracker::instance().isBuddyOnline(id) && is_agent_mappable(id))
+ || gAgent.isGodlike();
+ }
return false;
}
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index 8b8b1bed37..01b6e8ffad 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -142,9 +142,9 @@ LLPanelPermissions::LLPanelPermissions() :
BOOL LLPanelPermissions::postBuild()
{
childSetCommitCallback("Object Name",LLPanelPermissions::onCommitName,this);
- childSetPrevalidate("Object Name",LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("Object Name",LLTextValidate::validateASCIIPrintableNoPipe);
childSetCommitCallback("Object Description",LLPanelPermissions::onCommitDesc,this);
- childSetPrevalidate("Object Description",LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("Object Description",LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("button set group")->setCommitCallback(boost::bind(&LLPanelPermissions::onClickGroup,this));
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index ada65c98a4..2ff2597f08 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -351,7 +351,14 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type)
if (mNoPicks && mNoClassifieds)
{
- childSetValue("picks_panel_text", LLTrans::getString("NoPicksClassifiedsText"));
+ if(getAvatarId() == gAgentID)
+ {
+ childSetValue("picks_panel_text", LLTrans::getString("NoPicksClassifiedsText"));
+ }
+ else
+ {
+ childSetValue("picks_panel_text", LLTrans::getString("NoAvatarPicksClassifiedsText"));
+ }
}
}
@@ -843,10 +850,13 @@ void LLPanelPicks::onPanelClassifiedClose(LLPanelClassifiedInfo* panel)
{
LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>(
mClassifiedsList->getItemByValue(values[n]));
-
- c_item->setClassifiedName(panel->getClassifiedName());
- c_item->setDescription(panel->getDescription());
- c_item->setSnapshotId(panel->getSnapshotId());
+ llassert(c_item);
+ if (c_item)
+ {
+ c_item->setClassifiedName(panel->getClassifiedName());
+ c_item->setDescription(panel->getDescription());
+ c_item->setSnapshotId(panel->getSnapshotId());
+ }
}
}
}
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 9b31ef23a2..9e5f9da0ea 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -340,8 +340,10 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
std::string on = getString("on");
std::string off = getString("off");
+ LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
+
// Processing parcel characteristics
- if (region->isVoiceEnabled() && parcel->getParcelFlagAllowVoice())
+ if (vpm->allowAgentVoice(region, parcel))
{
mVoiceIcon->setValue(icon_voice);
mVoiceText->setText(on);
@@ -352,7 +354,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
mVoiceText->setText(off);
}
- if (!region->getBlockFly() && parcel->getAllowFly())
+ if (vpm->allowAgentFly(region, parcel))
{
mFlyIcon->setValue(icon_fly);
mFlyText->setText(on);
@@ -363,18 +365,18 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
mFlyText->setText(off);
}
- if (region->getRestrictPushObject() || parcel->getRestrictPushObject())
+ if (vpm->allowAgentPush(region, parcel))
{
- mPushIcon->setValue(icon_push_no);
- mPushText->setText(off);
+ mPushIcon->setValue(icon_push);
+ mPushText->setText(on);
}
else
{
- mPushIcon->setValue(icon_push);
- mPushText->setText(on);
+ mPushIcon->setValue(icon_push_no);
+ mPushText->setText(off);
}
- if (parcel->getAllowModify())
+ if (vpm->allowAgentBuild(parcel))
{
mBuildIcon->setValue(icon_build);
mBuildText->setText(on);
@@ -385,20 +387,18 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
mBuildText->setText(off);
}
- if ((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) ||
- (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) ||
- !parcel->getAllowOtherScripts())
+ if (vpm->allowAgentScripts(region, parcel))
{
- mScriptsIcon->setValue(icon_scripts_no);
- mScriptsText->setText(off);
+ mScriptsIcon->setValue(icon_scripts);
+ mScriptsText->setText(on);
}
else
{
- mScriptsIcon->setValue(icon_scripts);
- mScriptsText->setText(on);
+ mScriptsIcon->setValue(icon_scripts_no);
+ mScriptsText->setText(off);
}
- if (region->getAllowDamage() || parcel->getAllowDamage())
+ if (vpm->allowAgentDamage(region, parcel))
{
mDamageIcon->setValue(icon_damage);
mDamageText->setText(on);
@@ -461,12 +461,8 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
S32 claim_price;
S32 rent_price;
F32 dwell;
- BOOL for_sale = parcel->getForSale();
- LLViewerParcelMgr::getInstance()->getDisplayInfo(&area,
- &claim_price,
- &rent_price,
- &for_sale,
- &dwell);
+ BOOL for_sale;
+ vpm->getDisplayInfo(&area, &claim_price, &rent_price, &for_sale, &dwell);
if (for_sale)
{
const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 29cfbbe606..26b57c003b 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -70,6 +70,7 @@
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
#include "llviewermenu.h"
+#include "llviewermessage.h"
#include "llviewerparcelmgr.h"
#include "llviewerregion.h"
#include "llviewerwindow.h"
@@ -105,22 +106,35 @@ private:
LLPanelPlaces* mPlaces;
};
-class LLPlacesInventoryObserver : public LLInventoryObserver
+class LLPlacesInventoryObserver : public LLInventoryAddedObserver
{
public:
LLPlacesInventoryObserver(LLPanelPlaces* places_panel) :
- LLInventoryObserver(),
- mPlaces(places_panel)
+ mPlaces(places_panel),
+ mTabsCreated(false)
{}
/*virtual*/ void changed(U32 mask)
{
- if (mPlaces)
- mPlaces->changedInventory(mask);
+ LLInventoryAddedObserver::changed(mask);
+
+ if (!mTabsCreated && mPlaces)
+ {
+ mPlaces->createTabs();
+ mTabsCreated = true;
+ }
+ }
+
+protected:
+ /*virtual*/ void done()
+ {
+ mPlaces->showAddedLandmarkInfo(mAdded);
+ mAdded.clear();
}
private:
LLPanelPlaces* mPlaces;
+ bool mTabsCreated;
};
class LLPlacesRemoteParcelInfoObserver : public LLRemoteParcelInfoObserver
@@ -943,7 +957,7 @@ void LLPanelPlaces::changedParcelSelection()
updateVerbs();
}
-void LLPanelPlaces::changedInventory(U32 mask)
+void LLPanelPlaces::createTabs()
{
if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance()))
return;
@@ -979,10 +993,6 @@ void LLPanelPlaces::changedInventory(U32 mask)
// Filter applied to show all items.
if (mActivePanel)
mActivePanel->onSearchEdit(mActivePanel->getFilterSubString());
-
- // we don't need to monitor inventory changes anymore,
- // so remove the observer
- gInventory.removeObserver(mInventoryObserver);
}
void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)
@@ -991,6 +1001,33 @@ void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)
updateVerbs();
}
+void LLPanelPlaces::showAddedLandmarkInfo(const std::vector<LLUUID>& items)
+{
+ for (std::vector<LLUUID>::const_iterator item_iter = items.begin();
+ item_iter != items.end();
+ ++item_iter)
+ {
+ const LLUUID& item_id = (*item_iter);
+ if(!highlight_offered_item(item_id))
+ {
+ continue;
+ }
+
+ LLInventoryItem* item = gInventory.getItem(item_id);
+
+ llassert(item);
+ if (item && (LLAssetType::AT_LANDMARK == item->getType()) )
+ {
+ // Created landmark is passed to Places panel to allow its editing.
+ // If the panel is closed we don't reopen it until created landmark is loaded.
+ if("create_landmark" == getPlaceInfoType() && !getItem())
+ {
+ setItem(item);
+ }
+ }
+ }
+}
+
void LLPanelPlaces::updateVerbs()
{
bool is_place_info_visible;
@@ -1011,14 +1048,13 @@ void LLPanelPlaces::updateVerbs()
mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
- mOverflowBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
+ mOverflowBtn->setVisible(is_place_info_visible && !is_create_landmark_visible && !isLandmarkEditModeOn);
mEditBtn->setVisible(mPlaceInfoType == LANDMARK_INFO_TYPE && !isLandmarkEditModeOn);
mSaveBtn->setVisible(isLandmarkEditModeOn);
mCancelBtn->setVisible(isLandmarkEditModeOn);
mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn);
mShowOnMapBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);
- mOverflowBtn->setEnabled(is_place_info_visible && !is_create_landmark_visible);
if (is_place_info_visible)
{
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 110d7a1054..78fcbbb11d 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -66,11 +66,15 @@ public:
// Called on parcel selection change to update place information.
void changedParcelSelection();
- // Called on agent inventory change to find out when inventory gets usable.
- void changedInventory(U32 mask);
+ // Called once on agent inventory first change to find out when inventory gets usable
+ // and to create "My Landmarks" and "Teleport History" tabs.
+ void createTabs();
// Called when we receive the global 3D position of a parcel.
void changedGlobalPos(const LLVector3d &global_pos);
+ // Opens landmark info panel when agent creates or receives landmark.
+ void showAddedLandmarkInfo(const std::vector<LLUUID>& items);
+
void setItem(LLInventoryItem* item);
LLInventoryItem* getItem() { return mItem; }
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 2dc3a62637..a53a3ba1ad 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -724,10 +724,10 @@ void LLPanelPrimMediaControls::draw()
mMediaControlsStack->updateLayout();
// adjust for layout stack spacing
- S32 space = mMediaControlsStack->getPanelSpacing() + 1;
+ S32 space = mMediaControlsStack->getPanelSpacing() + 2;
LLRect controls_bg_area = mMediaControlsStack->getRect();
- controls_bg_area.mTop += space;
+ controls_bg_area.mTop += space + 2;
// adjust to ignore space from volume slider
controls_bg_area.mBottom += mVolumeSliderCtrl->getRect().getHeight();
@@ -736,7 +736,7 @@ void LLPanelPrimMediaControls::draw()
controls_bg_area.mLeft += mLeftBookend->getRect().getWidth() - space;
// ignore space from right bookend padding
- controls_bg_area.mRight -= mRightBookend->getRect().getWidth() - space;
+ controls_bg_area.mRight -= mRightBookend->getRect().getWidth() - space - 2;
// draw control background UI image
mBackgroundImage->draw( controls_bg_area, UI_VERTEX_COLOR % alpha);
@@ -1036,8 +1036,9 @@ void LLPanelPrimMediaControls::updateZoom()
}
if (zoom_padding > 0.0f)
- {
- LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding);
+ {
+ // since we only zoom into medium for now, always set zoom_in constraint to true
+ LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding, true);
}
// Remember the object ID/face we zoomed into, so we can update the zoom icon appropriately
diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h
index 743cec70a1..2e0de7866c 100644
--- a/indra/newview/llpanelprimmediacontrols.h
+++ b/indra/newview/llpanelprimmediacontrols.h
@@ -58,6 +58,16 @@ public:
void updateShape();
bool isMouseOver();
+
+ enum EZoomLevel
+ {
+ ZOOM_NONE = 0,
+ ZOOM_FAR,
+ ZOOM_MEDIUM,
+ ZOOM_NEAR
+ };
+
+ EZoomLevel getZoomLevel() const { return mCurrentZoom; }
void nextZoomLevel();
void resetZoomLevel(bool reset_camera = true);
void close();
@@ -66,13 +76,6 @@ public:
void setMediaFace(LLPointer<LLViewerObject> objectp, S32 face, viewer_media_t media_impl, LLVector3 pick_normal = LLVector3::zero);
- enum EZoomLevel
- {
- ZOOM_NONE = 0,
- ZOOM_FAR,
- ZOOM_MEDIUM,
- ZOOM_NEAR
- };
static const EZoomLevel kZoomLevels[];
static const int kNumZoomLevels;
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index c73ade53c8..b5d85dfd4b 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -197,11 +197,7 @@ void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
}
else
{
- panel->setVisible(FALSE);
- if (panel->getParent() == this)
- {
- removeChild(panel);
- }
+ closePanel(panel);
getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
}
@@ -248,6 +244,16 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)
panel->setRect(new_rect);
}
+void LLPanelProfile::closePanel(LLPanel* panel)
+{
+ panel->setVisible(FALSE);
+
+ if (panel->getParent() == this)
+ {
+ removeChild(panel);
+ }
+}
+
S32 LLPanelProfile::notifyParent(const LLSD& info)
{
std::string action = info["action"];
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index bcf4bdd0ec..f1aa3f10f8 100644
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -55,6 +55,8 @@ public:
virtual void openPanel(LLPanel* panel, const LLSD& params);
+ virtual void closePanel(LLPanel* panel);
+
S32 notifyParent(const LLSD& info);
protected:
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 43e0f9a88c..90c8f2551f 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -940,6 +940,9 @@ bool LLTeleportHistoryPanel::onClearTeleportHistoryDialog(const LLSD& notificati
if (0 == option)
{
+ // order does matter, call this first or teleport history will contain one record(current location)
+ LLTeleportHistory::getInstance()->purgeItems();
+
LLTeleportHistoryStorage *th = LLTeleportHistoryStorage::getInstance();
th->purgeItems();
th->save();
diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp
index 74e37efe4e..559997254e 100644
--- a/indra/newview/llpanelvolumepulldown.cpp
+++ b/indra/newview/llpanelvolumepulldown.cpp
@@ -91,12 +91,10 @@ void LLPanelVolumePulldown::handleVisibilityChange ( BOOL new_visibility )
if (new_visibility)
{
mHoverTimer.start(); // timer will be stopped when mouse hovers over panel
- gFocusMgr.setTopCtrl(this);
}
else
{
mHoverTimer.stop();
- gFocusMgr.setTopCtrl(NULL);
}
}
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index f83f3eba96..1c4004c37a 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -583,7 +583,8 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co
bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)
{
std::string item = userdata.asString();
- if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item)
+ if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item
+ || "can_pay" == item)
{
return mUUIDs.front() != gAgentID;
}
@@ -618,7 +619,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&
for (;id != uuids_end; ++id)
{
- if ( LLAvatarActions::isFriend(*id) )
+ if ( *id == gAgentID || LLAvatarActions::isFriend(*id) )
{
result = false;
break;
diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp
index 83443687c9..4fe69f295c 100644
--- a/indra/newview/llplacesinventorybridge.cpp
+++ b/indra/newview/llplacesinventorybridge.cpp
@@ -66,7 +66,7 @@ void LLPlacesLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
std::vector<std::string> items;
std::vector<std::string> disabled_items;
- if(isInTrash())
+ if(isItemInTrash())
{
items.push_back(std::string("Purge Item"));
if (!isItemRemovable())
diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp
index 8edeebaeeb..f1e450a083 100644
--- a/indra/newview/llplacesinventorypanel.cpp
+++ b/indra/newview/llplacesinventorypanel.cpp
@@ -118,6 +118,7 @@ BOOL LLPlacesInventoryPanel::postBuild()
mScroller->addChild(mFolders);
mFolders->setScrollContainer(mScroller);
+ mFolders->addChild(mFolders->mStatusTextBox);
// cut subitems
@@ -174,6 +175,15 @@ S32 LLPlacesInventoryPanel::notify(const LLSD& info)
// PUBLIC METHODS
//////////////////////////////////////////////////////////////////////////
+LLPlacesFolderView::LLPlacesFolderView(const LLFolderView::Params& p)
+: LLFolderView(p)
+{
+ // we do not need auto select functionality in places landmarks, so override default behavior.
+ // this disables applying of the LLSelectFirstFilteredItem in LLFolderView::doIdle.
+ // Fixed issues: EXT-1631, EXT-4994.
+ mAutoSelectOverride = TRUE;
+}
+
BOOL LLPlacesFolderView::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
// let children to change selection first
diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h
index 86937e7c7f..04c6758eae 100644
--- a/indra/newview/llplacesinventorypanel.h
+++ b/indra/newview/llplacesinventorypanel.h
@@ -67,7 +67,7 @@ private:
class LLPlacesFolderView : public LLFolderView
{
public:
- LLPlacesFolderView(const LLFolderView::Params& p) : LLFolderView(p) {};
+ LLPlacesFolderView(const LLFolderView::Params& p);
/**
* Handles right mouse down
*
diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h
index 3b9f7f9882..551e247d8c 100644
--- a/indra/newview/llpreview.h
+++ b/indra/newview/llpreview.h
@@ -74,7 +74,7 @@ public:
/*virtual*/ BOOL postBuild();
- void setObjectID(const LLUUID& object_id);
+ virtual void setObjectID(const LLUUID& object_id);
void setItem( LLInventoryItem* item );
void setAssetId(const LLUUID& asset_id);
diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp
index 92bd4dc62b..0cc747f789 100644
--- a/indra/newview/llpreviewanim.cpp
+++ b/indra/newview/llpreviewanim.cpp
@@ -79,7 +79,7 @@ BOOL LLPreviewAnim::postBuild()
childSetAction("Anim audition btn",auditionAnim, this);
childSetCommitCallback("desc", LLPreview::onText, this);
- childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
return LLPreview::postBuild();
}
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 53e351e66e..57a8ca3d12 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -472,7 +472,7 @@ BOOL LLPreviewGesture::postBuild()
edit = getChild<LLLineEditor>("wait_time_editor");
edit->setEnabled(FALSE);
edit->setVisible(FALSE);
- edit->setPrevalidate(LLLineEditor::prevalidateFloat);
+ edit->setPrevalidate(LLTextValidate::validateFloat);
// edit->setKeystrokeCallback(onKeystrokeCommit, this);
edit->setCommitOnFocusLost(TRUE);
edit->setCommitCallback(onCommitWaitTime, this);
@@ -504,10 +504,10 @@ BOOL LLPreviewGesture::postBuild()
if (item)
{
childSetText("desc", item->getDescription());
- childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
childSetText("name", item->getName());
- childSetPrevalidate("name", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("name", &LLTextValidate::validateASCIIPrintableNoPipe);
}
return LLPreview::postBuild();
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index cc70360528..ee8e3f1db6 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -95,7 +95,7 @@ BOOL LLPreviewNotecard::postBuild()
childSetCommitCallback("desc", LLPreview::onText, this);
if (item)
childSetText("desc", item->getDescription());
- childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
return LLPreview::postBuild();
}
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index fccf71f3cb..f5a9f82d50 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -661,7 +661,9 @@ void LLScriptEdCore::onBtnDynamicHelp()
live_help_floater = new LLFloater(LLSD());
LLUICtrlFactory::getInstance()->buildFloater(live_help_floater, "floater_lsl_guide.xml", NULL);
LLFloater* parent = dynamic_cast<LLFloater*>(getParent());
- parent->addDependentFloater(live_help_floater, TRUE);
+ llassert(parent);
+ if (parent)
+ parent->addDependentFloater(live_help_floater, TRUE);
live_help_floater->childSetCommitCallback("lock_check", onCheckLock, this);
live_help_floater->childSetValue("lock_check", gSavedSettings.getBOOL("ScriptHelpFollowsCursor"));
live_help_floater->childSetCommitCallback("history_combo", onHelpComboCommit, this);
@@ -953,9 +955,13 @@ BOOL LLPreviewLSL::postBuild()
{
const LLInventoryItem* item = getItem();
+ llassert(item);
+ if (item)
+ {
+ childSetText("desc", item->getDescription());
+ }
childSetCommitCallback("desc", LLPreview::onText, this);
- childSetText("desc", item->getDescription());
- childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
return LLPreview::postBuild();
}
@@ -1904,7 +1910,7 @@ void LLLiveLSLEditor::uploadAssetViaCaps(const std::string& url,
const LLUUID& item_id,
BOOL is_running)
{
- llinfos << "Update Task Inventory via capability" << llendl;
+ llinfos << "Update Task Inventory via capability " << url << llendl;
LLSD body;
body["task_id"] = task_id;
body["item_id"] = item_id;
diff --git a/indra/newview/llpreviewsound.cpp b/indra/newview/llpreviewsound.cpp
index d7fd252fb6..44b828854b 100644
--- a/indra/newview/llpreviewsound.cpp
+++ b/indra/newview/llpreviewsound.cpp
@@ -75,7 +75,7 @@ BOOL LLPreviewSound::postBuild()
button->setSoundFlags(LLView::SILENT);
childSetCommitCallback("desc", LLPreview::onText, this);
- childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
return LLPreview::postBuild();
}
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 028807a6bd..22a1ef94a7 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -74,22 +74,10 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
mLastHeight(0),
mLastWidth(0),
mAspectRatio(0.f),
- mPreviewToSave(FALSE)
+ mPreviewToSave(FALSE),
+ mImage(NULL)
{
- const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem());
- if(item)
- {
- mShowKeepDiscard = item->getPermissions().getCreator() != gAgent.getID();
- mImageID = item->getAssetUUID();
- mIsCopyable = item->checkPermissionsSet(PERM_ITEM_UNRESTRICTED);
- }
- else // not an item, assume it's an asset id
- {
- mImageID = mItemUUID;
- mCopyToInv = TRUE;
- mIsCopyable = TRUE;
- }
-
+ updateImageID();
if (key.has("save_as"))
{
mPreviewToSave = TRUE;
@@ -97,7 +85,6 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_texture.xml", FALSE);
}
-
LLPreviewTexture::~LLPreviewTexture()
{
if( mLoadingFullImage )
@@ -129,7 +116,8 @@ BOOL LLPreviewTexture::postBuild()
}
childSetAction("save_tex_btn", LLPreviewTexture::onSaveAsBtn, this);
- childSetVisible("save_tex_btn", canSaveAs());
+ childSetVisible("save_tex_btn", true);
+ childSetEnabled("save_tex_btn", canSaveAs());
if (!mCopyToInv)
{
@@ -139,7 +127,7 @@ BOOL LLPreviewTexture::postBuild()
{
childSetCommitCallback("desc", LLPreview::onText, this);
childSetText("desc", item->getDescription());
- childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
}
}
@@ -261,6 +249,7 @@ void LLPreviewTexture::draw()
}
}
}
+
}
@@ -295,18 +284,52 @@ void LLPreviewTexture::saveAs()
// virtual
void LLPreviewTexture::reshape(S32 width, S32 height, BOOL called_from_parent)
{
-// mLastHeight = 0;
-// mLastWidth = 0;
- mUpdateDimensions = TRUE;
LLPreview::reshape(width, height, called_from_parent);
+
+ LLRect dim_rect;
+ childGetRect("dimensions", dim_rect);
+
+ S32 horiz_pad = 2 * (LLPANEL_BORDER_WIDTH + PREVIEW_PAD) + PREVIEW_RESIZE_HANDLE_SIZE;
+
+ // add space for dimensions and aspect ratio
+ S32 info_height = dim_rect.mTop + CLIENT_RECT_VPAD;
+
+ LLRect client_rect(horiz_pad, getRect().getHeight(), getRect().getWidth() - horiz_pad, 0);
+ client_rect.mTop -= (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD);
+ client_rect.mBottom += PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height ;
+
+ S32 client_width = client_rect.getWidth();
+ S32 client_height = client_rect.getHeight();
+
+ if (mAspectRatio > 0.f)
+ {
+ if(mAspectRatio > 1.f)
+ {
+ client_height = llceil((F32)client_width / mAspectRatio);
+ if(client_height > client_rect.getHeight())
+ {
+ client_height = client_rect.getHeight();
+ client_width = llceil((F32)client_height * mAspectRatio);
+ }
+ }
+ else//mAspectRatio < 1.f
+ {
+ client_width = llceil((F32)client_height * mAspectRatio);
+ if(client_width > client_rect.getWidth())
+ {
+ client_width = client_rect.getWidth();
+ client_height = llceil((F32)client_width / mAspectRatio);
+ }
+ }
+ }
+
+ mClientRect.setLeftTopAndSize(client_rect.getCenterX() - (client_width / 2), client_rect.getCenterY() + (client_height / 2), client_width, client_height);
+
}
// virtual
void LLPreviewTexture::onFocusReceived()
{
- mLastHeight = 0;
- mLastWidth = 0;
- mUpdateDimensions = TRUE;
LLPreview::onFocusReceived();
}
@@ -317,12 +340,12 @@ void LLPreviewTexture::openToSave()
// static
void LLPreviewTexture::onFileLoadedForSave(BOOL success,
- LLViewerFetchedTexture *src_vi,
- LLImageRaw* src,
- LLImageRaw* aux_src,
- S32 discard_level,
- BOOL final,
- void* userdata)
+ LLViewerFetchedTexture *src_vi,
+ LLImageRaw* src,
+ LLImageRaw* aux_src,
+ S32 discard_level,
+ BOOL final,
+ void* userdata)
{
LLUUID* item_uuid = (LLUUID*) userdata;
@@ -377,13 +400,19 @@ void LLPreviewTexture::updateDimensions()
{
if (!mImage)
return;
+
+ if(mImage->getFullWidth() == 0 || mImage->getFullHeight() == 0)
+ {
+ return;
+ }
+
mUpdateDimensions = FALSE;
-
- // set text on dimensions display (should be moved out of here and into a callback of some sort)
+
childSetTextArg("dimensions", "[WIDTH]", llformat("%d", mImage->getFullWidth()));
childSetTextArg("dimensions", "[HEIGHT]", llformat("%d", mImage->getFullHeight()));
+
LLRect dim_rect;
childGetRect("dimensions", dim_rect);
@@ -392,34 +421,68 @@ void LLPreviewTexture::updateDimensions()
// add space for dimensions and aspect ratio
S32 info_height = dim_rect.mTop + CLIENT_RECT_VPAD;
- LLRect client_rect(horiz_pad, getRect().getHeight(), getRect().getWidth() - horiz_pad, 0);
- client_rect.mTop -= (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD);
- client_rect.mBottom += PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height ;
+ S32 screen_width = gFloaterView->getSnapRect().getWidth();
+ S32 screen_height = gFloaterView->getSnapRect().getHeight();
- S32 client_width = client_rect.getWidth();
- S32 client_height = client_rect.getHeight();
+ S32 max_image_width = screen_width - 2*horiz_pad;
+ S32 max_image_height = screen_height - (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD)
+ - (PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height);
+
+ S32 client_width = llmin(max_image_width,mImage->getFullWidth());
+ S32 client_height = llmin(max_image_height,mImage->getFullHeight());
if (mAspectRatio > 0.f)
{
if(mAspectRatio > 1.f)
{
client_height = llceil((F32)client_width / mAspectRatio);
- if(client_height > client_rect.getHeight())
+ if(client_height > max_image_height)
{
- client_height = client_rect.getHeight();
+ client_height = max_image_height;
client_width = llceil((F32)client_height * mAspectRatio);
}
}
- else
+ else//mAspectRatio < 1.f
{
client_width = llceil((F32)client_height * mAspectRatio);
- if(client_width > client_rect.getWidth())
+ if(client_width > max_image_width)
{
- client_width = client_rect.getWidth();
+ client_width = max_image_width;
client_height = llceil((F32)client_width / mAspectRatio);
}
}
}
+ else
+ {
+
+ if(client_height > max_image_height)
+ {
+ F32 ratio = (F32)max_image_height/client_height;
+ client_height = max_image_height;
+ client_width = llceil((F32)client_height * ratio);
+ }
+
+ if(client_width > max_image_width)
+ {
+ F32 ratio = (F32)max_image_width/client_width;
+ client_width = max_image_width;
+ client_height = llceil((F32)client_width * ratio);
+ }
+ }
+
+ //now back to whole floater
+ S32 floater_width = llmax(getMinWidth(),client_width + 2*horiz_pad);
+ S32 floater_height = llmax(getMinHeight(),client_height + (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD)
+ + (PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height));
+
+ //reshape floater
+ reshape( floater_width, floater_height );
+ gFloaterView->adjustToFitScreen(this, FALSE);
+
+ //setup image rect...
+ LLRect client_rect(horiz_pad, getRect().getHeight(), getRect().getWidth() - horiz_pad, 0);
+ client_rect.mTop -= (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD);
+ client_rect.mBottom += PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height ;
mClientRect.setLeftTopAndSize(client_rect.getCenterX() - (client_width / 2), client_rect.getCenterY() + (client_height / 2), client_width, client_height);
@@ -481,8 +544,9 @@ void LLPreviewTexture::loadAsset()
mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
mImage->forceToSaveRawImage(0) ;
mAssetStatus = PREVIEW_ASSET_LOADING;
+ mUpdateDimensions = TRUE;
updateDimensions();
- childSetVisible("save_tex_btn", canSaveAs());
+ childSetEnabled("save_tex_btn", canSaveAs());
}
LLPreview::EAssetStatus LLPreviewTexture::getAssetStatus()
@@ -493,3 +557,47 @@ LLPreview::EAssetStatus LLPreviewTexture::getAssetStatus()
}
return mAssetStatus;
}
+
+void LLPreviewTexture::updateImageID()
+{
+ const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem());
+ if(item)
+ {
+ mImageID = item->getAssetUUID();
+
+ // here's the old logic...
+ //mShowKeepDiscard = item->getPermissions().getCreator() != gAgent.getID();
+ // here's the new logic... 'cos we hate disappearing buttons.
+ mShowKeepDiscard = TRUE;
+
+ mCopyToInv = FALSE;
+ mIsCopyable = item->checkPermissionsSet(PERM_ITEM_UNRESTRICTED);
+ }
+ else // not an item, assume it's an asset id
+ {
+ mImageID = mItemUUID;
+ mShowKeepDiscard = FALSE;
+ mCopyToInv = TRUE;
+ mIsCopyable = TRUE;
+ }
+
+}
+
+/* virtual */
+void LLPreviewTexture::setObjectID(const LLUUID& object_id)
+{
+ mObjectUUID = object_id;
+
+ const LLUUID old_image_id = mImageID;
+
+ // Update what image we're pointing to, such as if we just specified the mObjectID
+ // that this mItemID is part of.
+ updateImageID();
+
+ // If the imageID has changed, start over and reload the new image.
+ if (mImageID != old_image_id)
+ {
+ mAssetStatus = PREVIEW_ASSET_UNLOADED;
+ loadAsset();
+ }
+}
diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h
index 980aecee6d..7cd2adad56 100644
--- a/indra/newview/llpreviewtexture.h
+++ b/indra/newview/llpreviewtexture.h
@@ -69,6 +69,8 @@ public:
void openToSave();
static void onSaveAsBtn(void* data);
+
+ /*virtual*/ void setObjectID(const LLUUID& object_id);
protected:
void init();
/* virtual */ BOOL postBuild();
@@ -76,6 +78,7 @@ protected:
static void onAspectRatioCommit(LLUICtrl*,void* userdata);
private:
+ void updateImageID(); // set what image is being uploaded.
void updateDimensions();
LLUUID mImageID;
LLPointer<LLViewerFetchedTexture> mImage;
diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp
index 7a48f890e0..0476e785a5 100644
--- a/indra/newview/llprogressview.cpp
+++ b/indra/newview/llprogressview.cpp
@@ -223,7 +223,10 @@ void LLProgressView::setCancelButtonVisible(BOOL b, const std::string& label)
// static
void LLProgressView::onCancelButtonClicked(void*)
{
- if (gAgent.getTeleportState() == LLAgent::TELEPORT_NONE)
+ // Quitting viewer here should happen only when "Quit" button is pressed while starting up.
+ // Check for startup state is used here instead of teleport state to avoid quitting when
+ // cancel is pressed while teleporting inside region (EXT-4911)
+ if (LLStartUp::getStartupState() < STATE_STARTED)
{
LLAppViewer::instance()->requestQuit();
}
diff --git a/indra/newview/llrootview.h b/indra/newview/llrootview.h
index 760b1a7a4c..38029e3a9d 100644
--- a/indra/newview/llrootview.h
+++ b/indra/newview/llrootview.h
@@ -35,6 +35,7 @@
#include "llview.h"
#include "lluictrlfactory.h"
+#include "lltooltip.h"
class LLRootViewRegistry : public LLChildRegistry<LLRootViewRegistry>
{};
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index a00b6a9288..c75d90be6f 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -79,17 +79,12 @@ LLScreenChannelBase::~LLScreenChannelBase()
bool LLScreenChannelBase::isHovering()
{
- bool res = mHoveredToast != NULL;
- if (!res)
+ if (!mHoveredToast)
{
- return res;
+ return false;
}
- S32 x, y;
- mHoveredToast->screenPointToLocal(gViewerWindow->getCurrentMouseX(),
- gViewerWindow->getCurrentMouseY(), &x, &y);
- res = mHoveredToast->pointInView(x, y) == TRUE;
- return res;
+ return mHoveredToast->isHovered();
}
void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
@@ -479,7 +474,8 @@ void LLScreenChannel::showToastsBottom()
{
if(it != mToastList.rbegin())
{
- bottom = (*(it-1)).toast->getRect().mTop;
+ LLToast* toast = (*(it-1)).toast;
+ bottom = toast->getRect().mTop - toast->getTopPad();
toast_margin = gSavedSettings.getS32("ToastGap");
}
@@ -487,10 +483,21 @@ void LLScreenChannel::showToastsBottom()
toast_rect.setOriginAndSize(getRect().mLeft, bottom + toast_margin, toast_rect.getWidth() ,toast_rect.getHeight());
(*it).toast->setRect(toast_rect);
- // don't show toasts if there is not enough space
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 world_rect = gViewerWindow->getWorldViewRectScaled();
+ // don't show toasts if there is not enough space
if(toast_rect.mTop > world_rect.mTop)
{
break;
@@ -522,9 +529,13 @@ void LLScreenChannel::showToastsBottom()
// HACK
// EXT-2653: it is necessary to prevent overlapping for secondary showed toasts
(*it).toast->setVisible(TRUE);
- // Show toast behind floaters. (EXT-3089)
- gFloaterView->sendChildToBack((*it).toast);
}
+ if(!(*it).toast->hasFocus())
+ {
+ // Fixing Z-order of toasts (EXT-4862)
+ // Next toast will be positioned under this one.
+ gFloaterView->sendChildToBack((*it).toast);
+ }
}
if(it != mToastList.rend())
@@ -762,23 +773,16 @@ void LLScreenChannel::onToastHover(LLToast* toast, bool mouse_enter)
{
// because of LLViewerWindow::updateUI() that NOT ALWAYS calls onMouseEnter BEFORE onMouseLeave
// we must check hovering directly to prevent incorrect setting for hovering in a channel
- S32 x,y;
if (mouse_enter)
{
- toast->screenPointToLocal(gViewerWindow->getCurrentMouseX(),
- gViewerWindow->getCurrentMouseY(), &x, &y);
- bool hover = toast->pointInView(x, y) == TRUE;
- if (hover)
+ if (toast->isHovered())
{
mHoveredToast = toast;
}
}
else if (mHoveredToast != NULL)
{
- mHoveredToast->screenPointToLocal(gViewerWindow->getCurrentMouseX(),
- gViewerWindow->getCurrentMouseY(), &x, &y);
- bool hover = mHoveredToast->pointInView(x, y) == TRUE;
- if (!hover)
+ if (!mHoveredToast->isHovered())
{
mHoveredToast = NULL;
}
@@ -802,16 +806,6 @@ void LLScreenChannel::updateShowToastsState()
S32 channel_bottom = gViewerWindow->getWorldViewRectScaled().mBottom + gSavedSettings.getS32("ChannelBottomPanelMargin");;
LLRect this_rect = getRect();
- // adjust channel's height
- if(floater->overlapsScreenChannel())
- {
- channel_bottom += floater->getRect().getHeight();
- if(floater->getDockControl())
- {
- channel_bottom += floater->getDockControl()->getTongueHeight();
- }
- }
-
if(channel_bottom != this_rect.mBottom)
{
setRect(LLRect(this_rect.mLeft, this_rect.mTop, this_rect.mRight, channel_bottom));
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 0d9cf06bc3..a88a242fbe 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -38,9 +38,11 @@
#include "llchiclet.h"
#include "llfloaterreg.h"
#include "llnotifications.h"
+#include "llnotificationsutil.h"
#include "llscreenchannel.h"
#include "llsyswellwindow.h"
#include "lltoastnotifypanel.h"
+#include "lltrans.h"
#include "llviewerwindow.h"
#include "llimfloater.h"
@@ -65,17 +67,14 @@ LLUUID notification_id_to_object_id(const LLUUID& notification_id)
LLScriptFloater::LLScriptFloater(const LLSD& key)
: LLDockableFloater(NULL, true, key)
, mScriptForm(NULL)
+, mSaveFloaterPosition(false)
{
setMouseDownCallback(boost::bind(&LLScriptFloater::onMouseDown, this));
setOverlapsScreenChannel(true);
}
-bool LLScriptFloater::toggle(const LLUUID& object_id)
+bool LLScriptFloater::toggle(const LLUUID& notification_id)
{
- // Force chiclet toggle on here because first onFocusReceived() will not toggle it on.
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(object_id, true);
-
- LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
// show existing floater
@@ -89,51 +88,57 @@ bool LLScriptFloater::toggle(const LLUUID& object_id)
else
{
floater->setVisible(TRUE);
- floater->setFocus(TRUE);
- return true;
+ floater->setFocus(FALSE);
}
}
// create and show new floater
else
{
- show(object_id);
- return true;
+ show(notification_id);
}
+
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true);
+ return true;
}
-LLScriptFloater* LLScriptFloater::show(const LLUUID& object_id)
+LLScriptFloater* LLScriptFloater::show(const LLUUID& notification_id)
{
- LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
-
- LLScriptFloater* floater = LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id);
- floater->setObjectId(object_id);
- floater->createForm(object_id);
+ LLScriptFloater* floater = LLFloaterReg::getTypedInstance<LLScriptFloater>("script_floater", notification_id);
+ floater->setNotificationId(notification_id);
+ floater->createForm(notification_id);
- if (floater->getDockControl() == NULL)
- {
- LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(object_id);
- if (chiclet == NULL)
- {
- llerror("Dock chiclet for LLScriptFloater doesn't exist", 0);
- }
- else
- {
- LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
- }
+ //LLDialog(LLGiveInventory and LLLoadURL) should no longer steal focus (see EXT-5445)
+ floater->setAutoFocus(FALSE);
- floater->setDockControl(new LLDockControl(chiclet, floater, floater->getDockTongue(),
- LLDockControl::TOP, boost::bind(&LLScriptFloater::getAllowedRect, floater, _1)));
+ if(LLScriptFloaterManager::OBJ_SCRIPT == LLScriptFloaterManager::getObjectType(notification_id))
+ {
+ floater->setSavePosition(true);
+ floater->restorePosition();
+ }
+ else
+ {
+ floater->dockToChiclet(true);
}
+ //LLDialog(LLGiveInventory and LLLoadURL) should no longer steal focus (see EXT-5445)
+ LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id, FALSE);
+
return floater;
}
+void LLScriptFloater::setNotificationId(const LLUUID& id)
+{
+ mNotificationId = id;
+ // Lets save object id now while notification exists
+ mObjectId = notification_id_to_object_id(id);
+}
+
void LLScriptFloater::getAllowedRect(LLRect& rect)
{
rect = gViewerWindow->getWorldViewRectRaw();
}
-void LLScriptFloater::createForm(const LLUUID& object_id)
+void LLScriptFloater::createForm(const LLUUID& notification_id)
{
// delete old form
if(mScriptForm)
@@ -142,8 +147,7 @@ void LLScriptFloater::createForm(const LLUUID& object_id)
mScriptForm->die();
}
- LLNotificationPtr notification = LLNotifications::getInstance()->find(
- LLScriptFloaterManager::getInstance()->findNotificationId(object_id));
+ LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
if(NULL == notification)
{
return;
@@ -165,9 +169,11 @@ void LLScriptFloater::createForm(const LLUUID& object_id)
void LLScriptFloater::onClose(bool app_quitting)
{
- if(getObjectId().notNull())
+ savePosition();
+
+ if(getNotificationId().notNull())
{
- LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(getObjectId());
+ LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
}
}
@@ -175,6 +181,8 @@ void LLScriptFloater::setDocked(bool docked, bool pop_on_undock /* = true */)
{
LLDockableFloater::setDocked(docked, pop_on_undock);
+ savePosition();
+
hideToastsIfNeeded();
}
@@ -186,7 +194,7 @@ void LLScriptFloater::setVisible(BOOL visible)
if(!visible)
{
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getObjectId());
+ LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
if(chiclet)
{
chiclet->setToggleState(false);
@@ -196,10 +204,10 @@ void LLScriptFloater::setVisible(BOOL visible)
void LLScriptFloater::onMouseDown()
{
- if(getObjectId().notNull())
+ if(getNotificationId().notNull())
{
// Remove new message icon
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getObjectId());
+ LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
if (chiclet == NULL)
{
llerror("Dock chiclet for LLScriptFloater doesn't exist", 0);
@@ -211,17 +219,74 @@ void LLScriptFloater::onMouseDown()
}
}
+void LLScriptFloater::savePosition()
+{
+ if(getSavePosition() && mObjectId.notNull())
+ {
+ LLScriptFloaterManager::FloaterPositionInfo fpi = {getRect(), isDocked()};
+ LLScriptFloaterManager::getInstance()->saveFloaterPosition(mObjectId, fpi);
+ }
+}
+
+void LLScriptFloater::restorePosition()
+{
+ LLScriptFloaterManager::FloaterPositionInfo fpi;
+ if(LLScriptFloaterManager::getInstance()->getFloaterPosition(mObjectId, fpi))
+ {
+ dockToChiclet(fpi.mDockState);
+ if(!fpi.mDockState)
+ {
+ // Un-docked floater is opened in 0,0, now move it to saved position
+ translate(fpi.mRect.mLeft - getRect().mLeft, fpi.mRect.mTop - getRect().mTop);
+ }
+ }
+ else
+ {
+ dockToChiclet(true);
+ }
+}
+
void LLScriptFloater::onFocusLost()
{
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), false);
+ if(getNotificationId().notNull())
+ {
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false);
+ }
}
void LLScriptFloater::onFocusReceived()
{
// first focus will be received before setObjectId() call - don't toggle chiclet
- if(getObjectId().notNull())
+ if(getNotificationId().notNull())
{
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), true);
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true);
+ }
+}
+
+void LLScriptFloater::dockToChiclet(bool dock)
+{
+ if (getDockControl() == NULL)
+ {
+ LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(getNotificationId());
+ if (chiclet == NULL)
+ {
+ llwarns << "Dock chiclet for LLScriptFloater doesn't exist" << llendl;
+ return;
+ }
+ else
+ {
+ LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
+ }
+
+ // Stop saving position while we dock floater
+ bool save = getSavePosition();
+ setSavePosition(false);
+
+ setDockControl(new LLDockControl(chiclet, this, getDockTongue(),
+ LLDockControl::TOP, boost::bind(&LLScriptFloater::getAllowedRect, this, _1)), dock);
+
+ // Restore saving
+ setSavePosition(save);
}
}
@@ -246,200 +311,227 @@ void LLScriptFloater::hideToastsIfNeeded()
void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
{
- // get scripted Object's ID
- LLUUID object_id = notification_id_to_object_id(notification_id);
- if(object_id.isNull())
+ if(notification_id.isNull())
{
- llwarns << "Invalid notification, no object id" << llendl;
+ llwarns << "Invalid notification ID" << llendl;
return;
}
+ // get scripted Object's ID
+ LLUUID object_id = notification_id_to_object_id(notification_id);
+
// Need to indicate of "new message" for object chiclets according to requirements
// specified in the Message Bar design specification. See EXT-3142.
bool set_new_message = false;
+ EObjectType obj_type = getObjectType(notification_id);
- // If an Object spawns more-than-one floater, only the newest one is shown.
- // The previous is automatically closed.
- script_notification_map_t::iterator it = mNotifications.find(object_id);
- if(it != mNotifications.end())
+ // LLDialog can spawn only one instance, LLLoadURL and LLGiveInventory can spawn unlimited number of instances
+ if(OBJ_SCRIPT == obj_type)
{
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(object_id);
- if(chiclet)
+ // If an Object spawns more-than-one floater, only the newest one is shown.
+ // The previous is automatically closed.
+ script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
+ if(it != mNotifications.end())
{
- // Pass the new_message icon state further.
- set_new_message = chiclet->getShowNewMessagesIcon();
- }
+ LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first);
+ if(chiclet)
+ {
+ // Pass the new_message icon state further.
+ set_new_message = chiclet->getShowNewMessagesIcon();
+ }
- LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", it->second.notification_id);
- if(floater)
- {
- // Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142.
- set_new_message |= !floater->hasFocus();
- }
+ LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", it->first);
+ if(floater)
+ {
+ // Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142.
+ set_new_message |= !floater->hasFocus();
+ }
- onRemoveNotification(it->second.notification_id);
+ onRemoveNotification(it->first);
+ }
}
- LLNotificationData nd = {notification_id};
- mNotifications.insert(std::make_pair(object_id, nd));
+ mNotifications.insert(std::make_pair(notification_id, object_id));
// Create inventory offer chiclet for offer type notifications
- LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
- if( notification && notification->getType() == "offer" )
+ if( OBJ_GIVE_INVENTORY == obj_type )
{
- LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(object_id);
+ LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id);
}
else
{
- LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(object_id);
+ LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id);
}
- LLIMWellWindow::getInstance()->addObjectRow(object_id, set_new_message);
+ LLIMWellWindow::getInstance()->addObjectRow(notification_id, set_new_message);
LLSD data;
- data["object_id"] = object_id;
+ data["notification_id"] = notification_id;
data["new_message"] = set_new_message;
data["unread"] = 1; // each object has got only one floater
mNewObjectSignal(data);
- toggleScriptFloater(object_id, set_new_message);
+ toggleScriptFloater(notification_id, set_new_message);
}
void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
{
- LLUUID object_id = findObjectId(notification_id);
- if(object_id.isNull())
+ if(notification_id.isNull())
{
- llwarns << "Invalid notification, no object id" << llendl;
+ llwarns << "Invalid notification ID" << llendl;
return;
}
- using namespace LLNotificationsUI;
-
- // remove related toast
- LLUUID channel_id(gSavedSettings.getString("NotificationChannelUUID"));
- LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>
- (LLChannelManager::getInstance()->findChannelByID(channel_id));
- LLUUID n_toast_id = findNotificationToastId(object_id);
- if(channel && n_toast_id.notNull())
- {
- channel->killToastByNotificationID(n_toast_id);
- }
-
// remove related chiclet
- LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(object_id);
+ LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(notification_id);
- LLIMWellWindow::getInstance()->removeObjectRow(object_id);
+ LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
// close floater
LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
if(floater)
{
- floater->setObjectId(LLUUID::null);
+ floater->savePosition();
+ floater->setNotificationId(LLUUID::null);
floater->closeFloater();
}
- mNotifications.erase(object_id);
+ mNotifications.erase(notification_id);
}
-void LLScriptFloaterManager::removeNotificationByObjectId(const LLUUID& object_id)
+void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& notification_id, bool set_new_message)
{
- // Check we have not removed notification yet
- LLNotificationPtr notification = LLNotifications::getInstance()->find(
- findNotificationId(object_id));
- if(notification)
- {
- onRemoveNotification(notification->getID());
- }
-}
-
-void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& object_id, bool set_new_message)
-{
- // kill toast
- using namespace LLNotificationsUI;
- LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(LLChannelManager::getInstance()->findChannelByID(
- LLUUID(gSavedSettings.getString("NotificationChannelUUID"))));
- if(channel)
- {
- channel->killToastByNotificationID(findNotificationToastId(object_id));
- }
-
LLSD data;
- data["object_id"] = object_id;
+ data["notification_id"] = notification_id;
data["new_message"] = set_new_message;
mToggleFloaterSignal(data);
// toggle floater
- LLScriptFloater::toggle(object_id);
+ LLScriptFloater::toggle(notification_id);
}
-void LLScriptFloaterManager::setNotificationToastId(const LLUUID& object_id, const LLUUID& notification_id)
+LLUUID LLScriptFloaterManager::findObjectId(const LLUUID& notification_id)
{
- script_notification_map_t::iterator it = mNotifications.find(object_id);
+ script_notification_map_t::const_iterator it = mNotifications.find(notification_id);
if(mNotifications.end() != it)
{
- it->second.toast_notification_id = notification_id;
+ return it->second;
}
+ return LLUUID::null;
}
-LLUUID LLScriptFloaterManager::findObjectId(const LLUUID& notification_id)
+LLUUID LLScriptFloaterManager::findNotificationId(const LLUUID& object_id)
{
- if(notification_id.notNull())
+ if(object_id.notNull())
{
- script_notification_map_t::const_iterator it = mNotifications.begin();
- for(; mNotifications.end() != it; ++it)
+ script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
+ if(mNotifications.end() != it)
{
- if(notification_id == it->second.notification_id)
- {
- return it->first;
- }
+ return it->first;
}
}
return LLUUID::null;
}
-LLUUID LLScriptFloaterManager::findNotificationId(const LLUUID& object_id)
+// static
+LLScriptFloaterManager::EObjectType LLScriptFloaterManager::getObjectType(const LLUUID& notification_id)
{
- script_notification_map_t::const_iterator it = mNotifications.find(object_id);
- if(mNotifications.end() != it)
+ if(notification_id.isNull())
{
- return it->second.notification_id;
+ llwarns << "Invalid notification ID" << llendl;
+ return OBJ_UNKNOWN;
}
- return LLUUID::null;
-}
-LLUUID LLScriptFloaterManager::findNotificationToastId(const LLUUID& object_id)
-{
- script_notification_map_t::const_iterator it = mNotifications.find(object_id);
- if(mNotifications.end() != it)
+ static const object_type_map TYPE_MAP = initObjectTypeMap();
+
+ LLNotificationPtr notification = LLNotificationsUtil::find(notification_id);
+ object_type_map::const_iterator it = TYPE_MAP.find(notification->getName());
+ if(it != TYPE_MAP.end())
{
- return it->second.toast_notification_id;
+ return it->second;
}
- return LLUUID::null;
+
+ llwarns << "Unknown object type" << llendl;
+ return OBJ_UNKNOWN;
}
-//static
-void LLScriptFloaterManager::onToastButtonClick(const LLSD&notification, const LLSD&response)
+// static
+std::string LLScriptFloaterManager::getObjectName(const LLUUID& notification_id)
{
- S32 option = LLNotification::getSelectedOption(notification, response);
- LLUUID object_id = notification["payload"]["object_id"].asUUID();
+ using namespace LLNotificationsUI;
+ LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
+ if(!notification)
+ {
+ llwarns << "Invalid notification" << llendl;
+ return LLStringUtil::null;
+ }
- switch(option)
+ std::string text;
+
+ switch(LLScriptFloaterManager::getObjectType(notification_id))
{
- case 0: // "Open"
- LLScriptFloaterManager::getInstance()->toggleScriptFloater(object_id);
+ case LLScriptFloaterManager::OBJ_SCRIPT:
+ text = notification->getSubstitutions()["TITLE"].asString();
break;
- case 1: // "Ignore"
- LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(object_id);
+ case LLScriptFloaterManager::OBJ_LOAD_URL:
+ text = notification->getSubstitutions()["OBJECTNAME"].asString();
break;
- case 2: // "Block"
- LLMuteList::getInstance()->add(LLMute(object_id, notification["substitutions"]["TITLE"], LLMute::OBJECT));
- LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(object_id);
+ case LLScriptFloaterManager::OBJ_GIVE_INVENTORY:
+ text = notification->getSubstitutions()["NAME"].asString();
break;
default:
- llwarns << "Unexpected value" << llendl;
+ text = LLTrans::getString("object");
break;
}
+
+ return text;
+}
+
+//static
+LLScriptFloaterManager::object_type_map LLScriptFloaterManager::initObjectTypeMap()
+{
+ object_type_map type_map;
+ type_map["ScriptDialog"] = OBJ_SCRIPT;
+ type_map["ScriptDialogGroup"] = OBJ_SCRIPT;
+ type_map["LoadWebPage"] = OBJ_LOAD_URL;
+ type_map["ObjectGiveItem"] = OBJ_GIVE_INVENTORY;
+ return type_map;
+}
+
+LLScriptFloaterManager::script_notification_map_t::const_iterator LLScriptFloaterManager::findUsingObjectId(const LLUUID& object_id)
+{
+ script_notification_map_t::const_iterator it = mNotifications.begin();
+ for(; mNotifications.end() != it; ++it)
+ {
+ if(object_id == it->second)
+ {
+ return it;
+ }
+ }
+ return mNotifications.end();
+}
+
+void LLScriptFloaterManager::saveFloaterPosition(const LLUUID& object_id, const FloaterPositionInfo& fpi)
+{
+ if(object_id.notNull())
+ {
+ LLScriptFloaterManager::getInstance()->mFloaterPositions[object_id] = fpi;
+ }
+ else
+ {
+ llwarns << "Invalid object id" << llendl;
+ }
+}
+
+bool LLScriptFloaterManager::getFloaterPosition(const LLUUID& object_id, FloaterPositionInfo& fpi)
+{
+ floater_position_map_t::const_iterator it = mFloaterPositions.find(object_id);
+ if(LLScriptFloaterManager::getInstance()->mFloaterPositions.end() != it)
+ {
+ fpi = it->second;
+ return true;
+ }
+ return false;
}
// EOF
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index f86605c5d1..ec3ec4b540 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -48,6 +48,15 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
// know how script notifications should look like.
public:
+ typedef enum e_object_type
+ {
+ OBJ_SCRIPT,
+ OBJ_GIVE_INVENTORY,
+ OBJ_LOAD_URL,
+
+ OBJ_UNKNOWN
+ }EObjectType;
+
/**
* Handles new notifications.
* Saves notification and object ids, removes old notification if needed, creates script chiclet
@@ -62,11 +71,6 @@ public:
void onRemoveNotification(const LLUUID& notification_id);
/**
- * Wrapper for onRemoveNotification, removes notification by object id.
- */
- void removeNotificationByObjectId(const LLUUID& object_id);
-
- /**
* Toggles script floater.
* Removes "new message" icon from chiclet and removes notification toast.
*/
@@ -76,38 +80,47 @@ public:
LLUUID findNotificationId(const LLUUID& object_id);
- LLUUID findNotificationToastId(const LLUUID& object_id);
-
- /**
- * Associate notification toast id with object id.
- */
- void setNotificationToastId(const LLUUID& object_id, const LLUUID& notification_id);
+ static EObjectType getObjectType(const LLUUID& notification_id);
- /**
- * Callback for notification toast buttons.
- */
- static void onToastButtonClick(const LLSD&notification, const LLSD&response);
+ static std::string getObjectName(const LLUUID& notification_id);
typedef boost::signals2::signal<void(const LLSD&)> object_signal_t;
boost::signals2::connection addNewObjectCallback(const object_signal_t::slot_type& cb) { return mNewObjectSignal.connect(cb); }
boost::signals2::connection addToggleObjectFloaterCallback(const object_signal_t::slot_type& cb) { return mToggleFloaterSignal.connect(cb); }
-private:
-
- struct LLNotificationData
+ struct FloaterPositionInfo
{
- LLUUID notification_id;
- LLUUID toast_notification_id;
+ LLRect mRect;
+ bool mDockState;
};
- // <object_id, notification_data>
- typedef std::map<LLUUID, LLNotificationData> script_notification_map_t;
+ void saveFloaterPosition(const LLUUID& object_id, const FloaterPositionInfo& fpi);
+
+ bool getFloaterPosition(const LLUUID& object_id, FloaterPositionInfo& fpi);
+
+protected:
+
+ typedef std::map<std::string, EObjectType> object_type_map;
+
+ static object_type_map initObjectTypeMap();
+
+ // <notification_id, object_id>
+ typedef std::map<LLUUID, LLUUID> script_notification_map_t;
+
+ script_notification_map_t::const_iterator findUsingObjectId(const LLUUID& object_id);
+
+private:
script_notification_map_t mNotifications;
object_signal_t mNewObjectSignal;
object_signal_t mToggleFloaterSignal;
+
+ // <object_id, floater position>
+ typedef std::map<LLUUID, FloaterPositionInfo> floater_position_map_t;
+
+ floater_position_map_t mFloaterPositions;
};
/**
@@ -136,9 +149,9 @@ public:
*/
static LLScriptFloater* show(const LLUUID& object_id);
- const LLUUID& getObjectId() { return mObjectId; }
+ const LLUUID& getNotificationId() { return mNotificationId; }
- void setObjectId(const LLUUID& id) { mObjectId = id; }
+ void setNotificationId(const LLUUID& id);
/**
* Close notification if script floater is closed.
@@ -155,6 +168,14 @@ public:
*/
/*virtual*/ void setVisible(BOOL visible);
+ bool getSavePosition() { return mSaveFloaterPosition; }
+
+ void setSavePosition(bool save) { mSaveFloaterPosition = save; }
+
+ void savePosition();
+
+ void restorePosition();
+
protected:
/**
@@ -178,9 +199,13 @@ protected:
/*virtual*/ void onFocusReceived();
+ void dockToChiclet(bool dock);
+
private:
LLToastNotifyPanel* mScriptForm;
+ LLUUID mNotificationId;
LLUUID mObjectId;
+ bool mSaveFloaterPosition;
};
#endif //LL_SCRIPTFLOATER_H
diff --git a/indra/newview/llsearchcombobox.cpp b/indra/newview/llsearchcombobox.cpp
index 93a70b6471..a130878176 100644
--- a/indra/newview/llsearchcombobox.cpp
+++ b/indra/newview/llsearchcombobox.cpp
@@ -78,6 +78,7 @@ LLSearchComboBox::LLSearchComboBox(const Params&p)
button_params.click_callback.function(boost::bind(&LLSearchComboBox::onSelectionCommit, this));
mSearchButton = LLUICtrlFactory::create<LLButton>(button_params);
mTextEntry->addChild(mSearchButton);
+ mTextEntry->setPassDelete(TRUE);
setButtonVisible(p.dropdown_button_visible);
mTextEntry->setCommitCallback(boost::bind(&LLComboBox::onTextCommit, this, _2));
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index bf08756051..9540894646 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -41,6 +41,7 @@
#include "lldbstrings.h"
#include "lleconomy.h"
#include "llgl.h"
+#include "llmediaentry.h"
#include "llrender.h"
#include "llnotifications.h"
#include "llpermissions.h"
@@ -1739,70 +1740,70 @@ void LLSelectMgr::selectionSetFullbright(U8 fullbright)
getSelection()->applyToObjects(&sendfunc);
}
-void LLSelectMgr::selectionSetMedia(U8 media_type)
-{
-
- struct f : public LLSelectedTEFunctor
- {
- U8 mMediaFlags;
- f(const U8& t) : mMediaFlags(t) {}
- bool apply(LLViewerObject* object, S32 te)
- {
- if (object->permModify())
- {
- // update viewer has media
- object->setTEMediaFlags(te, mMediaFlags);
- }
- return true;
- }
- } setfunc(media_type);
- getSelection()->applyToTEs(&setfunc);
- struct f2 : public LLSelectedObjectFunctor
- {
- virtual bool apply(LLViewerObject* object)
- {
- if (object->permModify())
- {
- object->sendTEUpdate();
- }
- return true;
- }
- } func2;
- mSelectedObjects->applyToObjects( &func2 );
-}
-
// This function expects media_data to be a map containing relevant
// media data name/value pairs (e.g. home_url, etc.)
-void LLSelectMgr::selectionSetMediaData(const LLSD &media_data)
-{
-
+void LLSelectMgr::selectionSetMedia(U8 media_type, const LLSD &media_data)
+{
struct f : public LLSelectedTEFunctor
{
+ U8 mMediaFlags;
const LLSD &mMediaData;
- f(const LLSD& t) : mMediaData(t) {}
+ f(const U8& t, const LLSD& d) : mMediaFlags(t), mMediaData(d) {}
bool apply(LLViewerObject* object, S32 te)
{
if (object->permModify())
{
- LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object);
- if (NULL != vo)
- {
- vo->syncMediaData(te, mMediaData, true/*merge*/, true/*ignore_agent*/);
- }
+ // If we are adding media, then check the current state of the
+ // media data on this face.
+ // - If it does not have media, AND we are NOT setting the HOME URL, then do NOT add media to this
+ // face.
+ // - If it does not have media, and we ARE setting the HOME URL, add media to this face.
+ // - If it does already have media, add/update media to/on this face
+ // If we are removing media, just do it (ignore the passed-in LLSD).
+ if (mMediaFlags & LLTextureEntry::MF_HAS_MEDIA)
+ {
+ llassert(mMediaData.isMap());
+ const LLTextureEntry *texture_entry = object->getTE(te);
+ if (!mMediaData.isMap() ||
+ (NULL != texture_entry) && !texture_entry->hasMedia() && !mMediaData.has(LLMediaEntry::HOME_URL_KEY))
+ {
+ // skip adding/updating media
+ }
+ else {
+ // Add/update media
+ object->setTEMediaFlags(te, mMediaFlags);
+ LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object);
+ llassert(NULL != vo);
+ if (NULL != vo)
+ {
+ vo->syncMediaData(te, mMediaData, true/*merge*/, true/*ignore_agent*/);
+ }
+ }
+ }
+ else
+ {
+ // delete media (or just set the flags)
+ object->setTEMediaFlags(te, mMediaFlags);
+ }
}
return true;
}
- } setfunc(media_data);
+ } setfunc(media_type, media_data);
getSelection()->applyToTEs(&setfunc);
-
+
struct f2 : public LLSelectedObjectFunctor
{
virtual bool apply(LLViewerObject* object)
{
if (object->permModify())
{
- LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object);
- if (NULL != vo)
+ object->sendTEUpdate();
+ LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object);
+ llassert(NULL != vo);
+ // It's okay to skip this object if hasMedia() is false...
+ // the sendTEUpdate() above would remove all media data if it were
+ // there.
+ if (NULL != vo && vo->hasMedia())
{
// Send updated media data FOR THE ENTIRE OBJECT
vo->sendMediaDataUpdate();
@@ -1811,11 +1812,9 @@ void LLSelectMgr::selectionSetMediaData(const LLSD &media_data)
return true;
}
} func2;
- getSelection()->applyToObjects(&func2);
+ mSelectedObjects->applyToObjects( &func2 );
}
-
-
void LLSelectMgr::selectionSetGlow(F32 glow)
{
struct f1 : public LLSelectedTEFunctor
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index f8ecfd0674..00474827ca 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -502,8 +502,7 @@ public:
void selectionSetTexGen( U8 texgen );
void selectionSetShiny( U8 shiny );
void selectionSetFullbright( U8 fullbright );
- void selectionSetMedia( U8 media_type );
- void selectionSetMediaData(const LLSD &media_data); // NOTE: modifies media_data!!!
+ void selectionSetMedia( U8 media_type, const LLSD &media_data );
void selectionSetClickAction(U8 action);
void selectionSetIncludeInSearch(bool include_in_search);
void selectionSetGlow(const F32 glow);
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 43215f86bd..cd4a821774 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -278,7 +278,7 @@ void LLSidepanelAppearance::toggleLookInfoPanel(BOOL visible)
return;
mLookInfo->setVisible(visible);
- mPanelOutfitsInventory->setVisible(!visible);
+ if (mPanelOutfitsInventory) mPanelOutfitsInventory->setVisible(!visible);
mFilterEditor->setVisible(!visible);
mEditBtn->setVisible(!visible);
mNewOutfitBtn->setVisible(!visible);
@@ -305,7 +305,7 @@ void LLSidepanelAppearance::updateVerbs()
{
bool is_look_info_visible = mLookInfo->getVisible();
- if (!is_look_info_visible)
+ if (mPanelOutfitsInventory && !is_look_info_visible)
{
const bool is_correct_type = (mPanelOutfitsInventory->getCorrectListenerForAction() != NULL);
mEditBtn->setEnabled(is_correct_type);
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 5383158cd3..73880563d7 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -62,7 +62,7 @@ BOOL LLSidepanelInventory::postBuild()
// UI elements from inventory panel
{
mInventoryPanel = getChild<LLPanel>("sidepanel__inventory_panel");
-
+
mInfoBtn = mInventoryPanel->getChild<LLButton>("info_btn");
mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this));
@@ -83,6 +83,14 @@ BOOL LLSidepanelInventory::postBuild()
mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
+
+ /*
+ EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?"
+ Deferring this until 2.1.
+ LLInventoryPanel *my_inventory_panel = mPanelMainInventory->getChild<LLInventoryPanel>("All Items");
+ my_inventory_panel->addHideFolderType(LLFolderType::FT_LANDMARK);
+ my_inventory_panel->addHideFolderType(LLFolderType::FT_FAVORITE);
+ */
}
// UI elements from item panel
@@ -164,7 +172,21 @@ void LLSidepanelInventory::onWearButtonClicked()
void LLSidepanelInventory::onPlayButtonClicked()
{
- performActionOnSelection("activate");
+ const LLInventoryItem *item = getSelectedItem();
+ if (!item)
+ {
+ return;
+ }
+
+ switch(item->getInventoryType())
+ {
+ case LLInventoryType::IT_GESTURE:
+ performActionOnSelection("play");
+ break;
+ default:
+ performActionOnSelection("open");
+ break;
+ }
}
void LLSidepanelInventory::onTeleportButtonClicked()
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 94fe95d215..0275736f6d 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -109,9 +109,9 @@ BOOL LLSidepanelItemInfo::postBuild()
{
LLSidepanelInventorySubpanel::postBuild();
- childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this));
- childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this));
// Creator information
getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this));
@@ -231,20 +231,23 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
// PERMISSIONS LOOKUP //
////////////////////////
+ llassert(item);
+ if (!item) return;
+
// do not enable the UI for incomplete items.
BOOL is_complete = item->isComplete();
const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(item->getInventoryType());
const BOOL is_calling_card = (item->getInventoryType() == LLInventoryType::IT_CALLINGCARD);
const LLPermissions& perm = item->getPermissions();
const BOOL can_agent_manipulate = gAgent.allowOperation(PERM_OWNER, perm,
- GP_OBJECT_MANIPULATE);
+ GP_OBJECT_MANIPULATE);
const BOOL can_agent_sell = gAgent.allowOperation(PERM_OWNER, perm,
- GP_OBJECT_SET_SALE) &&
+ GP_OBJECT_SET_SALE) &&
!cannot_restrict_permissions;
const BOOL is_link = item->getIsLinkType();
const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- bool not_in_trash = item && (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id);
+ bool not_in_trash = (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id);
// You need permission to modify the object to modify an inventory
// item in it.
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 0b8f66c5f3..0630981d7e 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -104,9 +104,9 @@ BOOL LLSidepanelTaskInfo::postBuild()
mLabelGroupName = getChild<LLNameBox>("Group Name Proxy");
childSetCommitCallback("Object Name", LLSidepanelTaskInfo::onCommitName,this);
- childSetPrevalidate("Object Name", LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("Object Name", LLTextValidate::validateASCIIPrintableNoPipe);
childSetCommitCallback("Object Description", LLSidepanelTaskInfo::onCommitDesc,this);
- childSetPrevalidate("Object Description", LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ childSetPrevalidate("Object Description", LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("button set group")->setCommitCallback(boost::bind(&LLSidepanelTaskInfo::onClickGroup,this));
childSetCommitCallback("checkbox share with group", &LLSidepanelTaskInfo::onCommitGroupShare,this);
childSetAction("button deed", &LLSidepanelTaskInfo::onClickDeedToGroup,this);
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index 50c47e293e..fba1503b4a 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -248,6 +248,11 @@ LLSideTray::LLSideTray(Params& params)
// panel_name should be specified via "parameter" attribute.
commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null));
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";
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index b1c8675793..140a9c818a 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -139,6 +139,8 @@ public:
LLPanel* getButtonsPanel() { return mButtonsPanel; }
+ bool getCollapsed() { return mCollapsed; }
+
public:
virtual ~LLSideTray(){};
diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp
index 37e268ad34..5d20e280b5 100644
--- a/indra/newview/llslurl.cpp
+++ b/indra/newview/llslurl.cpp
@@ -36,10 +36,19 @@
#include "llweb.h"
+#include "llurlregistry.h"
+
const std::string LLSLURL::PREFIX_SL_HELP = "secondlife://app.";
const std::string LLSLURL::PREFIX_SL = "sl://";
const std::string LLSLURL::PREFIX_SECONDLIFE = "secondlife://";
-const std::string LLSLURL::PREFIX_SLURL = "http://slurl.com/secondlife/";
+const std::string LLSLURL::PREFIX_SLURL_OLD = "http://slurl.com/secondlife/";
+
+// For DnD - even though www.slurl.com redirects to slurl.com in a browser, you can copy and drag
+// text with www.slurl.com or a link explicitly pointing at www.slurl.com so testing for this
+// version is required also.
+const std::string LLSLURL::PREFIX_SLURL_WWW = "http://www.slurl.com/secondlife/";
+
+const std::string LLSLURL::PREFIX_SLURL = "http://maps.secondlife.com/secondlife/";
const std::string LLSLURL::APP_TOKEN = "app/";
@@ -63,6 +72,14 @@ std::string LLSLURL::stripProtocol(const std::string& url)
{
stripped.erase(0, PREFIX_SLURL.length());
}
+ else if (matchPrefix(stripped, PREFIX_SLURL_OLD))
+ {
+ stripped.erase(0, PREFIX_SLURL_OLD.length());
+ }
+ else if (matchPrefix(stripped, PREFIX_SLURL_WWW))
+ {
+ stripped.erase(0, PREFIX_SLURL_WWW.length());
+ }
return stripped;
}
@@ -74,16 +91,34 @@ bool LLSLURL::isSLURL(const std::string& url)
if (matchPrefix(url, PREFIX_SL)) return true;
if (matchPrefix(url, PREFIX_SECONDLIFE)) return true;
if (matchPrefix(url, PREFIX_SLURL)) return true;
+ if (matchPrefix(url, PREFIX_SLURL_OLD)) return true;
+ if (matchPrefix(url, PREFIX_SLURL_WWW)) return true;
return false;
}
+bool LLSLURL::isValidSLURL(const std::string& url)
+{
+ std::string temp_url(url);
+ //"www." may appear in DnD- see description of PREFIX_SLURL_WWW.
+ // If it is found, we remove it because it isn't expected in regexp.
+ if (matchPrefix(url, PREFIX_SLURL_WWW))
+ {
+ size_t position = url.find("www.");
+ temp_url.erase(position,4);
+ }
+
+ return LLUrlRegistry::getInstance()->isUrl(temp_url);
+}
+
// static
bool LLSLURL::isSLURLCommand(const std::string& url)
{
if (matchPrefix(url, PREFIX_SL + APP_TOKEN) ||
matchPrefix(url, PREFIX_SECONDLIFE + "/" + APP_TOKEN) ||
- matchPrefix(url, PREFIX_SLURL + APP_TOKEN) )
+ matchPrefix(url, PREFIX_SLURL + APP_TOKEN) ||
+ matchPrefix(url, PREFIX_SLURL_WWW + APP_TOKEN) ||
+ matchPrefix(url, PREFIX_SLURL_OLD + APP_TOKEN) )
{
return true;
}
diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h
index 05b0143e72..a79a8fc97c 100644
--- a/indra/newview/llslurl.h
+++ b/indra/newview/llslurl.h
@@ -50,6 +50,8 @@ public:
static const std::string PREFIX_SL;
static const std::string PREFIX_SECONDLIFE;
static const std::string PREFIX_SLURL;
+ static const std::string PREFIX_SLURL_OLD;
+ static const std::string PREFIX_SLURL_WWW;
static const std::string APP_TOKEN;
@@ -59,6 +61,11 @@ public:
static bool isSLURL(const std::string& url);
/**
+ * Returns true if url is proven valid by regexp check from LLUrlRegistry
+ */
+ static bool isValidSLURL(const std::string& url);
+
+ /**
* Is this a special secondlife://app/ URL?
*/
static bool isSLURLCommand(const std::string& url);
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
index 8f2c877c7a..c5c311ed33 100644
--- a/indra/newview/llspeakbutton.cpp
+++ b/indra/newview/llspeakbutton.cpp
@@ -66,6 +66,16 @@ void LLSpeakButton::draw()
mOutputMonitor->setIsMuted(!voiceenabled);
LLUICtrl::draw();
}
+void LLSpeakButton::setSpeakBtnEnabled(bool enabled)
+{
+ LLButton* speak_btn = getChild<LLButton>("speak_btn");
+ speak_btn->setEnabled(enabled);
+}
+void LLSpeakButton::setFlyoutBtnEnabled(bool enabled)
+{
+ LLButton* show_btn = getChild<LLButton>("speak_flyout_btn");
+ show_btn->setEnabled(enabled);
+}
LLSpeakButton::LLSpeakButton(const Params& p)
: LLUICtrl(p)
diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h
index 6660b50240..85c97f1a2c 100644
--- a/indra/newview/llspeakbutton.h
+++ b/indra/newview/llspeakbutton.h
@@ -61,6 +61,10 @@ public:
/*virtual*/ ~LLSpeakButton();
/*virtual*/ void draw();
+
+ // methods for enabling/disabling right and left parts of speak button separately(EXT-4648)
+ void setSpeakBtnEnabled(bool enabled);
+ void setFlyoutBtnEnabled(bool enabled);
// *HACK: Need to put tooltips in a translatable location,
// the panel that contains this button.
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 6f9a1ccdbe..717a8bda1e 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -175,6 +175,11 @@ BOOL LLSpeakerActionTimer::tick()
return TRUE;
}
+void LLSpeakerActionTimer::unset()
+{
+ mActionCallback = 0;
+}
+
LLSpeakersDelayActionsStorage::LLSpeakersDelayActionsStorage(LLSpeakerActionTimer::action_callback_t action_cb, F32 action_delay)
: mActionCallback(action_cb)
, mActionDelay(action_delay)
@@ -213,7 +218,7 @@ void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id)
if (it_speaker != mActionTimersMap.end())
{
- delete it_speaker->second;
+ it_speaker->second->unset();
mActionTimersMap.erase(it_speaker);
}
}
@@ -237,9 +242,7 @@ bool LLSpeakersDelayActionsStorage::onTimerActionCallback(const LLUUID& speaker_
mActionCallback(speaker_id);
}
- // do not return true to avoid deleting of an timer twice:
- // in LLSpeakersDelayActionsStorage::unsetActionTimer() & LLEventTimer::updateClass()
- return false;
+ return true;
}
@@ -292,7 +295,6 @@ LLPointer<LLSpeaker> LLSpeakerMgr::setSpeaker(const LLUUID& id, const std::strin
}
mSpeakerDelayRemover->unsetActionTimer(speakerp->mID);
-
return speakerp;
}
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h
index 63237204c8..b924fb2f2c 100644
--- a/indra/newview/llspeakers.h
+++ b/indra/newview/llspeakers.h
@@ -34,6 +34,7 @@
#define LL_LLSPEAKERS_H
#include "llevent.h"
+#include "lleventtimer.h"
#include "llspeakers.h"
#include "llvoicechannel.h"
@@ -155,6 +156,13 @@ public:
*/
virtual BOOL tick();
+ /**
+ * Clears the callback.
+ *
+ * Use this instead of deleteing this object.
+ * The next call to tick() will return true and that will destroy this object.
+ */
+ void unset();
private:
action_callback_t mActionCallback;
LLUUID mSpeakerId;
@@ -176,7 +184,7 @@ public:
void setActionTimer(const LLUUID& speaker_id);
/**
- * Removes stored LLSpeakerActionTimer for passed speaker UUID from internal map and deletes it.
+ * Removes stored LLSpeakerActionTimer for passed speaker UUID from internal map and optionally deletes it.
*
* @see onTimerActionCallback()
*/
@@ -188,7 +196,6 @@ private:
* Callback of the each instance of LLSpeakerActionTimer.
*
* Unsets an appropriate timer instance and calls action callback for specified speacker_id.
- * It always returns false to not use LLEventTimer::updateClass functionality of timer deleting.
*
* @see unsetActionTimer()
*/
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 6b816f8786..025dd6029a 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -67,6 +67,7 @@
#include "llmemorystream.h"
#include "llmessageconfig.h"
#include "llmoveview.h"
+#include "llnearbychat.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llteleporthistory.h"
@@ -120,9 +121,8 @@
#include "lllogininstance.h" // Host the login module.
#include "llpanellogin.h"
#include "llmutelist.h"
-#include "llpanelavatar.h"
#include "llavatarpropertiesprocessor.h"
-#include "llpanelevent.h"
+#include "llfloaterevent.h"
#include "llpanelclassified.h"
#include "llpanelpick.h"
#include "llpanelplace.h"
@@ -134,13 +134,14 @@
#include "llsecondlifeurls.h"
#include "llselectmgr.h"
#include "llsky.h"
+#include "llsidetray.h"
#include "llstatview.h"
-#include "lltrans.h"
#include "llstatusbar.h" // sendMoneyBalanceRequest(), owns L$ balance
#include "llsurface.h"
#include "lltexturecache.h"
#include "lltexturefetch.h"
#include "lltoolmgr.h"
+#include "lltrans.h"
#include "llui.h"
#include "llurldispatcher.h"
#include "llurlsimstring.h"
@@ -198,10 +199,6 @@
#include "lldxhardware.h"
#endif
-#if (LL_LINUX || LL_SOLARIS) && LL_GTK
-#include <glib/gspawn.h>
-#endif
-
//
// exported globals
//
@@ -799,6 +796,9 @@ bool idle_startup()
gLoginMenuBarView->setVisible( TRUE );
gLoginMenuBarView->setEnabled( TRUE );
+ // Hide the splash screen
+ LLSplashScreen::hide();
+
// Push our window frontmost
gViewerWindow->getWindow()->show();
display_startup();
@@ -904,7 +904,8 @@ bool idle_startup()
LLFile::mkdir(gDirUtilp->getChatLogsDir());
LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
- //good as place as any to create user windlight directories
+
+ //good a place as any to create user windlight directories
std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", ""));
LLFile::mkdir(user_windlight_path_name.c_str());
@@ -1196,6 +1197,7 @@ bool idle_startup()
display_startup();
LLStartUp::setStartupState( STATE_MULTIMEDIA_INIT );
+
return FALSE;
}
@@ -1284,6 +1286,14 @@ bool idle_startup()
LLAppViewer::instance()->loadNameCache();
}
+ //gCacheName is required for nearby chat history loading
+ //so I just moved nearby history loading a few states further
+ if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory"))
+ {
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
+ if (nearby_chat) nearby_chat->loadHistory();
+ }
+
// *Note: this is where gWorldMap used to be initialized.
// register null callbacks for audio until the audio system is initialized
@@ -1690,6 +1700,13 @@ bool idle_startup()
<< " kbps" << LL_ENDL;
gViewerThrottle.setMaxBandwidth(FAST_RATE_BPS / 1024.f);
}
+
+ // Set the show start location to true, now that the user has logged
+ // on with this install.
+ gSavedSettings.setBOOL("ShowStartLocation", TRUE);
+
+ LLSideTray::getInstance()->showPanel("panel_home", LLSD());
+
}
// We're successfully logged in.
@@ -1849,21 +1866,6 @@ bool idle_startup()
LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
}
-
- // We now have an inventory skeleton, so if this is a user's first
- // login, we can start setting up their clothing and avatar
- // appearance. This helps to avoid the generic "Ruth" avatar in
- // the orientation island tutorial experience. JC
- if (gAgent.isFirstLogin()
- && !sInitialOutfit.empty() // registration set up an outfit
- && !sInitialOutfitGender.empty() // and a gender
- && gAgent.getAvatarObject() // can't wear clothes without object
- && !gAgent.isGenderChosen() ) // nothing already loading
- {
- // Start loading the wearables, textures, gestures
- LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
- }
-
// wait precache-delay and for agent's avatar or a lot longer.
if(((timeout_frac > 1.f) && gAgent.getAvatarObject())
|| (timeout_frac > 3.f))
@@ -1883,7 +1885,7 @@ bool idle_startup()
LLViewerShaderMgr::instance()->setShaders();
}
}
-
+
return TRUE;
}
@@ -2466,7 +2468,7 @@ void register_viewer_callbacks(LLMessageSystem* msg)
msg->setHandlerFunc("MapBlockReply", LLWorldMapMessage::processMapBlockReply);
msg->setHandlerFunc("MapItemReply", LLWorldMapMessage::processMapItemReply);
- msg->setHandlerFunc("EventInfoReply", LLPanelEvent::processEventInfoReply);
+ msg->setHandlerFunc("EventInfoReply", LLFloaterEvent::processEventInfoReply);
msg->setHandlerFunc("PickInfoReply", &LLAvatarPropertiesProcessor::processPickInfoReply);
// msg->setHandlerFunc("ClassifiedInfoReply", LLPanelClassified::processClassifiedInfoReply);
msg->setHandlerFunc("ClassifiedInfoReply", LLAvatarPropertiesProcessor::processClassifiedInfoReply);
@@ -2526,6 +2528,13 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response)
void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
const std::string& gender_name )
{
+ llinfos << "starting" << llendl;
+
+ // Not going through the processAgentInitialWearables path, so need to set this here.
+ LLAppearanceManager::instance().setAttachmentInvLinkEnable(true);
+ // Initiate creation of COF, since we're also bypassing that.
+ gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+
S32 gender = 0;
std::string gestures;
if (gender_name == "male")
@@ -2541,24 +2550,53 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
// try to find the outfit - if not there, create some default
// wearables.
- LLInventoryModel::cat_array_t cat_array;
- LLInventoryModel::item_array_t item_array;
- LLNameCategoryCollector has_name(outfit_folder_name);
- gInventory.collectDescendentsIf(LLUUID::null,
- cat_array,
- item_array,
- LLInventoryModel::EXCLUDE_TRASH,
- has_name);
- if (0 == cat_array.count())
+ LLUUID cat_id = findDescendentCategoryIDByName(
+ gInventory.getLibraryRootFolderID(),
+ outfit_folder_name);
+ if (cat_id.isNull())
{
gAgentWearables.createStandardWearables(gender);
}
else
{
- LLAppearanceManager::instance().wearOutfitByName(outfit_folder_name);
+ bool do_copy = true;
+ bool do_append = false;
+ LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
+ LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append);
+ }
+
+ // Copy gestures
+ LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
+ LLPointer<LLInventoryCallback> cb(NULL);
+ LLAppearanceManager *app_mgr = &(LLAppearanceManager::instance());
+
+ // - Copy gender-specific gestures.
+ LLUUID gestures_cat_id = findDescendentCategoryIDByName(
+ gInventory.getLibraryRootFolderID(),
+ gestures);
+ if (gestures_cat_id.notNull())
+ {
+ callAfterCategoryFetch(gestures_cat_id,
+ boost::bind(&LLAppearanceManager::shallowCopyCategory,
+ app_mgr,
+ gestures_cat_id,
+ dst_id,
+ cb));
+ }
+
+ // - Copy common gestures.
+ LLUUID common_gestures_cat_id = findDescendentCategoryIDByName(
+ gInventory.getLibraryRootFolderID(),
+ COMMON_GESTURES_FOLDER);
+ if (common_gestures_cat_id.notNull())
+ {
+ callAfterCategoryFetch(common_gestures_cat_id,
+ boost::bind(&LLAppearanceManager::shallowCopyCategory,
+ app_mgr,
+ common_gestures_cat_id,
+ dst_id,
+ cb));
}
- LLAppearanceManager::instance().wearOutfitByName(gestures);
- LLAppearanceManager::instance().wearOutfitByName(COMMON_GESTURES_FOLDER);
// This is really misnamed -- it means we have started loading
// an outfit/shape that will give the avatar a gender eventually. JC
@@ -2856,7 +2894,9 @@ bool process_login_success_response()
text = response["agent_region_access"].asString();
if (!text.empty())
{
- int preferredMaturity = LLAgent::convertTextToMaturity(text[0]);
+ U32 preferredMaturity =
+ llmin((U32)LLAgent::convertTextToMaturity(text[0]),
+ gSavedSettings.getU32("PreferredMaturity"));
gSavedSettings.setU32("PreferredMaturity", preferredMaturity);
}
// During the AO transition, this flag will be true. Then the flag will
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index bff32af228..732c23982b 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -41,6 +41,7 @@
#include "llviewercontrol.h"
#include "llfloaterbuycurrency.h"
#include "llfloaterlagmeter.h"
+#include "llpanelnearbymedia.h"
#include "llpanelvolumepulldown.h"
#include "llfloaterregioninfo.h"
#include "llfloaterscriptdebug.h"
@@ -49,6 +50,7 @@
#include "llkeyboard.h"
#include "lllineeditor.h"
#include "llmenugl.h"
+#include "llrootview.h"
#include "llsd.h"
#include "lltextbox.h"
#include "llui.h"
@@ -61,6 +63,7 @@
#include "llresmgr.h"
#include "llworld.h"
#include "llstatgraph.h"
+#include "llviewermedia.h"
#include "llviewermenu.h" // for gMenuBarView
#include "llviewerparcelmgr.h"
#include "llviewerthrottle.h"
@@ -130,7 +133,6 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
// status bar can possible overlay menus?
setMouseOpaque(FALSE);
- setIsChrome(TRUE);
// size of day of the weeks and year
sDays.reserve(7);
@@ -140,9 +142,39 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
mHealthTimer = new LLFrameTimer();
LLUICtrlFactory::getInstance()->buildPanel(this,"panel_status_bar.xml");
+}
- // status bar can never get a tab
- setFocusRoot(FALSE);
+LLStatusBar::~LLStatusBar()
+{
+ delete mBalanceTimer;
+ mBalanceTimer = NULL;
+
+ delete mHealthTimer;
+ mHealthTimer = NULL;
+
+ // LLView destructor cleans up children
+}
+
+//-----------------------------------------------------------------------
+// Overrides
+//-----------------------------------------------------------------------
+
+// virtual
+void LLStatusBar::draw()
+{
+ refresh();
+ LLPanel::draw();
+}
+
+BOOL LLStatusBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
+{
+ show_navbar_context_menu(this,x,y);
+ return TRUE;
+}
+
+BOOL LLStatusBar::postBuild()
+{
+ gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3));
// build date necessary data (must do after panel built)
setupDate();
@@ -158,7 +190,10 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
mBtnVolume = getChild<LLButton>( "volume_btn" );
mBtnVolume->setClickedCallback( onClickVolume, this );
mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this));
- mBtnVolume->setIsChrome(TRUE);
+
+ mMediaToggle = getChild<LLButton>("media_toggle_btn");
+ mMediaToggle->setClickedCallback( &LLStatusBar::onClickMediaToggle, this );
+ mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this));
gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2));
@@ -204,53 +239,19 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
childSetActionTextbox("stat_btn", onClickStatGraph);
+ LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder");
+
mPanelVolumePulldown = new LLPanelVolumePulldown();
- addChild(mPanelVolumePulldown);
+ popup_holder->addChild(mPanelVolumePulldown);
- LLRect volume_pulldown_rect = mPanelVolumePulldown->getRect();
- LLButton* volbtn = getChild<LLButton>( "volume_btn" );
- volume_pulldown_rect.setLeftTopAndSize(volbtn->getRect().mLeft -
- (volume_pulldown_rect.getWidth() - volbtn->getRect().getWidth())/2,
- volbtn->calcScreenRect().mBottom,
- volume_pulldown_rect.getWidth(),
- volume_pulldown_rect.getHeight());
+ mPanelNearByMedia = new LLPanelNearByMedia();
+ popup_holder->addChild(mPanelNearByMedia);
+ gViewerWindow->getRootView()->addMouseDownCallback(boost::bind(&LLStatusBar::onClickScreen, this, _1, _2));
+ mPanelNearByMedia->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
+ mPanelNearByMedia->setVisible(FALSE);
- mPanelVolumePulldown->setShape(volume_pulldown_rect);
mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
mPanelVolumePulldown->setVisible(FALSE);
-}
-
-LLStatusBar::~LLStatusBar()
-{
- delete mBalanceTimer;
- mBalanceTimer = NULL;
-
- delete mHealthTimer;
- mHealthTimer = NULL;
-
- // LLView destructor cleans up children
-}
-
-//-----------------------------------------------------------------------
-// Overrides
-//-----------------------------------------------------------------------
-
-// virtual
-void LLStatusBar::draw()
-{
- refresh();
- LLPanel::draw();
-}
-
-BOOL LLStatusBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
-{
- show_navbar_context_menu(this,x,y);
- return TRUE;
-}
-
-BOOL LLStatusBar::postBuild()
-{
- gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3));
return TRUE;
}
@@ -356,6 +357,15 @@ void LLStatusBar::refresh()
// update the master volume button state
bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute();
mBtnVolume->setToggleState(mute_audio);
+
+ // Disable media toggle if there's no media, parcel media, and no parcel audio
+ // (or if media is disabled)
+ mMediaToggle->setEnabled(gSavedSettings.getBOOL("AudioStreamingMedia") &&
+ (LLViewerMedia::hasInWorldMedia() || LLViewerMedia::hasParcelMedia() || LLViewerMedia::hasParcelAudio()));
+ // Note the "sense" of the toggle is opposite whether media is playing or not
+ mMediaToggle->setValue(! (LLViewerMedia::isAnyMediaShowing() ||
+ LLViewerMedia::isParcelMediaPlaying() ||
+ LLViewerMedia::isParcelAudioPlaying()));
}
void LLStatusBar::setVisibleForMouselook(bool visible)
@@ -385,8 +395,8 @@ void LLStatusBar::setBalance(S32 balance)
LLButton* btn_buy_currency = getChild<LLButton>("buycurrency");
LLStringUtil::format_map_t string_args;
string_args["[AMT]"] = llformat("%s", money_str.c_str());
- std::string labe_str = getString("buycurrencylabel", string_args);
- btn_buy_currency->setLabel(labe_str);
+ std::string label_str = getString("buycurrencylabel", string_args);
+ btn_buy_currency->setLabel(label_str);
// Resize the balance button so that the label fits it, and the button expands to the left.
// *TODO: LLButton should have an option where to expand.
@@ -513,13 +523,46 @@ static void onClickScriptDebug(void*)
LLFloaterScriptDebug::show(LLUUID::null);
}
-//static
-void LLStatusBar::onMouseEnterVolume(LLUICtrl* ctrl)
+void LLStatusBar::onMouseEnterVolume()
{
+ LLButton* volbtn = getChild<LLButton>( "volume_btn" );
+ LLRect vol_btn_screen_rect = volbtn->calcScreenRect();
+ LLRect volume_pulldown_rect = mPanelVolumePulldown->getRect();
+ volume_pulldown_rect.setLeftTopAndSize(vol_btn_screen_rect.mLeft -
+ (volume_pulldown_rect.getWidth() - vol_btn_screen_rect.getWidth())/2,
+ vol_btn_screen_rect.mBottom,
+ volume_pulldown_rect.getWidth(),
+ volume_pulldown_rect.getHeight());
+
+ mPanelVolumePulldown->setShape(volume_pulldown_rect);
+
+
+ // show the master volume pull-down
+ mPanelVolumePulldown->setVisible(TRUE);
+ mPanelNearByMedia->setVisible(FALSE);
+}
+
+void LLStatusBar::onMouseEnterNearbyMedia()
+{
+ LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder");
+ LLRect nearby_media_rect = mPanelNearByMedia->getRect();
+ LLButton* nearby_media_btn = getChild<LLButton>( "media_toggle_btn" );
+ LLRect nearby_media_btn_rect = nearby_media_btn->calcScreenRect();
+ nearby_media_rect.setLeftTopAndSize(nearby_media_btn_rect.mLeft -
+ (nearby_media_rect.getWidth() - nearby_media_btn_rect.getWidth())/2,
+ nearby_media_btn_rect.mBottom,
+ nearby_media_rect.getWidth(),
+ nearby_media_rect.getHeight());
+ // force onscreen
+ nearby_media_rect.translate(popup_holder->getRect().getWidth() - nearby_media_rect.mRight, 0);
+
// show the master volume pull-down
- gStatusBar->mPanelVolumePulldown->setVisible(TRUE);
+ mPanelNearByMedia->setShape(nearby_media_rect);
+ mPanelNearByMedia->setVisible(TRUE);
+ mPanelVolumePulldown->setVisible(FALSE);
}
+
static void onClickVolume(void* data)
{
// toggle the master mute setting
@@ -527,6 +570,15 @@ static void onClickVolume(void* data)
LLAppViewer::instance()->setMasterSystemAudioMute(!mute_audio);
}
+//static
+void LLStatusBar::onClickMediaToggle(void* data)
+{
+ LLStatusBar *status_bar = (LLStatusBar*)data;
+ // "Selected" means it was showing the "play" icon (so media was playing), and now it shows "pause", so turn off media
+ bool enable = ! status_bar->mMediaToggle->getValue();
+ LLViewerMedia::setAllMediaEnabled(enable);
+}
+
// sets the static variables necessary for the date
void LLStatusBar::setupDate()
{
@@ -596,6 +648,18 @@ void LLStatusBar::onClickStatGraph(void* data)
LLFloaterReg::showInstance("lagmeter");
}
+void LLStatusBar::onClickScreen(S32 x, S32 y)
+{
+ if (mPanelNearByMedia->getVisible())
+ {
+ LLRect screen_rect = mPanelNearByMedia->calcScreenRect();
+ if (!screen_rect.pointInRect(x, y))
+ {
+ mPanelNearByMedia->setVisible(FALSE);
+ }
+ }
+}
+
BOOL can_afford_transaction(S32 cost)
{
return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost)));
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 21a98dd753..e5240fcc3e 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -48,6 +48,7 @@ class LLUUID;
class LLFrameTimer;
class LLStatGraph;
class LLPanelVolumePulldown;
+class LLPanelNearByMedia;
class LLStatusBar
: public LLPanel
@@ -87,6 +88,8 @@ public:
S32 getSquareMetersCommitted() const;
S32 getSquareMetersLeft() const;
+ LLPanelNearByMedia* getNearbyMediaPanel() { return mPanelNearByMedia; }
+
private:
// simple method to setup the part that holds the date
void setupDate();
@@ -94,9 +97,13 @@ private:
void onClickBuyCurrency();
void onVolumeChanged(const LLSD& newvalue);
- static void onMouseEnterVolume(LLUICtrl* ctrl);
+ void onMouseEnterVolume();
+ void onMouseEnterNearbyMedia();
+ void onClickScreen(S32 x, S32 y);
static void onClickStatGraph(void* data);
+ static void onClickMediaToggle(void* data);
+
private:
LLTextBox *mTextHealth;
LLTextBox *mTextTime;
@@ -105,6 +112,7 @@ private:
LLStatGraph *mSGPacketLoss;
LLButton *mBtnVolume;
+ LLButton *mMediaToggle;
S32 mBalance;
S32 mHealth;
@@ -113,6 +121,7 @@ private:
LLFrameTimer* mBalanceTimer;
LLFrameTimer* mHealthTimer;
LLPanelVolumePulldown* mPanelVolumePulldown;
+ LLPanelNearByMedia* mPanelNearByMedia;
static std::vector<std::string> sDays;
static std::vector<std::string> sMonths;
static const U32 MAX_DATE_STRING_LENGTH;
diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp
index 2485563cbc..61705c4eb3 100644
--- a/indra/newview/llstylemap.cpp
+++ b/indra/newview/llstylemap.cpp
@@ -49,6 +49,7 @@ const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source)
if (source != LLUUID::null && source != gAgent.getID() )
{
style_params.color.control = "HTMLLinkColor";
+ style_params.readonly_color.control = "HTMLLinkColor";
style_params.link_href =
LLSLURL::buildCommand("agent", source, "inspect");
}
@@ -56,6 +57,7 @@ const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source)
{
// Make the resident's own name white and don't make the name clickable.
style_params.color = LLColor4::white;
+ style_params.readonly_color = LLColor4::white;
}
mMap[source] = style_params;
@@ -75,11 +77,13 @@ const LLStyle::Params &LLStyleMap::lookup(const LLUUID& id, const std::string& l
if (id != LLUUID::null && !link.empty())
{
style_params.color.control = "HTMLLinkColor";
+ style_params.readonly_color.control = "HTMLLinkColor";
style_params.link_href = link;
}
else
{
style_params.color = LLColor4::white;
+ style_params.readonly_color = LLColor4::white;
}
mMap[id] = style_params;
}
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index ba15053381..127b4265ca 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -404,7 +404,10 @@ BOOL LLIMWellWindow::RowPanel::handleMouseDown(S32 x, S32 y, MASK mask)
{
// Pass the mouse down event to the chiclet (EXT-596).
if (!mChiclet->pointInView(x, y) && !mCloseBtn->getRect().pointInRect(x, y)) // prevent double call of LLIMChiclet::onMouseDown()
+ {
mChiclet->onMouseDown();
+ return TRUE;
+ }
return LLPanel::handleMouseDown(x, y, mask);
}
@@ -418,16 +421,16 @@ BOOL LLIMWellWindow::RowPanel::handleRightMouseDown(S32 x, S32 y, MASK mask)
/* ObjectRowPanel implementation */
/************************************************************************/
-LLIMWellWindow::ObjectRowPanel::ObjectRowPanel(const LLUUID& object_id, bool new_message/* = false*/)
+LLIMWellWindow::ObjectRowPanel::ObjectRowPanel(const LLUUID& notification_id, bool new_message/* = false*/)
: LLPanel()
, mChiclet(NULL)
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_active_object_row.xml", NULL);
- initChiclet(object_id);
+ initChiclet(notification_id);
LLTextBox* obj_name = getChild<LLTextBox>("object_name");
- obj_name->setValue(getObjectName(object_id));
+ obj_name->setValue(LLScriptFloaterManager::getObjectName(notification_id));
mCloseBtn = getChild<LLButton>("hide_btn");
mCloseBtn->setCommitCallback(boost::bind(&LLIMWellWindow::ObjectRowPanel::onClosePanel, this));
@@ -438,90 +441,18 @@ LLIMWellWindow::ObjectRowPanel::~ObjectRowPanel()
{
}
-std::string LLIMWellWindow::ObjectRowPanel::getObjectName(const LLUUID& object_id)
-{
- using namespace LLNotificationsUI;
- LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
- LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
- if(!notification)
- {
- llwarns << "Invalid notification" << llendl;
- return LLStringUtil::null;
- }
-
- std::string text;
-
- switch(getObjectType(notification))
- {
- case OBJ_SCRIPT:
- text = notification->getSubstitutions()["TITLE"].asString();
- break;
- case OBJ_LOAD_URL:
- text = notification->getSubstitutions()["OBJECTNAME"].asString();
- break;
- case OBJ_GIVE_INVENTORY:
- text = notification->getSubstitutions()["NAME"].asString();
- break;
- default:
- text = getString("unknown_obj");
- break;
- }
-
- return text;
-}
-
//---------------------------------------------------------------------------------
void LLIMWellWindow::ObjectRowPanel::onClosePanel()
{
- LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(mChiclet->getSessionId());
-}
-
-//static
-LLIMWellWindow::ObjectRowPanel::object_type_map LLIMWellWindow::ObjectRowPanel::initObjectTypeMap()
-{
- object_type_map type_map;
- type_map["ScriptDialog"] = OBJ_SCRIPT;
- type_map["LoadWebPage"] = OBJ_LOAD_URL;
- type_map["ObjectGiveItem"] = OBJ_GIVE_INVENTORY;
- return type_map;
-}
-
-// static
-LLIMWellWindow::ObjectRowPanel::EObjectType LLIMWellWindow::ObjectRowPanel::getObjectType(const LLNotificationPtr& notification)
-{
- if(!notification)
- {
- llwarns << "Invalid notification" << llendl;
- return OBJ_UNKNOWN;
- }
-
- static object_type_map type_map = initObjectTypeMap();
- std::string name = notification->getName();
- object_type_map::const_iterator it = type_map.find(name);
- if(it != type_map.end())
- {
- return it->second;
- }
-
- llwarns << "Unknown object type" << llendl;
- return OBJ_UNKNOWN;
+ LLScriptFloaterManager::getInstance()->onRemoveNotification(mChiclet->getSessionId());
}
-void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& object_id, bool new_message/* = false*/)
+void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& notification_id, bool new_message/* = false*/)
{
- using namespace LLNotificationsUI;
- LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
- LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
- if(!notification)
- {
- llwarns << "Invalid notification" << llendl;
- return;
- }
-
// Choose which of the pre-created chiclets to use.
- switch(getObjectType(notification))
+ switch(LLScriptFloaterManager::getObjectType(notification_id))
{
- case OBJ_GIVE_INVENTORY:
+ case LLScriptFloaterManager::OBJ_GIVE_INVENTORY:
mChiclet = getChild<LLInvOfferChiclet>("inv_offer_chiclet");
break;
default:
@@ -530,8 +461,7 @@ void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& object_id, bool n
}
mChiclet->setVisible(true);
- mChiclet->setSessionId(object_id);
-// mChiclet->setShowNewMessagesIcon(new_message);
+ mChiclet->setSessionId(notification_id);
}
//---------------------------------------------------------------------------------
@@ -552,7 +482,10 @@ BOOL LLIMWellWindow::ObjectRowPanel::handleMouseDown(S32 x, S32 y, MASK mask)
{
// Pass the mouse down event to the chiclet (EXT-596).
if (!mChiclet->pointInView(x, y) && !mCloseBtn->getRect().pointInRect(x, y)) // prevent double call of LLIMChiclet::onMouseDown()
+ {
mChiclet->onMouseDown();
+ return TRUE;
+ }
return LLPanel::handleMouseDown(x, y, mask);
}
@@ -780,10 +713,10 @@ void LLIMWellWindow::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID
}
}
-LLChiclet* LLIMWellWindow::findObjectChiclet(const LLUUID& object_id)
+LLChiclet* LLIMWellWindow::findObjectChiclet(const LLUUID& notification_id)
{
LLChiclet* res = NULL;
- ObjectRowPanel* panel = mMessageList->getTypedItemByValue<ObjectRowPanel>(object_id);
+ ObjectRowPanel* panel = mMessageList->getTypedItemByValue<ObjectRowPanel>(notification_id);
if (panel != NULL)
{
res = panel->mChiclet;
@@ -861,33 +794,33 @@ void LLIMWellWindow::delIMRow(const LLUUID& sessionId)
}
}
-void LLIMWellWindow::addObjectRow(const LLUUID& object_id, bool new_message/* = false*/)
+void LLIMWellWindow::addObjectRow(const LLUUID& notification_id, bool new_message/* = false*/)
{
- if (mMessageList->getItemByValue(object_id) == NULL)
+ if (mMessageList->getItemByValue(notification_id) == NULL)
{
- ObjectRowPanel* item = new ObjectRowPanel(object_id, new_message);
- if (mMessageList->insertItemAfter(mSeparator, item, object_id))
+ ObjectRowPanel* item = new ObjectRowPanel(notification_id, new_message);
+ if (mMessageList->insertItemAfter(mSeparator, item, notification_id))
{
handleItemAdded(IT_INSTANT_MESSAGE);
}
else
{
- llwarns << "Unable to add Object Row into the list, objectID: " << object_id << llendl;
+ llwarns << "Unable to add Object Row into the list, notificationID: " << notification_id << llendl;
item->die();
}
reshapeWindow();
}
}
-void LLIMWellWindow::removeObjectRow(const LLUUID& object_id)
+void LLIMWellWindow::removeObjectRow(const LLUUID& notification_id)
{
- if (mMessageList->removeItemByValue(object_id))
+ if (mMessageList->removeItemByValue(notification_id))
{
handleItemRemoved(IT_INSTANT_MESSAGE);
}
else
{
- llwarns << "Unable to remove Object Row from the list, objectID: " << object_id << llendl;
+ llwarns << "Unable to remove Object Row from the list, notificationID: " << notification_id << llendl;
}
reshapeWindow();
@@ -967,8 +900,7 @@ void LLIMWellWindow::closeAllImpl()
ObjectRowPanel* obj_panel = dynamic_cast <ObjectRowPanel*> (panel);
if (obj_panel)
{
- LLScriptFloaterManager::instance()
- .removeNotificationByObjectId(*iter);
+ LLScriptFloaterManager::instance().onRemoveNotification(*iter);
}
}
}
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 0c81d1f369..3790aa3ea9 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -188,8 +188,8 @@ public:
/*virtual*/ void sessionRemoved(const LLUUID& session_id);
/*virtual*/ void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
- void addObjectRow(const LLUUID& object_id, bool new_message = false);
- void removeObjectRow(const LLUUID& object_id);
+ void addObjectRow(const LLUUID& notification_id, bool new_message = false);
+ void removeObjectRow(const LLUUID& notification_id);
void addIMRow(const LLUUID& session_id);
bool hasIMRow(const LLUUID& session_id);
@@ -201,7 +201,7 @@ protected:
private:
LLChiclet * findIMChiclet(const LLUUID& sessionId);
- LLChiclet* findObjectChiclet(const LLUUID& object_id);
+ LLChiclet* findObjectChiclet(const LLUUID& notification_id);
void addIMRow(const LLUUID& sessionId, S32 chicletCounter, const std::string& name, const LLUUID& otherParticipantId);
void delIMRow(const LLUUID& sessionId);
@@ -235,17 +235,8 @@ private:
class ObjectRowPanel: public LLPanel
{
- typedef enum e_object_type
- {
- OBJ_UNKNOWN,
-
- OBJ_SCRIPT,
- OBJ_GIVE_INVENTORY,
- OBJ_LOAD_URL
- }EObjectType;
-
public:
- ObjectRowPanel(const LLUUID& object_id, bool new_message = false);
+ ObjectRowPanel(const LLUUID& notification_id, bool new_message = false);
virtual ~ObjectRowPanel();
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
@@ -254,12 +245,8 @@ private:
private:
void onClosePanel();
- static EObjectType getObjectType(const LLNotificationPtr& notification);
- void initChiclet(const LLUUID& object_id, bool new_message = false);
- std::string getObjectName(const LLUUID& object_id);
+ void initChiclet(const LLUUID& notification_id, bool new_message = false);
- typedef std::map<std::string, EObjectType> object_type_map;
- static object_type_map initObjectTypeMap();
public:
LLIMChiclet* mChiclet;
private:
diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp
index ce00dec802..dcc85392f7 100644
--- a/indra/newview/llteleporthistory.cpp
+++ b/indra/newview/llteleporthistory.cpp
@@ -173,6 +173,8 @@ void LLTeleportHistory::purgeItems()
// reset the count
mRequestedItem = -1;
mCurrentItem = 0;
+
+ onHistoryChanged();
}
// static
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index ddb6405c41..662e6dcabe 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -167,8 +167,8 @@ void LLTexLayerSetBuffer::popProjection() const
BOOL LLTexLayerSetBuffer::needsRender()
{
const LLVOAvatarSelf* avatar = mTexLayerSet->getAvatar();
- BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal();
- BOOL needs_update = gAgentQueryManager.hasNoPendingQueries() && (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating;
+ BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal() && gAgentQueryManager.hasNoPendingQueries();
+ BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating;
if (needs_update)
{
BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT);
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index a7f26f1df1..91c303c79e 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -51,7 +51,8 @@
// cache/textures/[0-F]/UUID.texture
// Actual texture body files
-const S32 TEXTURE_CACHE_ENTRY_SIZE = 1024;
+//note: there is no good to define 1024 for TEXTURE_CACHE_ENTRY_SIZE while FIRST_PACKET_SIZE is 600 on sim side.
+const S32 TEXTURE_CACHE_ENTRY_SIZE = FIRST_PACKET_SIZE;//1024;
const F32 TEXTURE_CACHE_PURGE_AMOUNT = .20f; // % amount to reduce the cache by when it exceeds its limit
const F32 TEXTURE_CACHE_LRU_SIZE = .10f; // % amount for LRU list (low overhead to regenerate)
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 404b79bfaf..6c35464a51 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -73,13 +73,11 @@ private:
}
virtual void completed(bool success)
{
- mFetcher->lockQueue();
LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
if (worker)
{
worker->callbackCacheRead(success, mFormattedImage, mImageSize, mImageLocal);
}
- mFetcher->unlockQueue();
}
private:
LLTextureFetch* mFetcher;
@@ -95,13 +93,11 @@ private:
}
virtual void completed(bool success)
{
- mFetcher->lockQueue();
LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
if (worker)
{
worker->callbackCacheWrite(success);
}
- mFetcher->unlockQueue();
}
private:
LLTextureFetch* mFetcher;
@@ -117,13 +113,11 @@ private:
}
virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux)
{
- mFetcher->lockQueue();
LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
if (worker)
{
worker->callbackDecoded(success, raw, aux);
}
- mFetcher->unlockQueue();
}
private:
LLTextureFetch* mFetcher;
@@ -166,6 +160,8 @@ public:
void setGetStatus(U32 status, const std::string& reason)
{
+ LLMutexLock lock(&mWorkMutex);
+
mGetStatus = status;
mGetReason = reason;
}
@@ -307,7 +303,6 @@ public:
}
lldebugs << "HTTP COMPLETE: " << mID << llendl;
- mFetcher->lockQueue();
LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
if (worker)
{
@@ -339,7 +334,6 @@ public:
mFetcher->removeFromHTTPQueue(mID);
llwarns << "Worker not found: " << mID << llendl;
}
- mFetcher->unlockQueue();
}
private:
@@ -494,8 +488,9 @@ void LLTextureFetchWorker::setupPacketData()
U32 LLTextureFetchWorker::calcWorkPriority()
{
-// llassert_always(mImagePriority >= 0 && mImagePriority <= LLViewerTexture::maxDecodePriority());
- static F32 PRIORITY_SCALE = (F32)LLWorkerThread::PRIORITY_LOWBITS / LLViewerFetchedTexture::maxDecodePriority();
+ //llassert_always(mImagePriority >= 0 && mImagePriority <= LLViewerFetchedTexture::maxDecodePriority());
+ static const F32 PRIORITY_SCALE = (F32)LLWorkerThread::PRIORITY_LOWBITS / LLViewerFetchedTexture::maxDecodePriority();
+
mWorkPriority = (U32)(mImagePriority * PRIORITY_SCALE);
return mWorkPriority;
}
@@ -987,7 +982,12 @@ bool LLTextureFetchWorker::doWork(S32 param)
}
if (mLoadedDiscard < 0)
{
- llerrs << "Decode entered with invalid mLoadedDiscard. ID = " << mID << llendl;
+ //llerrs << "Decode entered with invalid mLoadedDiscard. ID = " << mID << llendl;
+
+ //abort, don't decode
+ mState = DONE;
+ setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
+ return true;
}
setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it
mRawImage = NULL;
@@ -1440,12 +1440,9 @@ bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, con
return false;
}
- LLTextureFetchWorker* worker = NULL;
- LLMutexLock lock(&mQueueMutex);
- map_t::iterator iter = mRequestMap.find(id);
- if (iter != mRequestMap.end())
+ LLTextureFetchWorker* worker = getWorker(id) ;
+ if (worker)
{
- worker = iter->second;
if (worker->mHost != host)
{
llwarns << "LLTextureFetch::createRequest " << id << " called with multiple hosts: "
@@ -1494,41 +1491,48 @@ bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, con
return false; // need to wait for previous aborted request to complete
}
worker->lockWorkMutex();
+ worker->mActiveCount++;
+ worker->mNeedsAux = needs_aux;
worker->setImagePriority(priority);
worker->setDesiredDiscard(desired_discard, desired_size);
- worker->unlockWorkMutex();
if (!worker->haveWork())
{
worker->mState = LLTextureFetchWorker::INIT;
+ worker->unlockWorkMutex();
+
worker->addWork(0, LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority);
}
+ else
+ {
+ worker->unlockWorkMutex();
+ }
}
else
{
worker = new LLTextureFetchWorker(this, url, id, host, priority, desired_discard, desired_size);
+ lockQueue() ;
mRequestMap[id] = worker;
+ unlockQueue() ;
+
+ worker->lockWorkMutex();
+ worker->mActiveCount++;
+ worker->mNeedsAux = needs_aux;
+ worker->unlockWorkMutex();
}
- worker->mActiveCount++;
- worker->mNeedsAux = needs_aux;
+
// llinfos << "REQUESTED: " << id << " Discard: " << desired_discard << llendl;
return true;
}
-void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel)
-{
- LLMutexLock lock(&mQueueMutex);
- LLTextureFetchWorker* worker = getWorker(id);
- if (worker)
- {
- removeRequest(worker, cancel);
- }
-}
-
// protected
void LLTextureFetch::addToNetworkQueue(LLTextureFetchWorker* worker)
{
+ lockQueue() ;
+ bool in_request_map = (mRequestMap.find(worker->mID) != mRequestMap.end()) ;
+ unlockQueue() ;
+
LLMutexLock lock(&mNetworkQueueMutex);
- if (mRequestMap.find(worker->mID) != mRequestMap.end())
+ if (in_request_map)
{
// only add to the queue if in the request map
// i.e. a delete has not been requested
@@ -1564,10 +1568,34 @@ void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id)
mHTTPTextureQueue.erase(id);
}
-// call lockQueue() first!
+void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel)
+{
+ lockQueue() ;
+ LLTextureFetchWorker* worker = getWorkerAfterLock(id);
+ if (worker)
+ {
+ size_t erased_1 = mRequestMap.erase(worker->mID);
+ unlockQueue() ;
+
+ llassert_always(erased_1 > 0) ;
+
+ removeFromNetworkQueue(worker, cancel);
+ llassert_always(!(worker->getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) ;
+
+ worker->scheduleDelete();
+ }
+ else
+ {
+ unlockQueue() ;
+ }
+}
+
void LLTextureFetch::removeRequest(LLTextureFetchWorker* worker, bool cancel)
{
+ lockQueue() ;
size_t erased_1 = mRequestMap.erase(worker->mID);
+ unlockQueue() ;
+
llassert_always(erased_1 > 0) ;
removeFromNetworkQueue(worker, cancel);
llassert_always(!(worker->getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) ;
@@ -1575,8 +1603,26 @@ void LLTextureFetch::removeRequest(LLTextureFetchWorker* worker, bool cancel)
worker->scheduleDelete();
}
+S32 LLTextureFetch::getNumRequests()
+{
+ lockQueue() ;
+ S32 size = (S32)mRequestMap.size();
+ unlockQueue() ;
+
+ return size ;
+}
+
+S32 LLTextureFetch::getNumHTTPRequests()
+{
+ mNetworkQueueMutex.lock() ;
+ S32 size = (S32)mHTTPTextureQueue.size();
+ mNetworkQueueMutex.unlock() ;
+
+ return size ;
+}
+
// call lockQueue() first!
-LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id)
+LLTextureFetchWorker* LLTextureFetch::getWorkerAfterLock(const LLUUID& id)
{
LLTextureFetchWorker* res = NULL;
map_t::iterator iter = mRequestMap.find(id);
@@ -1587,12 +1633,18 @@ LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id)
return res;
}
+LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id)
+{
+ LLMutexLock lock(&mQueueMutex) ;
+
+ return getWorkerAfterLock(id) ;
+}
+
bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,
LLPointer<LLImageRaw>& raw, LLPointer<LLImageRaw>& aux)
{
bool res = false;
- LLMutexLock lock(&mQueueMutex);
LLTextureFetchWorker* worker = getWorker(id);
if (worker)
{
@@ -1644,7 +1696,6 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,
bool LLTextureFetch::updateRequestPriority(const LLUUID& id, F32 priority)
{
bool res = false;
- LLMutexLock lock(&mQueueMutex);
LLTextureFetchWorker* worker = getWorker(id);
if (worker)
{
@@ -1760,8 +1811,6 @@ void LLTextureFetch::sendRequestListToSimulators()
}
timer.reset();
- LLMutexLock lock(&mQueueMutex);
-
// Send requests
typedef std::set<LLTextureFetchWorker*,LLTextureFetchWorker::Compare> request_list_t;
typedef std::map< LLHost, request_list_t > work_request_map_t;
@@ -1970,7 +2019,6 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size)
bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8 codec, U16 packets, U32 totalbytes,
U16 data_size, U8* data)
{
- LLMutexLock lock(&mQueueMutex);
LLTextureFetchWorker* worker = getWorker(id);
bool res = true;
@@ -2003,7 +2051,9 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8
if (!res)
{
++mBadPacketCount;
+ mNetworkQueueMutex.lock() ;
mCancelQueue[host].insert(id);
+ mNetworkQueueMutex.unlock() ;
return false;
}
@@ -2024,7 +2074,6 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8
bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U16 packet_num, U16 data_size, U8* data)
{
- LLMutexLock lock(&mQueueMutex);
LLTextureFetchWorker* worker = getWorker(id);
bool res = true;
@@ -2048,7 +2097,9 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1
if (!res)
{
++mBadPacketCount;
+ mNetworkQueueMutex.lock() ;
mCancelQueue[host].insert(id);
+ mNetworkQueueMutex.unlock() ;
return false;
}
@@ -2088,7 +2139,6 @@ BOOL LLTextureFetch::isFromLocalCache(const LLUUID& id)
{
BOOL from_cache = FALSE ;
- LLMutexLock lock(&mQueueMutex);
LLTextureFetchWorker* worker = getWorker(id);
if (worker)
{
@@ -2110,7 +2160,6 @@ S32 LLTextureFetch::getFetchState(const LLUUID& id, F32& data_progress_p, F32& r
F32 request_dtime = 999999.f;
U32 fetch_priority = 0;
- LLMutexLock lock(&mQueueMutex);
LLTextureFetchWorker* worker = getWorker(id);
if (worker && worker->haveWork())
{
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index 373e38a83c..5213c4f488 100644
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -77,13 +77,14 @@ public:
S32 getFetchState(const LLUUID& id, F32& decode_progress_p, F32& requested_priority_p,
U32& fetch_priority_p, F32& fetch_dtime_p, F32& request_dtime_p);
void dump();
- S32 getNumRequests() { return mRequestMap.size(); }
- S32 getNumHTTPRequests() { return mHTTPTextureQueue.size(); }
+ S32 getNumRequests() ;
+ S32 getNumHTTPRequests() ;
// Public for access by callbacks
void lockQueue() { mQueueMutex.lock(); }
void unlockQueue() { mQueueMutex.unlock(); }
LLTextureFetchWorker* getWorker(const LLUUID& id);
+ LLTextureFetchWorker* getWorkerAfterLock(const LLUUID& id);
LLTextureInfo* getTextureInfo() { return &mTextureInfo; }
@@ -92,7 +93,7 @@ protected:
void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
void addToHTTPQueue(const LLUUID& id);
void removeFromHTTPQueue(const LLUUID& id);
- S32 getHTTPQueueSize() { return (S32)mHTTPTextureQueue.size(); }
+ S32 getHTTPQueueSize() { return getNumHTTPRequests(); }
void removeRequest(LLTextureFetchWorker* worker, bool cancel);
// Called from worker thread (during doWork)
void processCurlRequests();
@@ -111,8 +112,8 @@ public:
S32 mBadPacketCount;
private:
- LLMutex mQueueMutex;
- LLMutex mNetworkQueueMutex;
+ LLMutex mQueueMutex; //to protect mRequestMap only
+ LLMutex mNetworkQueueMutex; //to protect mNetworkQueue, mHTTPTextureQueue and mCancelQueue.
LLTextureCache* mTextureCache;
LLImageDecodeThread* mImageDecodeThread;
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 110d158e2d..60a89c02e4 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -68,12 +68,17 @@ LLToast::LLToast(const LLToast::Params& p)
mNotification(p.notification),
mIsHidden(false),
mHideBtnPressed(false),
- mIsTip(p.is_tip)
+ mIsTip(p.is_tip),
+ mWrapperPanel(NULL)
{
LLUICtrlFactory::getInstance()->buildFloater(this, "panel_toast.xml", NULL);
setCanDrag(FALSE);
+ mWrapperPanel = getChild<LLPanel>("wrapper_panel");
+ mWrapperPanel->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this));
+ mWrapperPanel->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this));
+
if(mPanel)
{
insertPanel(mPanel);
@@ -83,6 +88,8 @@ LLToast::LLToast(const LLToast::Params& p)
{
mHideBtn = getChild<LLButton>("hide_btn");
mHideBtn->setClickedCallback(boost::bind(&LLToast::hide,this));
+ mHideBtn->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this));
+ mHideBtn->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this));
}
// init callbacks if present
@@ -174,6 +181,42 @@ void LLToast::hide()
mOnFadeSignal(this);
}
+void LLToast::onFocusLost()
+{
+ if(mWrapperPanel && !isBackgroundVisible())
+ {
+ // Lets make wrapper panel behave like a floater
+ setBackgroundOpaque(FALSE);
+ }
+}
+
+void LLToast::onFocusReceived()
+{
+ if(mWrapperPanel && !isBackgroundVisible())
+ {
+ // Lets make wrapper panel behave like a floater
+ setBackgroundOpaque(TRUE);
+ }
+}
+
+S32 LLToast::getTopPad()
+{
+ if(mWrapperPanel)
+ {
+ return getRect().getHeight() - mWrapperPanel->getRect().getHeight();
+ }
+ return 0;
+}
+
+S32 LLToast::getRightPad()
+{
+ if(mWrapperPanel)
+ {
+ return getRect().getWidth() - mWrapperPanel->getRect().getWidth();
+ }
+ return 0;
+}
+
//--------------------------------------------------------------------------
void LLToast::setCanFade(bool can_fade)
{
@@ -199,22 +242,21 @@ void LLToast::reshapeToPanel()
if(!panel)
return;
- LLRect panel_rect;
+ LLRect panel_rect = panel->getRect();
- panel_rect = panel->getRect();
- reshape(panel_rect.getWidth(), panel_rect.getHeight());
panel_rect.setLeftTopAndSize(0, panel_rect.getHeight(), panel_rect.getWidth(), panel_rect.getHeight());
- panel->setRect(panel_rect);
+ panel->setShape(panel_rect);
LLRect toast_rect = getRect();
- toast_rect.setLeftTopAndSize(toast_rect.mLeft,toast_rect.mTop,panel_rect.getWidth(), panel_rect.getHeight());
- setRect(toast_rect);
+ toast_rect.setLeftTopAndSize(toast_rect.mLeft, toast_rect.mTop,
+ panel_rect.getWidth() + getRightPad(), panel_rect.getHeight() + getTopPad());
+ setShape(toast_rect);
}
void LLToast::insertPanel(LLPanel* panel)
{
- addChild(panel);
+ mWrapperPanel->addChild(panel);
reshapeToPanel();
}
@@ -227,6 +269,19 @@ void LLToast::draw()
}
LLFloater::draw();
+
+ if(!isBackgroundVisible())
+ {
+ // Floater background is invisible, lets make wrapper panel look like a
+ // floater - draw shadow.
+ drawShadow(mWrapperPanel);
+
+ // Shadow will probably overlap close button, lets redraw the button
+ if(mHideBtn)
+ {
+ drawChild(mHideBtn);
+ }
+ }
}
//--------------------------------------------------------------------------
@@ -261,43 +316,78 @@ void LLToast::setVisible(BOOL show)
}
}
-//--------------------------------------------------------------------------
-void LLToast::onMouseEnter(S32 x, S32 y, MASK mask)
+void LLToast::onToastMouseEnter()
{
- mOnToastHoverSignal(this, MOUSE_ENTER);
+ LLRect panel_rc = mWrapperPanel->calcScreenRect();
+ LLRect button_rc;
+ if(mHideBtn)
+ {
+ button_rc = mHideBtn->calcScreenRect();
+ }
- setBackgroundOpaque(TRUE);
+ S32 x, y;
+ LLUI::getMousePositionScreen(&x, &y);
- //toasts fading is management by Screen Channel
-
- sendChildToFront(mHideBtn);
- if(mHideBtn && mHideBtn->getEnabled())
- mHideBtn->setVisible(TRUE);
- mOnMouseEnterSignal(this);
+ if(panel_rc.pointInRect(x, y) || button_rc.pointInRect(x, y))
+ {
+ mOnToastHoverSignal(this, MOUSE_ENTER);
+
+ setBackgroundOpaque(TRUE);
+
+ //toasts fading is management by Screen Channel
- LLModalDialog::onMouseEnter(x, y, mask);
+ sendChildToFront(mHideBtn);
+ if(mHideBtn && mHideBtn->getEnabled())
+ {
+ mHideBtn->setVisible(TRUE);
+ }
+ mOnMouseEnterSignal(this);
+ mToastMouseEnterSignal(this, getValue());
+ }
}
-//--------------------------------------------------------------------------
-void LLToast::onMouseLeave(S32 x, S32 y, MASK mask)
-{
- mOnToastHoverSignal(this, MOUSE_LEAVE);
+void LLToast::onToastMouseLeave()
+{
+ LLRect panel_rc = mWrapperPanel->calcScreenRect();
+ LLRect button_rc;
+ if(mHideBtn)
+ {
+ button_rc = mHideBtn->calcScreenRect();
+ }
- //toasts fading is management by Screen Channel
+ S32 x, y;
+ LLUI::getMousePositionScreen(&x, &y);
- if(mHideBtn && mHideBtn->getEnabled())
+ if( !panel_rc.pointInRect(x, y) && !button_rc.pointInRect(x, y))
{
- if( mHideBtnPressed )
+ mOnToastHoverSignal(this, MOUSE_LEAVE);
+
+ //toasts fading is management by Screen Channel
+
+ if(mHideBtn && mHideBtn->getEnabled())
{
- mHideBtnPressed = false;
- return;
+ if( mHideBtnPressed )
+ {
+ mHideBtnPressed = false;
+ return;
+ }
+ mHideBtn->setVisible(FALSE);
}
- mHideBtn->setVisible(FALSE);
+ mToastMouseLeaveSignal(this, getValue());
}
-
- LLModalDialog::onMouseLeave(x, y, mask);
}
+void LLToast::setBackgroundOpaque(BOOL b)
+{
+ if(mWrapperPanel && !isBackgroundVisible())
+ {
+ mWrapperPanel->setBackgroundOpaque(b);
+ }
+ else
+ {
+ LLModalDialog::setBackgroundOpaque(b);
+ }
+}
void LLNotificationsUI::LLToast::stopFading()
{
@@ -315,6 +405,13 @@ void LLNotificationsUI::LLToast::startFading()
}
}
+bool LLToast::isHovered()
+{
+ S32 x, y;
+ LLUI::getMousePositionScreen(&x, &y);
+ return mWrapperPanel->calcScreenRect().pointInRect(x, y);
+}
+
//--------------------------------------------------------------------------
BOOL LLToast::handleMouseDown(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index 3d25fd4f02..64855020a9 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -86,8 +86,6 @@ public:
// Toast handlers
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual void onMouseEnter(S32 x, S32 y, MASK mask);
- virtual void onMouseLeave(S32 x, S32 y, MASK mask);
//Fading
@@ -97,6 +95,7 @@ public:
/** Start fading timer */
virtual void startFading();
+ bool isHovered();
// Operating with toasts
// insert a panel to a toast
@@ -118,10 +117,22 @@ public:
virtual void draw();
//
virtual void setVisible(BOOL show);
+
+ /*virtual*/ void setBackgroundOpaque(BOOL b);
//
virtual void hide();
+ /*virtual*/ void onFocusLost();
+
+ /*virtual*/ void onFocusReceived();
+ /**
+ * Returns padding between floater top and wrapper_panel top.
+ * This padding should be taken into account when positioning or reshaping toasts
+ */
+ S32 getTopPad();
+
+ S32 getRightPad();
// get/set Toast's flags or states
// get information whether the notification corresponding to the toast is valid or not
@@ -154,9 +165,15 @@ public:
toast_hover_check_signal_t mOnToastHoverSignal;
boost::signals2::connection setOnToastHoverCallback(toast_hover_check_callback_t cb) { return mOnToastHoverSignal.connect(cb); }
+ boost::signals2::connection setMouseEnterCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseEnterSignal.connect(cb); };
+ boost::signals2::connection setMouseLeaveCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseLeaveSignal.connect(cb); };
private:
+ void onToastMouseEnter();
+
+ void onToastMouseLeave();
+
void handleTipToastClick(S32 x, S32 y, MASK mask);
// check timer
@@ -168,6 +185,8 @@ private:
LLUUID mSessionID;
LLNotificationPtr mNotification;
+ LLPanel* mWrapperPanel;
+
// timer counts a lifetime of a toast
LLTimer mTimer;
F32 mToastLifetime; // in seconds
@@ -184,6 +203,9 @@ private:
bool mHideBtnPressed;
bool mIsHidden; // this flag is TRUE when a toast has faded or was hidden with (x) button (EXT-1849)
bool mIsTip;
+
+ commit_signal_t mToastMouseEnterSignal;
+ commit_signal_t mToastMouseLeaveSignal;
};
}
diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
index a436dc0546..26d3bd5192 100644
--- a/indra/newview/lltoastimpanel.cpp
+++ b/indra/newview/lltoastimpanel.cpp
@@ -37,6 +37,7 @@
#include "llfloaterreg.h"
#include "llgroupactions.h"
#include "llgroupiconctrl.h"
+#include "llimview.h"
#include "llnotifications.h"
#include "llinstantmessage.h"
#include "lltooltip.h"
@@ -52,9 +53,9 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml");
- LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon");
mGroupIcon = getChild<LLGroupIconCtrl>("group_icon");
mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon");
+ mAdhocIcon = getChild<LLAvatarIconCtrl>("adhoc_icon");
mAvatarName = getChild<LLTextBox>("user_name");
mTime = getChild<LLTextBox>("time_box");
mMessage = getChild<LLTextBox>("message");
@@ -65,12 +66,13 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif
std::string font_size = LLFontGL::sizeFromFont(fontp);
style_params.font.name(font_name);
style_params.font.size(font_size);
- style_params.font.style = "UNDERLINE";
+
//Handle IRC styled /me messages.
std::string prefix = p.message.substr(0, 4);
if (prefix == "/me " || prefix == "/me'")
{
+ //style_params.font.style = "UNDERLINE";
mMessage->clear();
style_params.font.style ="ITALIC";
@@ -81,7 +83,8 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif
}
else
{
- mMessage->setValue(p.message);
+ style_params.font.style = "NORMAL";
+ mMessage->setText(p.message, style_params);
}
mAvatarName->setValue(p.from);
@@ -90,27 +93,7 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif
mAvatarID = p.avatar_id;
mNotification = p.notification;
- mAvatarIcon->setVisible(FALSE);
- mGroupIcon->setVisible(FALSE);
- sys_msg_icon->setVisible(FALSE);
-
- if(p.from == SYSTEM_FROM)
- {
- sys_msg_icon->setVisible(TRUE);
- }
- else
- {
- if(LLGroupActions::isInGroup(mSessionID))
- {
- mGroupIcon->setVisible(TRUE);
- mGroupIcon->setValue(p.session_id);
- }
- else
- {
- mAvatarIcon->setVisible(TRUE);
- mAvatarIcon->setValue(p.avatar_id);
- }
- }
+ initIcon();
S32 maxLinesCount;
std::istringstream ss( getString("message_max_lines_count") );
@@ -160,18 +143,6 @@ BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)
return LLToastPanel::handleToolTip(x, y, mask);
}
-void LLToastIMPanel::showInspector()
-{
- if(LLGroupActions::isInGroup(mSessionID))
- {
- LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID));
- }
- else
- {
- LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID));
- }
-}
-
void LLToastIMPanel::spawnNameToolTip()
{
// Spawn at right side of the name textbox.
@@ -181,7 +152,7 @@ void LLToastIMPanel::spawnNameToolTip()
LLToolTip::Params params;
params.background_visible(false);
- params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this));
+ params.click_callback(boost::bind(&LLFloaterReg::showInstance, "inspect_avatar", LLSD().with("avatar_id", mAvatarID), FALSE));
params.delay_time(0.0f); // spawn instantly on hover
params.image(LLUI::getUIImage("Info_Small"));
params.message("");
@@ -206,7 +177,7 @@ void LLToastIMPanel::spawnGroupIconToolTip()
LLInspector::Params params;
params.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
- params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this));
+ params.click_callback(boost::bind(&LLFloaterReg::showInstance, "inspect_group", LLSD().with("group_id", mSessionID), FALSE));
params.delay_time(0.100f);
params.image(LLUI::getUIImage("Info_Small"));
params.message(g_data.mName);
@@ -217,4 +188,47 @@ void LLToastIMPanel::spawnGroupIconToolTip()
LLToolTipMgr::getInstance()->show(params);
}
+void LLToastIMPanel::initIcon()
+{
+ mAvatarIcon->setVisible(FALSE);
+ mGroupIcon->setVisible(FALSE);
+ mAdhocIcon->setVisible(FALSE);
+
+ if(mAvatarName->getValue().asString() == SYSTEM_FROM)
+ {
+ // "sys_msg_icon" was disabled by Erica in the changeset: 5109 (85181bc92cbe)
+ // and "dummy widget" warnings appeared in log.
+ // It does not make sense to have such image with empty name. Removed for EXT-5057.
+ }
+ else
+ {
+ LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID);
+ if(!im_session)
+ {
+ llwarns << "Invalid IM session" << llendl;
+ return;
+ }
+
+ switch(im_session->mSessionType)
+ {
+ case LLIMModel::LLIMSession::P2P_SESSION:
+ mAvatarIcon->setVisible(TRUE);
+ mAvatarIcon->setValue(mAvatarID);
+ break;
+ case LLIMModel::LLIMSession::GROUP_SESSION:
+ mGroupIcon->setVisible(TRUE);
+ mGroupIcon->setValue(mSessionID);
+ break;
+ case LLIMModel::LLIMSession::ADHOC_SESSION:
+ mAdhocIcon->setVisible(TRUE);
+ mAdhocIcon->setValue(im_session->mOtherParticipantID);
+ mAdhocIcon->setToolTip(im_session->mName);
+ break;
+ default:
+ llwarns << "Unknown IM session type" << llendl;
+ break;
+ }
+ }
+}
+
// EOF
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
index 444c0af144..cf4ad80637 100644
--- a/indra/newview/lltoastimpanel.h
+++ b/indra/newview/lltoastimpanel.h
@@ -66,6 +66,8 @@ private:
void spawnNameToolTip();
void spawnGroupIconToolTip();
+ void initIcon();
+
static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT;
LLNotificationPtr mNotification;
@@ -73,6 +75,7 @@ private:
LLUUID mAvatarID;
LLAvatarIconCtrl* mAvatarIcon;
LLGroupIconCtrl* mGroupIcon;
+ LLAvatarIconCtrl* mAdhocIcon;
LLTextBox* mAvatarName;
LLTextBox* mTime;
LLTextBox* mMessage;
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 4d741456c4..c47c017143 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -46,6 +46,7 @@
#include "llnotificationsutil.h"
const S32 BOTTOM_PAD = VPAD * 3;
+const S32 IGNORE_BTN_TOP_DELTA = 3*VPAD;//additional ignore_btn padding
S32 BUTTON_WIDTH = 90;
//static
@@ -127,14 +128,6 @@ mAddedDefaultBtn(false)
{
std::vector<index_button_pair_t> buttons;
buttons.reserve(mNumOptions);
- for (S32 i = 0; i < mNumOptions; i++)
- {
- LLSD form_element = form->getElement(i);
- if (form_element["type"].asString() != "button")
- {
- continue;
- }
- }
S32 buttons_width = 0;
// create all buttons and accumulate they total width to reshape mControlPanel
for (S32 i = 0; i < mNumOptions; i++)
@@ -155,22 +148,42 @@ mAddedDefaultBtn(false)
}
else
{
- //try get an average left_pad to spread out buttons
- S32 left_pad = (getRect().getWidth() - buttons_width) / (S32(buttons.size() + 1));
- // left_pad can be < 2*HPAD if we have a lot of buttons.
- if(left_pad < 2*HPAD)
+ const S32 button_panel_width = mControlPanel->getRect().getWidth();// do not change width of the panel
+ S32 button_panel_height = mControlPanel->getRect().getHeight();
+ //try get an average h_pad to spread out buttons
+ S32 h_pad = (button_panel_width - buttons_width) / (S32(buttons.size()));
+ if(h_pad < 2*HPAD)
{
- //Probably it is a scriptdialog toast, set default left_pad
- left_pad = 2*HPAD;
+ /*
+ * Probably it is a scriptdialog toast
+ * for a scriptdialog toast h_pad can be < 2*HPAD if we have a lot of buttons.
+ * In last case set default h_pad to avoid heaping of buttons
+ */
+ h_pad = 2*HPAD;
}
- //how many rows we need to fit all buttons with current width of the panel
- S32 button_rows = (buttons_width + left_pad * S32(buttons.size() + 1)) / getRect().getWidth() + 1;
- //calculate required panel height
- S32 button_panel_height = button_rows *( BTN_HEIGHT + VPAD) + BOTTOM_PAD;
-
- adjustPanelForScriptNotice(getRect().getWidth(), button_panel_height);
- //we begin from lefttop angle and go to rightbottom.
- updateButtonsLayout(buttons, left_pad, button_panel_height);
+ if (mIsScriptDialog)
+ {
+ // we are using default width for script buttons so we can determinate button_rows
+ //to get a number of rows we divide the required width of the buttons to button_panel_width
+ S32 button_rows = llceil(F32(buttons.size() - 1) * (BUTTON_WIDTH + h_pad) / button_panel_width);
+ //S32 button_rows = (buttons.size() - 1) * (BUTTON_WIDTH + h_pad) / button_panel_width;
+ //reserve one row for the ignore_btn
+ button_rows++;
+ //calculate required panel height for scripdialog notification.
+ button_panel_height = button_rows * (BTN_HEIGHT + VPAD) + IGNORE_BTN_TOP_DELTA + BOTTOM_PAD;
+ }
+ else
+ {
+ // in common case buttons can have different widths so we need to calculate button_rows according to buttons_width
+ //S32 button_rows = llceil(F32(buttons.size()) * (buttons_width + h_pad) / button_panel_width);
+ S32 button_rows = llceil(F32((buttons.size() - 1) * h_pad + buttons_width) / button_panel_width);
+ //calculate required panel height
+ button_panel_height = button_rows * (BTN_HEIGHT + VPAD) + BOTTOM_PAD;
+ }
+
+ // we need to keep min width and max height to make visible all buttons, because width of the toast can not be changed
+ adjustPanelForScriptNotice(button_panel_width, button_panel_height);
+ updateButtonsLayout(buttons, h_pad);
}
}
// adjust panel's height to the text size
@@ -202,7 +215,8 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, BOOL is_opt
mBtnCallbackData.push_back(userdata);
LLButton::Params p;
- const LLFontGL* font = form_element["index"].asInteger() == -1 ? sFontSmall: sFont; // for ignore button in script dialog
+ bool is_ignore_btn = form_element["index"].asInteger() == -1;
+ const LLFontGL* font = is_ignore_btn ? sFontSmall: sFont; // for ignore button in script dialog
p.name(form_element["name"].asString());
p.label(form_element["text"].asString());
p.font(font);
@@ -216,12 +230,19 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, BOOL is_opt
p.image_color(LLUIColorTable::instance().getColor("ButtonCautionImageColor"));
p.image_color_disabled(LLUIColorTable::instance().getColor("ButtonCautionImageColor"));
}
+ // for the scriptdialog buttons we use fixed button size. This is a limit!
if (!mIsScriptDialog && font->getWidth(form_element["text"].asString()) > BUTTON_WIDTH)
{
p.rect.width = 1;
p.auto_resize = true;
}
-
+ else if (mIsScriptDialog && is_ignore_btn)
+ {
+ // this is ignore button,make it smaller
+ p.rect.height = BTN_HEIGHT_SMALL;
+ p.rect.width = 1;
+ p.auto_resize = true;
+ }
LLButton* btn = LLUICtrlFactory::create<LLButton>(p);
mNumButtons++;
btn->autoResize();
@@ -241,38 +262,48 @@ LLToastNotifyPanel::~LLToastNotifyPanel()
LLNotifications::getInstance()->cancel(mNotification);
}
}
-void LLToastNotifyPanel::updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 left_pad, S32 top)
+
+void LLToastNotifyPanel::updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 h_pad)
{
- S32 left = left_pad;
+ S32 left = 0;
+ //reserve place for ignore button
+ S32 bottom_offset = mIsScriptDialog ? (BTN_HEIGHT + IGNORE_BTN_TOP_DELTA + BOTTOM_PAD) : BOTTOM_PAD;
+ S32 max_width = mControlPanel->getRect().getWidth();
LLButton* ignore_btn = NULL;
for (std::vector<index_button_pair_t>::const_iterator it = buttons.begin(); it != buttons.end(); it++)
{
- if(left + it->second->getRect().getWidth() + 2*HPAD > getRect().getWidth())
- {
- // looks like we need to add button to the next row
- left = left_pad;
- top-= (BTN_HEIGHT + VPAD);
- }
- LLRect btn_rect(it->second->getRect());
- if(mIsScriptDialog && it->first == -1)
+ if (it->first == -1)
{
- //this is ignore button ( index == -1) we need to add it into new extra row at the end
ignore_btn = it->second;
continue;
}
- btn_rect.setLeftTopAndSize(left, top, btn_rect.getWidth(), btn_rect.getHeight());
- it->second->setRect(btn_rect);
- left = btn_rect.mLeft + btn_rect.getWidth() + left_pad;
- addChild(it->second, -1);
+ LLButton* btn = it->second;
+ LLRect btn_rect(btn->getRect());
+ if (left + btn_rect.getWidth() > max_width)// whether there is still some place for button+h_pad in the mControlPanel
+ {
+ // looks like we need to add button to the next row
+ left = 0;
+ bottom_offset += (BTN_HEIGHT + VPAD);
+ }
+ //we arrange buttons from bottom to top for backward support of old script
+ btn_rect.setOriginAndSize(left, bottom_offset, btn_rect.getWidth(), btn_rect.getHeight());
+ btn->setRect(btn_rect);
+ left = btn_rect.mLeft + btn_rect.getWidth() + h_pad;
+ mControlPanel->addChild(btn, -1);
}
- if(ignore_btn)
+ if (mIsScriptDialog && ignore_btn != NULL)
{
- LLRect btn_rect(ignore_btn->getRect());
- btn_rect.setOriginAndSize(getRect().getWidth() - btn_rect.getWidth() - left_pad,
- BOTTOM_PAD,// move button at the bottom edge
- btn_rect.getWidth(), btn_rect.getHeight());
- ignore_btn->setRect(btn_rect);
- addChild(ignore_btn, -1);
+ LLRect ignore_btn_rect(ignore_btn->getRect());
+ S32 buttons_per_row = max_width / BUTTON_WIDTH; //assume that h_pad far less than BUTTON_WIDTH
+ S32 ignore_btn_left = buttons_per_row * BUTTON_WIDTH + (buttons_per_row - 1) * h_pad - ignore_btn_rect.getWidth();
+ if (ignore_btn_left + ignore_btn_rect.getWidth() > max_width)// make sure that the ignore button is in panel
+ {
+ ignore_btn_left = max_width - ignore_btn_rect.getWidth() - 2 * HPAD;
+ }
+ ignore_btn_rect.setOriginAndSize(ignore_btn_left, BOTTOM_PAD,// always move ignore button at the bottom
+ ignore_btn_rect.getWidth(), ignore_btn_rect.getHeight());
+ ignore_btn->setRect(ignore_btn_rect);
+ mControlPanel->addChild(ignore_btn, -1);
}
}
@@ -280,20 +311,26 @@ void LLToastNotifyPanel::adjustPanelForScriptNotice(S32 button_panel_width, S32
{
//adjust layout
// we need to keep min width and max height to make visible all buttons, because width of the toast can not be changed
- LLRect button_rect = mControlPanel->getRect();
reshape(getRect().getWidth(), mInfoPanel->getRect().getHeight() + button_panel_height + VPAD);
- button_rect.set(0, button_rect.mBottom + button_panel_height, button_rect.getWidth(), button_rect.mBottom);
- mControlPanel->reshape(button_rect.getWidth(), button_panel_height);
- mControlPanel->setRect(button_rect);
+ mControlPanel->reshape( button_panel_width, button_panel_height);
}
void LLToastNotifyPanel::adjustPanelForTipNotice()
{
LLRect info_rect = mInfoPanel->getRect();
LLRect this_rect = getRect();
-
+ //we don't need display ControlPanel for tips because they doesn't contain any buttons.
mControlPanel->setVisible(FALSE);
reshape(getRect().getWidth(), mInfoPanel->getRect().getHeight());
+
+ if (mNotification->getPayload().has("respond_on_mousedown")
+ && mNotification->getPayload()["respond_on_mousedown"] )
+ {
+ mInfoPanel->setMouseDownCallback(
+ boost::bind(&LLNotification::respond,
+ mNotification,
+ mNotification->getResponseTemplate()));
+ }
}
// static
@@ -309,4 +346,7 @@ void LLToastNotifyPanel::onClickButton(void* data)
response[button_name] = true;
}
self->mNotification->respond(response);
+
+ // disable all buttons
+ self->mControlPanel->setEnabled(FALSE);
}
diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h
index 1f50c21f6f..e791eea469 100644
--- a/indra/newview/lltoastnotifypanel.h
+++ b/indra/newview/lltoastnotifypanel.h
@@ -55,6 +55,7 @@ class LLToastNotifyPanel: public LLToastPanel
public:
LLToastNotifyPanel(LLNotificationPtr&);
virtual ~LLToastNotifyPanel();
+ LLPanel * getControlPanel() { return mControlPanel; }
protected:
LLButton* createButton(const LLSD& form_element, BOOL is_option);
@@ -73,7 +74,13 @@ private:
void adjustPanelForScriptNotice(S32 max_width, S32 max_height);
void adjustPanelForTipNotice();
void addDefaultButton();
- void updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 left_pad, S32 top);
+ /*
+ * It lays out buttons of the notification in mControlPanel.
+ * Buttons will be placed from BOTTOM to TOP.
+ * @param h_pad horizontal space between buttons. It is depent on number of buttons.
+ * @param buttons vector of button to be added.
+ */
+ void updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 h_pad);
// panel elements
LLTextBase* mTextBox;
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index bf1e307d71..fb78b6a415 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -1263,11 +1263,10 @@ bool LLToolPie::handleMediaClick(const LLPickInfo& pick)
return false;
LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL;
-
if(!mep)
return false;
- viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL;
+ viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
if (gSavedSettings.getBOOL("MediaOnAPrimUI"))
{
@@ -1485,6 +1484,12 @@ BOOL LLToolPie::pickRightMouseDownCallback()
while( object && object->isAttachment())
{
object = (LLViewerObject*)object->getParent();
+ llassert(object);
+ }
+
+ if (!object)
+ {
+ return TRUE; // unexpected, but escape
}
// Object is an avatar, so check for mute by id.
diff --git a/indra/newview/lltoolplacer.h b/indra/newview/lltoolplacer.h
index b7422380d4..df07f1854c 100644
--- a/indra/newview/lltoolplacer.h
+++ b/indra/newview/lltoolplacer.h
@@ -33,7 +33,6 @@
#ifndef LL_TOOLPLACER_H
#define LL_TOOLPLACER_H
-#include "llprimitive.h"
#include "llpanel.h"
#include "lltool.h"
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
index 38103f9e41..1d935f5ab8 100644
--- a/indra/newview/llvieweraudio.cpp
+++ b/indra/newview/llvieweraudio.cpp
@@ -242,10 +242,29 @@ void audio_update_wind(bool force_update)
// outside the fade-in.
F32 master_volume = gSavedSettings.getBOOL("MuteAudio") ? 0.f : gSavedSettings.getF32("AudioLevelMaster");
F32 ambient_volume = gSavedSettings.getBOOL("MuteAmbient") ? 0.f : gSavedSettings.getF32("AudioLevelAmbient");
+ F32 max_wind_volume = master_volume * ambient_volume;
- F32 wind_volume = master_volume * ambient_volume;
- gAudiop->mMaxWindGain = wind_volume;
-
+ const F32 WIND_SOUND_TRANSITION_TIME = 2.f;
+ // amount to change volume this frame
+ F32 volume_delta = (LLFrameTimer::getFrameDeltaTimeF32() / WIND_SOUND_TRANSITION_TIME) * max_wind_volume;
+ if (force_update)
+ {
+ // initialize wind volume (force_update) by using large volume_delta
+ // which is sufficient to completely turn off or turn on wind noise
+ volume_delta = 1.f;
+ }
+
+ // mute wind when not flying
+ if (gAgent.getFlying())
+ {
+ // volume increases by volume_delta, up to no more than max_wind_volume
+ gAudiop->mMaxWindGain = llmin(gAudiop->mMaxWindGain + volume_delta, max_wind_volume);
+ }
+ else
+ {
+ // volume decreases by volume_delta, down to no less than 0
+ gAudiop->mMaxWindGain = llmax(gAudiop->mMaxWindGain - volume_delta, 0.f);
+ }
last_camera_water_height = camera_water_height;
gAudiop->updateWind(gRelativeWindVec, camera_water_height);
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index ba256d70e8..6c1c1d1096 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -113,7 +113,6 @@ void render_hud_attachments();
void render_ui_3d();
void render_ui_2d();
void render_disconnected_background();
-void render_hud_elements();
void display_startup()
{
@@ -990,6 +989,7 @@ void render_hud_attachments()
LLSpatialGroup::sNoDelete = FALSE;
render_hud_elements();
+
//restore type mask
gPipeline.setRenderTypeMask(mask);
if (has_ui)
@@ -1129,7 +1129,6 @@ void render_ui(F32 zoom_factor, int subfield)
}
{
-
gGL.color4f(1,1,1,1);
if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
{
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 658d1c9ddd..8370c98470 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -55,6 +55,7 @@
#include "llfloaterbump.h"
#include "llfloatercamera.h"
#include "llfloaterdaycycle.h"
+#include "llfloaterevent.h"
#include "llfloatersearch.h"
#include "llfloaterenvsettings.h"
#include "llfloaterfonttest.h"
@@ -77,7 +78,6 @@
#include "llfloatermap.h"
#include "llfloatermemleak.h"
#include "llfloaternamedesc.h"
-#include "llfloaternearbymedia.h"
#include "llfloaternotificationsconsole.h"
#include "llfloateropenobject.h"
#include "llfloaterpay.h"
@@ -160,6 +160,8 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("env_settings", "floater_env_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEnvSettings>);
LLFloaterReg::add("env_water", "floater_water.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWater>);
LLFloaterReg::add("env_windlight", "floater_windlight_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWindLight>);
+
+ LLFloaterReg::add("event", "floater_event.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEvent>);
LLFloaterReg::add("font_test", "floater_font_test.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFontTest>);
@@ -194,13 +196,11 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("mute_object_by_name", "floater_mute_object.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterGetBlockedObjectName>);
LLFloaterReg::add("mini_map", "floater_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMap>);
- LLFloaterReg::add("nearby_media", "floater_nearby_media.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNearbyMedia>);
LLFloaterReg::add("notifications_console", "floater_notifications_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotificationConsole>);
LLFloaterReg::add("notification_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNotificationWellWindow>);
LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>);
LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>);
- LLFloaterReg::add("call_info", "floater_call_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallInfoDialog>);
LLFloaterReg::add("parcel_info", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterParcelInfo>);
LLFloaterPayUtil::registerFloater();
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 3001992630..b69eaa4853 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -649,6 +649,8 @@ bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const
void LLViewerInventoryCategory::determineFolderType()
{
+ /* Do NOT uncomment this code. This is for future 2.1 support of ensembles.
+ llassert(FALSE);
LLFolderType::EType original_type = getPreferredType();
if (LLFolderType::lookupIsProtectedType(original_type))
return;
@@ -692,6 +694,8 @@ void LLViewerInventoryCategory::determineFolderType()
{
changeType(LLFolderType::FT_NONE);
}
+ llassert(FALSE);
+ */
}
void LLViewerInventoryCategory::changeType(LLFolderType::EType new_folder_type)
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 9ced0194a2..86336e353c 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -50,6 +50,9 @@
#include "llcallbacklist.h"
#include "llparcel.h"
#include "llaudioengine.h" // for gAudiop
+#include "llvoavatar.h"
+#include "llvoavatarself.h"
+#include "llviewerregion.h"
#include "llevent.h" // LLSimpleListener
#include "llnotificationsutil.h"
@@ -57,11 +60,16 @@
#include "llkeyboard.h"
#include "llmutelist.h"
//#include "llfirstuse.h"
+#include "llwindow.h"
#include <boost/bind.hpp> // for SkinFolder listener
#include <boost/signals2.hpp>
/*static*/ const char* LLViewerMedia::AUTO_PLAY_MEDIA_SETTING = "ParcelMediaAutoPlayEnable";
+/*static*/ const char* LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING = "MediaShowOnOthers";
+/*static*/ const char* LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING = "MediaShowWithinParcel";
+/*static*/ const char* LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING = "MediaShowOutsideParcel";
+
// Move this to its own file.
@@ -253,6 +261,8 @@ static LLTimer sMediaCreateTimer;
static const F32 LLVIEWERMEDIA_CREATE_DELAY = 1.0f;
static F32 sGlobalVolume = 1.0f;
static F64 sLowestLoadableImplInterest = 0.0f;
+static bool sAnyMediaShowing = false;
+static boost::signals2::connection sTeleportFinishConnection;
//////////////////////////////////////////////////////////////////////////////////////////
static void add_media_impl(LLViewerMediaImpl* media)
@@ -365,8 +375,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s
// The current media URL is not empty.
// If (the media was already loaded OR the media was set to autoplay) AND this update didn't come from this agent,
// do a navigate.
- bool auto_play = (media_impl->mMediaAutoPlay && gSavedSettings.getBOOL(AUTO_PLAY_MEDIA_SETTING));
-
+ bool auto_play = media_impl->isAutoPlayable();
if((was_loaded || auto_play) && !update_from_self)
{
needs_navigate = url_changed;
@@ -390,7 +399,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s
media_impl->mMediaAutoPlay = media_entry->getAutoPlay();
media_impl->mMediaEntryURL = media_entry->getCurrentURL();
- if(media_impl->mMediaAutoPlay && gSavedSettings.getBOOL(AUTO_PLAY_MEDIA_SETTING))
+ if(media_impl->isAutoPlayable())
{
needs_navigate = true;
}
@@ -687,6 +696,7 @@ static bool proximity_comparitor(const LLViewerMediaImpl* i1, const LLViewerMedi
// static
void LLViewerMedia::updateMedia(void *dummy_arg)
{
+ sAnyMediaShowing = false;
impl_list::iterator iter = sViewerMediaImplList.begin();
impl_list::iterator end = sViewerMediaImplList.end();
@@ -712,7 +722,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
std::vector<LLViewerMediaImpl*> proximity_order;
bool inworld_media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia");
- bool needs_first_run = LLViewerMedia::needsMediaFirstRun();
+ bool inworld_audio_enabled = gSavedSettings.getBOOL("AudioStreamingMusic");
U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal");
U32 max_normal = gSavedSettings.getU32("PluginInstancesNormal");
U32 max_low = gSavedSettings.getU32("PluginInstancesLow");
@@ -818,7 +828,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
impl_count_total++;
}
-
+
// Overrides if the window is minimized or we lost focus (taking care
// not to accidentally "raise" the priority either)
if (!gViewerWindow->getActive() /* viewer window minimized? */
@@ -838,15 +848,16 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
if(!pimpl->getUsedInUI())
{
new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
- if(needs_first_run)
- {
- // Don't do this more than once in this loop.
- needs_first_run = false;
- LLViewerMedia::displayMediaFirstRun();
- }
}
}
-
+ // update the audio stream here as well
+ if(!inworld_media_enabled || !inworld_audio_enabled)
+ {
+ if(LLViewerMedia::isParcelAudioPlaying() && gAudiop && LLViewerMedia::hasParcelAudio())
+ {
+ gAudiop->stopInternetStream();
+ }
+ }
pimpl->setPriority(new_priority);
if(pimpl->getUsedInUI())
@@ -860,6 +871,12 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
}
total_cpu += pimpl->getCPUUsage();
+
+ if (!pimpl->getUsedInUI() && pimpl->hasMedia())
+ {
+ sAnyMediaShowing = true;
+ }
+
}
// Re-calculate this every time.
@@ -901,70 +918,132 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
//////////////////////////////////////////////////////////////////////////////////////////
// static
-void LLViewerMedia::initClass()
+bool LLViewerMedia::isAnyMediaShowing()
{
- gIdleCallbacks.addFunction(LLViewerMedia::updateMedia, NULL);
+ return sAnyMediaShowing;
}
//////////////////////////////////////////////////////////////////////////////////////////
// static
-void LLViewerMedia::cleanupClass()
+void LLViewerMedia::setAllMediaEnabled(bool val)
{
- gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL);
+ // Set "tentative" autoplay first. We need to do this here or else
+ // re-enabling won't start up the media below.
+ gSavedSettings.setBOOL("MediaTentativeAutoPlay", val);
+
+ // Then
+ impl_list::iterator iter = sViewerMediaImplList.begin();
+ impl_list::iterator end = sViewerMediaImplList.end();
+
+ for(; iter != end; iter++)
+ {
+ LLViewerMediaImpl* pimpl = *iter;
+ if (!pimpl->getUsedInUI())
+ {
+ pimpl->setDisabled(!val);
+ }
+ }
+
+ // Also do Parcel Media and Parcel Audio
+ if (val)
+ {
+ if (!LLViewerMedia::isParcelMediaPlaying() && LLViewerMedia::hasParcelMedia())
+ {
+ LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel());
+ }
+
+ if (gSavedSettings.getBOOL("AudioStreamingMusic") &&
+ !LLViewerMedia::isParcelAudioPlaying() &&
+ gAudiop &&
+ LLViewerMedia::hasParcelAudio())
+ {
+ gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL());
+ }
+ }
+ else {
+ // This actually unloads the impl, as opposed to "stop"ping the media
+ LLViewerParcelMedia::stop();
+ if (gAudiop) gAudiop->stopInternetStream();
+ }
}
+//////////////////////////////////////////////////////////////////////////////////////////
+// static
+bool LLViewerMedia::isParcelMediaPlaying()
+{
+ return (LLViewerMedia::hasParcelMedia() && LLViewerParcelMedia::getParcelMedia() && LLViewerParcelMedia::getParcelMedia()->hasMedia());
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+bool LLViewerMedia::isParcelAudioPlaying()
+{
+ return (LLViewerMedia::hasParcelAudio() && gAudiop && LLAudioEngine::AUDIO_PLAYING == gAudiop->isInternetStreamPlaying());
+}
+
+bool LLViewerMedia::hasInWorldMedia()
+{
+ if (sInWorldMediaDisabled) return false;
+ impl_list::iterator iter = sViewerMediaImplList.begin();
+ impl_list::iterator end = sViewerMediaImplList.end();
+ // This should be quick, because there should be very few non-in-world-media impls
+ for (; iter != end; iter++)
+ {
+ LLViewerMediaImpl* pimpl = *iter;
+ if (!pimpl->getUsedInUI() && !pimpl->isParcelMedia())
+ {
+ // Found an in-world media impl
+ return true;
+ }
+ }
+ return false;
+}
//////////////////////////////////////////////////////////////////////////////////////////
// static
-bool LLViewerMedia::needsMediaFirstRun()
+bool LLViewerMedia::hasParcelMedia()
{
- return gWarningSettings.getBOOL("FirstStreamingMedia");
+ return !LLViewerParcelMedia::getURL().empty();
}
//////////////////////////////////////////////////////////////////////////////////////////
// static
-void LLViewerMedia::displayMediaFirstRun()
+bool LLViewerMedia::hasParcelAudio()
{
- gWarningSettings.setBOOL("FirstStreamingMedia", FALSE);
+ return !LLViewerMedia::getParcelAudioURL().empty();
+}
- LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(),
- boost::bind(firstRunCallback, _1, _2));
+//////////////////////////////////////////////////////////////////////////////////////////
+// static
+std::string LLViewerMedia::getParcelAudioURL()
+{
+ return LLViewerParcelMgr::getInstance()->getAgentParcel()->getMusicURL();
}
//////////////////////////////////////////////////////////////////////////////////////////
// static
-bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& response)
+void LLViewerMedia::initClass()
{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- if (option == 0)
- {
- // user has elected to automatically play media.
- gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE);
- gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
- gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
+ gIdleCallbacks.addFunction(LLViewerMedia::updateMedia, NULL);
+ sTeleportFinishConnection = LLViewerParcelMgr::getInstance()->
+ setTeleportFinishedCallback(boost::bind(&LLViewerMedia::onTeleportFinished));
+}
- LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-
- if (parcel)
- {
- // play media right now, if available
- LLViewerParcelMedia::play(parcel);
-
- // play music right now, if available
- std::string music_url = parcel->getMusicURL();
- if (gAudiop && !music_url.empty())
- gAudiop->startInternetStream(music_url);
- }
- }
- else
- {
- gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, FALSE);
- gSavedSettings.setBOOL("AudioStreamingMedia", FALSE);
- gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
- }
- return false;
+//////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::cleanupClass()
+{
+ gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL);
+ sTeleportFinishConnection.disconnect();
}
+//////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::onTeleportFinished()
+{
+ // On teleport, clear this setting (i.e. set it to true)
+ gSavedSettings.setBOOL("MediaTentativeAutoPlay", true);
+}
//////////////////////////////////////////////////////////////////////////////////////////
// LLViewerMediaImpl
@@ -1249,6 +1328,9 @@ void LLViewerMediaImpl::loadURI()
{
if(mMediaSource)
{
+ // trim whitespace from front and back of URL - fixes EXT-5363
+ LLStringUtil::trim( mMediaURL );
+
// *HACK: we don't know if the URI coming in is properly escaped
// (the contract doesn't specify whether it is escaped or not.
// but LLQtWebKit expects it to be, so we do our best to encode
@@ -1839,9 +1921,12 @@ bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask)
if(!result)
{
- result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask);
+
+ LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData();
+
+ result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask, native_key_data);
// Since the viewer internal event dispatching doesn't give us key-up events, simulate one here.
- (void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask);
+ (void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask, native_key_data);
}
}
@@ -1859,7 +1944,9 @@ bool LLViewerMediaImpl::handleUnicodeCharHere(llwchar uni_char)
if (uni_char >= 32 // discard 'control' characters
&& uni_char != 127) // SDL thinks this is 'delete' - yuck.
{
- mMediaSource->textInput(wstring_to_utf8str(LLWString(1, uni_char)), gKeyboard->currentMask(FALSE));
+ LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData();
+
+ mMediaSource->textInput(wstring_to_utf8str(LLWString(1, uni_char)), gKeyboard->currentMask(FALSE), native_key_data);
}
}
@@ -2111,6 +2198,21 @@ void LLViewerMediaImpl::scaleMouse(S32 *mouse_x, S32 *mouse_y)
#endif
}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+bool LLViewerMediaImpl::isMediaTimeBased()
+{
+ bool result = false;
+
+ if(mMediaSource)
+ {
+ result = mMediaSource->pluginSupportsMediaTime();
+ }
+
+ return result;
+}
+
//////////////////////////////////////////////////////////////////////////////////////////
bool LLViewerMediaImpl::isMediaPlaying()
{
@@ -2157,7 +2259,7 @@ void LLViewerMediaImpl::resetPreviousMediaState()
//////////////////////////////////////////////////////////////////////////////////////////
//
-void LLViewerMediaImpl::setDisabled(bool disabled)
+void LLViewerMediaImpl::setDisabled(bool disabled, bool forcePlayOnEnable)
{
if(mIsDisabled != disabled)
{
@@ -2172,7 +2274,7 @@ void LLViewerMediaImpl::setDisabled(bool disabled)
else
{
// We just (re)enabled this media. Do a navigate if auto-play is in order.
- if(mMediaAutoPlay && gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING))
+ if(isAutoPlayable() || forcePlayOnEnable)
{
navigateTo(mMediaEntryURL, "", true, true);
}
@@ -2199,6 +2301,12 @@ bool LLViewerMediaImpl::isForcedUnloaded() const
}
}
+ // If this media's class is not supposed to be shown, unload
+ if (!shouldShowBasedOnClass())
+ {
+ return true;
+ }
+
return false;
}
@@ -2453,16 +2561,25 @@ void LLViewerMediaImpl::calculateInterest()
for(; iter != mObjectList.end() ; ++iter)
{
LLVOVolume *obj = *iter;
- if(LLMuteList::getInstance()->isMuted(obj->getID()))
+ llassert(obj);
+ if (!obj) continue;
+ if(LLMuteList::getInstance() &&
+ LLMuteList::getInstance()->isMuted(obj->getID()))
+ {
mIsMuted = true;
+ }
else
{
// We won't have full permissions data for all objects. Attempt to mute objects when we can tell their owners are muted.
- LLPermissions* obj_perm = LLSelectMgr::getInstance()->findObjectPermissions(obj);
- if(obj_perm)
+ if (LLSelectMgr::getInstance())
{
- if(LLMuteList::getInstance()->isMuted(obj_perm->getOwner()))
- mIsMuted = true;
+ LLPermissions* obj_perm = LLSelectMgr::getInstance()->findObjectPermissions(obj);
+ if(obj_perm)
+ {
+ if(LLMuteList::getInstance() &&
+ LLMuteList::getInstance()->isMuted(obj_perm->getOwner()))
+ mIsMuted = true;
+ }
}
}
}
@@ -2684,3 +2801,112 @@ void LLViewerMediaImpl::setTextureID(LLUUID id)
}
}
+//////////////////////////////////////////////////////////////////////////////////////////
+//
+bool LLViewerMediaImpl::isAutoPlayable() const
+{
+ return (mMediaAutoPlay &&
+ gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) &&
+ gSavedSettings.getBOOL("MediaTentativeAutoPlay"));
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//
+bool LLViewerMediaImpl::shouldShowBasedOnClass() const
+{
+ // If this is parcel media or in the UI, return true always
+ if (getUsedInUI() || isParcelMedia()) return true;
+
+ bool attached_to_another_avatar = isAttachedToAnotherAvatar();
+ bool inside_parcel = isInAgentParcel();
+
+ // llinfos << " hasFocus = " << hasFocus() <<
+ // " others = " << (attached_to_another_avatar && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING)) <<
+ // " within = " << (inside_parcel && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING)) <<
+ // " outside = " << (!inside_parcel && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING)) << llendl;
+
+ // If it has focus, we should show it
+ if (hasFocus())
+ return true;
+
+ // If it is attached to an avatar and the pref is off, we shouldn't show it
+ if (attached_to_another_avatar)
+ return gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING);
+
+ if (inside_parcel)
+ return gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING);
+ else
+ return gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//
+bool LLViewerMediaImpl::isAttachedToAnotherAvatar() const
+{
+ bool result = false;
+
+ std::list< LLVOVolume* >::const_iterator iter = mObjectList.begin();
+ std::list< LLVOVolume* >::const_iterator end = mObjectList.end();
+ for ( ; iter != end; iter++)
+ {
+ if (isObjectAttachedToAnotherAvatar(*iter))
+ {
+ result = true;
+ break;
+ }
+ }
+ return result;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//
+//static
+bool LLViewerMediaImpl::isObjectAttachedToAnotherAvatar(LLVOVolume *obj)
+{
+ bool result = false;
+ LLXform *xform = obj;
+ // Walk up parent chain
+ while (NULL != xform)
+ {
+ LLViewerObject *object = dynamic_cast<LLViewerObject*> (xform);
+ if (NULL != object)
+ {
+ LLVOAvatar *avatar = object->asAvatar();
+ if (NULL != avatar && avatar != gAgent.getAvatarObject())
+ {
+ result = true;
+ break;
+ }
+ }
+ xform = xform->getParent();
+ }
+ return result;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//
+bool LLViewerMediaImpl::isInAgentParcel() const
+{
+ bool result = false;
+
+ std::list< LLVOVolume* >::const_iterator iter = mObjectList.begin();
+ std::list< LLVOVolume* >::const_iterator end = mObjectList.end();
+ for ( ; iter != end; iter++)
+ {
+ LLVOVolume *object = *iter;
+ if (LLViewerMediaImpl::isObjectInAgentParcel(object))
+ {
+ result = true;
+ break;
+ }
+ }
+ return result;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//
+// static
+bool LLViewerMediaImpl::isObjectInAgentParcel(LLVOVolume *obj)
+{
+ return (LLViewerParcelMgr::getInstance()->inAgentParcel(obj->getPositionGlobal()));
+}
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index ff18ed605a..9dbffa78b3 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -48,7 +48,7 @@ class LLViewerMediaImpl;
class LLUUID;
class LLViewerMediaTexture;
class LLMediaEntry;
-class LLVOVolume ;
+class LLVOVolume;
class LLMimeDiscoveryResponder;
typedef LLPointer<LLViewerMediaImpl> viewer_media_t;
@@ -73,55 +73,68 @@ class LLViewerMediaImpl;
class LLViewerMedia
{
LOG_CLASS(LLViewerMedia);
- public:
-
- // String to get/set media autoplay in gSavedSettings
- static const char *AUTO_PLAY_MEDIA_SETTING;
+public:
- typedef std::vector<LLViewerMediaImpl*> impl_list;
-
- typedef std::map<LLUUID, LLViewerMediaImpl*> impl_id_map;
-
- // Special case early init for just web browser component
- // so we can show login screen. See .cpp file for details. JC
-
- static viewer_media_t newMediaImpl(const LLUUID& texture_id,
- S32 media_width = 0,
- S32 media_height = 0,
- U8 media_auto_scale = false,
- U8 media_loop = false);
-
- static viewer_media_t updateMediaImpl(LLMediaEntry* media_entry, const std::string& previous_url, bool update_from_self);
- static LLViewerMediaImpl* getMediaImplFromTextureID(const LLUUID& texture_id);
- static std::string getCurrentUserAgent();
- static void updateBrowserUserAgent();
- static bool handleSkinCurrentChanged(const LLSD& /*newvalue*/);
- static bool textureHasMedia(const LLUUID& texture_id);
- static void setVolume(F32 volume);
-
- static void updateMedia(void* dummy_arg = NULL);
-
- static void initClass();
- static void cleanupClass();
-
- static F32 getVolume();
- static void muteListChanged();
- static void setInWorldMediaDisabled(bool disabled);
- static bool getInWorldMediaDisabled();
-
- static bool isInterestingEnough(const LLVOVolume* object, const F64 &object_interest);
+ // String to get/set media autoplay in gSavedSettings
+ static const char* AUTO_PLAY_MEDIA_SETTING;
+ static const char* SHOW_MEDIA_ON_OTHERS_SETTING;
+ static const char* SHOW_MEDIA_WITHIN_PARCEL_SETTING;
+ static const char* SHOW_MEDIA_OUTSIDE_PARCEL_SETTING;
- // Returns the priority-sorted list of all media impls.
- static impl_list &getPriorityList();
-
- // This is the comparitor used to sort the list.
- static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2);
-
- // For displaying the media first-run dialog.
- static bool needsMediaFirstRun();
- static void displayMediaFirstRun();
- static bool firstRunCallback(const LLSD& notification, const LLSD& response);
-
+ typedef std::vector<LLViewerMediaImpl*> impl_list;
+
+ typedef std::map<LLUUID, LLViewerMediaImpl*> impl_id_map;
+
+ // Special case early init for just web browser component
+ // so we can show login screen. See .cpp file for details. JC
+
+ static viewer_media_t newMediaImpl(const LLUUID& texture_id,
+ S32 media_width = 0,
+ S32 media_height = 0,
+ U8 media_auto_scale = false,
+ U8 media_loop = false);
+
+ static viewer_media_t updateMediaImpl(LLMediaEntry* media_entry, const std::string& previous_url, bool update_from_self);
+ static LLViewerMediaImpl* getMediaImplFromTextureID(const LLUUID& texture_id);
+ static std::string getCurrentUserAgent();
+ static void updateBrowserUserAgent();
+ static bool handleSkinCurrentChanged(const LLSD& /*newvalue*/);
+ static bool textureHasMedia(const LLUUID& texture_id);
+ static void setVolume(F32 volume);
+
+ // Is any media currently "showing"? Includes Parcel Media. Does not include media in the UI.
+ static bool isAnyMediaShowing();
+ // Set all media enabled or disabled, depending on val. Does not include media in the UI.
+ static void setAllMediaEnabled(bool val);
+
+ static void updateMedia(void* dummy_arg = NULL);
+
+ static void initClass();
+ static void cleanupClass();
+
+ static F32 getVolume();
+ static void muteListChanged();
+ static void setInWorldMediaDisabled(bool disabled);
+ static bool getInWorldMediaDisabled();
+
+ static bool isInterestingEnough(const LLVOVolume* object, const F64 &object_interest);
+
+ // Returns the priority-sorted list of all media impls.
+ static impl_list &getPriorityList();
+
+ // This is the comparitor used to sort the list.
+ static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2);
+
+ // These are just helper functions for the convenience of others working with media
+ static bool hasInWorldMedia();
+ static std::string getParcelAudioURL();
+ static bool hasParcelMedia();
+ static bool hasParcelAudio();
+ static bool isParcelMediaPlaying();
+ static bool isParcelAudioPlaying();
+
+private:
+ static void onTeleportFinished();
};
// Implementation functions not exported into header file
@@ -204,18 +217,20 @@ public:
void updateImagesMediaStreams();
LLUUID getMediaTextureID() const;
- void suspendUpdates(bool suspend) { mSuspendUpdates = suspend; };
+ void suspendUpdates(bool suspend) { mSuspendUpdates = suspend; }
void setVisible(bool visible);
- bool getVisible() const { return mVisible; };
+ bool getVisible() const { return mVisible; }
+ bool isVisible() const { return mVisible; }
+ bool isMediaTimeBased();
bool isMediaPlaying();
bool isMediaPaused();
bool hasMedia() const;
- bool isMediaFailed() const { return mMediaSourceFailed; };
+ bool isMediaFailed() const { return mMediaSourceFailed; }
void setMediaFailed(bool val) { mMediaSourceFailed = val; }
void resetPreviousMediaState();
- void setDisabled(bool disabled);
+ void setDisabled(bool disabled, bool forcePlayOnEnable = false);
bool isMediaDisabled() const { return mIsDisabled; };
void setInNearbyMediaList(bool in_list) { mInNearbyMediaList = in_list; }
@@ -227,10 +242,10 @@ public:
// returns true if this instance could be playable based on autoplay setting, current load state, etc.
bool isPlayable() const;
- void setIsParcelMedia(bool is_parcel_media) { mIsParcelMedia = is_parcel_media; };
- bool isParcelMedia() const { return mIsParcelMedia; };
+ void setIsParcelMedia(bool is_parcel_media) { mIsParcelMedia = is_parcel_media; }
+ bool isParcelMedia() const { return mIsParcelMedia; }
- ECursorType getLastSetCursor() { return mLastSetCursor; };
+ ECursorType getLastSetCursor() { return mLastSetCursor; }
// utility function to create a ready-to-use media instance from a desired media type.
static LLPluginClassMedia* newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height);
@@ -331,6 +346,18 @@ public:
void cancelMimeTypeProbe();
+ // Is this media attached to an avatar *not* self
+ bool isAttachedToAnotherAvatar() const;
+
+ // Is this media in the agent's parcel?
+ bool isInAgentParcel() const;
+
+private:
+ bool isAutoPlayable() const;
+ bool shouldShowBasedOnClass() const;
+ static bool isObjectAttachedToAnotherAvatar(LLVOVolume *obj);
+ static bool isObjectInAgentParcel(LLVOVolume *obj);
+
private:
// a single media url with some data and an impl.
LLPluginClassMedia* mMediaSource;
@@ -373,7 +400,7 @@ private:
LLMimeDiscoveryResponder *mMimeTypeProbe;
bool mMediaAutoPlay;
std::string mMediaEntryURL;
- bool mInNearbyMediaList; // used by LLFloaterNearbyMedia::refreshList() for performance reasons
+ bool mInNearbyMediaList; // used by LLPanelNearbyMedia::refreshList() for performance reasons
bool mClearCache;
LLColor4 mBackgroundColor;
bool mNavigateSuspended;
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
index a0ac9c2091..88e7cfec86 100644
--- a/indra/newview/llviewermediafocus.cpp
+++ b/indra/newview/llviewermediafocus.cpp
@@ -157,7 +157,6 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac
mFocusedObjectFace = 0;
}
}
-
}
void LLViewerMediaFocus::clearFocus()
@@ -198,7 +197,7 @@ bool LLViewerMediaFocus::getFocus()
}
// This function selects an ideal viewing distance based on the focused object, pick normal, and padding value
-void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor)
+void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor, bool zoom_in_only)
{
if (object)
{
@@ -269,7 +268,16 @@ void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal,
camera_pos += 0.01 * len * delta;
}
+ // If we are not allowing zooming out and the old camera position is closer to
+ // the center then the new intended camera position, don't move camera and return
+ if (zoom_in_only &&
+ (dist_vec_squared(gAgent.getCameraPositionGlobal(), target_pos) < dist_vec_squared(camera_pos, target_pos)))
+ {
+ return;
+ }
+
gAgent.setCameraPosAndFocusGlobal(camera_pos, target_pos, object->getID() );
+
}
else
{
@@ -551,6 +559,19 @@ void LLViewerMediaFocus::focusZoomOnMedia(LLUUID media_id)
}
}
+void LLViewerMediaFocus::unZoom()
+{
+ if(mMediaControls.get())
+ {
+ mMediaControls.get()->resetZoomLevel();
+ }
+}
+
+bool LLViewerMediaFocus::isZoomed() const
+{
+ return (mMediaControls.get() && mMediaControls.get()->getZoomLevel() != LLPanelPrimMediaControls::ZOOM_NONE);
+}
+
LLUUID LLViewerMediaFocus::getControlsMediaID()
{
if(getFocusedMediaImpl())
diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h
index 89ee0ae283..d9ddc7432b 100644
--- a/indra/newview/llviewermediafocus.h
+++ b/indra/newview/llviewermediafocus.h
@@ -66,7 +66,7 @@ public:
void update();
- static void setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor);
+ static void setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor, bool zoom_in_only = false);
static F32 getBBoxAspectRatio(const LLBBox& bbox, const LLVector3& normal, F32* height, F32* width, F32* depth);
bool isFocusedOnFace(LLPointer<LLViewerObject> objectp, S32 face);
@@ -85,6 +85,9 @@ public:
// Try to focus/zoom on the specified media (if it's on an object in world).
void focusZoomOnMedia(LLUUID media_id);
+ // Are we zoomed in?
+ bool isZoomed() const;
+ void unZoom();
// Return the ID of the media instance the controls are currently attached to (either focus or hover).
LLUUID getControlsMediaID();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index f7f30a5136..02bde51fb6 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -44,6 +44,7 @@
#include "llagent.h"
#include "llagentwearables.h"
#include "llagentpilot.h"
+#include "llbottomtray.h"
#include "llcompilequeue.h"
#include "llconsole.h"
#include "lldebugview.h"
@@ -603,6 +604,10 @@ class LLAdvancedToggleHUDInfo : public view_listener_t
{
gDisplayFOV = !(gDisplayFOV);
}
+ else if ("badge" == info_type)
+ {
+ gDisplayBadge = !(gDisplayBadge);
+ }
return true;
}
};
@@ -625,6 +630,10 @@ class LLAdvancedCheckHUDInfo : public view_listener_t
{
new_value = gDisplayFOV;
}
+ else if ("badge" == info_type)
+ {
+ new_value = gDisplayBadge;
+ }
return new_value;
}
};
@@ -2547,7 +2556,7 @@ void handle_object_inspect()
key["task"] = "task";
LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
}
-
+
/*
// Old floater properties
LLFloaterReg::showInstance("inspect", LLSD());
@@ -3546,9 +3555,15 @@ bool LLHaveCallingcard::operator()(LLInventoryCategory* cat,
BOOL is_agent_mappable(const LLUUID& agent_id)
{
- return (LLAvatarActions::isFriend(agent_id) &&
- LLAvatarTracker::instance().getBuddyInfo(agent_id)->isOnline() &&
- LLAvatarTracker::instance().getBuddyInfo(agent_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION)
+ const LLRelationship* buddy_info = NULL;
+ bool is_friend = LLAvatarActions::isFriend(agent_id);
+
+ if (is_friend)
+ buddy_info = LLAvatarTracker::instance().getBuddyInfo(agent_id);
+
+ return (buddy_info &&
+ buddy_info->isOnline() &&
+ buddy_info->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION)
);
}
@@ -4834,9 +4849,10 @@ class LLToolsEnableUnlink : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
+ LLViewerObject* first_editable_object = LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject();
bool new_value = LLSelectMgr::getInstance()->selectGetAllRootsValid() &&
- LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject() &&
- !LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject()->isAttachment();
+ first_editable_object &&
+ !first_editable_object->isAttachment();
return new_value;
}
};
@@ -5324,7 +5340,7 @@ class LLWorldCreateLandmark : public view_listener_t
void handle_look_at_selection(const LLSD& param)
{
- const F32 PADDING_FACTOR = 2.f;
+ const F32 PADDING_FACTOR = 1.75f;
BOOL zoom = (param.asString() == "zoom");
if (!LLSelectMgr::getInstance()->getSelection()->isEmpty())
{
@@ -5344,14 +5360,19 @@ void handle_look_at_selection(const LLSD& param)
}
if (zoom)
{
+ // Make sure we are not increasing the distance between the camera and object
+ LLVector3d orig_distance = gAgent.getCameraPositionGlobal() - LLSelectMgr::getInstance()->getSelectionCenterGlobal();
+ distance = llmin(distance, (F32) orig_distance.length());
+
gAgent.setCameraPosAndFocusGlobal(LLSelectMgr::getInstance()->getSelectionCenterGlobal() + LLVector3d(obj_to_cam * distance),
- LLSelectMgr::getInstance()->getSelectionCenterGlobal(),
- object_id );
+ LLSelectMgr::getInstance()->getSelectionCenterGlobal(),
+ object_id );
+
}
else
{
gAgent.setFocusGlobal( LLSelectMgr::getInstance()->getSelectionCenterGlobal(), object_id );
- }
+ }
}
}
@@ -5586,8 +5607,6 @@ void handle_buy_currency()
LLFloaterBuyCurrency::buyCurrency();
}
-
-
class LLFloaterVisible : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -5617,19 +5636,39 @@ class LLShowSidetrayPanel : public view_listener_t
bool handleEvent(const LLSD& userdata)
{
std::string panel_name = userdata.asString();
- // Open up either the sidepanel or new floater.
- if (LLSideTray::getInstance()->isPanelActive(panel_name))
+ // Toggle the panel
+ if (!LLSideTray::getInstance()->isPanelActive(panel_name))
{
- LLFloaterInventory::showAgentInventory();
+ // LLFloaterInventory::showAgentInventory();
+ LLSideTray::getInstance()->showPanel(panel_name, LLSD());
}
else
{
- LLSideTray::getInstance()->showPanel(panel_name, LLSD());
+ LLSideTray::getInstance()->collapseSideBar();
}
return true;
}
};
+class LLSidetrayPanelVisible : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ std::string panel_name = userdata.asString();
+ // Toggle the panel
+ if (LLSideTray::getInstance()->isPanelActive(panel_name))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+};
+
+
bool callback_show_url(const LLSD& notification, const LLSD& response)
{
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
@@ -6370,7 +6409,6 @@ class LLToolsSelectedScriptAction : public view_listener_t
else
{
llwarns << "Failed to generate LLFloaterScriptQueue with action: " << action << llendl;
- delete queue;
}
return true;
}
@@ -6859,7 +6897,8 @@ class LLToolsEditLinkedParts : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- BOOL select_individuals = gSavedSettings.getBOOL("EditLinkedParts");
+ BOOL select_individuals = !gSavedSettings.getBOOL("EditLinkedParts");
+ gSavedSettings.setBOOL( "EditLinkedParts", select_individuals );
if (select_individuals)
{
LLSelectMgr::getInstance()->demoteSelectionToIndividuals();
@@ -7179,25 +7218,7 @@ void handle_buy_currency_test(void*)
LLStringUtil::format_map_t replace;
replace["[AGENT_ID]"] = gAgent.getID().asString();
replace["[SESSION_ID]"] = gAgent.getSecureSessionID().asString();
-
- // *TODO: Replace with call to LLUI::getLanguage() after windows-setup
- // branch merges in. JC
- std::string language = "en";
- language = gSavedSettings.getString("Language");
- if (language.empty() || language == "default")
- {
- language = gSavedSettings.getString("InstallLanguage");
- }
- if (language.empty() || language == "default")
- {
- language = gSavedSettings.getString("SystemLanguage");
- }
- if (language.empty() || language == "default")
- {
- language = "en";
- }
-
- replace["[LANGUAGE]"] = language;
+ replace["[LANGUAGE]"] = LLUI::getLanguage();
LLStringUtil::format(url, replace);
llinfos << "buy currency url " << url << llendl;
@@ -7612,6 +7633,24 @@ class LLWorldDayCycle : public view_listener_t
}
};
+class LLWorldToggleMovementControls : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLBottomTray::getInstance()->toggleMovementControls();
+ return true;
+ }
+};
+
+class LLWorldToggleCameraControls : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLBottomTray::getInstance()->toggleCameraControls();
+ return true;
+ }
+};
+
void show_navbar_context_menu(LLView* ctrl, S32 x, S32 y)
{
static LLMenuGL* show_navbar_context_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_hide_navbar.xml",
@@ -7731,6 +7770,9 @@ void initialize_menus()
view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess");
view_listener_t::addMenu(new LLWorldDayCycle(), "World.DayCycle");
+ view_listener_t::addMenu(new LLWorldToggleMovementControls(), "World.Toggle.MovementControls");
+ view_listener_t::addMenu(new LLWorldToggleCameraControls(), "World.Toggle.CameraControls");
+
// Tools menu
view_listener_t::addMenu(new LLToolsSelectTool(), "Tools.SelectTool");
view_listener_t::addMenu(new LLToolsSelectOnlyMyObjects(), "Tools.SelectOnlyMyObjects");
@@ -8032,6 +8074,7 @@ void initialize_menus()
view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible");
view_listener_t::addMenu(new LLShowSidetrayPanel(), "ShowSidetrayPanel");
+ view_listener_t::addMenu(new LLSidetrayPanelVisible(), "SidetrayPanelVisible");
view_listener_t::addMenu(new LLSomethingSelected(), "SomethingSelected");
view_listener_t::addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD");
view_listener_t::addMenu(new LLEditableSelected(), "EditableSelected");
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 6bad8843fd..84b270f8cc 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -796,84 +796,88 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
//LLAssetType::EType pref_loc = data->mPreferredLocation;
BOOL is_balance_sufficient = TRUE;
- if(result >= 0)
+ if(data)
{
- LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation;
-
- if (LLAssetType::AT_SOUND == data->mAssetInfo.mType ||
- LLAssetType::AT_TEXTURE == data->mAssetInfo.mType ||
- LLAssetType::AT_ANIMATION == data->mAssetInfo.mType)
+ if (result >= 0)
{
- // Charge the user for the upload.
- LLViewerRegion* region = gAgent.getRegion();
-
- if(!(can_afford_transaction(expected_upload_cost)))
- {
- LLFloaterBuyCurrency::buyCurrency(
- llformat(LLTrans::getString("UploadingCosts").c_str(),
- data->mAssetInfo.getName().c_str()),
- expected_upload_cost);
- is_balance_sufficient = FALSE;
- }
- else if(region)
+ LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation;
+
+ if (LLAssetType::AT_SOUND == data->mAssetInfo.mType ||
+ LLAssetType::AT_TEXTURE == data->mAssetInfo.mType ||
+ LLAssetType::AT_ANIMATION == data->mAssetInfo.mType)
{
- // Charge user for upload
- gStatusBar->debitBalance(expected_upload_cost);
+ // Charge the user for the upload.
+ LLViewerRegion* region = gAgent.getRegion();
- LLMessageSystem* msg = gMessageSystem;
- msg->newMessageFast(_PREHASH_MoneyTransferRequest);
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
- msg->nextBlockFast(_PREHASH_MoneyData);
- msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_DestID, LLUUID::null);
- msg->addU8("Flags", 0);
- // we tell the sim how much we were expecting to pay so it
- // can respond to any discrepancy
- msg->addS32Fast(_PREHASH_Amount, expected_upload_cost);
- msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY);
- msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY);
- msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE);
- msg->addStringFast(_PREHASH_Description, NULL);
- msg->sendReliable(region->getHost());
+ if(!(can_afford_transaction(expected_upload_cost)))
+ {
+ LLFloaterBuyCurrency::buyCurrency(
+ llformat(LLTrans::getString("UploadingCosts").c_str(),
+ data->mAssetInfo.getName().c_str()),
+ expected_upload_cost);
+ is_balance_sufficient = FALSE;
+ }
+ else if(region)
+ {
+ // Charge user for upload
+ gStatusBar->debitBalance(expected_upload_cost);
+
+ LLMessageSystem* msg = gMessageSystem;
+ msg->newMessageFast(_PREHASH_MoneyTransferRequest);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ msg->nextBlockFast(_PREHASH_MoneyData);
+ msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_DestID, LLUUID::null);
+ msg->addU8("Flags", 0);
+ // we tell the sim how much we were expecting to pay so it
+ // can respond to any discrepancy
+ msg->addS32Fast(_PREHASH_Amount, expected_upload_cost);
+ msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY);
+ msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY);
+ msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE);
+ msg->addStringFast(_PREHASH_Description, NULL);
+ msg->sendReliable(region->getHost());
+ }
}
- }
- if(is_balance_sufficient)
- {
- // Actually add the upload to inventory
- llinfos << "Adding " << uuid << " to inventory." << llendl;
- const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc);
- if(folder_id.notNull())
+ if(is_balance_sufficient)
{
- U32 next_owner_perms = data->mNextOwnerPerm;
- if(PERM_NONE == next_owner_perms)
+ // Actually add the upload to inventory
+ llinfos << "Adding " << uuid << " to inventory." << llendl;
+ const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc);
+ if(folder_id.notNull())
{
- next_owner_perms = PERM_MOVE | PERM_TRANSFER;
+ U32 next_owner_perms = data->mNextOwnerPerm;
+ if(PERM_NONE == next_owner_perms)
+ {
+ next_owner_perms = PERM_MOVE | PERM_TRANSFER;
+ }
+ create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
+ folder_id, data->mAssetInfo.mTransactionID, data->mAssetInfo.getName(),
+ data->mAssetInfo.getDescription(), data->mAssetInfo.mType,
+ data->mInventoryType, NOT_WEARABLE, next_owner_perms,
+ LLPointer<LLInventoryCallback>(NULL));
+ }
+ else
+ {
+ llwarns << "Can't find a folder to put it in" << llendl;
}
- create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
- folder_id, data->mAssetInfo.mTransactionID, data->mAssetInfo.getName(),
- data->mAssetInfo.getDescription(), data->mAssetInfo.mType,
- data->mInventoryType, NOT_WEARABLE, next_owner_perms,
- LLPointer<LLInventoryCallback>(NULL));
- }
- else
- {
- llwarns << "Can't find a folder to put it in" << llendl;
}
}
- }
- else // if(result >= 0)
- {
- LLSD args;
- args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType);
- args["REASON"] = std::string(LLAssetStorage::getErrorString(result));
- LLNotificationsUtil::add("CannotUploadReason", args);
+ else // if(result >= 0)
+ {
+ LLSD args;
+ args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType);
+ args["REASON"] = std::string(LLAssetStorage::getErrorString(result));
+ LLNotificationsUtil::add("CannotUploadReason", args);
+ }
}
LLUploadDialog::modalUploadFinished();
delete data;
+ data = NULL;
// *NOTE: This is a pretty big hack. What this does is check the
// file picker if there are any more pending uploads. If so,
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 9240833632..b36f58f8ff 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -38,6 +38,7 @@
#include "llavataractions.h"
#include "lscript_byteformat.h"
#include "lleconomy.h"
+#include "lleventtimer.h"
#include "llfloaterreg.h"
#include "llfollowcamparams.h"
#include "llregionhandle.h"
@@ -192,9 +193,20 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)
msg->nextBlockFast(_PREHASH_FolderData);
msg->addUUIDFast(_PREHASH_FolderID, fid);
msg->sendReliable(LLHost(payload["sender"].asString()));
+
+ LLSD payload = notification["payload"];
+ payload["SUPPRESS_TOAST"] = true;
+ LLNotificationsUtil::add("FriendshipAcceptedByMe",
+ notification["substitutions"], payload);
break;
}
case 1: // Decline
+ {
+ LLSD payload = notification["payload"];
+ payload["SUPPRESS_TOAST"] = true;
+ LLNotificationsUtil::add("FriendshipDeclinedByMe",
+ notification["substitutions"], payload);
+ }
case 2: // Send IM - decline and start IM session
{
// decline
@@ -860,28 +872,15 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
++item_iter)
{
const LLUUID& item_id = (*item_iter);
- LLInventoryItem* item = gInventory.getItem(item_id);
- if(!item)
+ if(!highlight_offered_item(item_id))
{
- LL_WARNS("Messaging") << "Unable to show inventory item: " << item_id << LL_ENDL;
continue;
}
- ////////////////////////////////////////////////////////////////////////////////
- // Don't highlight if it's in certain "quiet" folders which don't need UI
- // notification (e.g. trash, cof, lost-and-found).
- const BOOL user_is_away = gAwayTimer.getStarted();
- if(!user_is_away)
- {
- const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id);
- if (parent)
- {
- const LLFolderType::EType parent_type = parent->getPreferredType();
- if (LLViewerFolderType::lookupIsQuietType(parent_type))
- {
- continue;
- }
- }
+ LLInventoryItem* item = gInventory.getItem(item_id);
+ llassert(item);
+ if (!item) {
+ continue;
}
////////////////////////////////////////////////////////////////////////////////
@@ -929,13 +928,15 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->getPanel("panel_places"));
if (places_panel)
{
- // we are creating a landmark
- if("create_landmark" == places_panel->getPlaceInfoType() && !places_panel->getItem())
- {
- places_panel->setItem(item);
- }
+ // Landmark creation handling is moved to LLPanelPlaces::showAddedLandmarkInfo()
+ // TODO* LLPanelPlaces dependency is going to be removed. See EXT-4347.
+ //if("create_landmark" == places_panel->getPlaceInfoType() && !places_panel->getItem())
+ //{
+ // places_panel->setItem(item);
+ //}
+ //else
// we are opening a group notice attachment
- else
+ if("create_landmark" != places_panel->getPlaceInfoType())
{
LLSD args;
args["type"] = "landmark";
@@ -982,6 +983,34 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
}
}
+bool highlight_offered_item(const LLUUID& item_id)
+{
+ LLInventoryItem* item = gInventory.getItem(item_id);
+ if(!item)
+ {
+ LL_WARNS("Messaging") << "Unable to show inventory item: " << item_id << LL_ENDL;
+ return false;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // Don't highlight if it's in certain "quiet" folders which don't need UI
+ // notification (e.g. trash, cof, lost-and-found).
+ if(!gAgent.getAFK())
+ {
+ const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id);
+ if (parent)
+ {
+ const LLFolderType::EType parent_type = parent->getPreferredType();
+ if (LLViewerFolderType::lookupIsQuietType(parent_type))
+ {
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
void inventory_offer_mute_callback(const LLUUID& blocked_id,
const std::string& first_name,
const std::string& last_name,
@@ -1249,10 +1278,6 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
gInventory.addObserver(opener);
}
- // Remove script dialog because there is no need in it no more.
- LLUUID object_id = notification["payload"]["object_id"].asUUID();
- LLScriptFloaterManager::instance().removeNotificationByObjectId(object_id);
-
delete this;
return false;
}
@@ -1292,13 +1317,6 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
LLInventoryObserver* opener = NULL;
- LLViewerInventoryCategory* catp = NULL;
- catp = (LLViewerInventoryCategory*)gInventory.getCategory(mObjectID);
- LLViewerInventoryItem* itemp = NULL;
- if(!catp)
- {
- itemp = (LLViewerInventoryItem*)gInventory.getItem(mObjectID);
- }
std::string from_string; // Used in the pop-up.
std::string chatHistory_string; // Used in chat history.
@@ -1426,10 +1444,6 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
gInventory.addObserver(opener);
}
- // Remove script dialog because there is no need in it no more.
- LLUUID object_id = notification["payload"]["object_id"].asUUID();
- LLScriptFloaterManager::instance().removeNotificationByObjectId(object_id);
-
delete this;
return false;
}
@@ -1466,6 +1480,11 @@ void inventory_offer_handler(LLOfferInfo* info)
// Strip any SLURL from the message display. (DEV-2754)
std::string msg = info->mDesc;
int indx = msg.find(" ( http://slurl.com/secondlife/");
+ if(indx == std::string::npos)
+ {
+ // try to find new slurl host
+ indx = msg.find(" ( http://maps.secondlife.com/secondlife/");
+ }
if(indx >= 0)
{
LLStringUtil::truncate(msg, indx);
@@ -1575,7 +1594,6 @@ void inventory_offer_handler(LLOfferInfo* info)
{
payload["give_inventory_notification"] = TRUE;
LLNotificationPtr notification = LLNotifications::instance().add(p.payload(payload));
- LLScriptFloaterManager::getInstance()->setNotificationToastId(object_id, notification->getID());
}
}
}
@@ -1832,6 +1850,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
}
else
{
+ /*
+ EXT-5099
+ currently there is no way to store in history only...
+ using LLNotificationsUtil::add will add message to Nearby Chat
+
// muted user, so don't start an IM session, just record line in chat
// history. Pretend the chat is from a local agent,
// so it will go into the history but not be shown on screen.
@@ -1839,6 +1862,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
LLSD args;
args["MESSAGE"] = buffer;
LLNotificationsUtil::add("SystemMessageTip", args);
+ */
}
}
break;
@@ -2169,6 +2193,12 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
chat.mFromID = from_id ^ gAgent.getSessionID();
}
+ if(SYSTEM_FROM == name)
+ {
+ // System's UUID is NULL (fixes EXT-4766)
+ chat.mFromID = from_id = LLUUID::null;
+ }
+
LLSD query_string;
query_string["owner"] = from_id;
query_string["slurl"] = location;
@@ -2190,7 +2220,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
if(nearby_chat)
{
- nearby_chat->addMessage(chat);
+ LLSD args;
+ args["owner_id"] = from_id;
+ args["slurl"] = location;
+ args["type"] = LLNotificationsUI::NT_NEARBYCHAT;
+ LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);
}
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index 1415c16090..7dd629dcfd 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -203,6 +203,11 @@ void process_initiate_download(LLMessageSystem* msg, void**);
void start_new_inventory_observer();
void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name);
+// Returns true if item is not in certain "quiet" folder which don't need UI
+// notification (e.g. trash, cof, lost-and-found) and agent is not AFK, false otherwise.
+// Returns false if item is not found.
+bool highlight_offered_item(const LLUUID& item_id);
+
struct LLOfferInfo
{
LLOfferInfo()
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 4fdfc37d6c..b5642d07a5 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4022,9 +4022,14 @@ LLBBox LLViewerObject::getBoundingBoxAgent() const
{
LLVector3 position_agent;
LLQuaternion rot;
+ LLViewerObject* avatar_parent = NULL;
LLViewerObject* root_edit = (LLViewerObject*)getRootEdit();
- LLViewerObject* avatar_parent = (LLViewerObject*)root_edit->getParent();
- if (avatar_parent && avatar_parent->isAvatar() && root_edit->mDrawable.notNull())
+ if (root_edit)
+ {
+ avatar_parent = (LLViewerObject*)root_edit->getParent();
+ }
+
+ if (avatar_parent && avatar_parent->isAvatar() && root_edit && root_edit->mDrawable.notNull())
{
LLXform* parent_xform = root_edit->mDrawable->getXform()->getParent();
position_agent = (getPositionEdit() * parent_xform->getWorldRotation()) + parent_xform->getWorldPosition();
diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h
index 8d3d2c4b44..706966deae 100644
--- a/indra/newview/llviewerobjectlist.h
+++ b/indra/newview/llviewerobjectlist.h
@@ -232,6 +232,10 @@ public:
extern LLViewerObjectList gObjectList;
// Inlines
+/**
+ * Note:
+ * it will return NULL for offline avatar_id
+ */
inline LLViewerObject *LLViewerObjectList::findObject(const LLUUID &id)
{
std::map<LLUUID, LLPointer<LLViewerObject> >::iterator iter = mUUIDObjectMap.find(id);
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index c4fc2e5cab..2c5c0a37e8 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -105,15 +105,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
std::string mediaUrl = std::string ( parcel->getMediaURL () );
std::string mediaCurrentUrl = std::string( parcel->getMediaCurrentURL());
- // First use warning
- if( (!mediaUrl.empty() ||
- !parcel->getMusicURL().empty())
- && LLViewerMedia::needsMediaFirstRun())
- {
- LLViewerMedia::displayMediaFirstRun();
- return;
- }
-
// if we have a current (link sharing) url, use it instead
if (mediaCurrentUrl != "" && parcel->getMediaType() == "text/html")
{
diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h
index 1d80b4756c..40142c1dd1 100644
--- a/indra/newview/llviewerparcelmediaautoplay.h
+++ b/indra/newview/llviewerparcelmediaautoplay.h
@@ -33,7 +33,7 @@
#ifndef LLVIEWERPARCELMEDIAAUTOPLAY_H
#define LLVIEWERPARCELMEDIAAUTOPLAY_H
-#include "lltimer.h"
+#include "lleventtimer.h"
#include "lluuid.h"
// timer to automatically play media
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index b85b42c710..1f6bbcbae8 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -53,7 +53,7 @@
//#include "llfirstuse.h"
#include "llfloaterbuyland.h"
#include "llfloatergroups.h"
-#include "llfloaternearbymedia.h"
+#include "llpanelnearbymedia.h"
#include "llfloatersellland.h"
#include "llfloatertools.h"
#include "llparcelselection.h"
@@ -666,31 +666,38 @@ bool LLViewerParcelMgr::allowAgentBuild() const
}
}
+// Return whether anyone can build on the given parcel
+bool LLViewerParcelMgr::allowAgentBuild(const LLParcel* parcel) const
+{
+ return parcel->getAllowModify();
+}
+
bool LLViewerParcelMgr::allowAgentVoice() const
{
- LLViewerRegion* region = gAgent.getRegion();
+ return allowAgentVoice(gAgent.getRegion(), mAgentParcel);
+}
+
+bool LLViewerParcelMgr::allowAgentVoice(const LLViewerRegion* region, const LLParcel* parcel) const
+{
return region && region->isVoiceEnabled()
- && mAgentParcel && mAgentParcel->getParcelFlagAllowVoice();
+ && parcel && parcel->getParcelFlagAllowVoice();
}
-bool LLViewerParcelMgr::allowAgentFly() const
+bool LLViewerParcelMgr::allowAgentFly(const LLViewerRegion* region, const LLParcel* parcel) const
{
- LLViewerRegion* region = gAgent.getRegion();
return region && !region->getBlockFly()
- && mAgentParcel && mAgentParcel->getAllowFly();
+ && parcel && parcel->getAllowFly();
}
// Can the agent be pushed around by LLPushObject?
-bool LLViewerParcelMgr::allowAgentPush() const
+bool LLViewerParcelMgr::allowAgentPush(const LLViewerRegion* region, const LLParcel* parcel) const
{
- LLViewerRegion* region = gAgent.getRegion();
return region && !region->getRestrictPushObject()
- && mAgentParcel && !mAgentParcel->getRestrictPushObject();
+ && parcel && !parcel->getRestrictPushObject();
}
-bool LLViewerParcelMgr::allowAgentScripts() const
+bool LLViewerParcelMgr::allowAgentScripts(const LLViewerRegion* region, const LLParcel* parcel) const
{
- LLViewerRegion* region = gAgent.getRegion();
// *NOTE: This code does not take into account group-owned parcels
// and the flag to allow group-owned scripted objects to run.
// This mirrors the traditional menu bar parcel icon code, but is not
@@ -698,15 +705,14 @@ bool LLViewerParcelMgr::allowAgentScripts() const
return region
&& !(region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS)
&& !(region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS)
- && mAgentParcel
- && mAgentParcel->getAllowOtherScripts();
+ && parcel
+ && parcel->getAllowOtherScripts();
}
-bool LLViewerParcelMgr::allowAgentDamage() const
+bool LLViewerParcelMgr::allowAgentDamage(const LLViewerRegion* region, const LLParcel* parcel) const
{
- LLViewerRegion* region = gAgent.getRegion();
return (region && region->getAllowDamage())
- || (mAgentParcel && mAgentParcel->getAllowDamage());
+ || (parcel && parcel->getAllowDamage());
}
BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const
@@ -1591,14 +1597,6 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
instance->mTeleportInProgress = FALSE;
instance->mTeleportFinishedSignal(gAgent.getPositionGlobal());
}
-
- // HACK: This makes agents drop from the sky if they enter a parcel
- // which is set to no fly.
- BOOL was_flying = gAgent.getFlying();
- if (was_flying && !parcel->getAllowFly())
- {
- gAgent.setFlying(gAgent.canFly());
- }
}
}
@@ -1764,6 +1762,12 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
{
optionally_start_music(music_url);
}
+ else
+ {
+ llinfos << "Stopping parcel music (invalid audio stream URL)" << llendl;
+ // clears the URL
+ gAudiop->startInternetStream(LLStringUtil::null);
+ }
}
else if (!gAudiop->getInternetStreamURL().empty())
{
@@ -1791,12 +1795,13 @@ void optionally_start_music(const std::string& music_url)
{
// only play music when you enter a new parcel if the UI control for this
// was not *explicitly* stopped by the user. (part of SL-4878)
- LLFloaterNearbyMedia *nearby_media_floater = LLFloaterReg::findTypedInstance<LLFloaterNearbyMedia>("nearby_media");
- if ((nearby_media_floater &&
- nearby_media_floater->getParcelAudioAutoStart()) ||
+ LLPanelNearByMedia* nearby_media_panel = gStatusBar->getNearbyMediaPanel();;
+ if ((nearby_media_panel &&
+ nearby_media_panel->getParcelAudioAutoStart()) ||
// or they have expressed no opinion in the UI, but have autoplay on...
- (!nearby_media_floater &&
- gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING)))
+ (!nearby_media_panel &&
+ gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) &&
+ gSavedSettings.getBOOL("MediaTentativeAutoPlay")))
{
llinfos << "Starting parcel music " << music_url << llendl;
gAudiop->startInternetStream(music_url);
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
index 379190789b..98be8e2c7b 100644
--- a/indra/newview/llviewerparcelmgr.h
+++ b/indra/newview/llviewerparcelmgr.h
@@ -171,26 +171,28 @@ public:
// Can this agent build on the parcel he is on?
// Used for parcel property icons in nav bar.
bool allowAgentBuild() const;
+ bool allowAgentBuild(const LLParcel* parcel) const;
// Can this agent speak on the parcel he is on?
// Used for parcel property icons in nav bar.
bool allowAgentVoice() const;
-
+ bool allowAgentVoice(const LLViewerRegion* region, const LLParcel* parcel) const;
+
// Can this agent start flying on this parcel?
// Used for parcel property icons in nav bar.
- bool allowAgentFly() const;
+ bool allowAgentFly(const LLViewerRegion* region, const LLParcel* parcel) const;
// Can this agent be pushed by llPushObject() on this parcel?
// Used for parcel property icons in nav bar.
- bool allowAgentPush() const;
+ bool allowAgentPush(const LLViewerRegion* region, const LLParcel* parcel) const;
// Can scripts written by non-parcel-owners run on the agent's current
// parcel? Used for parcel property icons in nav bar.
- bool allowAgentScripts() const;
+ bool allowAgentScripts(const LLViewerRegion* region, const LLParcel* parcel) const;
// Can the agent be damaged here?
// Used for parcel property icons in nav bar.
- bool allowAgentDamage() const;
+ bool allowAgentDamage(const LLViewerRegion* region, const LLParcel* parcel) const;
F32 getHoverParcelWidth() const
{ return F32(mHoverEastNorth.mdV[VX] - mHoverWestSouth.mdV[VX]); }
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 2e92512b31..ea8af223c3 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -246,7 +246,7 @@ public:
return FALSE;
}
- /*virtual*/ const LLStyleSP getStyle() const { return mStyle; }
+ /*virtual*/ LLStyleConstSP getStyle() const { return mStyle; }
private:
LLUIImagePtr mImage;
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 0ad269392d..6add8a7e92 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -293,6 +293,8 @@ void LLViewerTextureManager::init()
}
}
imagep->createGLTexture(0, image_raw);
+ //cache the raw image
+ imagep->setCachedRawImage(0, image_raw) ;
image_raw = NULL;
#else
LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);
@@ -496,7 +498,9 @@ void LLViewerTexture::init(bool firstinit)
mAdditionalDecodePriority = 0.f ;
mParcelMedia = NULL ;
mNumFaces = 0 ;
+ mNumVolumes = 0;
mFaceList.clear() ;
+ mVolumeList.clear();
}
//virtual
@@ -508,7 +512,7 @@ S8 LLViewerTexture::getType() const
void LLViewerTexture::cleanup()
{
mFaceList.clear() ;
-
+ mVolumeList.clear();
if(mGLTexturep)
{
mGLTexturep->cleanup();
@@ -661,6 +665,42 @@ S32 LLViewerTexture::getNumFaces() const
return mNumFaces ;
}
+
+//virtual
+void LLViewerTexture::addVolume(LLVOVolume* volumep)
+{
+ if( mNumVolumes >= mVolumeList.size())
+ {
+ mVolumeList.resize(2 * mNumVolumes + 1) ;
+ }
+ mVolumeList[mNumVolumes] = volumep ;
+ volumep->setIndexInTex(mNumVolumes) ;
+ mNumVolumes++ ;
+ mLastVolumeListUpdateTimer.reset() ;
+}
+
+//virtual
+void LLViewerTexture::removeVolume(LLVOVolume* volumep)
+{
+ if(mNumVolumes > 1)
+ {
+ S32 index = volumep->getIndexInTex() ;
+ mVolumeList[index] = mVolumeList[--mNumVolumes] ;
+ mVolumeList[index]->setIndexInTex(index) ;
+ }
+ else
+ {
+ mVolumeList.clear() ;
+ mNumVolumes = 0 ;
+ }
+ mLastVolumeListUpdateTimer.reset() ;
+}
+
+S32 LLViewerTexture::getNumVolumes() const
+{
+ return mNumVolumes ;
+}
+
void LLViewerTexture::reorganizeFaceList()
{
static const F32 MAX_WAIT_TIME = 20.f; // seconds
@@ -680,6 +720,27 @@ void LLViewerTexture::reorganizeFaceList()
mFaceList.erase(mFaceList.begin() + mNumFaces, mFaceList.end());
}
+void LLViewerTexture::reorganizeVolumeList()
+{
+ static const F32 MAX_WAIT_TIME = 20.f; // seconds
+ static const U32 MAX_EXTRA_BUFFER_SIZE = 4 ;
+
+ if(mNumVolumes + MAX_EXTRA_BUFFER_SIZE > mVolumeList.size())
+ {
+ return ;
+ }
+
+ if(mLastVolumeListUpdateTimer.getElapsedTimeF32() < MAX_WAIT_TIME)
+ {
+ return ;
+ }
+
+ mLastVolumeListUpdateTimer.reset() ;
+ mVolumeList.erase(mVolumeList.begin() + mNumVolumes, mVolumeList.end());
+}
+
+
+
//virtual
void LLViewerTexture::switchToCachedImage()
{
@@ -715,7 +776,7 @@ void LLViewerTexture::generateGLTexture()
LLImageGL* LLViewerTexture::getGLTexture() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep ;
}
@@ -732,7 +793,7 @@ BOOL LLViewerTexture::createGLTexture()
BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename, BOOL to_create, S32 category)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
BOOL ret = mGLTexturep->createGLTexture(discard_level, imageraw, usename, to_create, category) ;
@@ -740,63 +801,69 @@ BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* image
{
mFullWidth = mGLTexturep->getCurrentWidth() ;
mFullHeight = mGLTexturep->getCurrentHeight() ;
- mComponents = mGLTexturep->getComponents() ;
+ mComponents = mGLTexturep->getComponents() ;
}
return ret ;
}
+//virtual
+void LLViewerTexture::setCachedRawImage(S32 discard_level, LLImageRaw* imageraw)
+{
+ //nothing here.
+}
+
void LLViewerTexture::setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format, BOOL swap_bytes)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
mGLTexturep->setExplicitFormat(internal_format, primary_format, type_format, swap_bytes) ;
}
void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode mode)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
mGLTexturep->setAddressMode(mode) ;
}
void LLViewerTexture::setFilteringOption(LLTexUnit::eTextureFilterOptions option)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
mGLTexturep->setFilteringOption(option) ;
}
//virtual
S32 LLViewerTexture::getWidth(S32 discard_level) const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getWidth(discard_level) ;
}
//virtual
S32 LLViewerTexture::getHeight(S32 discard_level) const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getHeight(discard_level) ;
}
S32 LLViewerTexture::getMaxDiscardLevel() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getMaxDiscardLevel() ;
}
S32 LLViewerTexture::getDiscardLevel() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getDiscardLevel() ;
}
S8 LLViewerTexture::getComponents() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getComponents() ;
}
LLGLuint LLViewerTexture::getTexName() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getTexName() ;
}
@@ -821,124 +888,124 @@ BOOL LLViewerTexture::getBoundRecently() const
LLTexUnit::eTextureType LLViewerTexture::getTarget(void) const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getTarget() ;
}
BOOL LLViewerTexture::setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->setSubImage(imageraw, x_pos, y_pos, width, height) ;
}
BOOL LLViewerTexture::setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->setSubImage(datap, data_width, data_height, x_pos, y_pos, width, height) ;
}
void LLViewerTexture::setGLTextureCreated (bool initialized)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
mGLTexturep->setGLTextureCreated (initialized) ;
}
void LLViewerTexture::setCategory(S32 category)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
mGLTexturep->setCategory(category) ;
}
LLTexUnit::eTextureAddressMode LLViewerTexture::getAddressMode(void) const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getAddressMode() ;
}
S32 LLViewerTexture::getTextureMemory() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->mTextureMemory ;
}
LLGLenum LLViewerTexture::getPrimaryFormat() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getPrimaryFormat() ;
}
BOOL LLViewerTexture::getIsAlphaMask() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getIsAlphaMask() ;
}
BOOL LLViewerTexture::getMask(const LLVector2 &tc)
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getMask(tc) ;
}
F32 LLViewerTexture::getTimePassedSinceLastBound()
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getTimePassedSinceLastBound() ;
}
BOOL LLViewerTexture::getMissed() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getMissed() ;
}
BOOL LLViewerTexture::isJustBound() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->isJustBound() ;
}
void LLViewerTexture::forceUpdateBindStats(void) const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->forceUpdateBindStats() ;
}
U32 LLViewerTexture::getTexelsInAtlas() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getTexelsInAtlas() ;
}
U32 LLViewerTexture::getTexelsInGLTexture() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getTexelsInGLTexture() ;
}
BOOL LLViewerTexture::isGLTextureCreated() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->isGLTextureCreated() ;
}
S32 LLViewerTexture::getDiscardLevelInAtlas() const
{
- llassert_always(mGLTexturep.notNull()) ;
+ llassert(mGLTexturep.notNull()) ;
return mGLTexturep->getDiscardLevelInAtlas() ;
}
@@ -974,12 +1041,6 @@ void LLViewerTexture::updateBindStatsForTester()
//start of LLViewerFetchedTexture
//----------------------------------------------------------------------------------------------
-//static
-F32 LLViewerFetchedTexture::maxDecodePriority()
-{
- return 6000000.f;
-}
-
LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, const LLHost& host, BOOL usemipmaps)
: LLViewerTexture(id, usemipmaps),
mTargetHost(host)
@@ -1426,6 +1487,13 @@ void LLViewerFetchedTexture::processTextureStats()
}
}
+const F32 MAX_PRIORITY_PIXEL = 999.f ; //pixel area
+const F32 PRIORITY_BOOST_LEVEL_FACTOR = 1000.f ; //boost level
+const F32 PRIORITY_DELTA_DISCARD_LEVEL_FACTOR = 100000.f ; //delta discard
+const S32 MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY = 4 ;
+const F32 PRIORITY_ADDITIONAL_FACTOR = 1000000.f ; //additional
+const S32 MAX_ADDITIONAL_LEVEL_FOR_PRIORITY = 8 ;
+const F32 PRIORITY_BOOST_HIGH_FACTOR = 10000000.f ;//boost high
F32 LLViewerFetchedTexture::calcDecodePriority()
{
#ifndef LL_RELEASE_FOR_DOWNLOAD
@@ -1453,7 +1521,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
bool have_all_data = (cur_discard >= 0 && (cur_discard <= mDesiredDiscardLevel));
F32 pixel_priority = fsqrtf(mMaxVirtualSize);
- F32 priority;
+ F32 priority = 0.f;
if (mIsMissingAsset)
{
priority = 0.0f;
@@ -1496,8 +1564,8 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
static const F64 log_2 = log(2.0);
F32 desired = (F32)(log(32.0/pixel_priority) / log_2);
S32 ddiscard = MAX_DISCARD_LEVEL - (S32)desired;
- ddiscard = llclamp(ddiscard, 0, 4);
- priority = (ddiscard+1)*100000.f;
+ ddiscard = llclamp(ddiscard, 0, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY);
+ priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
}
else if ((mMinDiscardLevel > 0) && (cur_discard <= mMinDiscardLevel))
{
@@ -1518,47 +1586,58 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
}
else if (!isJustBound() && mCachedRawImageReady)
{
- if(mBoostLevel < BOOST_HIGH)
- {
- // We haven't rendered this in a while, de-prioritize it
- desired_discard += 2;
- }
- //else
+ //if(mBoostLevel < BOOST_HIGH)
//{
- // // We haven't rendered this in the last half second, and we have a cached raw image, leave the desired discard as-is
- // desired_discard = cur_discard;
+ // // We haven't rendered this in a while, de-prioritize it
+ // desired_discard += 2;
//}
+ //else
+ {
+ // We haven't rendered this in the last half second, and we have a cached raw image, leave the desired discard as-is
+ desired_discard = cur_discard;
+ }
}
S32 ddiscard = cur_discard - desired_discard;
- ddiscard = llclamp(ddiscard, 0, 4);
- priority = (ddiscard+1)*100000.f;
+ ddiscard = llclamp(ddiscard, 0, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY);
+ priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
}
// Priority Formula:
// BOOST_HIGH + ADDITIONAL PRI + DELTA DISCARD + BOOST LEVEL + PIXELS
- // [10,000,000] + [1-9,000,000] + [1-400,000] + [1-20,000] + [0-999]
+ // [10,000,000] + [1,000,000-9,000,000] + [100,000-500,000] + [1-20,000] + [0-999]
if (priority > 0.0f)
{
- pixel_priority = llclamp(pixel_priority, 0.0f, 999.f);
+ pixel_priority = llclamp(pixel_priority, 0.0f, MAX_PRIORITY_PIXEL);
- priority = pixel_priority + 1000.f * mBoostLevel;
+ priority += pixel_priority + PRIORITY_BOOST_LEVEL_FACTOR * mBoostLevel;
if ( mBoostLevel > BOOST_HIGH)
{
- priority += 10000000.f;
+ priority += PRIORITY_BOOST_HIGH_FACTOR;
}
if(mAdditionalDecodePriority > 0.0f)
{
- // 1-9
- S32 additional_priority = (S32)(1.0f + mAdditionalDecodePriority*8.0f + .5f); // round
- // priority range += 0-9,000,000
- priority += 1000000.f * (F32)additional_priority;
+ // priority range += 1,000,000.f-9,000,000.f
+ priority += PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY);
}
}
return priority;
}
+
+//static
+F32 LLViewerFetchedTexture::maxDecodePriority()
+{
+ static const F32 max_priority = PRIORITY_BOOST_HIGH_FACTOR + //boost_high
+ PRIORITY_ADDITIONAL_FACTOR * (MAX_ADDITIONAL_LEVEL_FOR_PRIORITY + 1) + //additional (view dependent factors)
+ PRIORITY_DELTA_DISCARD_LEVEL_FACTOR * (MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY + 1) + //delta discard
+ PRIORITY_BOOST_LEVEL_FACTOR * (BOOST_MAX_LEVEL - 1) + //boost level
+ MAX_PRIORITY_PIXEL + 1.0f ; //pixel area.
+
+ return max_priority ;
+}
+
//============================================================================
void LLViewerFetchedTexture::setDecodePriority(F32 priority)
@@ -1598,6 +1677,7 @@ void LLViewerFetchedTexture::updateVirtualSize()
}
mNeedsResetMaxVirtualSize = TRUE ;
reorganizeFaceList() ;
+ reorganizeVolumeList();
}
bool LLViewerFetchedTexture::updateFetch()
@@ -2238,13 +2318,13 @@ void LLViewerFetchedTexture::destroyRawImage()
if (mRawImage.notNull())
{
- sRawCount--;
- setCachedRawImage() ;
+ sRawCount--;
if(mForceToSaveRawImage)
{
saveRawImage() ;
}
+ setCachedRawImage() ;
}
mRawImage = NULL;
@@ -2282,6 +2362,18 @@ void LLViewerFetchedTexture::switchToCachedImage()
}
}
+//cache the imageraw forcefully.
+//virtual
+void LLViewerFetchedTexture::setCachedRawImage(S32 discard_level, LLImageRaw* imageraw)
+{
+ if(imageraw != mRawImage.get())
+ {
+ mCachedRawImage = imageraw ;
+ mCachedRawDiscardLevel = discard_level ;
+ mCachedRawImageReady = TRUE ;
+ }
+}
+
void LLViewerFetchedTexture::setCachedRawImage()
{
if(mRawImage == mCachedRawImage)
@@ -2330,17 +2422,12 @@ void LLViewerFetchedTexture::setCachedRawImage()
{
--i ;
}
- //if(mForSculpt)
- //{
- // mRawImage->scaleDownWithoutBlending(w >> i, h >> i) ;
- //}
- //else
- {
- mRawImage->scale(w >> i, h >> i) ;
- }
+
+ mRawImage->scale(w >> i, h >> i) ;
}
mCachedRawImage = mRawImage ;
- mCachedRawDiscardLevel = mRawDiscardLevel + i ;
+ mRawDiscardLevel += i ;
+ mCachedRawDiscardLevel = mRawDiscardLevel ;
}
}
@@ -2410,7 +2497,7 @@ BOOL LLViewerFetchedTexture::hasSavedRawImage() const
F32 LLViewerFetchedTexture::getElapsedLastReferencedSavedRawImageTime() const
{
- return mLastReferencedSavedRawImageTime - sCurrentTime ;
+ return sCurrentTime - mLastReferencedSavedRawImageTime ;
}
//----------------------------------------------------------------------------------------------
//atlasing
@@ -2687,7 +2774,7 @@ void LLViewerLODTexture::processTextureStats()
}
else
{
- if(isLargeImage() && !isJustBound() && mAdditionalDecodePriority < 1.0f)
+ if(isLargeImage() && !isJustBound() && mAdditionalDecodePriority < 0.3f)
{
//if is a big image and not being used recently, nor close to the view point, do not load hi-res data.
mMaxVirtualSize = llmin(mMaxVirtualSize, (F32)LLViewerTexture::sMinLargeImageSize) ;
@@ -2873,12 +2960,11 @@ LLViewerMediaTexture::~LLViewerMediaTexture()
void LLViewerMediaTexture::reinit(BOOL usemipmaps /* = TRUE */)
{
- mGLTexturep = NULL ;
- init(false);
+ llassert(mGLTexturep.notNull()) ;
+
mUseMipMaps = usemipmaps ;
getLastReferencedTimer()->reset() ;
-
- generateGLTexture() ;
+ mGLTexturep->setUseMipMaps(mUseMipMaps) ;
mGLTexturep->setNeedsAlphaAndPickMask(FALSE) ;
}
@@ -2983,6 +3069,10 @@ void LLViewerMediaTexture::initVirtualSize()
void LLViewerMediaTexture::addMediaToFace(LLFace* facep)
{
+ if(facep)
+ {
+ facep->setHasMedia(true) ;
+ }
if(!mIsPlaying)
{
return ; //no need to add the face because the media is not in playing.
@@ -2993,14 +3083,16 @@ void LLViewerMediaTexture::addMediaToFace(LLFace* facep)
void LLViewerMediaTexture::removeMediaFromFace(LLFace* facep)
{
- if(!mIsPlaying)
- {
- return ; //no need to remove the face because the media is not in playing.
- }
if(!facep)
{
return ;
}
+ facep->setHasMedia(false) ;
+
+ if(!mIsPlaying)
+ {
+ return ; //no need to remove the face because the media is not in playing.
+ }
mIsPlaying = FALSE ; //set to remove the media from the face.
switchTexture(facep) ;
@@ -3252,6 +3344,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()
mNeedsResetMaxVirtualSize = TRUE ;
reorganizeFaceList() ;
+ reorganizeVolumeList();
return mMaxVirtualSize ;
}
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 79d9c4e7bb..79db754072 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -134,7 +134,9 @@ public:
static S32 getIndexFromCategory(S32 category) ;
static S32 getCategoryFromIndex(S32 index) ;
- typedef std::vector<LLFace*> ll_face_list_t ;
+ typedef std::vector<LLFace*> ll_face_list_t;
+ typedef std::vector<LLVOVolume*> ll_volume_list_t;
+
protected:
virtual ~LLViewerTexture();
@@ -178,6 +180,11 @@ public:
S32 getNumFaces() const;
const ll_face_list_t* getFaceList() const {return &mFaceList;}
+ virtual void addVolume(LLVOVolume* volumep);
+ virtual void removeVolume(LLVOVolume* volumep);
+ S32 getNumVolumes() const;
+ const ll_volume_list_t* getVolumeList() const { return &mVolumeList; }
+
void generateGLTexture() ;
void destroyGLTexture() ;
@@ -191,6 +198,7 @@ public:
LLGLuint getTexName() const ;
BOOL createGLTexture() ;
BOOL createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLViewerTexture::OTHER);
+ virtual void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ;
void setFilteringOption(LLTexUnit::eTextureFilterOptions option);
void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE);
@@ -242,7 +250,7 @@ protected:
void cleanup() ;
void init(bool firstinit) ;
void reorganizeFaceList() ;
-
+ void reorganizeVolumeList() ;
private:
//note: do not make this function public.
/*virtual*/ LLImageGL* getGLTexture() const ;
@@ -269,6 +277,10 @@ protected:
U32 mNumFaces ;
LLFrameTimer mLastFaceListUpdateTimer ;
+ ll_volume_list_t mVolumeList;
+ U32 mNumVolumes;
+ LLFrameTimer mLastVolumeListUpdateTimer;
+
//do not use LLPointer here.
LLViewerMediaTexture* mParcelMedia ;
@@ -412,6 +424,7 @@ public:
LLImageRaw* reloadRawImage(S8 discard_level) ;
void destroyRawImage();
+ /*virtual*/ void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ;
const std::string& getUrl() const {return mUrl;}
//---------------
diff --git a/indra/newview/llviewervisualparam.h b/indra/newview/llviewervisualparam.h
index 3550a46fbf..1a3975eb99 100644
--- a/indra/newview/llviewervisualparam.h
+++ b/indra/newview/llviewervisualparam.h
@@ -111,6 +111,7 @@ public:
F32 getSimpleMax() const { return getInfo()->mSimpleMax; }
BOOL getCrossWearable() const { return getInfo()->mCrossWearable; }
+
};
#endif // LL_LLViewerVisualParam_H
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index f6227c2dd6..f1ec489a20 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -51,6 +51,7 @@
#include "llviewquery.h"
#include "llxmltree.h"
+#include "llslurl.h"
//#include "llviewercamera.h"
#include "llrender.h"
@@ -80,6 +81,9 @@
#include "timing.h"
#include "llviewermenu.h"
#include "lltooltip.h"
+#include "llmediaentry.h"
+#include "llurldispatcher.h"
+#include "llurlsimstring.h"
// newview includes
#include "llagent.h"
@@ -229,6 +233,7 @@ S32 gDebugRaycastFaceHit;
BOOL gDisplayWindInfo = FALSE;
BOOL gDisplayCameraPos = FALSE;
BOOL gDisplayFOV = FALSE;
+BOOL gDisplayBadge = FALSE;
S32 CHAT_BAR_HEIGHT = 28;
S32 OVERLAY_BAR_HEIGHT = 20;
@@ -418,6 +423,11 @@ public:
addText(xpos, ypos, llformat("FOV: %2.1f deg", RAD_TO_DEG * LLViewerCamera::getInstance()->getView()));
ypos += y_inc;
}
+ if (gDisplayBadge)
+ {
+ addText(xpos, ypos+(y_inc/2), llformat("Hippos!", RAD_TO_DEG * LLViewerCamera::getInstance()->getView()));
+ ypos += y_inc * 2;
+ }
/*if (LLViewerJoystick::getInstance()->getOverrideCamera())
{
@@ -799,6 +809,154 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS
// Always handled as far as the OS is concerned.
return TRUE;
}
+
+LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data)
+{
+ LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE;
+
+ const bool prim_media_dnd_enabled = gSavedSettings.getBOOL("PrimMediaDragNDrop");
+ const bool slurl_dnd_enabled = gSavedSettings.getBOOL("SLURLDragNDrop");
+
+ if ( prim_media_dnd_enabled || slurl_dnd_enabled )
+ {
+ switch(action)
+ {
+ // Much of the handling for these two cases is the same.
+ case LLWindowCallbacks::DNDA_TRACK:
+ case LLWindowCallbacks::DNDA_DROPPED:
+ case LLWindowCallbacks::DNDA_START_TRACKING:
+ {
+ bool drop = (LLWindowCallbacks::DNDA_DROPPED == action);
+
+ if (slurl_dnd_enabled)
+ {
+
+ // special case SLURLs
+ // isValidSLURL() call was added here to make sure that dragged SLURL is valid (EXT-4964)
+ if ( LLSLURL::isSLURL( data ) && LLSLURL::isValidSLURL( data ) )
+ {
+ if (drop)
+ {
+ LLURLDispatcher::dispatch( data, NULL, true );
+ LLURLSimString::setStringRaw( LLSLURL::stripProtocol( data ) );
+ LLPanelLogin::refreshLocation( true );
+ LLPanelLogin::updateLocationUI();
+ }
+ return LLWindowCallbacks::DND_MOVE;
+ };
+ }
+
+ if (prim_media_dnd_enabled)
+ {
+ LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ );
+
+ LLUUID object_id = pick_info.getObjectID();
+ S32 object_face = pick_info.mObjectFace;
+ std::string url = data;
+
+ lldebugs << "Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
+
+ LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
+
+ if (obj && !obj->getRegion()->getCapability("ObjectMedia").empty())
+ {
+ LLTextureEntry *te = obj->getTE(object_face);
+ if (te)
+ {
+ if (drop)
+ {
+ // object does NOT have media already
+ if ( ! te->hasMedia() )
+ {
+ // we are allowed to modify the object
+ if ( obj->permModify() )
+ {
+ // Create new media entry
+ LLSD media_data;
+ // XXX Should we really do Home URL too?
+ media_data[LLMediaEntry::HOME_URL_KEY] = url;
+ media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+ media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
+ obj->syncMediaData(object_face, media_data, true, true);
+ // XXX This shouldn't be necessary, should it ?!?
+ if (obj->getMediaImpl(object_face))
+ obj->getMediaImpl(object_face)->navigateReload();
+ obj->sendMediaDataUpdate();
+
+ result = LLWindowCallbacks::DND_COPY;
+ }
+ }
+ else
+ // object HAS media already
+ {
+ // URL passes the whitelist
+ if (te->getMediaData()->checkCandidateUrl( url ) )
+ {
+ // we are allowed to modify the object or we have navigate permissions
+ // NOTE: Design states you you can change the URL if you have media
+ // navigate permissions even if you do not have prim modify rights
+ if ( obj->permModify() || obj->hasMediaPermission( te->getMediaData(), LLVOVolume::MEDIA_PERM_INTERACT ) )
+ {
+ // just navigate to the URL
+ if (obj->getMediaImpl(object_face))
+ {
+ obj->getMediaImpl(object_face)->navigateTo(url);
+ }
+ else
+ {
+ // This is very strange. Navigation should
+ // happen via the Impl, but we don't have one.
+ // This sends it to the server, which /should/
+ // trigger us getting it. Hopefully.
+ LLSD media_data;
+ media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+ obj->syncMediaData(object_face, media_data, true, true);
+ obj->sendMediaDataUpdate();
+ }
+ result = LLWindowCallbacks::DND_LINK;
+ }
+ }
+ }
+ LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+ mDragHoveredObject = NULL;
+
+ }
+ else
+ {
+ // Check the whitelist, if there's media (otherwise just show it)
+ if (te->getMediaData() == NULL || te->getMediaData()->checkCandidateUrl(url))
+ {
+ if ( obj != mDragHoveredObject)
+ {
+ // Highlight the dragged object
+ LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+ mDragHoveredObject = obj;
+ LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
+ }
+ result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
+ }
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case LLWindowCallbacks::DNDA_STOP_TRACKING:
+ // The cleanup case below will make sure things are unhilighted if necessary.
+ break;
+ }
+
+ if (prim_media_dnd_enabled &&
+ result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull())
+ {
+ LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+ mDragHoveredObject = NULL;
+ }
+ }
+
+ return result;
+}
BOOL LLViewerWindow::handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask)
{
@@ -845,6 +1003,7 @@ void LLViewerWindow::handleMouseLeave(LLWindow *window)
// Note: we won't get this if we have captured the mouse.
llassert( gFocusMgr.getMouseCapture() == NULL );
mMouseInWindow = FALSE;
+ LLToolTipMgr::instance().blockToolTips();
}
BOOL LLViewerWindow::handleCloseRequest(LLWindow *window)
@@ -1589,7 +1748,11 @@ void LLViewerWindow::shutdownViews()
// destroy the nav bar, not currently part of gViewerWindow
// *TODO: Make LLNavigationBar part of gViewerWindow
delete LLNavigationBar::getInstance();
-
+
+ // destroy menus after instantiating navbar above, as it needs
+ // access to gMenuHolder
+ cleanup_menus();
+
// Delete all child views.
delete mRootView;
mRootView = NULL;
@@ -2331,6 +2494,8 @@ void LLViewerWindow::updateUI()
static std::string last_handle_msg;
+ LLConsole::updateClass();
+
// animate layout stacks so we have up to date rect for world view
LLLayoutStack::updateClass();
@@ -2858,17 +3023,16 @@ void LLViewerWindow::updateWorldViewRect(bool use_full_window)
if (mWorldViewRectRaw != new_world_rect)
{
- LLRect old_world_rect = mWorldViewRectRaw;
mWorldViewRectRaw = new_world_rect;
gResizeScreenTexture = TRUE;
LLViewerCamera::getInstance()->setViewHeightInPixels( mWorldViewRectRaw.getHeight() );
LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() );
+ LLRect old_world_rect_scaled = mWorldViewRectScaled;
mWorldViewRectScaled = calcScaledRect(mWorldViewRectRaw, mDisplayScale);
// sending a signal with a new WorldView rect
- old_world_rect = calcScaledRect(old_world_rect, mDisplayScale);
- mOnWorldViewRectUpdated(old_world_rect, mWorldViewRectScaled);
+ mOnWorldViewRectUpdated(old_world_rect_scaled, mWorldViewRectScaled);
}
}
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index c0a9180b53..bfce65f2ba 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -166,7 +166,8 @@ public:
/*virtual*/ BOOL handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK mask);
/*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask);
/*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask);
- /*virtual*/ void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask);
+ /*virtual*/ LLWindowCallbacks::DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data);
+ void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask);
/*virtual*/ void handleMouseLeave(LLWindow *window);
/*virtual*/ void handleResize(LLWindow *window, S32 x, S32 y);
/*virtual*/ void handleFocus(LLWindow *window);
@@ -472,6 +473,10 @@ protected:
static std::string sSnapshotDir;
static std::string sMovieBaseName;
+
+private:
+ // Object temporarily hovered over while dragging
+ LLPointer<LLViewerObject> mDragHoveredObject;
};
void toggle_flying(void*);
@@ -501,5 +506,6 @@ extern S32 CHAT_BAR_HEIGHT;
extern BOOL gDisplayCameraPos;
extern BOOL gDisplayWindInfo;
extern BOOL gDisplayFOV;
+extern BOOL gDisplayBadge;
#endif
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4235f97eab..72b9c6df98 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1492,9 +1492,9 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)
//-------------------------------------------------------------------------
// parse the file
//-------------------------------------------------------------------------
- BOOL success = sSkeletonXMLTree.parseFile( filename, FALSE );
+ BOOL parsesuccess = sSkeletonXMLTree.parseFile( filename, FALSE );
- if (!success)
+ if (!parsesuccess)
{
llerrs << "Can't parse skeleton file: " << filename << llendl;
return FALSE;
@@ -1505,11 +1505,13 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)
if (!root)
{
llerrs << "No root node found in avatar skeleton file: " << filename << llendl;
+ return FALSE;
}
if( !root->hasName( "linden_skeleton" ) )
{
llerrs << "Invalid avatar skeleton file header: " << filename << llendl;
+ return FALSE;
}
std::string version;
@@ -1517,6 +1519,7 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)
if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") )
{
llerrs << "Invalid avatar skeleton file version: " << version << " in file: " << filename << llendl;
+ return FALSE;
}
return TRUE;
@@ -2192,13 +2195,16 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
// store off last frame's root position to be consistent with camera position
LLVector3 root_pos_last = mRoot.getWorldPosition();
BOOL detailed_update = updateCharacter(agent);
- BOOL voice_enabled = gVoiceClient->getVoiceEnabled( mID ) && gVoiceClient->inProximalChannel();
if (gNoRender)
{
return TRUE;
}
+ static LLUICachedControl<bool> visualizers_in_calls("ShowVoiceVisualizersInCalls", false);
+ bool voice_enabled = (visualizers_in_calls || gVoiceClient->inProximalChannel()) &&
+ gVoiceClient->getVoiceEnabled(mID);
+
idleUpdateVoiceVisualizer( voice_enabled );
idleUpdateMisc( detailed_update );
idleUpdateAppearanceAnimation();
@@ -2532,6 +2538,17 @@ void LLVOAvatar::idleUpdateLoadingEffect()
// update visibility when avatar is partially loaded
if (updateIsFullyLoaded()) // changed?
{
+ if (isFullyLoaded() && isSelf())
+ {
+ static bool first_fully_visible = true;
+ if (first_fully_visible)
+ {
+ llinfos << "self isFullyLoaded, first_fully_visible" << llendl;
+
+ first_fully_visible = false;
+ LLAppearanceManager::instance().onFirstFullyVisible();
+ }
+ }
if (isFullyLoaded())
{
deleteParticleSource();
@@ -3079,7 +3096,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
if (!visible)
{
- //updateMotions(LLCharacter::HIDDEN_UPDATE);
+ updateMotions(LLCharacter::HIDDEN_UPDATE);
return FALSE;
}
@@ -4048,6 +4065,7 @@ void LLVOAvatar::updateTextures()
// Spam if this is a baked texture, not set to default image, without valid host info
if (isIndexBakedTexture((ETextureIndex)texture_index)
&& imagep->getID() != IMG_DEFAULT_AVATAR
+ && imagep->getID() != IMG_INVISIBLE
&& !imagep->getTargetHost().isOk())
{
LL_WARNS_ONCE("Texture") << "LLVOAvatar::updateTextures No host for texture "
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index a5815df20a..b5f0ec7176 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -565,7 +565,7 @@ public:
void updateMeshData();
protected:
void releaseMeshData();
- /*virtual*/ void restoreMeshData();
+ virtual void restoreMeshData();
private:
BOOL mDirtyMesh;
BOOL mMeshTexturesDirty;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index ecd6b05ded..4347dec805 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -211,6 +211,8 @@ BOOL LLVOAvatarSelf::buildSkeletonSelf(const LLVOAvatarSkeletonInfo *info)
LLVector3 scale(1.f, aspect, 1.f);
mScreenp->setScale(scale);
mScreenp->setWorldPosition(LLVector3::zero);
+ // need to update screen agressively when sidebar opens/closes, for example
+ mScreenp->mUpdateXform = TRUE;
return TRUE;
}
@@ -510,8 +512,12 @@ BOOL LLVOAvatarSelf::buildMenus()
LLVOAvatarSelf::~LLVOAvatarSelf()
{
- gAgent.setAvatarObject(NULL);
- gAgentWearables.setAvatarObject(NULL);
+ // gAgents pointer might have been set to a different Avatar Self, don't get rid of it if so.
+ if (gAgent.getAvatarObject() == this)
+ {
+ gAgent.setAvatarObject(NULL);
+ gAgentWearables.setAvatarObject(NULL);
+ }
delete mScreenp;
mScreenp = NULL;
}
@@ -928,6 +934,13 @@ void LLVOAvatarSelf::wearableUpdated( EWearableType type, BOOL upload_result )
{
const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
const LLVOAvatarDefines::EBakedTextureIndex index = baked_iter->first;
+
+ // if we're editing our appearance, ensure that we're not using baked textures
+ // The baked texture for alpha masks is set explicitly when you hit "save"
+ if (gAgent.cameraCustomizeAvatar())
+ {
+ setNewBakedTexture(index,IMG_DEFAULT_AVATAR);
+ }
if (baked_dict)
{
for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin();
@@ -1966,6 +1979,7 @@ void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug)
// Don't know if this is needed
updateMeshTextures();
+
}
//-----------------------------------------------------------------------------
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index 9d49fb69d6..fac7fa6a18 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -122,7 +122,8 @@ LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& sess
mState(STATE_NO_CHANNEL_INFO),
mSessionName(session_name),
mCallDirection(OUTGOING_CALL),
- mIgnoreNextSessionLeave(FALSE)
+ mIgnoreNextSessionLeave(FALSE),
+ mCallEndedByAgent(false)
{
mNotifyArgs["VOICE_CHANNEL_NAME"] = mSessionName;
@@ -139,7 +140,10 @@ LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& sess
LLVoiceChannel::~LLVoiceChannel()
{
// Don't use LLVoiceClient::getInstance() here -- this can get called during atexit() time and that singleton MAY have already been destroyed.
- if(gVoiceClient)
+ // Using call of instanceExists() instead of gVoiceClient in check to avoid crash in LLVoiceClient::removeObserver()
+ // when quitting viewer by closing console window before login (though in case of such quit crash will occur
+ // later in other destructors anyway). EXT-5524
+ if(LLVoiceClient::instanceExists())
{
gVoiceClient->removeObserver(this);
}
@@ -389,13 +393,16 @@ void LLVoiceChannel::setState(EState state)
switch(state)
{
case STATE_RINGING:
- LLCallInfoDialog::show("ringing", mNotifyArgs);
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("ringing", mNotifyArgs);
break;
case STATE_CONNECTED:
- LLCallInfoDialog::show("connected", mNotifyArgs);
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("connected", mNotifyArgs);
break;
case STATE_HUNG_UP:
- LLCallInfoDialog::show("hang_up", mNotifyArgs);
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("hang_up", mNotifyArgs);
break;
default:
break;
@@ -409,7 +416,7 @@ void LLVoiceChannel::doSetState(const EState& new_state)
EState old_state = mState;
mState = new_state;
if (!mStateChangedCallback.empty())
- mStateChangedCallback(old_state, mState, mCallDirection);
+ mStateChangedCallback(old_state, mState, mCallDirection, mCallEndedByAgent);
}
//static
@@ -635,7 +642,8 @@ void LLVoiceChannelGroup::setState(EState state)
case STATE_RINGING:
if ( !mIsRetrying )
{
- LLCallInfoDialog::show("ringing", mNotifyArgs);
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("ringing", mNotifyArgs);
}
doSetState(state);
@@ -701,7 +709,8 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status)
//skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749)
if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking())
{
- LLCallInfoDialog::show("unavailable", mNotifyArgs);
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("unavailable", mNotifyArgs);
}
return;
default:
@@ -774,7 +783,8 @@ void LLVoiceChannelP2P::handleStatusChange(EStatusType type)
}
else
{
- // other user hung up
+ // other user hung up, so we didn't end the call
+ mCallEndedByAgent = false;
}
deactivate();
}
@@ -805,6 +815,9 @@ void LLVoiceChannelP2P::activate()
{
if (callStarted()) return;
+ //call will be counted as ended by user unless this variable is changed in handleStatusChange()
+ mCallEndedByAgent = true;
+
LLVoiceChannel::activate();
if (callStarted())
@@ -901,7 +914,8 @@ void LLVoiceChannelP2P::setState(EState state)
// so provide a special purpose message here
if (mReceivedCall && state == STATE_RINGING)
{
- LLCallInfoDialog::show("answering", mNotifyArgs);
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("answering", mNotifyArgs);
doSetState(state);
return;
}
diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h
index cb86671305..941cccacc3 100644
--- a/indra/newview/llvoicechannel.h
+++ b/indra/newview/llvoicechannel.h
@@ -58,7 +58,7 @@ public:
OUTGOING_CALL
} EDirection;
- typedef boost::signals2::signal<void(const EState& old_state, const EState& new_state, const EDirection& direction)> state_changed_signal_t;
+ typedef boost::signals2::signal<void(const EState& old_state, const EState& new_state, const EDirection& direction, bool ended_by_agent)> state_changed_signal_t;
// on current channel changed signal
typedef boost::function<void(const LLUUID& session_id)> channel_changed_callback_t;
@@ -122,6 +122,8 @@ protected:
std::string mSessionName;
LLSD mNotifyArgs;
LLSD mCallDialogPayload;
+ // true if call was ended by agent
+ bool mCallEndedByAgent;
BOOL mIgnoreNextSessionLeave;
LLHandle<LLPanel> mLoginNotificationHandle;
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index c062dd1732..59606f17b2 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -1107,17 +1107,17 @@ public:
* Sets internal voluem level for specified user.
*
* @param[in] speaker_id - LLUUID of user to store volume level for
- * @param[in] volume - internal volume level to be stored for user.
+ * @param[in] volume - external (vivox) volume level to be stored for user.
*/
- void storeSpeakerVolume(const LLUUID& speaker_id, S32 volume);
+ void storeSpeakerVolume(const LLUUID& speaker_id, F32 volume);
/**
- * Gets stored internal volume level for specified speaker.
+ * Gets stored external (vivox) volume level for specified speaker and
+ * transforms it into internal (viewer) level.
*
- * If specified user is not found default level will be returned. It is equivalent of
- * external level 0.5 from the 0.0..1.0 range.
- * Default internal level is calculated as: internal = 400 * external^2
- * Maps 0.0 to 1.0 to internal values 0-400 with default 0.5 == 100
+ * If specified user is not found -1 will be returned.
+ * Internal level is calculated as: internal = 400 * external^2
+ * Maps 0.0 to 1.0 to internal values 0-400
*
* @param[in] speaker_id - LLUUID of user to get his volume level
*/
@@ -1133,7 +1133,7 @@ private:
void load();
void save();
- typedef std::map<LLUUID, S32> speaker_data_map_t;
+ typedef std::map<LLUUID, F32> speaker_data_map_t;
speaker_data_map_t mSpeakersData;
};
@@ -1149,21 +1149,23 @@ LLSpeakerVolumeStorage::~LLSpeakerVolumeStorage()
save();
}
-void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, S32 volume)
+void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, F32 volume)
{
mSpeakersData[speaker_id] = volume;
}
S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id)
{
- // default internal level of user voice.
- const static LLUICachedControl<S32> DEFAULT_INTERNAL_VOLUME_LEVEL("VoiceDefaultInternalLevel", 100);
- S32 ret_val = DEFAULT_INTERNAL_VOLUME_LEVEL;
+ // Return value of -1 indicates no level is stored for this speaker
+ S32 ret_val = -1;
speaker_data_map_t::const_iterator it = mSpeakersData.find(speaker_id);
if (it != mSpeakersData.end())
{
- ret_val = it->second;
+ F32 f_val = it->second;
+ // volume can amplify by as much as 4x!
+ S32 ivol = (S32)(400.f * f_val * f_val);
+ ret_val = llclamp(ivol, 0, 400);
}
return ret_val;
}
@@ -1184,7 +1186,7 @@ void LLSpeakerVolumeStorage::load()
for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
iter != settings_llsd.endMap(); ++iter)
{
- mSpeakersData.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger()));
+ mSpeakersData.insert(std::make_pair(LLUUID(iter->first), (F32)iter->second.asReal()));
}
}
@@ -1258,7 +1260,6 @@ LLVoiceClient::LLVoiceClient() :
mEarLocation(0),
mSpeakerVolumeDirty(true),
mSpeakerMuteDirty(true),
- mSpeakerVolume(0),
mMicVolume(0),
mMicVolumeDirty(true),
@@ -1271,6 +1272,8 @@ LLVoiceClient::LLVoiceClient() :
mAPIVersion = LLTrans::getString("NotConnected");
+ mSpeakerVolume = scale_speaker_volume(0);
+
#if LL_DARWIN || LL_LINUX || LL_SOLARIS
// HACK: THIS DOES NOT BELONG HERE
// When the vivox daemon dies, the next write attempt on our socket generates a SIGPIPE, which kills us.
@@ -3525,7 +3528,7 @@ void LLVoiceClient::buildLocalAudioUpdates(std::ostringstream &stream)
if(mSpeakerMuteDirty)
{
- const char *muteval = ((mSpeakerVolume == 0)?"true":"false");
+ const char *muteval = ((mSpeakerVolume <= scale_speaker_volume(0))?"true":"false");
mSpeakerMuteDirty = false;
@@ -5040,6 +5043,11 @@ LLVoiceClient::participantState *LLVoiceClient::sessionState::addParticipant(con
mParticipantsByUUID.insert(participantUUIDMap::value_type(&(result->mAvatarID), result));
result->mUserVolume = LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID);
+ if (result->mUserVolume != -1)
+ {
+ result->mVolumeDirty = true;
+ mVolumeDirty = true;
+ }
LL_DEBUGS("Voice") << "participant \"" << result->mURI << "\" added." << LL_ENDL;
}
@@ -5372,24 +5380,25 @@ LLVoiceClient::sessionState* LLVoiceClient::startUserIMSession(const LLUUID &uui
// No session with user, need to start one.
std::string uri = sipURIFromID(uuid);
session = addSession(uri);
+
+ llassert(session);
+ if (!session) return NULL;
+
session->mIsSpatial = false;
session->mReconnect = false;
session->mIsP2P = true;
session->mCallerID = uuid;
}
- if(session)
+ if(session->mHandle.empty())
{
- if(session->mHandle.empty())
- {
- // Session isn't active -- start it up.
- sessionCreateSendMessage(session, false, true);
- }
- else
- {
- // Session is already active -- start up text.
- sessionTextConnectSendMessage(session);
- }
+ // Session isn't active -- start it up.
+ sessionCreateSendMessage(session, false, true);
+ }
+ else
+ {
+ // Session is already active -- start up text.
+ sessionTextConnectSendMessage(session);
}
return session;
@@ -5979,9 +5988,11 @@ bool LLVoiceClient::voiceEnabled()
return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice");
}
+//AD *TODO: investigate possible merge of voiceWorking() and voiceEnabled() into one non-static method
bool LLVoiceClient::voiceWorking()
{
- return (stateLoggedIn <= mState) && (mState <= stateLeavingSession);
+ //Added stateSessionTerminated state to avoid problems with call in parcels with disabled voice (EXT-4758)
+ return (stateLoggedIn <= mState) && (mState <= stateSessionTerminated);
}
void LLVoiceClient::setLipSyncEnabled(BOOL enabled)
@@ -6062,7 +6073,8 @@ void LLVoiceClient::setVoiceVolume(F32 volume)
if(scaled_volume != mSpeakerVolume)
{
- if((scaled_volume == 0) || (mSpeakerVolume == 0))
+ int min_volume = scale_speaker_volume(0);
+ if((scaled_volume == min_volume) || (mSpeakerVolume == min_volume))
{
mSpeakerMuteDirty = true;
}
@@ -6284,14 +6296,14 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)
participantState *participant = findParticipantByID(id);
if (participant)
{
+ // store this volume setting for future sessions
+ LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, volume);
+
// volume can amplify by as much as 4x!
S32 ivol = (S32)(400.f * volume * volume);
participant->mUserVolume = llclamp(ivol, 0, 400);
participant->mVolumeDirty = TRUE;
mAudioSession->mVolumeDirty = TRUE;
-
- // store this volume setting for future sessions
- LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, participant->mUserVolume);
}
}
}
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index 8f668dff19..a96cf18e27 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -192,6 +192,7 @@ static void updatePosition(void);
void setVoiceEnabled(bool enabled);
static bool voiceEnabled();
// Checks is voice working judging from mState
+ // Returns true if vivox has successfully logged in and is not in error state
bool voiceWorking();
void setUsePTT(bool usePTT);
void setPTTIsToggle(bool PTTIsToggle);
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 3cdf485d7d..fbb44c8e76 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -192,6 +192,7 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re
mMediaImplList.resize(getNumTEs());
mLastFetchedMediaVersion = -1;
+ mIndexInTex = 0;
}
LLVOVolume::~LLVOVolume()
@@ -226,6 +227,11 @@ void LLVOVolume::markDead()
{
removeMediaImpl(i);
}
+
+ if (mSculptTexture.notNull())
+ {
+ mSculptTexture->removeVolume(this);
+ }
}
LLViewerObject::markDead();
@@ -694,6 +700,7 @@ void LLVOVolume::updateTextureVirtualSize()
vsize = area;
imagep->setBoostLevel(LLViewerTexture::BOOST_HUD);
face->setPixelArea(area); // treat as full screen
+ face->setVirtualSize(vsize);
}
else
{
@@ -710,8 +717,7 @@ void LLVOVolume::updateTextureVirtualSize()
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD, FALSE);
}
}
-
- face->setVirtualSize(vsize);
+
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXTURE_AREA))
{
if (vsize < min_vsize) min_vsize = vsize;
@@ -740,7 +746,9 @@ void LLVOVolume::updateTextureVirtualSize()
{
LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
LLUUID id = sculpt_params->getSculptTexture();
- mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+
+ updateSculptTexture();
+
if (mSculptTexture.notNull())
{
mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(),
@@ -929,35 +937,53 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail
{
mVolumeImpl->onSetVolume(volume_params, detail);
}
-
+
+ updateSculptTexture();
+
if (isSculpted())
{
- mSculptTexture = LLViewerTextureManager::getFetchedTexture(volume_params.getSculptID(), TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+ updateSculptTexture();
+
if (mSculptTexture.notNull())
{
- //ignore sculpt GL usage since bao fixed this in a separate branch
- if (!gGLActive)
- {
- gGLActive = TRUE;
- sculpt();
- gGLActive = FALSE;
- }
- else
- {
- sculpt();
- }
+ sculpt();
}
}
- else
- {
- mSculptTexture = NULL;
- }
return TRUE;
}
return FALSE;
}
+void LLVOVolume::updateSculptTexture()
+{
+ LLPointer<LLViewerFetchedTexture> old_sculpt = mSculptTexture;
+
+ if (isSculpted())
+ {
+ LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
+ LLUUID id = sculpt_params->getSculptTexture();
+ mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+ }
+ else
+ {
+ mSculptTexture = NULL;
+ }
+
+ if (mSculptTexture != old_sculpt)
+ {
+ if (old_sculpt.notNull())
+ {
+ old_sculpt->removeVolume(this);
+ }
+ if (mSculptTexture.notNull())
+ {
+ mSculptTexture->addVolume(this);
+ }
+ }
+
+}
+
// sculpt replaces generate() for sculpted surfaces
void LLVOVolume::sculpt()
{
@@ -998,6 +1024,8 @@ void LLVOVolume::sculpt()
if(!raw_image)
{
+ llassert(discard_level < 0) ;
+
sculpt_width = 0;
sculpt_height = 0;
sculpt_data = NULL ;
@@ -1021,6 +1049,16 @@ void LLVOVolume::sculpt()
}
}
getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level);
+
+ //notify rebuild any other VOVolumes that reference this sculpty volume
+ for (S32 i = 0; i < mSculptTexture->getNumVolumes(); ++i)
+ {
+ LLVOVolume* volume = (*(mSculptTexture->getVolumeList()))[i];
+ if (volume != this && volume->getVolume() == getVolume())
+ {
+ gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY, FALSE);
+ }
+ }
}
}
@@ -3472,7 +3510,8 @@ static LLFastTimer::DeclareTimer FTM_VOLUME_GEOM("Volume Geometry");
void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
{
llpushcallstacks ;
- if (group->isState(LLSpatialGroup::MESH_DIRTY) && !group->isState(LLSpatialGroup::GEOM_DIRTY))
+ llassert(group);
+ if (group && group->isState(LLSpatialGroup::MESH_DIRTY) && !group->isState(LLSpatialGroup::GEOM_DIRTY))
{
LLFastTimer tm(FTM_VOLUME_GEOM);
S32 num_mapped_veretx_buffer = LLVertexBuffer::sMappedCount ;
@@ -3526,9 +3565,9 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
}
// don't forget alpha
- if( group != NULL &&
- !group->mVertexBuffer.isNull() &&
- group->mVertexBuffer->isLocked())
+ if(group != NULL &&
+ !group->mVertexBuffer.isNull() &&
+ group->mVertexBuffer->isLocked())
{
group->mVertexBuffer->setBuffer(0);
}
@@ -3554,7 +3593,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
group->clearState(LLSpatialGroup::MESH_DIRTY | LLSpatialGroup::NEW_DRAWINFO);
}
- if (group->isState(LLSpatialGroup::NEW_DRAWINFO))
+ if (group && group->isState(LLSpatialGroup::NEW_DRAWINFO))
{
llerrs << "WTF?" << llendl;
}
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index a287d34402..a8bb597f93 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -179,8 +179,10 @@ public:
/*virtual*/ BOOL setMaterial(const U8 material);
void setTexture(const S32 face);
-
+ S32 getIndexInTex() const {return mIndexInTex ;}
/*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false);
+ void updateSculptTexture();
+ void setIndexInTex(S32 index) { mIndexInTex = index ;}
void sculpt();
void updateRelativeXform();
/*virtual*/ BOOL updateGeometry(LLDrawable *drawable);
@@ -303,7 +305,7 @@ private:
LLPointer<LLViewerFetchedTexture> mLightTexture;
media_list_t mMediaImplList;
S32 mLastFetchedMediaVersion; // as fetched from the server, starts as -1
-
+ S32 mIndexInTex;
// statics
public:
static F32 sLODSlopDistanceFactor;// Changing this to zero, effectively disables the LOD transition slop
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index d093031bea..acfbc23f62 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -625,7 +625,9 @@ void LLWearable::writeToAvatar()
// Pull params
for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() )
{
- if( (((LLViewerVisualParam*)param)->getWearableType() == mType) )
+ // cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the
+ // avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way.
+ if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (!((LLViewerVisualParam*)param)->getCrossWearable()) )
{
S32 param_id = param->getID();
F32 weight = getVisualParamWeight(param_id);
@@ -1085,6 +1087,26 @@ void LLWearable::destroyTextures()
mSavedTEMap.clear();
}
+void LLWearable::pullCrossWearableValues()
+{
+ // scan through all of the avatar's visual parameters
+ LLVOAvatar* avatar = gAgent.getAvatarObject();
+ for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();
+ param;
+ param = (LLViewerVisualParam*) avatar->getNextVisualParam())
+ {
+ if( param )
+ {
+ LLDriverParam *driver_param = dynamic_cast<LLDriverParam*>(param);
+ if(driver_param)
+ {
+ // parameter is a driver parameter, have it update its
+ driver_param->updateCrossDrivenParams(getType());
+ }
+ }
+ }
+}
+
void LLWearable::setLabelUpdated() const
{
diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
index dae983bcf3..7bd5305079 100644
--- a/indra/newview/llwearable.h
+++ b/indra/newview/llwearable.h
@@ -128,6 +128,7 @@ public:
void revertValues();
void saveValues();
+ void pullCrossWearableValues();
BOOL isOnTop() const;
@@ -145,7 +146,7 @@ private:
void createLayers(S32 te);
void createVisualParams();
void syncImages(te_map_t &src, te_map_t &dst);
- void destroyTextures();
+ void destroyTextures();
static S32 sCurrentDefinitionVersion; // Depends on the current state of the avatar_lad.xml.
S32 mDefinitionVersion; // Depends on the state of the avatar_lad.xml when this asset was created.
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp
index 7866f735c5..3385b75c65 100644
--- a/indra/newview/llweb.cpp
+++ b/indra/newview/llweb.cpp
@@ -145,10 +145,20 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url,
substitution["VERSION_PATCH"] = LLVersionInfo::getPatch();
substitution["VERSION_BUILD"] = LLVersionInfo::getBuild();
substitution["CHANNEL"] = LLVersionInfo::getChannel();
- substitution["LANGUAGE"] = LLUI::getLanguage();
substitution["GRID"] = LLViewerLogin::getInstance()->getGridLabel();
substitution["OS"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple();
substitution["SESSION_ID"] = gAgent.getSessionID();
+ substitution["FIRST_LOGIN"] = gAgent.isFirstLogin();
+
+ // work out the current language
+ std::string lang = LLUI::getLanguage();
+ if (lang == "en-us")
+ {
+ // *HACK: the correct fix is to change English.lproj/language.txt,
+ // but we're late in the release cycle and this is a less risky fix
+ lang = "en";
+ }
+ substitution["LANGUAGE"] = lang;
// find the region ID
LLUUID region_id;
@@ -159,14 +169,14 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url,
}
substitution["REGION_ID"] = region_id;
- // find the parcel ID
- LLUUID parcel_id;
+ // find the parcel local ID
+ S32 parcel_id = 0;
LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
if (parcel)
{
- parcel_id = parcel->getID();
+ parcel_id = parcel->getLocalID();
}
- substitution["PARCEL_ID"] = parcel_id;
+ substitution["PARCEL_ID"] = llformat("%d", parcel_id);
// expand all of the substitution strings and escape the url
std::string expanded_url = url;
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 1940d65ae4..5edf72d4ae 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -128,10 +128,10 @@ void LLWorldMapView::initClass()
sHomeImage = LLUI::getUIImage("map_home.tga");
sTelehubImage = LLUI::getUIImage("map_telehub.tga");
sInfohubImage = LLUI::getUIImage("map_infohub.tga");
- sEventImage = LLUI::getUIImage("map_event.tga");
- sEventMatureImage = LLUI::getUIImage("map_event_mature.tga");
+ sEventImage = LLUI::getUIImage("Parcel_PG_Dark");
+ sEventMatureImage = LLUI::getUIImage("Parcel_M_Dark");
// To Do: update the image resource for adult events.
- sEventAdultImage = LLUI::getUIImage("map_event_adult.tga");
+ sEventAdultImage = LLUI::getUIImage("Parcel_R_Dark");
sTrackCircleImage = LLUI::getUIImage("map_track_16.tga");
sTrackArrowImage = LLUI::getUIImage("direction_arrow.tga");
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index d5f87b73fe..e2179fb257 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -476,8 +476,6 @@ void LLPipeline::cleanup()
releaseGLBuffers();
- mBloomImagep = NULL;
- mBloomImage2p = NULL;
mFaceSelectImagep = NULL;
mMovedBridge.clear();
@@ -1354,6 +1352,7 @@ void LLPipeline::updateMoveNormalAsync(LLDrawable* drawablep)
if (!drawablep)
{
llerrs << "updateMove called with NULL drawablep" << llendl;
+ return;
}
if (drawablep->isState(LLDrawable::EARLY_MOVE))
{
@@ -1957,7 +1956,7 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)
if (root && root->getParent() && root->getVObj() && root->getVObj()->isAttachment())
{
LLVOAvatar* av = root->getParent()->getVObj()->asAvatar();
- if (av->isImpostor())
+ if (av && av->isImpostor())
{
return;
}
@@ -2776,10 +2775,8 @@ void render_hud_elements()
LLViewerParcelMgr::getInstance()->render();
LLViewerParcelMgr::getInstance()->renderParcelCollision();
- // Render debugging beacons.
- //gObjectList.renderObjectBeacons();
- //LLHUDObject::renderAll();
- //gObjectList.resetObjectBeacons();
+ // Render name tags.
+ LLHUDObject::renderAll();
}
else if (gForceRenderLandFence)
{
@@ -3184,7 +3181,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
{
// Render debugging beacons.
gObjectList.renderObjectBeacons();
- LLHUDObject::renderAll();
gObjectList.resetObjectBeacons();
}
@@ -3416,7 +3412,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
{
// Render debugging beacons.
gObjectList.renderObjectBeacons();
- LLHUDObject::renderAll();
gObjectList.resetObjectBeacons();
}
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index c5285943e8..46231048e8 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -673,8 +673,6 @@ protected:
std::vector<LLFace*> mSelectedFaces;
LLPointer<LLViewerFetchedTexture> mFaceSelectImagep;
- LLPointer<LLViewerTexture> mBloomImagep;
- LLPointer<LLViewerTexture> mBloomImage2p;
U32 mLightMask;
U32 mLightMovingMask;
@@ -691,6 +689,7 @@ public:
};
void render_bbox(const LLVector3 &min, const LLVector3 &max);
+void render_hud_elements();
extern LLPipeline gPipeline;
extern BOOL gRenderForSelect;
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 219b3dbeb6..45050de044 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -47,7 +47,7 @@
<color
name="Black"
value="0 0 0 1" />
- <color
+ <colork
name="Black_10"
value="0 0 0 0.1" />
<color
@@ -77,6 +77,16 @@
<color
name="Purple"
value="1 0 1 1" />
+ <color
+ name="Lime"
+ value=".8 1 .73 1" />
+ <color
+ name="LtYellow"
+ value="1 1 .79 1" />
+ <color
+ name="LtOrange"
+ value="1 .85 .73 1" />
+
<!-- This color name makes potentially unused colors show up bright purple.
Leave this here until all Unused? are removed below, otherwise
the viewer generates many warnings on startup. -->
@@ -97,7 +107,7 @@
value="1 0.82 0.46 1" />
<color
name="AlertCautionTextColor"
- reference="Yellow" />
+ reference="LtYellow" />
<color
name="AgentLinkColor"
reference="White" />
@@ -226,10 +236,10 @@
reference="White" />
<color
name="ColorPaletteEntry16"
- reference="White" />
+ reference="LtYellow" />
<color
name="ColorPaletteEntry17"
- reference="White" />
+ reference="LtGreen" />
<color
name="ColorPaletteEntry18"
reference="LtGray" />
@@ -276,11 +286,14 @@
name="ColorPaletteEntry32"
reference="White" />
<color
+ name="ComboListBgColor"
+ reference="DkGray" />
+ <color
name="ConsoleBackground"
reference="Black" />
<color
name="ContextSilhouetteColor"
- value="0.94 0.61 0 1" />
+ reference="EmphasisColor" />
<color
name="DefaultHighlightDark"
reference="White_10" />
@@ -592,7 +605,7 @@
value="0.39 0.39 0.39 1" />
<color
name="ScriptErrorColor"
- value="0.82 0.27 0.27 1" />
+ reference="Red" />
<color
name="ScrollBGStripeColor"
reference="Transparent" />
@@ -649,7 +662,7 @@
reference="FrogGreen" />
<color
name="SystemChatColor"
- reference="White" />
+ reference="LtGray" />
<color
name="TextBgFocusColor"
reference="White" />
@@ -703,7 +716,7 @@
reference="White" />
<color
name="llOwnerSayChatColor"
- reference="LtGray" />
+ reference="LtYellow" />
<!-- New Colors -->
<color
diff --git a/indra/newview/skins/default/html/da/loading/loading.html b/indra/newview/skins/default/html/da/loading/loading.html
index cdad5702b9..5f3426eb60 100644
--- a/indra/newview/skins/default/html/da/loading/loading.html
+++ b/indra/newview/skins/default/html/da/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Indlæser...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Indlæser...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/de/loading/loading.html b/indra/newview/skins/default/html/de/loading/loading.html
index 3eddbc24f5..44a621b216 100644
--- a/indra/newview/skins/default/html/de/loading/loading.html
+++ b/indra/newview/skins/default/html/de/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Wird geladen...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Wird geladen...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/en-us/loading/loading.html b/indra/newview/skins/default/html/en-us/loading/loading.html
index 34e5c84c4d..1c62d2f73e 100644
--- a/indra/newview/skins/default/html/en-us/loading/loading.html
+++ b/indra/newview/skins/default/html/en-us/loading/loading.html
@@ -1,9 +1,9 @@
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;loading...
- </td>
- </tr>
-</table>
-</body>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;loading...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/es/loading/loading.html b/indra/newview/skins/default/html/es/loading/loading.html
index f03284ba8c..c4260b34c0 100644
--- a/indra/newview/skins/default/html/es/loading/loading.html
+++ b/indra/newview/skins/default/html/es/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Cargando...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Cargando...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/fr/loading/loading.html b/indra/newview/skins/default/html/fr/loading/loading.html
index 23c0ef03bc..b3953448e9 100644
--- a/indra/newview/skins/default/html/fr/loading/loading.html
+++ b/indra/newview/skins/default/html/fr/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Chargement...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Chargement...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/hu/loading/loading.html b/indra/newview/skins/default/html/hu/loading/loading.html
index ade91f76c2..ab15a073ba 100644
--- a/indra/newview/skins/default/html/hu/loading/loading.html
+++ b/indra/newview/skins/default/html/hu/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Betöltés folyamatban...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Betöltés folyamatban...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/it/loading/loading.html b/indra/newview/skins/default/html/it/loading/loading.html
index 0f9af31f6e..ab37e41f04 100644
--- a/indra/newview/skins/default/html/it/loading/loading.html
+++ b/indra/newview/skins/default/html/it/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Attendi...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Attendi...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/ja/loading/loading.html b/indra/newview/skins/default/html/ja/loading/loading.html
index 069dc5d12f..35cf74a35f 100644
--- a/indra/newview/skins/default/html/ja/loading/loading.html
+++ b/indra/newview/skins/default/html/ja/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;ロード中...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;ロード中...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/nl/loading/loading.html b/indra/newview/skins/default/html/nl/loading/loading.html
index 39a8691f3f..0215bd7e47 100644
--- a/indra/newview/skins/default/html/nl/loading/loading.html
+++ b/indra/newview/skins/default/html/nl/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Laden...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Laden...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/pl/loading/loading.html b/indra/newview/skins/default/html/pl/loading/loading.html
index 515890c2d5..50f3dfb0c5 100644
--- a/indra/newview/skins/default/html/pl/loading/loading.html
+++ b/indra/newview/skins/default/html/pl/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Ładowanie...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Ładowanie...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/pt/loading/loading.html b/indra/newview/skins/default/html/pt/loading/loading.html
index 635ea62406..a83e1123d0 100644
--- a/indra/newview/skins/default/html/pt/loading/loading.html
+++ b/indra/newview/skins/default/html/pt/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Carregando...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Carregando...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/ru/loading/loading.html b/indra/newview/skins/default/html/ru/loading/loading.html
index dcc0d73c1a..892c0b9f7f 100644
--- a/indra/newview/skins/default/html/ru/loading/loading.html
+++ b/indra/newview/skins/default/html/ru/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Загрузка...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Загрузка...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/tr/loading/loading.html b/indra/newview/skins/default/html/tr/loading/loading.html
index e7812e7c8e..1ac07bff34 100644
--- a/indra/newview/skins/default/html/tr/loading/loading.html
+++ b/indra/newview/skins/default/html/tr/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Yükleniyor...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Yükleniyor...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/uk/loading/loading.html b/indra/newview/skins/default/html/uk/loading/loading.html
index 0f67994635..3b5b8679b4 100644
--- a/indra/newview/skins/default/html/uk/loading/loading.html
+++ b/indra/newview/skins/default/html/uk/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Завантаж...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;Завантаж...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/html/zh/loading/loading.html b/indra/newview/skins/default/html/zh/loading/loading.html
index 462ea291d9..d1d5d25c92 100644
--- a/indra/newview/skins/default/html/zh/loading/loading.html
+++ b/indra/newview/skins/default/html/zh/loading/loading.html
@@ -1,10 +1,10 @@
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;请等待...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
+<table width="100%" height="100%" border="0">
+ <tr>
+ <td align="center" valign="middle" style="font-size:0.8em;">
+ <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;请等待...
+ </td>
+ </tr>
+</table>
+</body>
diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png
index 28ff6ba976..9e7291d6fb 100644
--- a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png
+++ b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png
index 6343ddf035..e8fe243dc7 100644
--- a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png
+++ b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png
new file mode 100644
index 0000000000..d50dc69ffe
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png
new file mode 100644
index 0000000000..3d6964530d
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
new file mode 100644
index 0000000000..3ed0389961
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png
new file mode 100644
index 0000000000..3ebd5ea7a1
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
new file mode 100644
index 0000000000..3bdc4d1fd5
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
new file mode 100644
index 0000000000..0912442e29
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
new file mode 100644
index 0000000000..33db4a2de8
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png
new file mode 100644
index 0000000000..9e80fe2b84
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
new file mode 100644
index 0000000000..d36bfa55d4
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png
new file mode 100644
index 0000000000..962f6efb93
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
new file mode 100644
index 0000000000..715d597144
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
new file mode 100644
index 0000000000..b2ea680f23
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png
new file mode 100644
index 0000000000..1fc22686eb
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png
new file mode 100644
index 0000000000..5bd87f8a2f
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png
new file mode 100644
index 0000000000..a4c3f39e14
--- /dev/null
+++ b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Generic_Group.png b/indra/newview/skins/default/textures/icons/Generic_Group.png
index fdd65b49e1..9d76f75d0f 100644
--- a/indra/newview/skins/default/textures/icons/Generic_Group.png
+++ b/indra/newview/skins/default/textures/icons/Generic_Group.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Shoe.png b/indra/newview/skins/default/textures/icons/Inv_Shoe.png
index 51e1c7bbb7..1f52b0a6b6 100644
--- a/indra/newview/skins/default/textures/icons/Inv_Shoe.png
+++ b/indra/newview/skins/default/textures/icons/Inv_Shoe.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png
index 0455a52fdc..e0b18b2451 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png
index be0c379d84..101aaa42b1 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png
index ed4a512e04..c27f18e3c7 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png
index 2f5871b8ff..60e6a00a25 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png
index 724ac22744..55f97f3b4e 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png
index f0565f02dd..11ab1f1e60 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png
index f32b0570a1..b536762ddc 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png
index e0e6e14cca..bf618752f6 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png
index efca6776da..a67bbd0cc5 100644
--- a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png
+++ b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/object_icon.png b/indra/newview/skins/default/textures/icons/object_icon.png
new file mode 100644
index 0000000000..223874e631
--- /dev/null
+++ b/indra/newview/skins/default/textures/icons/object_icon.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 60c1470b89..f200566c0e 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -143,12 +143,12 @@ with the same filename but different name
<texture name="DownArrow" file_name="bottomtray/DownArrow.png" preload="false" />
- <texture name="DropDown_Disabled" file_name="widgets/DropDown_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
- <texture name="DropDown_Over" file_name="widgets/DropDown_Over.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
- <texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
- <texture name="DropDown_Selected" file_name="widgets/DropDown_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
- <texture name="DropDown_On" file_name="widgets/DropDown_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
- <texture name="DropDown_Off" file_name="widgets/DropDown_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
+ <texture name="DropDown_Disabled" file_name="widgets/DropDown_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
+ <texture name="DropDown_Over" file_name="widgets/DropDown_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
+ <texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
+ <texture name="DropDown_Selected" file_name="widgets/DropDown_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
+ <texture name="DropDown_On" file_name="widgets/DropDown_On.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
+ <texture name="DropDown_Off" file_name="widgets/DropDown_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
<texture name="DropTarget" file_name="widgets/DropTarget.png" preload="false" />
@@ -265,8 +265,8 @@ with the same filename but different name
<texture name="Linden_Dollar_Alert" file_name="widgets/Linden_Dollar_Alert.png"/>
<texture name="Linden_Dollar_Background" file_name="widgets/Linden_Dollar_Background.png"/>
- <texture name="ListItem_Select" file_name="widgets/ListItem_Select.png" preload="true" />
- <texture name="ListItem_Over" file_name="widgets/ListItem_Over.png" preload="true" />
+ <texture name="ListItem_Select" file_name="widgets/ListItem_Select.png" preload="true" scale.left="2" scale.bottom="2" scale.top="22" scale.right="278" />
+ <texture name="ListItem_Over" file_name="widgets/ListItem_Over.png" preload="true" scale.left="2" scale.bottom="2" scale.top="22" scale.right="278" />
<texture name="Lock" file_name="icons/Lock.png" preload="false" />
<texture name="Lock2" file_name="navbar/Lock.png" preload="false" />
@@ -321,20 +321,35 @@ with the same filename but different name
<texture name="NoEntryPassLines" file_name="world/NoEntryPassLines.png" use_mips="true" preload="false" />
<texture name="Object_Cone" file_name="build/Object_Cone.png" preload="false" />
+ <texture name="Object_Cone_Selected" file_name="build/Object_Cone_Selected.png" preload="false" />
<texture name="Object_Cube" file_name="build/Object_Cube.png" preload="false" />
+ <texture name="Object_Cube_Selected" file_name="build/Object_Cube_Selected.png" preload="false" />
<texture name="Object_Cylinder" file_name="build/Object_Cylinder.png" preload="false" />
+ <texture name="Object_Cylinder_Selected" file_name="build/Object_Cylinder_Selected.png" preload="false" />
<texture name="Object_Grass" file_name="build/Object_Grass.png" preload="false" />
+ <texture name="Object_Grass_Selected" file_name="build/Object_Grass_Selected.png" preload="false" />
<texture name="Object_Hemi_Cone" file_name="build/Object_Hemi_Cone.png" preload="false" />
+ <texture name="Object_Hemi_Cone_Selected" file_name="build/Object_Hemi_Cone_Selected.png" preload="false" />
<texture name="Object_Hemi_Cylinder" file_name="build/Object_Hemi_Cylinder.png" preload="false" />
+ <texture name="Object_Hemi_Cylinder_Selected" file_name="build/Object_Hemi_Cylinder_Selected.png" preload="false" />
<texture name="Object_Hemi_Sphere" file_name="build/Object_Hemi_Sphere.png" preload="false" />
+ <texture name="Object_Hemi_Sphere_Selected" file_name="build/Object_Hemi_Sphere_Selected.png" preload="false" />
<texture name="Object_Prism" file_name="build/Object_Prism.png" preload="false" />
+ <texture name="Object_Prism_Selected" file_name="build/Object_Prism_Selected.png" preload="false" />
<texture name="Object_Pyramid" file_name="build/Object_Pyramid.png" preload="false" />
+ <texture name="Object_Pyramid_Selected" file_name="build/Object_Pyramid_Selected.png" preload="false" />
<texture name="Object_Ring" file_name="build/Object_Ring.png" preload="false" />
+ <texture name="Object_Ring_Selected" file_name="build/Object_Ring_Selected.png" preload="false" />
<texture name="Object_Sphere" file_name="build/Object_Sphere.png" preload="false" />
+ <texture name="Object_Sphere_Selected" file_name="build/Object_Sphere_Selected.png" preload="false" />
<texture name="Object_Tetrahedron" file_name="build/Object_Tetrahedron.png" preload="false" />
+ <texture name="Object_Tetrahedron_Selected" file_name="build/Object_Tetrahedron_Selected.png" preload="false" />
<texture name="Object_Torus" file_name="build/Object_Torus.png" preload="false" />
+ <texture name="Object_Torus_Selected" file_name="build/Object_Torus_Selected.png" preload="false" />
<texture name="Object_Tree" file_name="build/Object_Tree.png" preload="false" />
+ <texture name="Object_Tree_Selected" file_name="build/Object_Tree_Selected.png" preload="false" />
<texture name="Object_Tube" file_name="build/Object_Tube.png" preload="false" />
+ <texture name="Object_Tube_Selected" file_name="build/Object_Tube_Selected.png" preload="false" />
<texture name="OptionsMenu_Disabled" file_name="icons/OptionsMenu_Disabled.png" preload="false" />
<texture name="OptionsMenu_Off" file_name="icons/OptionsMenu_Off.png" preload="false" />
@@ -353,7 +368,7 @@ with the same filename but different name
<texture name="Parcel_Build_Dark" file_name="icons/Parcel_Build_Dark.png" preload="false" />
<texture name="Parcel_BuildNo_Dark" file_name="icons/Parcel_BuildNo_Dark.png" preload="false" />
- <texture name="Parcel_Damage_Dark" file_name="icons/Parcel_Health_Dark.png" preload="false" />
+ <texture name="Parcel_Damage_Dark" file_name="icons/Parcel_Damage_Dark.png" preload="false" />
<texture name="Parcel_DamageNo_Dark" file_name="icons/Parcel_DamageNo_Dark.png" preload="false" />
<texture name="Parcel_Evry_Dark" file_name="icons/Parcel_Evry_Dark.png" preload="false" />
<texture name="Parcel_Exp_Dark" file_name="icons/Parcel_Exp_Dark.png" preload="false" />
@@ -361,6 +376,7 @@ with the same filename but different name
<texture name="Parcel_FlyNo_Dark" file_name="icons/Parcel_FlyNo_Dark.png" preload="false" />
<texture name="Parcel_ForSale_Dark" file_name="icons/Parcel_ForSale_Dark.png" preload="false" />
<texture name="Parcel_ForSaleNo_Dark" file_name="icons/Parcel_ForSaleNo_Dark.png" preload="false" />
+ <texture name="Parcel_Health_Dark" file_name="icons/Parcel_Health_Dark.png" preload="false" />
<texture name="Parcel_M_Dark" file_name="icons/Parcel_M_Dark.png" preload="false" />
<texture name="Parcel_PG_Dark" file_name="icons/Parcel_PG_Dark.png" preload="false" />
<texture name="Parcel_Push_Dark" file_name="icons/Parcel_Push_Dark.png" preload="false" />
@@ -499,6 +515,7 @@ with the same filename but different name
<texture name="SliderThumb_Press" file_name="widgets/SliderThumb_Press.png" />
<texture name="SL_Logo" file_name="icons/SL_Logo.png" preload="true" />
+ <texture name="OBJECT_Icon" file_name="icons/object_icon.png" preload="true" />
<texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
<texture name="Snapshot_Over" file_name="bottomtray/Snapshot_Over.png" preload="false" />
@@ -585,10 +602,15 @@ with the same filename but different name
scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" />
<texture name="Tool_Create" file_name="build/Tool_Create.png" preload="false" />
+ <texture name="Tool_Create_Selected" file_name="build/Tool_Create_Selected.png" preload="false" />
<texture name="Tool_Dozer" file_name="build/Tool_Dozer.png" preload="false" />
+ <texture name="Tool_Dozer_Selected" file_name="build/Tool_Dozer_Selected.png" preload="false" />
<texture name="Tool_Face" file_name="build/Tool_Face.png" preload="false" />
+ <texture name="Tool_Face_Selected" file_name="build/Tool_Face_Selected.png" preload="false" />
<texture name="Tool_Grab" file_name="build/Tool_Grab.png" preload="false" />
+ <texture name="Tool_Grab_Selected" file_name="build/Tool_Grab_Selected.png" preload="false" />
<texture name="Tool_Zoom" file_name="build/Tool_Zoom.png" preload="false" />
+ <texture name="Tool_Zoom_Selected" file_name="build/Tool_Zoom_Selected.png" preload="false" />
<texture name="Toolbar_Divider" file_name="containers/Toolbar_Divider.png" preload="false" />
<texture name="Toolbar_Left_Off" file_name="containers/Toolbar_Left_Off.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
@@ -611,8 +633,8 @@ with the same filename but different name
<texture name="Unread_Msg" file_name="bottomtray/Unread_Msg.png" preload="false" />
<texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" />
- <texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
- <texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+ <texture name="Volume_Background" file_name="windows/Volume_Background.png" preload="false"
+ scale.left="6" scale.top="33" scale.right="63" scale.bottom="10" />
<texture name="VoicePTT_Lvl1" file_name="bottomtray/VoicePTT_Lvl1.png" preload="false" />
<texture name="VoicePTT_Lvl2" file_name="bottomtray/VoicePTT_Lvl2.png" preload="false" />
@@ -620,6 +642,9 @@ with the same filename but different name
<texture name="VoicePTT_Off" file_name="bottomtray/VoicePTT_Off.png" preload="false" />
<texture name="VoicePTT_On" file_name="bottomtray/VoicePTT_On.png" preload="false" />
+ <texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+ <texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+
<texture name="WebBasedMediaBackground" file_name="windows/WebBasedMediaBackground.png" preload="false" />
<texture name="Widget_DownArrow" file_name="icons/Widget_DownArrow.png" preload="true" />
@@ -654,6 +679,7 @@ with the same filename but different name
<texture name="silhouette.j2c" use_mips="true" />
<texture name="foot_shadow.j2c" use_mips="true" />
<texture name="cloud-particle.j2c" use_mips="true" />
+ <texture name="transparent.j2c" use_mips="true" />
<!--WARNING OLD ART BELOW *do not use*-->
<texture name="icn_chatbar.tga" />
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png b/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png
new file mode 100644
index 0000000000..361fab59e0
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Volume_Background.png b/indra/newview/skins/default/textures/windows/Volume_Background.png
new file mode 100644
index 0000000000..43aaa441f5
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/Volume_Background.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/world/BeaconArrow.png b/indra/newview/skins/default/textures/world/BeaconArrow.png
index 12dc246d51..54934f738a 100644
--- a/indra/newview/skins/default/textures/world/BeaconArrow.png
+++ b/indra/newview/skins/default/textures/world/BeaconArrow.png
Binary files differ
diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml
index cb5d618dde..b4af427538 100644
--- a/indra/newview/skins/default/xui/da/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/da/floater_about_land.xml
@@ -1,7 +1,59 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floaterland" title="OM LAND">
+ <floater.string name="Minutes">
+ [MINUTES] minutter
+ </floater.string>
+ <floater.string name="Minute">
+ minut
+ </floater.string>
+ <floater.string name="Seconds">
+ [SECONDS] sekunder
+ </floater.string>
+ <floater.string name="Remaining">
+ mangler
+ </floater.string>
<tab_container name="landtab">
- <panel label="Generelt" name="land_general_panel">
+ <panel label="GENERELT" name="land_general_panel">
+ <panel.string name="new users only">
+ Kun nye brugere
+ </panel.string>
+ <panel.string name="anyone">
+ Alle
+ </panel.string>
+ <panel.string name="area_text">
+ Størrelse
+ </panel.string>
+ <panel.string name="area_size_text">
+ [AREA] m²
+ </panel.string>
+ <panel.string name="auction_id_text">
+ Auktion nr: [ID]
+ </panel.string>
+ <panel.string name="need_tier_to_modify">
+ Du skal godkende dit køb for at kunne æmdre på dette land.
+ </panel.string>
+ <panel.string name="group_owned_text">
+ (Gruppe ejet)
+ </panel.string>
+ <panel.string name="profile_text">
+ Profil...
+ </panel.string>
+ <panel.string name="info_text">
+ Info...
+ </panel.string>
+ <panel.string name="public_text">
+ (offentlig)
+ </panel.string>
+ <panel.string name="none_text">
+ (ingen)
+ </panel.string>
+ <panel.string name="sale_pending_text">
+ (Salg i gang)
+ </panel.string>
+ <panel.string name="no_selection_text">
+ Pacel ikke valgt.
+Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel for at se detaljer.
+ </panel.string>
<text name="Name:">
Navn:
</text>
@@ -26,7 +78,6 @@
<text name="OwnerText">
Leyla Linden
</text>
- <button label="Profil..." label_selected="Profil..." name="Profile..."/>
<text name="Group:">
Gruppe:
</text>
@@ -78,54 +129,23 @@
<button label="Efterlad land..." label_selected="Efterlad land..." name="Abandon Land..."/>
<button label="Kræv tilbage..." label_selected="Kræv tilbage..." name="Reclaim Land..."/>
<button label="Linden salg..." label_selected="Linden salg..." name="Linden Sale..." tool_tip="Land skal være ejet, indholdsrating sat og ikke allerede på auktion."/>
- <panel.string name="new users only">
- Kun nye brugere
- </panel.string>
- <panel.string name="anyone">
- Alle
- </panel.string>
- <panel.string name="area_text">
- Størrelse
- </panel.string>
- <panel.string name="area_size_text">
- [AREA] m²
- </panel.string>
- <panel.string name="auction_id_text">
- Auktion nr: [ID]
- </panel.string>
- <panel.string name="need_tier_to_modify">
- Du skal godkende dit køb for at kunne æmdre på dette land.
- </panel.string>
- <panel.string name="group_owned_text">
- (Gruppe ejet)
- </panel.string>
- <panel.string name="profile_text">
- Profil...
- </panel.string>
- <panel.string name="info_text">
- Info...
- </panel.string>
- <panel.string name="public_text">
- (offentlig)
+ </panel>
+ <panel label="REGLER" name="land_covenant_panel">
+ <panel.string name="can_resell">
+ Købt land i denne region må sælges videre
</panel.string>
- <panel.string name="none_text">
- (ingen)
+ <panel.string name="can_not_resell">
+ Købt land i denne region må ikke sælges videre
</panel.string>
- <panel.string name="sale_pending_text">
- (Salg i gang)
+ <panel.string name="can_change">
+ Købt jord i denne region må gerne samles eller opdeles.
</panel.string>
- <panel.string name="no_selection_text">
- Pacel ikke valgt.
-Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel for at se detaljer.
+ <panel.string name="can_not_change">
+ Købt jord i denne region må íkke samles eller opdeles.
</panel.string>
- </panel>
- <panel label="Regler" name="land_covenant_panel">
<text name="estate_section_lbl">
Estate:
</text>
- <text name="estate_name_lbl">
- Navn:
- </text>
<text name="estate_name_text">
Hovedland
</text>
@@ -144,9 +164,6 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
<text name="region_section_lbl">
Region:
</text>
- <text name="region_name_lbl">
- Navn:
- </text>
<text name="region_name_text">
leyla
</text>
@@ -174,35 +191,23 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
<text name="changeable_clause">
Land i denne region må ikke samles/opdeles.
</text>
- <panel.string name="can_resell">
- Købt land i denne region må sælges videre
- </panel.string>
- <panel.string name="can_not_resell">
- Købt land i denne region må ikke sælges videre
- </panel.string>
- <panel.string name="can_change">
- Købt jord i denne region må gerne samles eller opdeles.
+ </panel>
+ <panel label="OBJEKTER" name="land_objects_panel">
+ <panel.string name="objects_available_text">
+ [COUNT] ud af [MAX] ([AVAILABLE] ledige)
</panel.string>
- <panel.string name="can_not_change">
- Købt jord i denne region må íkke samles eller opdeles.
+ <panel.string name="objects_deleted_text">
+ [COUNT] ud af [MAX] ([DELETED] bliver slettet)
</panel.string>
- </panel>
- <panel label="Objekter" name="land_objects_panel">
<text name="parcel_object_bonus">
Region objekt bonus faktor: [BONUS]
</text>
<text name="Simulator primitive usage:">
- Prims brugt i denne Sim:
+ Prim forbrug:
</text>
<text name="objects_available">
[COUNT] ud af [MAX] ([AVAILABLE] ledige)
</text>
- <panel.string name="objects_available_text">
- [COUNT] ud af [MAX] ([AVAILABLE] ledige)
- </panel.string>
- <panel.string name="objects_deleted_text">
- [COUNT] ud af [MAX] ([DELETED] bliver slettet)
- </panel.string>
<text name="Primitives parcel supports:">
Prims til rådighed:
</text>
@@ -251,33 +256,63 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
<text name="Object Owners:">
Objekt ejere:
</text>
- <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh List"/>
+ <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh List" tool_tip="Refresh Object List"/>
<button label="Returnér objekter..." label_selected="Returnér objekter..." name="Return objects..."/>
<name_list name="owner list">
- <column label="Type" name="type"/>
- <column label="Navn" name="name"/>
- <column label="Antal" name="count"/>
- <column label="Nyeste" name="mostrecent"/>
+ <name_list.columns label="Type" name="type"/>
+ <name_list.columns label="Navn" name="name"/>
+ <name_list.columns label="Antal" name="count"/>
+ <name_list.columns label="Nyeste" name="mostrecent"/>
</name_list>
</panel>
- <panel label="Indstillinger" name="land_options_panel">
+ <panel label="INDSTILLINGER" name="land_options_panel">
+ <panel.string name="search_enabled_tooltip">
+ Lad beboere se denne parcel i søgeresultater
+ </panel.string>
+ <panel.string name="search_disabled_small_tooltip">
+ Denne mulighed er ikke til stede da parcellens område er 128 m² eller mindre.
+Kun større parceller kan vises i søgning.
+ </panel.string>
+ <panel.string name="search_disabled_permissions_tooltip">
+ Dette valg er lukket da du ikke kan ændre på denne parcels opsætning.
+ </panel.string>
+ <panel.string name="mature_check_mature">
+ Mature indhold
+ </panel.string>
+ <panel.string name="mature_check_adult">
+ Adult indhold
+ </panel.string>
+ <panel.string name="mature_check_mature_tooltip">
+ Din parcel information eller indhold anses for at være &apos;adult&apos;.
+ </panel.string>
+ <panel.string name="mature_check_adult_tooltip">
+ Din parcel information eller indhold anses for at være &apos;adult&apos;.
+ </panel.string>
+ <panel.string name="landing_point_none">
+ (ingen)
+ </panel.string>
+ <panel.string name="push_restrict_text">
+ Skub forbudt
+ </panel.string>
+ <panel.string name="push_restrict_region_text">
+ Skub forbudt (Uanset region indstilling)
+ </panel.string>
<text name="allow_label">
Tillad andre beboere at:
</text>
<check_box label="Redigere terræn" name="edit land check" tool_tip="Hvis dette er valg, kan enhver redigere dit land. Det er bedst ikke at vælge her, da det altid er muligt for dig som ejer at ændre terræn på dit eget land."/>
- <check_box label="Lave landemærker" name="check landmark"/>
<check_box label="Flyve" name="check fly" tool_tip="Hvis valgt, kan beboere flyve på dit land. Hvis ikke valgt kan beboere kun flyve ind på dit land og over dit land."/>
- <text name="allow_label2" left="194">
+ <text left="194" name="allow_label2">
Lave objekter:
</text>
<check_box label="Alle beboere" name="edit objects check"/>
<check_box label="Gruppe" name="edit group objects check"/>
- <text name="allow_label3" left="170">
+ <text left="170" name="allow_label3">
Anbringe objekter:
</text>
<check_box label="Alle beboere" name="all object entry check"/>
<check_box label="Gruppe" name="group object entry check"/>
- <text name="allow_label4" left="200">
+ <text left="200" name="allow_label4">
Køre scripts:
</text>
<check_box label="Alle beboere" name="check other scripts"/>
@@ -287,73 +322,37 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
</text>
<check_box label="Sikker (ingen skade)" name="check safe" tool_tip="Hvis valgt, er det ikke muligt at forårsage skade på andre beboere. Hvis fravalgt er det muligt at få skader (f.eks. ved kamp)."/>
<check_box label="Skub forbudt" name="PushRestrictCheck" tool_tip="Forhindrer scripts i at skubbe. Valg af denne mulighed, kan være nyttigt for at forhindre forstyrrende adfærd på dit land."/>
- <check_box label="Vis sted i søgning (L$30/uge) i kategorien:" name="ShowDirectoryCheck" tool_tip="Lad dit parcel blive vist i søge resultaterne"/>
- <panel.string name="search_enabled_tooltip">
- Lad beboere se denne parcel i søgeresultater
- </panel.string>
- <panel.string name="search_disabled_small_tooltip">
- Denne mulighed er ikke til stede da parcellens område er 128 m² eller mindre.
-Kun større parceller kan vises i søgning.
- </panel.string>
- <panel.string name="search_disabled_permissions_tooltip">
- Dette valg er lukket da du ikke kan ændre på denne parcels opsætning.
- </panel.string>
+ <check_box label="Vis sted i søgning (L$30/uge)" name="ShowDirectoryCheck" tool_tip="Lad dit parcel blive vist i søge resultaterne"/>
<combo_box name="land category with adult">
- <combo_box.item name="item0" label="Enhver kategori"
- />
- <combo_box.item name="item1" label="Linden sted"
- />
- <combo_box.item name="item2" label="Adult"
- />
- <combo_box.item name="item3" label="Kunst &amp; kultur"
- />
- <combo_box.item name="item4" label="Business"
- />
- <combo_box.item name="item5" label="Uddannelse"
- />
- <combo_box.item name="item6" label="Spil"
- />
- <combo_box.item name="item7" label="Afslapning"
- />
- <combo_box.item name="item8" label="Nybegynder venligt"
- />
- <combo_box.item name="item9" label="Parker &amp; natur"
- />
- <combo_box.item name="item10" label="Beboelse"
- />
- <combo_box.item name="item11" label="Indkøb"
- />
- <combo_box.item name="item12" label="Andet"
- />
+ <combo_box.item label="Enhver kategori" name="item0"/>
+ <combo_box.item label="Linden sted" name="item1"/>
+ <combo_box.item label="Adult" name="item2"/>
+ <combo_box.item label="Kunst &amp; kultur" name="item3"/>
+ <combo_box.item label="Business" name="item4"/>
+ <combo_box.item label="Uddannelse" name="item5"/>
+ <combo_box.item label="Spil" name="item6"/>
+ <combo_box.item label="Afslapning" name="item7"/>
+ <combo_box.item label="Nybegynder venligt" name="item8"/>
+ <combo_box.item label="Parker &amp; natur" name="item9"/>
+ <combo_box.item label="Beboelse" name="item10"/>
+ <combo_box.item label="Indkøb" name="item11"/>
+ <combo_box.item label="Andet" name="item12"/>
</combo_box>
<combo_box name="land category">
- <combo_box.item name="item0" label="Enhver kategori" />
- <combo_box.item name="item1" label="Linden sted" />
- <combo_box.item name="item3" label="Kunst &amp; kultur" />
- <combo_box.item name="item4" label="Business" />
- <combo_box.item name="item5" label="Uddannelse" />
- <combo_box.item name="item6" label="Spil" />
- <combo_box.item name="item7" label="Afslapning" />
- <combo_box.item name="item8" label="Nybegynder venligt" />
- <combo_box.item name="item9" label="Parker &amp; natur" />
- <combo_box.item name="item10" label="Beboelse" />
- <combo_box.item name="item11" label="Indkøb" />
- <combo_box.item name="item12" label="Andet" />
+ <combo_box.item label="Enhver kategori" name="item0"/>
+ <combo_box.item label="Linden sted" name="item1"/>
+ <combo_box.item label="Kunst &amp; kultur" name="item3"/>
+ <combo_box.item label="Business" name="item4"/>
+ <combo_box.item label="Uddannelse" name="item5"/>
+ <combo_box.item label="Spil" name="item6"/>
+ <combo_box.item label="Afslapning" name="item7"/>
+ <combo_box.item label="Nybegynder venligt" name="item8"/>
+ <combo_box.item label="Parker &amp; natur" name="item9"/>
+ <combo_box.item label="Beboelse" name="item10"/>
+ <combo_box.item label="Indkøb" name="item11"/>
+ <combo_box.item label="Andet" name="item12"/>
</combo_box>
- <button label="?" label_selected="?" name="?"/>
<check_box label="Mature indhold" name="MatureCheck" tool_tip=""/>
- <panel.string name="mature_check_mature">
- Mature indhold
- </panel.string>
- <panel.string name="mature_check_adult">
- Adult indhold
- </panel.string>
- <panel.string name="mature_check_mature_tooltip">
- Din parcel information eller indhold anses for at være &apos;adult&apos;.
- </panel.string>
- <panel.string name="mature_check_adult_tooltip">
- Din parcel information eller indhold anses for at være &apos;adult&apos;.
- </panel.string>
<text name="Snapshot:">
Foto:
</text>
@@ -361,40 +360,35 @@ Kun større parceller kan vises i søgning.
<text name="landing_point">
Landingspunkt: [LANDING]
</text>
- <panel.string name="landing_point_none">
- (ingen)
- </panel.string>
<button label="Vælg" label_selected="Vælg" name="Set" tool_tip="Indstiller landingspunkt, hvor de besøgende ankommer. Sættes til din avatars aktuelle placering i denne parcel."/>
<button label="Fjern" label_selected="Fjern" name="Clear" tool_tip="Fjerner oplysning om landingspunkt."/>
<text name="Teleport Routing: ">
Teleport valg:
</text>
<combo_box name="landing type" tool_tip="Vælg hvordan du vil håndtere teleporteringer til dit land.">
- <combo_box.item name="Blocked" label="Blokeret" />
- <combo_box.item name="LandingPoint" label="Landingspunkt" />
- <combo_box.item name="Anywhere" label="Hvor som helst" />
+ <combo_box.item label="Blokeret" name="Blocked"/>
+ <combo_box.item label="Landingspunkt" name="LandingPoint"/>
+ <combo_box.item label="Hvor som helst" name="Anywhere"/>
</combo_box>
- <panel.string name="push_restrict_text">
- Skub forbudt
- </panel.string>
- <panel.string name="push_restrict_region_text">
- Skub forbudt (Uanset region indstilling)
- </panel.string>
</panel>
- <panel label="Medier" name="land_media_panel">
- <text name="with media:" left="4">
+ <panel label="MEDIA" name="land_media_panel">
+ <text left="4" name="with media:">
Medie type:
</text>
<combo_box name="media type" tool_tip="Specificer om URL-adressen er til en film, hjemmeside eller et andet medie."/>
- <text name="at URL:" left="4">
+ <text left="4" name="at URL:">
Medie URL:
</text>
<button label="Vælg..." label_selected="Vælg..." name="set_media_url"/>
- <text name="Description:" left="4">
+ <text name="CurrentURL:">
+ Nuværende side:
+ </text>
+ <check_box label="Skjul medie URL" name="hide_media_url" tool_tip="Klik her for at skjule medie adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/>
+ <text left="4" name="Description:">
Beskrivelse:
</text>
<line_editor name="url_description" tool_tip="Tekst vist ved siden af Afspil/Hent knappen"/>
- <text name="Media texture:" left="4">
+ <text left="4" name="Media texture:">
Erstat tekstur:
</text>
<texture_picker label="" name="media texture" tool_tip="Klik for at vælge billede"/>
@@ -402,13 +396,7 @@ Kun større parceller kan vises i søgning.
(Objekter der har denne tekstur vil vise filmen eller
web-siden, efter du klikker på play knappen.)
</text>
- <text name="Options:">
- Medie valg:
- </text>
<check_box label="Auto skalér" name="media_auto_scale" tool_tip="Vælg denne mulighed for at skalere indholdet for dette parcel automatisk. Det kan være lidt langsommere og have lavere kvalitet, men ingen anden tekstur skalering eller tilpasning vil være nødvendigt."/>
- <check_box label="Gentag afspil" name="media_loop" tool_tip="Gentager automatisk medie, når det er færdigt med at spille starter det automatisk forfra."/>
- <check_box label="Skjul medie URL" name="hide_media_url" tool_tip="Klik her for at skjule medie adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/>
- <check_box label="Skjul musik URL" name="hide_music_url" tool_tip="Klik her for at skjule musik adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/>
<text name="media_size" tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard." width="105">
Medie Størrelse:
</text>
@@ -417,56 +405,42 @@ web-siden, efter du klikker på play knappen.)
<text name="pixels">
pixels
</text>
- <text name="MusicURL:">
- Musik URL:
- </text>
- <text name="Sound:">
- Lyd:
- </text>
- <check_box label="Begræns lyde fra bevægelser og objekter til denne parcel" name="check sound local"/>
- <button label="?" label_selected="?" name="?" left="400"/>
- <text name="Voice settings:">
- Stemme:
+ <text name="Options:">
+ Medie valg:
</text>
- <radio_group name="parcel_voice_channel">
- <radio_item name="Estate" label="Brug Estate kanalen" />
- <radio_item name="Private" label="Brug en privat kanal" />
- <radio_item name="Disabled" label="Slå stemme chat fra på denne parcel" />
- </radio_group>
+ <check_box label="Gentag afspil" name="media_loop" tool_tip="Gentager automatisk medie, når det er færdigt med at spille starter det automatisk forfra."/>
+ </panel>
+ <panel label="LYD" name="land_audio_panel">
+ <check_box label="Tillad stemmer" name="parcel_enable_voice_channel"/>
+ <check_box label="Tillad stemmer (håndteret af estate)" name="parcel_enable_voice_channel_is_estate_disabled"/>
</panel>
- <panel label="Adgang" name="land_access_panel">
+ <panel label="ADGANG" name="land_access_panel">
+ <panel.string name="access_estate_defined">
+ (Defineret via estate)
+ </panel.string>
+ <panel.string name="estate_override">
+ En eller flere af disse valg er indstillet på estate niveau
+ </panel.string>
<text name="Limit access to this parcel to:">
Adgang til denne parcel
</text>
- <check_box label="Tillad offentlig adgang" name="public_access"/>
+ <check_box label="Tillad offentlig adgang [MATURITY]" name="public_access"/>
<text name="Only Allow">
- Blokér adgang for:
+ Blokér adgang for::
</text>
- <check_box label="Beboere der ikke har givet betalings oplysninger til Linden Lab" name="limit_payment" tool_tip="Blokér beboere der ikke har afgivet identifikationsoplysninger."/>
- <check_box label="Beboere der ikke er godkendt som voksne" name="limit_age_verified" tool_tip="Blokér beboere der ikke har verificeret deres alder. Se support.secondlife.com for mere information."/>
- <panel.string name="estate_override">
- En eller flere af disse valg er indstillet på estate niveau
- </panel.string>
+ <check_box label="Beboere der ikke har givet betalings oplysninger til Linden Lab [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Blokér beboere der ikke har afgivet identifikationsoplysninger."/>
+ <check_box label="Alders verifikation [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Blokér beboere der ikke har verificeret deres alder. Se support.secondlife.com for mere information."/>
<check_box label="Tillad adgang til gruppen: [GROUP]" name="GroupCheck" tool_tip="Vælg gruppe under fanen &apos;generelt&apos;."/>
<check_box label="Sælg adgang til:" name="PassCheck" tool_tip="Tillader midlertidig adgang til denne parcel"/>
<combo_box name="pass_combo">
- <combo_box.item name="Anyone" label="Alle" />
- <combo_box.item name="Group" label="Gruppe" />
+ <combo_box.item label="Alle" name="Anyone"/>
+ <combo_box.item label="Gruppe" name="Group"/>
</combo_box>
<spinner label="Pris i L$:" name="PriceSpin"/>
<spinner label="Timers adgang:" name="HoursSpin"/>
- <text label="Tillad altid" name="AllowedText">
- Altid godkendte beboere
- </text>
- <name_list name="AccessList" tool_tip="([LISTED] vist, [MAX] max)"/>
- <button label="Tilføj..." label_selected="Tilføj..." name="add_allowed"/>
- <button label="Fjern" label_selected="Fjern" name="remove_allowed"/>
- <text label="Blokér" name="BanCheck">
- Blokerede beboere
- </text>
- <name_list name="BannedList" tool_tip="([LISTED] vist, [MAX] max)"/>
- <button label="Tilføj..." label_selected="Tilføj..." name="add_banned"/>
- <button label="Fjern" label_selected="Fjern" name="remove_banned"/>
+ <panel name="Allowed_layout_panel">
+ <name_list name="AccessList" tool_tip="([LISTED] vist, [MAX] maks.)"/>
+ </panel>
</panel>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_animation_preview.xml b/indra/newview/skins/default/xui/da/floater_animation_preview.xml
index 8cb0eee601..47e02f0704 100644
--- a/indra/newview/skins/default/xui/da/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/da/floater_animation_preview.xml
@@ -1,97 +1,184 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Animation Preview" title="">
+ <floater.string name="failed_to_initialize">
+ Fejlede at starte bevægelse
+ </floater.string>
+ <floater.string name="anim_too_long">
+ Animations filen er [LENGTH] sekunder lang.
+
+Maksimal animations længde er [MAX_LENGTH] sekunder.
+ </floater.string>
+ <floater.string name="failed_file_read">
+ Kan ikke læse animations fil.
+
+[STATUS]
+ </floater.string>
+ <floater.string name="E_ST_OK">
+ OK
+ </floater.string>
+ <floater.string name="E_ST_EOF">
+ Fil afsluttet for tidligt.
+ </floater.string>
+ <floater.string name="E_ST_NO_CONSTRAINT">
+ Kan ikke læse &quot;constraint definition&quot;.
+ </floater.string>
+ <floater.string name="E_ST_NO_FILE">
+ Kan ikke åbne BVH fil.
+ </floater.string>
+ <floater.string name="E_ST_NO_HIER">
+ Ugyldig header i HIERARCHY.
+ </floater.string>
+ <floater.string name="E_ST_NO_JOINT">
+ Kan ikke finde &quot;ROOT&quot; eller &quot;JOINT&quot;.
+ </floater.string>
+ <floater.string name="E_ST_NO_NAME">
+ Kan ikke finde JOINT navn.
+ </floater.string>
+ <floater.string name="E_ST_NO_OFFSET">
+ Kan ikke finde OFFSET.
+ </floater.string>
+ <floater.string name="E_ST_NO_CHANNELS">
+ Kan ikke finde CHANNELS.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROTATION">
+ Kan ikke læse &quot;rotation order&quot;.
+ </floater.string>
+ <floater.string name="E_ST_NO_AXIS">
+ Kan ikke finde rotationsakser.
+ </floater.string>
+ <floater.string name="E_ST_NO_MOTION">
+ Kan ikke finde MOTION.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAMES">
+ Kan ikke læse antal &quot;frames&quot;.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAME_TIME">
+ Kan ikke læse &quot;frame time&quot;.
+ </floater.string>
+ <floater.string name="E_ST_NO_POS">
+ Kan ikke læse positionsværdier.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROT">
+ Kan ikke læse rotationsværdier.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_FILE">
+ kan ikke åbne &quot;translation file&quot;.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HEADER">
+ Kan ikke læse &quot;translation header.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_NAME">
+ Kan ikke aflæse &quot;translation&quot; navne.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_IGNORE">
+ Kan ikke læse &quot;translation ignore&quot; værdi.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_RELATIVE">
+ Kan ikke læse &quot;translation relative&quot; værdi.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_OUTNAME">
+ Kan ikke læse &quot;translation outname&quot; værdi.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MATRIX">
+ Kan ikke læse &quot;translation matrix&quot;.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGECHILD">
+ Kan ikke læse &quot;mergechild&quot; navn.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGEPARENT">
+ Kan ikke læse &quot;mergeparent&quot; navn.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_PRIORITY">
+ Kan ikke finde prioritetsværdi.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_LOOP">
+ Kan ikke læse &quot;loop&quot; værdi.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEIN">
+ kan ikke læse &quot;easeIn&quot; værdier.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEOUT">
+ Kan ikke læse &quot;easeOut&quot; værdier.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HAND">
+ Kan ikke læse &quot;hand morph&quot; værdi.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EMOTE">
+ kan ikke læse &quot;emote&quot; navn.
+ </floater.string>
<text name="name_label">
Navn:
</text>
<text name="description_label">
Beskrivelse:
</text>
- <spinner label="Prioritet" name="priority"
- tool_tip="Vælg hvilke andre animationer der har lavere prioritet end denne." />
- <check_box label="Gentag" name="loop_check" tool_tip="Gentager animationen konstant." />
- <spinner left="76" label_width="40" width="105" label="Ind(%)" name="loop_in_point" tool_tip="Sætter punktet hvor gentagelsen genstarter fra."/>
- <spinner label="Ud (%)" name="loop_out_point"
- tool_tip="Sætter punktet i animationen der afslutter gentagelsen." />
+ <spinner label="Prioritet" name="priority" tool_tip="Vælg hvilke andre animationer der &quot;overstyres&quot; af denne"/>
+ <check_box label="Gentag" name="loop_check" tool_tip="Gentager animationen konstant"/>
+ <spinner label="Ind(%)" label_width="40" left="76" name="loop_in_point" tool_tip="Sætter punktet hvor gentagelsen genstarter fra" width="105"/>
+ <spinner label="Ud (%)" name="loop_out_point" tool_tip="Sætter punktet i animationen der afslutter gentagelsen"/>
<text name="hand_label">
Hånd posering
</text>
- <combo_box label="" name="hand_pose_combo"
- tool_tip="Kontrollerer hvad hænderne går i løbet af animationen." width="140">
- <combo_box.item name="Spread" label="Spredt" />
- <combo_box.item name="Relaxed" label="Afslappet" />
- <combo_box.item name="PointBoth" label="Peg begge" />
- <combo_box.item name="Fist" label="Knytnæver" />
- <combo_box.item name="RelaxedLeft" label="Afslappet venstre" />
- <combo_box.item name="PointLeft" label="Peg venstre" />
- <combo_box.item name="FistLeft" label="Knytnæve venstre" />
- <combo_box.item name="RelaxedRight" label="Afslappet højre" />
- <combo_box.item name="PointRight" label="Peg højre" />
- <combo_box.item name="FistRight" label="Knytnæve højre" />
- <combo_box.item name="SaluteRight" label="Honnør højre" />
- <combo_box.item name="Typing" label="Skriver" />
- <combo_box.item name="PeaceRight" label="Fredstegn højre" />
+ <combo_box label="" name="hand_pose_combo" tool_tip="Kontrollerer hvad hænderne går i løbet af animationen" width="140">
+ <combo_box.item label="Spredt" name="Spread"/>
+ <combo_box.item label="Afslappet" name="Relaxed"/>
+ <combo_box.item label="Peg begge" name="PointBoth"/>
+ <combo_box.item label="Knytnæver" name="Fist"/>
+ <combo_box.item label="Afslappet venstre" name="RelaxedLeft"/>
+ <combo_box.item label="Peg venstre" name="PointLeft"/>
+ <combo_box.item label="Knytnæve venstre" name="FistLeft"/>
+ <combo_box.item label="Afslappet højre" name="RelaxedRight"/>
+ <combo_box.item label="peg højre" name="PointRight"/>
+ <combo_box.item label="knytnæve højre" name="FistRight"/>
+ <combo_box.item label="Honnør højre" name="SaluteRight"/>
+ <combo_box.item label="Skrivende" name="Typing"/>
+ <combo_box.item label="Fredstegn højre" name="PeaceRight"/>
</combo_box>
<text name="emote_label">
Ansigtsudtryk
</text>
- <combo_box label="" name="emote_combo"
- tool_tip="Angiver hvad ansigtet gør under animationen" width="140">
- <combo_box.item name="[None]" label="Intet]" />
- <combo_box.item name="Aaaaah" label="Aaaaah" />
- <combo_box.item name="Afraid" label="Bange" />
- <combo_box.item name="Angry" label="Vred" />
- <combo_box.item name="BigSmile" label="Stort smil" />
- <combo_box.item name="Bored" label="Keder sig" />
- <combo_box.item name="Cry" label="Græder" />
- <combo_box.item name="Disdain" label="Forarget" />
- <combo_box.item name="Embarrassed" label="Flov" />
- <combo_box.item name="Frown" label="Skuler" />
- <combo_box.item name="Kiss" label="Kysser" />
- <combo_box.item name="Laugh" label="Griner" />
- <combo_box.item name="Plllppt" label="Plllppt" />
- <combo_box.item name="Repulsed" label="Frastødt" />
- <combo_box.item name="Sad" label="Ked af det" />
- <combo_box.item name="Shrug" label="Skuldertræk" />
- <combo_box.item name="Smile" label="Smiler" />
- <combo_box.item name="Surprise" label="Overrasket" />
- <combo_box.item name="Wink" label="Blinker" />
- <combo_box.item name="Worry" label="Bekymret" />
+ <combo_box label="" name="emote_combo" tool_tip="Angiver hvad ansigtet gør under animationen" width="140">
+ <combo_box.item label="(Intet)" name="[None]"/>
+ <combo_box.item label="Aaaaah" name="Aaaaah"/>
+ <combo_box.item label="Bange" name="Afraid"/>
+ <combo_box.item label="Vred" name="Angry"/>
+ <combo_box.item label="Stort smil" name="BigSmile"/>
+ <combo_box.item label="Keder sig" name="Bored"/>
+ <combo_box.item label="Græder" name="Cry"/>
+ <combo_box.item label="Forarget" name="Disdain"/>
+ <combo_box.item label="Flov" name="Embarrassed"/>
+ <combo_box.item label="Skuler" name="Frown"/>
+ <combo_box.item label="Kysser" name="Kiss"/>
+ <combo_box.item label="Griner" name="Laugh"/>
+ <combo_box.item label="Plllppt" name="Plllppt"/>
+ <combo_box.item label="Frastødt" name="Repulsed"/>
+ <combo_box.item label="Ked af det" name="Sad"/>
+ <combo_box.item label="Skuldertræk" name="Shrug"/>
+ <combo_box.item label="Smil" name="Smile"/>
+ <combo_box.item label="Overrasket" name="Surprise"/>
+ <combo_box.item label="Blinker" name="Wink"/>
+ <combo_box.item label="Bekymret" name="Worry"/>
</combo_box>
<text name="preview_label">
Vis mens
</text>
- <combo_box label="" name="preview_base_anim"
- tool_tip="Se hvordan animation ser ud i forskellige typiske avatar-situationer." width="140">
- <combo_box.item name="Standing" label="Står" />
- <combo_box.item name="Walking" label="Går" />
- <combo_box.item name="Sitting" label="Sidder" />
- <combo_box.item name="Flying" label="Flyver" />
+ <combo_box label="" name="preview_base_anim" tool_tip="Se hvordan animation ser ud i forskellige typiske avatar-situationer." width="140">
+ <combo_box.item label="Stående" name="Standing"/>
+ <combo_box.item label="Gående" name="Walking"/>
+ <combo_box.item label="Sidder" name="Sitting"/>
+ <combo_box.item label="Flyver" name="Flying"/>
</combo_box>
- <spinner label="start (sec)" name="ease_in_time"
- tool_tip="Tid i sekunder animationen bruger på at komme i gang." />
- <spinner label="Afslut (sec)" name="ease_out_time"
- tool_tip="Tid i sekunder animationen bruger på at afslutte." />
- <button label="" name="play_btn" tool_tip="Start/pause din animation." />
- <button label="" name="stop_btn" tool_tip="Stop afspilning af animation" />
- <slider label="" name="playback_slider" />
+ <spinner label="start (sec)" name="ease_in_time" tool_tip="Tid (i sekunder) animationen bruger på at komme i gang."/>
+ <spinner label="Afslut (sec)" name="ease_out_time" tool_tip="Tid (i sekunder) animationen bruger på at afslutte"/>
+ <button label="" name="play_btn" tool_tip="Start din animation"/>
+ <button name="pause_btn" tool_tip="Pause din animation"/>
+ <button label="" name="stop_btn" tool_tip="Stop afspilning af animation"/>
+ <slider label="" name="playback_slider"/>
<text name="bad_animation_text">
Kan ikke læse animations fil.
Vi anbefaler BVH filer der er exporteret fra Poser 4.
</text>
- <button label="Annullér" name="cancel_btn" />
- <button label="Hent (L$[AMOUNT])" name="ok_btn" />
- <string name="failed_to_initialize">
- Fejlede at starte bevægelse
- </string>
- <string name="anim_too_long">
- Animations filen er [LENGTH] sekunder lang.
-
-Maksimal animations længde er [MAX_LENGTH] sekunder.
- </string>
- <string name="failed_file_read">
- Kan ikke læse animations fil.
-
-[STATUS]
- </string>
+ <button label="Hent (L$[AMOUNT])" name="ok_btn"/>
+ <button label="Annullér" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_avatar_textures.xml b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml
index 27bfa367f6..1111c5e18b 100644
--- a/indra/newview/skins/default/xui/da/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml
@@ -1,30 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="avatar_texture_debug" title="AVATAR TEKSTURER">
- <text name="baked_label">
- Faste teksturer
- </text>
+ <floater.string name="InvalidAvatar">
+ UGYLDING AVATAR
+ </floater.string>
<text name="composite_label">
Blandede teksturer
</text>
- <texture_picker label="Hoved" name="baked_head" />
- <texture_picker label="Makeup" name="head_bodypaint" />
- <texture_picker label="Hår" name="hair" />
- <button label="Drop" label_selected="Dump" name="Dump" />
- <texture_picker label="øjne" name="baked_eyes" />
- <texture_picker label="øje" name="eye_texture" />
- <texture_picker label="Overkrop" name="baked_upper_body" />
- <texture_picker label="Tatovering overkrop" name="upper_bodypaint" />
- <texture_picker label="Undertrøje" name="undershirt" />
- <texture_picker label="Handsker" name="gloves" />
- <texture_picker label="Trøje" name="shirt" />
- <texture_picker label="øvre jakke" name="upper_jacket" />
- <texture_picker label="Underkrop" name="baked_lower_body" />
- <texture_picker label="Tatovering underkrop" name="lower_bodypaint" />
- <texture_picker label="Underbukser" name="underpants" />
- <texture_picker label="Strømper" name="socks" />
- <texture_picker label="Sko" name="shoes" />
- <texture_picker label="Bukser" name="pants" />
- <texture_picker label="Jakke" name="jacket" />
- <texture_picker label="Nederdel" name="baked_skirt" />
- <texture_picker label="Nederdel" name="skirt_texture" />
+ <button label="Drop" label_selected="Dump" name="Dump"/>
+ <texture_picker label="Hår" name="hair_grain"/>
+ <texture_picker label="Alpha - hår" name="hair_alpha"/>
+ <texture_picker label="Makeup" name="head_bodypaint"/>
+ <texture_picker label="Alpha - hoved" name="head_alpha"/>
+ <texture_picker label="Tatovering hovede" name="head_tattoo"/>
+ <texture_picker label="Øje" name="eyes_iris"/>
+ <texture_picker label="Alpha - øjne" name="eyes_alpha"/>
+ <texture_picker label="Bodypaint - overkrop" name="upper_bodypaint"/>
+ <texture_picker label="Undertrøje" name="upper_undershirt"/>
+ <texture_picker label="Handsker" name="upper_gloves"/>
+ <texture_picker label="Trøje" name="upper_shirt"/>
+ <texture_picker label="Øvre jakke" name="upper_jacket"/>
+ <texture_picker label="Alpha - øvre" name="upper_alpha"/>
+ <texture_picker label="Øvre tatovering" name="upper_tattoo"/>
+ <texture_picker label="Bodypaint - underkrop" name="lower_bodypaint"/>
+ <texture_picker label="Undertøj" name="lower_underpants"/>
+ <texture_picker label="Strømper" name="lower_socks"/>
+ <texture_picker label="Sko" name="lower_shoes"/>
+ <texture_picker label="Bukser" name="lower_pants"/>
+ <texture_picker label="Jakke" name="lower_jacket"/>
+ <texture_picker label="Alpha - nedre" name="lower_alpha"/>
+ <texture_picker label="Nedre tatovering" name="lower_tattoo"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_beacons.xml b/indra/newview/skins/default/xui/da/floater_beacons.xml
index 18bc7aeb31..d67d859e7b 100644
--- a/indra/newview/skins/default/xui/da/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/da/floater_beacons.xml
@@ -1,15 +1,21 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="beacons" title="PEJLELYS">
<panel name="beacons_panel">
- <check_box label="Kun scriptede objekter med &quot;rør&quot;" name="touch_only" />
- <check_box label="Scriptede objekter" name="scripted" />
- <check_box label="Fysiske objekter" name="physical" />
- <check_box label="Lyd kilder" name="sounds" />
- <check_box label="Partikel kilder" name="particles" />
- <check_box label="Rendér highlights" name="highlights" />
- <check_box label="Rendér pejlelys" name="beacons" />
- <text name="beacon_width_label">
- Pejlelys bredde:
+ <text name="label_show">
+ Vis:
</text>
+ <check_box label="Pejlelys" name="beacons"/>
+ <check_box label="Fremhævninger" name="highlights"/>
+ <text name="beacon_width_label" tool_tip="Pejlelys bredde">
+ Bredde:
+ </text>
+ <text name="label_objects">
+ For disse objekter:
+ </text>
+ <check_box label="Fysisk" name="physical"/>
+ <check_box label="Scriptet" name="scripted"/>
+ <check_box label="Kun berøring" name="touch_only"/>
+ <check_box label="Lydkilder" name="sounds"/>
+ <check_box label="Partikel kilder" name="particles"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_build_options.xml b/indra/newview/skins/default/xui/da/floater_build_options.xml
index 7eb0d4c035..9196f19b78 100644
--- a/indra/newview/skins/default/xui/da/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/da/floater_build_options.xml
@@ -1,8 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="build options floater" title="GITTER INDSTILLINGER">
- <spinner label="Gitter enhed (meter)" name="GridResolution" width="200" label_width="136"/>
- <spinner label="Gitter rækkevidde (meter)" name="GridDrawSize" width="200" label_width="136"/>
- <check_box label="Aktiver låsning til under-enheder" name="GridSubUnit" />
- <check_box label="Vis &apos;cross sections&apos;" name="GridCrossSection" />
- <slider label="Gitter synlighed" name="GridOpacity" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="build options floater" title="GITTER VALG">
+ <spinner label="Gitter enheder (meter)" label_width="136" name="GridResolution" width="200"/>
+ <spinner label="Gitter rækkevidde (meter)" label_width="136" name="GridDrawSize" width="200"/>
+ <check_box label="Aktivér låsning til underenheder" name="GridSubUnit"/>
+ <check_box label="Vis &apos;cross-sections&apos;" name="GridCrossSection"/>
+ <text name="grid_opacity_label" tool_tip="Gitter synlighed">
+ Uigennemsigtighed:
+ </text>
+ <slider label="Gitter synlighed" name="GridOpacity"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_buy_contents.xml b/indra/newview/skins/default/xui/da/floater_buy_contents.xml
index 8dccf32304..c2b2ccc244 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_contents.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_buy_contents" title="KØB INDHOLD">
<text name="contains_text">
[NAME] indeholder:
@@ -6,9 +6,9 @@
<text name="buy_text">
Køb for L$[AMOUNT] fra [NAME]?
</text>
- <button label="Annullér" label_selected="Annullér" name="cancel_btn" />
- <button label="Køb" label_selected="Køb" name="buy_btn" />
- <check_box label="Tag tøj på nu" name="wear_check" />
+ <button label="Annullér" label_selected="Annullér" name="cancel_btn"/>
+ <button label="Køb" label_selected="Køb" name="buy_btn"/>
+ <check_box label="Tag tøj på nu" name="wear_check"/>
<string name="no_copy_text">
(kopiér ej)
</string>
diff --git a/indra/newview/skins/default/xui/da/floater_buy_currency.xml b/indra/newview/skins/default/xui/da/floater_buy_currency.xml
index d1fca8984d..18ee0e0597 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_currency.xml
@@ -1,68 +1,66 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="buy currency" title="KØB VALUTA">
- <text name="info_buying">
- Køber valuta:
- </text>
- <text name="info_cannot_buy">
- Kan ikke købe nu:
- </text>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy currency" title="KØB L$">
+ <floater.string name="buy_currency">
+ Køb L$ [LINDENS] for ca. [LOCALAMOUNT]
+ </floater.string>
<text name="info_need_more">
- Du har ikke penge nok:
+ Du skal bruge flere L$
</text>
- <text name="error_message">
- Noget er gået galt.
- </text>
- <button label="Gå til hjemmeside" name="error_web" />
<text name="contacting">
Kontakter LindeX...
</text>
- <text name="buy_action_unknown">
- Køb L$ på LindeX valuta marked
+ <text name="info_buying">
+ Køb L$
</text>
- <text name="buy_action">
- [NAME] L$ [PRICE]
+ <text name="balance_label">
+ Jeg har
+ </text>
+ <text name="balance_amount">
+ L$ [AMT]
</text>
<text name="currency_action">
- Køb L$
+ Jeg ønsker at købe
</text>
- <line_editor name="currency_amt">
+ <text name="currency_label">
+ L$
+ </text>
+ <line_editor label="L$" name="currency_amt">
1234
</line_editor>
+ <text name="buying_label">
+ Til prisen
+ </text>
<text name="currency_est">
- for ca. [LOCALAMOUNT]
+ ca. [LOCALAMOUNT]
</text>
<text name="getting_data">
- Henter data...
- </text>
- <text name="balance_label">
- Du har i øjeblikket
- </text>
- <text name="balance_amount">
- L$ [AMT]
- </text>
- <text name="buying_label">
- Du køber
+ Estimerer...
</text>
- <text name="buying_amount">
- L$ [AMT]
+ <text name="buy_action">
+ [NAME] L$ [PRICE]
</text>
<text name="total_label">
- Din balance bliver
+ Min nye beholdning vil være
</text>
<text name="total_amount">
L$ [AMT]
</text>
+ <text name="currency_links">
+ [http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+ </text>
+ <text name="exchange_rate_note">
+ Indtast beløbet for at se nyeste valutakurs.
+ </text>
<text name="purchase_warning_repurchase">
- Bekræfter at denne handel kun omfatter valuta.
-Gentag operationen venligst igen.
+ Bekræftelse af dette køb medfører kun køb af L$, ikke objektet.
</text>
<text name="purchase_warning_notenough">
- Du køber ikke nok valuta, tast et større beløb
-og prøv igen.
+ Du køber ikke nok L$. Forøg venligst beløbet.
</text>
- <button label="Annullér" name="cancel_btn" />
- <button label="Køb" name="buy_btn" />
- <string name="buy_currency">
- Køb L$ [LINDENS] for ca. [LOCALAMOUNT]
- </string>
+ <button label="Køb nu" name="buy_btn"/>
+ <button label="Annullér" name="cancel_btn"/>
+ <text name="info_cannot_buy">
+ Kan ikke købe
+ </text>
+ <button label="Fortsæt til web" name="error_web"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_buy_land.xml b/indra/newview/skins/default/xui/da/floater_buy_land.xml
index 71e6eaa7f7..987ad6585f 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_land.xml
@@ -59,7 +59,7 @@
<text left_delta="62" name="info_price">
L$ 1500
(L$ 1.1/m²)
-sælges med objekter
+solgt med objekter
</text>
<text name="info_action">
Køb af dette land vil:
@@ -75,16 +75,16 @@ sælges med objekter
Kun premium medlemmer kan eje land.
</text>
<combo_box name="account_level">
- <combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/md, månedlig afregning" />
- <combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/md, kvartalsvis afregning" />
- <combo_box.item name="US$6.00/month,billedannually" label="US$6.00/md, årlig afregning" />
+ <combo_box.item label="US$9.95 pr. måned, faktureret månedligt" name="US$9.95/month,billedmonthly"/>
+ <combo_box.item label="US$7.50 pr. måned, faktureret kvartalsvist" name="US$7.50/month,billedquarterly"/>
+ <combo_box.item label="US$6.00 pr. måned, faktureret årligt" name="US$6.00/month,billedannually"/>
</combo_box>
<text name="land_use_action">
Forøg dine månedlige arealanvendelse gebyrer til US $ 40/måned.
</text>
<text name="land_use_reason">
- You hold 1309 m² of land.
-This parcel is 512 m² of land.
+ Du ejer 1309 m² land.
+Denne parcel er på 512 m².
</text>
<text name="purchase_action">
Betal Joe Resident L$ 4000 dette areal
@@ -99,12 +99,12 @@ This parcel is 512 m² of land.
1000
</line_editor>
<text name="currency_est">
- for ca. US$ [AMOUNT2]
+ for ca. [LOCAL_AMOUNT]
</text>
<text name="currency_balance">
Du har L$2,100.
</text>
- <check_box label="Fjern [AMOUNT] kvadratmeter af bidrag fra gruppe." name="remove_contribution"/>
+ <check_box label="Fjern [AMOUNT] m² af bidrag fra gruppe." name="remove_contribution"/>
<button label="Køb" name="buy_btn"/>
<button label="Annullér" name="cancel_btn"/>
<string name="can_resell">
@@ -181,16 +181,16 @@ Prøv at vælge et mindre område.
Din konto kan eje jord.
</string>
<string name="land_holdings">
- Du har [BUYER] m² jord.
+ Du ejer [BUYER] m² land.
</string>
<string name="pay_to_for_land">
Betal L$ [AMOUNT] til [SELLER] for dette stykke jord
</string>
<string name="buy_for_US">
- Køb L$ [AMOUNT] for ca. US$ [AMOUNT2],
+ Køb L$ [AMOUNT] for ca. [LOCAL_AMOUNT],
</string>
<string name="parcel_meters">
- Denne parcel er [AMOUNT] m².
+ Denne parcel er på [AMOUNT] m²
</string>
<string name="premium_land">
Dette stykke jord er premium, og vil tælle som [AMOUNT] m².
@@ -200,7 +200,7 @@ Prøv at vælge et mindre område.
</string>
<string name="meters_supports_object">
[AMOUNT] m²
-kan indeholder [AMOUNT2] objekter
+kan indeholde [AMOUNT2] objekter
</string>
<string name="sold_with_objects">
solgt med objekter
diff --git a/indra/newview/skins/default/xui/da/floater_choose_group.xml b/indra/newview/skins/default/xui/da/floater_choose_group.xml
index 9f02f281db..1ccda4f1d7 100644
--- a/indra/newview/skins/default/xui/da/floater_choose_group.xml
+++ b/indra/newview/skins/default/xui/da/floater_choose_group.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="groups" title="GRUPPER">
<text name="groupdesc">
Vælg en gruppe:
</text>
- <button label="OK" label_selected="OK" name="OK" />
- <button label="Annullér" label_selected="Annullér" name="Cancel" />
+ <button label="OK" label_selected="OK" name="OK"/>
+ <button label="Annullér" label_selected="Annullér" name="Cancel"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_customize.xml b/indra/newview/skins/default/xui/da/floater_customize.xml
index b2409f1682..379302ef6a 100644
--- a/indra/newview/skins/default/xui/da/floater_customize.xml
+++ b/indra/newview/skins/default/xui/da/floater_customize.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater customize" title="APPEARANCE" width="509">
+<floater name="floater customize" title="UDSEENDE" width="509">
<tab_container name="customize tab container" width="507">
<placeholder label="Krops Dele" name="body_parts_placeholder"/>
<panel label="Kropsbygning" name="Shape">
@@ -14,8 +14,8 @@
<button label="Overkrop" label_selected="Overkrop" name="Torso"/>
<button label="Ben" label_selected="Ben" name="Legs"/>
<radio_group name="sex radio">
- <radio_item name="radio" label="Kvinde" />
- <radio_item name="radio2" label="Mand" />
+ <radio_item label="Kvinde" name="radio"/>
+ <radio_item label="Mand" name="radio2"/>
</radio_group>
<text name="title">
[DESC]
@@ -78,9 +78,9 @@ og bagefter &apos;tage den på&apos;.
<text name="Item Action Label">
Hud:
</text>
- <texture_picker width="98" label="Tatoveringer hoved" name="Head Tattoos" tool_tip="Klik for at vælge et billede"/>
- <texture_picker width="98" label="Tatover. overkrop" name="Upper Tattoos" tool_tip="Klik for at vælge et billede"/>
- <texture_picker width="98" label="Tatover. underkrop" name="Lower Tattoos" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Tatoveringer hoved" name="Head Tattoos" tool_tip="Klik for at vælge et billede" width="98"/>
+ <texture_picker label="Tatover. overkrop" name="Upper Tattoos" tool_tip="Klik for at vælge et billede" width="98"/>
+ <texture_picker label="Tatover. underkrop" name="Lower Tattoos" tool_tip="Klik for at vælge et billede" width="98"/>
<button label="Lav ny hud" label_selected="Lav nyt hud" name="Create New"/>
<button label="Gem" label_selected="Gem" name="Save"/>
<button label="Gem som..." label_selected="Gem som..." name="Save As"/>
@@ -156,7 +156,7 @@ og bagefter &apos;tage dem på&apos;.
<button label="Gem som..." label_selected="Gem som..." name="Save As"/>
<button label="Annullér" label_selected="Annullér" name="Revert"/>
</panel>
- <panel label="Tøje" name="clothes_placeholder"/>
+ <placeholder label="Tøje" name="clothes_placeholder"/>
<panel label="Trøje" name="Shirt">
<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/>
<color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
@@ -471,9 +471,81 @@ og bagefter &apos;tage den på&apos;.
<button label="Gem som..." label_selected="Gem som..." name="Save As"/>
<button label="Annullér" label_selected="Annullér" name="Revert"/>
</panel>
+ <panel label="Alpha" name="Alpha">
+ <text name="title">
+ [DESC]
+ </text>
+ <text name="title_no_modify">
+ [DESC]: kan ikke ændre
+ </text>
+ <text name="title_loading">
+ [DESC]: indlæser...
+ </text>
+ <text name="title_not_worn">
+ [DESC]: ikke båret
+ </text>
+ <text name="path">
+ Placeret i [PATH]
+ </text>
+ <text name="not worn instructions">
+ Brug en ny &quot;alpha mask&quot; ved at trække en fra din beholding til din avatar.
+Alternativt kan du lave en fra bunden og bære denne.
+ </text>
+ <text name="no modify instructions">
+ Du har ikke rettigheder til at ændre denne.
+ </text>
+ <text name="Item Action Label">
+ Alpha:
+ </text>
+ <texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Øvre alpha" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Alpha - øjne" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/>
+ <button label="Lav ny &quot;Alpha&quot;" label_selected="Lav ny &quot;Alpha&quot;" name="Create New"/>
+ <button label="Tag af" label_selected="Tag af" name="Take Off"/>
+ <button label="Gem" label_selected="Gem" name="Save"/>
+ <button label="Gem som..." label_selected="Gem som..." name="Save As"/>
+ <button label="Vend tilbage" label_selected="Vend tilbage" name="Revert"/>
+ </panel>
+ <panel label="Tatovering" name="Tattoo">
+ <text name="title">
+ [DESC]
+ </text>
+ <text name="title_no_modify">
+ [DESC]: kan ikke ændre
+ </text>
+ <text name="title_loading">
+ [DESC]: indlæser...
+ </text>
+ <text name="title_not_worn">
+ [DESC]: ikke båret
+ </text>
+ <text name="path">
+ Placeret i [PATH]
+ </text>
+ <text name="not worn instructions">
+ Brug en ny tatovering ved at trække en fra din beholding til din avatar.
+Alternativt kan du lave en fra bunden og bære denne.
+ </text>
+ <text name="no modify instructions">
+ Du har ikke rettigheder til at ændre denne.
+ </text>
+ <text name="Item Action Label">
+ Tatovering:
+ </text>
+ <texture_picker label="Tatovering - hovede" name="Head Tattoo" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Øvre tatovering" name="Upper Tattoo" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Nedre tatovering" name="Lower Tattoo" tool_tip="Klik for at vælge et billede"/>
+ <button label="lav ny tatovering" label_selected="Lav ny tatovering" name="Create New"/>
+ <button label="Tag af" label_selected="Tag af" name="Take Off"/>
+ <button label="Gem" label_selected="Gem" name="Save"/>
+ <button label="Gem som..." label_selected="Gem som..." name="Save As"/>
+ <button label="Vend tilbage" label_selected="Vend tilbage" name="Revert"/>
+ </panel>
</tab_container>
<scroll_container left="212" name="panel_container"/>
+ <button label="Lav sæt" label_selected="Lav sæt" name="make_outfit_btn"/>
<button label="Annullér" label_selected="Annullér" name="Cancel"/>
<button label="OK" label_selected="OK" name="Ok"/>
- <button label="Opret sæt..." label_selected="Opret sæt..." name="Make Outfit"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_device_settings.xml b/indra/newview/skins/default/xui/da/floater_device_settings.xml
index 5e53a697f2..06d431a8f9 100644
--- a/indra/newview/skins/default/xui/da/floater_device_settings.xml
+++ b/indra/newview/skins/default/xui/da/floater_device_settings.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="floater_device_settings" title="STEMME CHAT INDSTILLINGER" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_device_settings" title="STEMME CHAT ENHEDSOPSÆTNING"/>
diff --git a/indra/newview/skins/default/xui/da/floater_env_settings.xml b/indra/newview/skins/default/xui/da/floater_env_settings.xml
index 6c5b6d3b6b..8d9c05500b 100644
--- a/indra/newview/skins/default/xui/da/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/da/floater_env_settings.xml
@@ -1,26 +1,28 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Environment Editor Floater" title="REDIGERING AF OMGIVELSER">
+ <floater.string name="timeStr">
+ [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
+ </floater.string>
<text name="EnvTimeText">
Tid på dagen
</text>
<text name="EnvTimeText2">
00:00
</text>
- <slider label="" name="EnvTimeSlider" />
+ <slider label="" name="EnvTimeSlider"/>
<text name="EnvCloudText">
Skydække
</text>
- <slider label="" name="EnvCloudSlider" />
+ <slider label="" name="EnvCloudSlider"/>
<text name="EnvWaterColorText">
Farve på vand
</text>
- <color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at åbne farvevælger" />
+ <color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at åbne farvevælger"/>
<text name="EnvWaterFogText">
Tåge på vand
</text>
- <slider label="" name="EnvWaterFogSlider" />
- <button label="Benyt tid fra estate" name="EnvUseEstateTimeButton" />
- <button label="Avanceret himmel" name="EnvAdvancedSkyButton" />
- <button label="Avanceret vand" name="EnvAdvancedWaterButton" />
- <button label="?" name="EnvSettingsHelpButton" />
+ <slider label="" name="EnvWaterFogSlider"/>
+ <button label="Benyt tid fra estate" name="EnvUseEstateTimeButton"/>
+ <button label="Avanceret himmel" name="EnvAdvancedSkyButton"/>
+ <button label="Avanceret vand" name="EnvAdvancedWaterButton"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml
index fc1231ceef..2b10afe7e3 100644
--- a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml
@@ -1,30 +1,28 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Hardware Settings Floater" title="HARDWARE OPSÆTNING">
<text name="Filtering:">
Filtrering:
</text>
- <check_box label="Anisotropic filtrering (langsommere når aktiveret)" name="ani" />
+ <check_box label="Anisotropic filtrering (langsommere når aktiveret)" name="ani"/>
<text name="Antialiasing:">
Antialiasing:
</text>
<combo_box label="Antialiasing" name="fsaa" width="100">
- <combo_box.item name="FSAADisabled" label="Slået fra"/>
- <combo_box.item name="2x" label="2x"/>
- <combo_box.item name="4x" label="4x"/>
- <combo_box.item name="8x" label="8x"/>
- <combo_box.item name="16x" label="16x"/>
+ <combo_box.item label="Slået fra" name="FSAADisabled"/>
+ <combo_box.item label="2x" name="2x"/>
+ <combo_box.item label="4x" name="4x"/>
+ <combo_box.item label="8x" name="8x"/>
+ <combo_box.item label="16x" name="16x"/>
</combo_box>
- <spinner label="Gamma:" name="gamma" />
+ <spinner label="Gamma:" name="gamma"/>
<text name="(brightness, lower is brighter)">
(Lysstyrke, lavere er lysere, 0=benyt standard)
</text>
<text name="Enable VBO:">
Aktivér VBO:
</text>
- <check_box label="Aktivér OpenGL Vertex Buffer objekter" name="vbo"
- tool_tip="Aktivér af dette på nyere hardware giver performance forbedring. På ældre hardware kan aktivering medfø nedbrud." />
- <slider label="Tekstur hukommelse (MB):" name="GrapicsCardTextureMemory"
- tool_tip="Mængde hukommelse der skal allokeres til teksturer (textures). Standardindstilling er hukommelse på grafikkortet. Reduktion kan medfø bedre ydeevne, men kan samtidig gøre teksturer mere udflydende." />
- <spinner label="Tåge: afstandsforhold:" name="fog" />
- <button label="OK" label_selected="OK" name="OK" />
+ <check_box initial_value="true" label="Aktivér OpenGL Vertex Buffer objekter" name="vbo" tool_tip="Aktivér af dette på nyere hardware giver performance forbedring. På ældre hardware kan aktivering medfø nedbrud."/>
+ <slider label="Tekstur hukommelse (MB):" name="GraphicsCardTextureMemory" tool_tip="Mængde hukommelse der skal allokeres til teksturer (textures). Standardindstilling er hukommelse på grafikkortet. Reduktion kan medfø bedre ydeevne, men kan samtidig gøre teksturer mere udflydende."/>
+ <spinner label="Tåge: afstandsforhold:" name="fog"/>
+ <button label="OK" label_selected="OK" name="OK"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_help_browser.xml b/indra/newview/skins/default/xui/da/floater_help_browser.xml
new file mode 100644
index 0000000000..fc52796344
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_help_browser.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="HJÆLP">
+ <layout_stack name="stack1">
+ <layout_panel name="external_controls">
+ <button label="Åben i min web browser" name="open_browser"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_im.xml b/indra/newview/skins/default/xui/da/floater_im.xml
index 0b42b78706..519a70d1d9 100644
--- a/indra/newview/skins/default/xui/da/floater_im.xml
+++ b/indra/newview/skins/default/xui/da/floater_im.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="im_floater" title="Personlig samtale (IM)">
<string name="only_user_message">
Du er den eneste deltager i denne samtale
@@ -10,7 +10,7 @@
Tryk på [BUTTON NAME] knappen for at acceptére/tilslutte til denne stemme chat.
</string>
<string name="muted_message">
- Du har blokeret denne beboer. Hvis du starter en samtale vil denne blokering automatisk blive fjernet.
+ Du har blokeret denne beboer. Hvis du sender besked vil denne blokering fjernes.
</string>
<string name="generic_request_error">
Kunne ikke etablere forbindelse, prøv igen senere
diff --git a/indra/newview/skins/default/xui/da/floater_im_container.xml b/indra/newview/skins/default/xui/da/floater_im_container.xml
new file mode 100644
index 0000000000..da6f877f56
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="floater_im_box" title="Personlige beskeder"/>
diff --git a/indra/newview/skins/default/xui/da/floater_image_preview.xml b/indra/newview/skins/default/xui/da/floater_image_preview.xml
index 345c9aa6d1..52fd9f80c0 100644
--- a/indra/newview/skins/default/xui/da/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/da/floater_image_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Image Preview" title="">
<text name="name_label">
Navn:
@@ -10,23 +10,23 @@
Se billede som:
</text>
<combo_box label="Tøj type" name="clothing_type_combo">
- <combo_box.item name="Image" label="Billede"/>
- <combo_box.item name="Hair" label="Hår"/>
- <combo_box.item name="FemaleHead" label="Kvinde - hoved"/>
- <combo_box.item name="FemaleUpperBody" label="Kvinde - overkrop"/>
- <combo_box.item name="FemaleLowerBody" label="Kvinde - underkrop"/>
- <combo_box.item name="MaleHead" label="Mand - hoved"/>
- <combo_box.item name="MaleUpperBody" label="Mand - overkrop"/>
- <combo_box.item name="MaleLowerBody" label="Mand - underkrop"/>
- <combo_box.item name="Skirt" label="Nederdel"/>
- <combo_box.item name="SculptedPrim" label="Sculpted prim"/>
+ <combo_box.item label="Billede" name="Image"/>
+ <combo_box.item label="Hår" name="Hair"/>
+ <combo_box.item label="Kvinde - hoved" name="FemaleHead"/>
+ <combo_box.item label="Kvinde - overkrop" name="FemaleUpperBody"/>
+ <combo_box.item label="Kvinde - underkrop" name="FemaleLowerBody"/>
+ <combo_box.item label="Mand - hoved" name="MaleHead"/>
+ <combo_box.item label="Mand - overkrop" name="MaleUpperBody"/>
+ <combo_box.item label="Mand - underkrop" name="MaleLowerBody"/>
+ <combo_box.item label="Nederdel" name="Skirt"/>
+ <combo_box.item label="Sculpted Prim" name="SculptedPrim"/>
</combo_box>
<text name="bad_image_text">
Kunne ikke læse billede.
Prøv at gemme billede som en 24 bit Targa fil (.tga).
</text>
- <check_box label="Benyt komprimering uden tab" name="lossless_check" />
- <button label="Annullér" name="cancel_btn" />
- <button label="Hent (L$[AMOUNT])" name="ok_btn" />
+ <check_box label="Benyt komprimering uden tab" name="lossless_check"/>
+ <button label="Annullér" name="cancel_btn"/>
+ <button label="Hent (L$[AMOUNT])" name="ok_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_incoming_call.xml b/indra/newview/skins/default/xui/da/floater_incoming_call.xml
new file mode 100644
index 0000000000..3a1ef2e47d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_incoming_call.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="UKENDT PERSON KALDER OP">
+ <floater.string name="localchat">
+ Stemme chat nærved
+ </floater.string>
+ <floater.string name="anonymous">
+ anonym
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ kalder op.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ har sluttet sig til stemme chat opkald med en konference chat.
+ </floater.string>
+ <text name="question">
+ Ønsker du at forlade [CURRENT_CHAT] og slutte dig til denne stemme chat?
+ </text>
+ <button label="Acceptér" label_selected="Acceptér" name="Accept"/>
+ <button label="Afvis" label_selected="Afvis" name="Reject"/>
+ <button label="Start IM" name="Start IM"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_inspect.xml b/indra/newview/skins/default/xui/da/floater_inspect.xml
index 0610e9408f..d0dca8863a 100644
--- a/indra/newview/skins/default/xui/da/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/da/floater_inspect.xml
@@ -1,10 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="inspect" title="INSPECÉR OBJEKTER">
+<floater name="inspect" title="UNDERSØG OBJEKT">
+ <floater.string name="timeStamp">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </floater.string>
<scroll_list name="object_list" tool_tip="Vælg et objekt fra listen for at markere det">
- <column label="Objekt navn" name="object_name"/>
- <column label="Objekt ejer" name="owner_name"/>
- <column label="Bygget af" name="creator_name"/>
- <column label="Lavet den " name="creation_date"/>
+ <scroll_list.columns label="Objekt navn" name="object_name"/>
+ <scroll_list.columns label="Objekt ejer" name="owner_name"/>
+ <scroll_list.columns label="Bygget af" name="creator_name"/>
+ <scroll_list.columns label="Lavet den " name="creation_date"/>
</scroll_list>
<button label="Se profil for ejer..." label_selected="" name="button owner" tool_tip="Se profilen for ejeren af det markerede objekt på listen"/>
<button label="Se profil for bygger..." label_selected="" name="button creator" tool_tip="Se profilen for den beboer der har bygget det markerede objekt på listen"/>
diff --git a/indra/newview/skins/default/xui/da/floater_inventory.xml b/indra/newview/skins/default/xui/da/floater_inventory.xml
index 8bfe7164d0..d80051fb84 100644
--- a/indra/newview/skins/default/xui/da/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/da/floater_inventory.xml
@@ -1,47 +1,16 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Inventory" title="BEHOLDNING">
- <search_editor label="Skriv her for at søge" name="inventory search editor" />
- <tab_container name="inventory filter tabs">
- <inventory_panel label="Alle ting" name="All Items" />
- <inventory_panel label="Nye ting" name="Recent Items" />
- </tab_container>
- <menu_bar name="Inventory Menu">
- <menu label="Filer" name="File">
- <menu_item_call label="Åben" name="Open" />
- <menu_item_call label="Nyt vindue" name="New Window" />
- <menu_item_call label="Vis filtre" name="Show Filters" />
- <menu_item_call label="Nulstil filtre" name="Reset Current" />
- <menu_item_call label="Luk alle mapper" name="Close All Folders" />
- <menu_item_call label="Tøm papirkurv" name="Empty Trash" />
- </menu>
- <menu label="Opret" name="Create">
- <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 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>
- <menu name="New Body Parts">
- <menu_item_call label="Ny figur" 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>
- <menu label="Sortér" name="Sort">
- <menu_item_check label="Efter navn" name="By Name" />
- <menu_item_check label="Efter dato" name="By Date" />
- <menu_item_check label="Altid mapper efter navn" name="Folders Always By Name" />
- <menu_item_check label="System-mapper i toppen" name="System Folders To Top" />
- </menu>
- </menu_bar>
+ <floater.string name="Title">
+ Beholdning
+ </floater.string>
+ <floater.string name="TitleFetching">
+ Beholdning (henter [ITEM_COUNT] genstande...) [FILTER]
+ </floater.string>
+ <floater.string name="TitleCompleted">
+ Beholdning ([ITEM_COUNT] genstande) [FILTER]
+ </floater.string>
+ <floater.string name="Fetched">
+ Hentet
+ </floater.string>
+ <panel label="Beholdningspanel" name="Inventory Panel"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
index fbcf202c54..fa36fab762 100644
--- a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
@@ -1,5 +1,20 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="item properties" title="EGENSKABER FOR OBJEKT I BEHOLDNING">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="item properties" title="OPLYSNINGER OM BEHOLDNINGSGENSTAND">
+ <floater.string name="unknown">
+ (ukendt)
+ </floater.string>
+ <floater.string name="public">
+ (offentlig)
+ </floater.string>
+ <floater.string name="you_can">
+ Du kan:
+ </floater.string>
+ <floater.string name="owner_can">
+ Ejer kan:
+ </floater.string>
+ <floater.string name="acquiredDate">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </floater.string>
<text name="LabelItemNameTitle">
Navn:
</text>
@@ -12,14 +27,14 @@
<text name="LabelCreatorName">
Nicole Linden
</text>
- <button label="Profil..." label_selected="" name="BtnCreator" />
+ <button label="Profil..." label_selected="" name="BtnCreator"/>
<text name="LabelOwnerTitle">
Ejer:
</text>
<text name="LabelOwnerName">
Thrax Linden
</text>
- <button label="Profil..." label_selected="" name="BtnOwner" />
+ <button label="Profil..." label_selected="" name="BtnOwner"/>
<text name="LabelAcquiredTitle">
Erhvervet:
</text>
@@ -27,55 +42,32 @@
Wed May 24 12:50:46 2006
</text>
<text name="OwnerLabel">
- Du kan:
- </text>
- <check_box label="Redigere" name="CheckOwnerModify" />
- <check_box label="Kopiere" name="CheckOwnerCopy" />
- <check_box label="Sælge/give væk" name="CheckOwnerTransfer" />
- <text name="BaseMaskDebug">
- S:
- </text>
- <text name="OwnerMaskDebug">
- E:
+ Dig:
</text>
- <text name="GroupMaskDebug">
- G:
+ <check_box label="Redigér" name="CheckOwnerModify"/>
+ <check_box label="Kopiere" name="CheckOwnerCopy"/>
+ <check_box label="Sælg" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Enhver:
</text>
- <text name="EveryoneMaskDebug">
- A:
+ <check_box label="Kopiér" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Gruppe:
</text>
- <text name="NextMaskDebug">
- N:
- </text>
- <check_box label="Del med gruppe" name="CheckShareWithGroup" />
- <check_box label="Tillad alle at kopiere" name="CheckEveryoneCopy" />
+ <check_box label="Del" name="CheckShareWithGroup"/>
<text name="NextOwnerLabel">
- Næste ejer kan:
- </text>
- <check_box label="Redigere" name="CheckNextOwnerModify" />
- <check_box label="Kopiere" name="CheckNextOwnerCopy" />
- <check_box label="Sælge/Give væk" name="CheckNextOwnerTransfer" />
- <text name="SaleLabel">
- Markér ting:
+ Næste ejer:
+ </text>
+ <check_box label="Redigér" name="CheckNextOwnerModify"/>
+ <check_box label="Kopiere" name="CheckNextOwnerCopy"/>
+ <check_box label="Sælg" name="CheckNextOwnerTransfer"/>
+ <check_box label="Til salg" name="CheckPurchase"/>
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Kopiér" name="Copy"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Pris:" name="Edit Cost"/>
+ <text name="CurrencySymbol">
+ L$
</text>
- <check_box label="Til salg" name="CheckPurchase" />
- <radio_group name="RadioSaleType">
- <radio_item name="radio" label="Original" />
- <radio_item name="radio2" label="Kopi" />
- </radio_group>
- <text name="TextPrice">
- Pris: L$
- </text>
- <string name="unknown">
- (ukendt)
- </string>
- <string name="public">
- (offentlig)
- </string>
- <string name="you_can">
- Du kan:
- </string>
- <string name="owner_can">
- Ejer kan:
- </string>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_joystick.xml b/indra/newview/skins/default/xui/da/floater_joystick.xml
index 4954b7b619..49e1397e9f 100644
--- a/indra/newview/skins/default/xui/da/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/da/floater_joystick.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Joystick" title="JOYSTICK OPSÆTNING">
- <check_box name="enable_joystick" label="Aktiver Joystick:"/>
+ <check_box label="Aktiver Joystick:" name="enable_joystick"/>
<spinner label="X akse mapping" name="JoystickAxis1"/>
<spinner label="Y akse mapping" name="JoystickAxis2"/>
<spinner label="Z akse mapping" name="JoystickAxis0"/>
@@ -14,9 +14,9 @@
<text name="Control Modes:">
Kontrollér:
</text>
- <check_box name="JoystickAvatarEnabled" label="Avatar"/>
- <check_box name="JoystickBuildEnabled" label="Build"/>
- <check_box name="JoystickFlycamEnabled" label="Flycam"/>
+ <check_box label="Avatar" name="JoystickAvatarEnabled"/>
+ <check_box label="Build" name="JoystickBuildEnabled"/>
+ <check_box label="Flycam" name="JoystickFlycamEnabled"/>
<text name="XScale">
X følsomhed
</text>
diff --git a/indra/newview/skins/default/xui/da/floater_lagmeter.xml b/indra/newview/skins/default/xui/da/floater_lagmeter.xml
index bcf15ea926..149d174c34 100644
--- a/indra/newview/skins/default/xui/da/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/da/floater_lagmeter.xml
@@ -1,152 +1,151 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_lagmeter" title="LAG MÅLER">
- <button label="" label_selected="" name="client_lagmeter" tool_tip="Status for klient lag"/>
- <text name="client">
- Klient:
- </text>
- <text name="client_text">
- Normal
- </text>
- <button label="" label_selected="" name="network_lagmeter" tool_tip="Network lag status"/>
- <text name="network">
- Netværk:
- </text>
- <text name="network_text">
- Normal
- </text>
- <button label="" label_selected="" name="server_lagmeter" tool_tip="Status for server lag"/>
- <text name="server">
- Server:
- </text>
- <text name="server_text">
- Normal
- </text>
- <button label="?" name="server_help"/>
- <button label="&gt;&gt;" name="minimize"/>
- <string name="max_title_msg">
+<floater name="floater_lagmeter" title="LAG METER">
+ <floater.string name="max_title_msg">
Lag måler
- </string>
- <string name="max_width_px">
+ </floater.string>
+ <floater.string name="max_width_px">
360
- </string>
- <string name="min_title_msg">
+ </floater.string>
+ <floater.string name="min_title_msg">
Lag
- </string>
- <string name="min_width_px">
+ </floater.string>
+ <floater.string name="min_width_px">
90
- </string>
- <string name="client_text_msg">
+ </floater.string>
+ <floater.string name="client_text_msg">
Klient
- </string>
- <string name="client_frame_rate_critical_fps">
+ </floater.string>
+ <floater.string name="client_frame_rate_critical_fps">
10
- </string>
- <string name="client_frame_rate_warning_fps">
+ </floater.string>
+ <floater.string name="client_frame_rate_warning_fps">
15
- </string>
- <string name="client_frame_time_window_bg_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_window_bg_msg">
Normal, vindue i baggrund
- </string>
- <string name="client_frame_time_critical_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_critical_msg">
Klients billeder/sek under [CLIENT_FRAME_RATE_CRITICAL]
- </string>
- <string name="client_frame_time_warning_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_warning_msg">
Klients billeder/sek mellem [CLIENT_FRAME_RATE_CRITICAL] og [CLIENT_FRAME_RATE_WARNING]
- </string>
- <string name="client_frame_time_normal_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_normal_msg">
Normal
- </string>
- <string name="client_draw_distance_cause_msg">
+ </floater.string>
+ <floater.string name="client_draw_distance_cause_msg">
Mulig årsag: &apos;Vis afstand&apos; sat for højt i grafik indstillinger
- </string>
- <string name="client_texture_loading_cause_msg">
+ </floater.string>
+ <floater.string name="client_texture_loading_cause_msg">
Mulig årsag: Billeder hentes
- </string>
- <string name="client_texture_memory_cause_msg">
+ </floater.string>
+ <floater.string name="client_texture_memory_cause_msg">
Mulig årsag: For mange billeder i hukommelse
- </string>
- <string name="client_complex_objects_cause_msg">
+ </floater.string>
+ <floater.string name="client_complex_objects_cause_msg">
Mulig årsag: For mange komplekse objekter i scenariet
- </string>
- <string name="network_text_msg">
+ </floater.string>
+ <floater.string name="network_text_msg">
Netværk
- </string>
- <string name="network_packet_loss_critical_pct">
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_pct">
10
- </string>
- <string name="network_packet_loss_warning_pct">
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_pct">
5
- </string>
- <string name="network_packet_loss_critical_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_msg">
Forbindelsen mister over [NETWORK_PACKET_LOSS_CRITICAL]% pakker
- </string>
- <string name="network_packet_loss_warning_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_msg">
Forbindelsen mister [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% pakker
- </string>
- <string name="network_performance_normal_msg">
+ </floater.string>
+ <floater.string name="network_performance_normal_msg">
Normal
- </string>
- <string name="network_ping_critical_ms">
+ </floater.string>
+ <floater.string name="network_ping_critical_ms">
600
- </string>
- <string name="network_ping_warning_ms">
+ </floater.string>
+ <floater.string name="network_ping_warning_ms">
300
- </string>
- <string name="network_ping_critical_msg">
+ </floater.string>
+ <floater.string name="network_ping_critical_msg">
Forbindelsens ping tider er over [NETWORK_PING_CRITICAL] ms
- </string>
- <string name="network_ping_warning_msg">
+ </floater.string>
+ <floater.string name="network_ping_warning_msg">
Forbindelsens ping tider er [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
- </string>
- <string name="network_packet_loss_cause_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_cause_msg">
Muligvis dårlig forbindelse eller &apos;båndbredde&apos; sat for højt i netværksopsætning.
- </string>
- <string name="network_ping_cause_msg">
+ </floater.string>
+ <floater.string name="network_ping_cause_msg">
Muligvis dårlig forbindelse eller fil delings program.
- </string>
- <string name="server_text_msg">
+ </floater.string>
+ <floater.string name="server_text_msg">
Server
- </string>
- <string name="server_frame_rate_critical_fps">
+ </floater.string>
+ <floater.string name="server_frame_rate_critical_fps">
20
- </string>
- <string name="server_frame_rate_warning_fps">
+ </floater.string>
+ <floater.string name="server_frame_rate_warning_fps">
30
- </string>
- <string name="server_single_process_max_time_ms">
+ </floater.string>
+ <floater.string name="server_single_process_max_time_ms">
20
- </string>
- <string name="server_frame_time_critical_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_critical_msg">
Simulator framerate er under [SERVER_FRAME_RATE_CRITICAL]
- </string>
- <string name="server_frame_time_warning_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_warning_msg">
Simulator framerate er mellem [SERVER_FRAME_RATE_CRITICAL] og [SERVER_FRAME_RATE_WARNING]
- </string>
- <string name="server_frame_time_normal_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_normal_msg">
Normal
- </string>
- <string name="server_physics_cause_msg">
+ </floater.string>
+ <floater.string name="server_physics_cause_msg">
Mulig årsag: For mange fysiske objekter
- </string>
- <string name="server_scripts_cause_msg">
+ </floater.string>
+ <floater.string name="server_scripts_cause_msg">
Mulig årsag: For mange objekter med script
- </string>
- <string name="server_net_cause_msg">
+ </floater.string>
+ <floater.string name="server_net_cause_msg">
Mulig årsag: For meget netværks trafik
- </string>
- <string name="server_agent_cause_msg">
+ </floater.string>
+ <floater.string name="server_agent_cause_msg">
Mulig årsag: For mange avatarer i bevægelse i regionen
- </string>
- <string name="server_images_cause_msg">
+ </floater.string>
+ <floater.string name="server_images_cause_msg">
Mulig årsag: For mange billed udregninger
- </string>
- <string name="server_generic_cause_msg">
+ </floater.string>
+ <floater.string name="server_generic_cause_msg">
Mulig årsag: Simulator belastning for stor
- </string>
- <string name="smaller_label">
+ </floater.string>
+ <floater.string name="smaller_label">
&gt;&gt;
- </string>
- <string name="bigger_label">
+ </floater.string>
+ <floater.string name="bigger_label">
&lt;&lt;
- </string>
+ </floater.string>
+ <button label="" label_selected="" name="client_lagmeter" tool_tip="Status for klient lag"/>
+ <text name="client">
+ Klient
+ </text>
+ <text name="client_text">
+ Normal
+ </text>
+ <button label="" label_selected="" name="network_lagmeter" tool_tip="Network lag status"/>
+ <text name="network">
+ Netværk
+ </text>
+ <text name="network_text">
+ Normal
+ </text>
+ <button label="" label_selected="" name="server_lagmeter" tool_tip="Status for server lag"/>
+ <text name="server">
+ Server
+ </text>
+ <text name="server_text">
+ Normal
+ </text>
+ <button label="&gt;&gt;" name="minimize" tool_tip="Ændre størrelse"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_lsl_guide.xml b/indra/newview/skins/default/xui/da/floater_lsl_guide.xml
index ebc86c5c73..2b008f133c 100644
--- a/indra/newview/skins/default/xui/da/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/da/floater_lsl_guide.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="script ed float" title="LSL WIKI">
- <check_box label="Følg markøreren" name="lock_check" />
- <combo_box label="Lås" name="history_combo" left_delta="114" width="70"/>
- <button label="Tilbage" name="back_btn" />
- <button label="Frem" name="fwd_btn" />
+ <check_box label="Følg markøreren" name="lock_check"/>
+ <combo_box label="Lås" left_delta="114" name="history_combo" width="70"/>
+ <button label="Tilbage" name="back_btn"/>
+ <button label="Frem" name="fwd_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_media_settings.xml b/indra/newview/skins/default/xui/da/floater_media_settings.xml
new file mode 100644
index 0000000000..67c122b9d5
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="MEDIA INDSTILLINGER">
+ <button label="OK" label_selected="OK" name="OK"/>
+ <button label="Annullér" label_selected="Annullér" name="Cancel"/>
+ <button label="Anvend" label_selected="Anvend" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
new file mode 100644
index 0000000000..ef4e4cbe7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="CHAT NÆRVED"/>
diff --git a/indra/newview/skins/default/xui/da/floater_openobject.xml b/indra/newview/skins/default/xui/da/floater_openobject.xml
index 5875b7a967..92fdd1e0a6 100644
--- a/indra/newview/skins/default/xui/da/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/da/floater_openobject.xml
@@ -1,10 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="objectcontents" title="OBJEKT INDHOLD">
<text name="object_name">
[DESC]:
</text>
- <button label="Kopiér til beholdning" label_selected="Kopiér til beholdning"
- name="copy_to_inventory_button" />
- <button label="Kopiér og tag på" label_selected="Kopiér og tag på"
- name="copy_and_wear_button" />
+ <button label="Kopiér til beholdning" label_selected="Kopiér til beholdning" name="copy_to_inventory_button"/>
+ <button label="Kopiér og tag på" label_selected="Kopiér og tag på" name="copy_and_wear_button"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_outgoing_call.xml b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml
new file mode 100644
index 0000000000..5c98d9855f
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="KALDER">
+ <floater.string name="localchat">
+ Stemme chat nærved
+ </floater.string>
+ <floater.string name="anonymous">
+ anonym
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ kalder op.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ har sluttet sig til stemmechat med en konference chat.
+ </floater.string>
+ <text name="connecting">
+ Tilslutter til [CALLEE_NAME]
+ </text>
+ <text name="calling">
+ Kalder [CALLEE_NAME]
+ </text>
+ <text name="noanswer">
+ Intet svar. Prøv igen senere.
+ </text>
+ <text name="leaving">
+ Forlader [CURRENT_CHAT].
+ </text>
+ <button label="Annullér" label_selected="Annullér" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_pay.xml b/indra/newview/skins/default/xui/da/floater_pay.xml
index f39cfa4871..b2cdc0bfe7 100644
--- a/indra/newview/skins/default/xui/da/floater_pay.xml
+++ b/indra/newview/skins/default/xui/da/floater_pay.xml
@@ -1,21 +1,25 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Give Money" title="">
- <button label="L$1" label_selected="L$1" name="fastpay 1" />
- <button label="L$5" label_selected="L$5" name="fastpay 5" />
- <button label="L$10" label_selected="L$10" name="fastpay 10" />
- <button label="L$20" label_selected="L$20" name="fastpay 20" />
- <button label="Betal" label_selected="Betal" name="pay btn" />
- <button label="Annullér" label_selected="Annullér" name="cancel btn" />
- <text name="payee_label" left="5" width="81">
- Betal beboer:
+ <string name="payee_group">
+ Betal gruppe
+ </string>
+ <string name="payee_resident">
+ Betal beboer
+ </string>
+ <text left="5" name="payee_label" width="81">
+ Betal:
</text>
+ <icon name="icon_person" tool_tip="Person"/>
<text name="payee_name">
[FIRST] [LAST]
</text>
- <text name="fastpay text">
- Hurtig betal:
- </text>
- <text name="amount text" left="4" >
- Beløb:
+ <button label="L$1" label_selected="L$1" name="fastpay 1"/>
+ <button label="L$5" label_selected="L$5" name="fastpay 5"/>
+ <button label="L$10" label_selected="L$10" name="fastpay 10"/>
+ <button label="L$20" label_selected="L$20" name="fastpay 20"/>
+ <text left="4" name="amount text">
+ eler vælg beløb:
</text>
+ <button label="Betal" label_selected="Betal" name="pay btn"/>
+ <button label="Annullér" label_selected="Annullér" name="cancel btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_pay_object.xml b/indra/newview/skins/default/xui/da/floater_pay_object.xml
index 09e2e3f5d0..f74e097da2 100644
--- a/indra/newview/skins/default/xui/da/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/da/floater_pay_object.xml
@@ -1,30 +1,29 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Give Money" title="">
- <text name="payee_group">
- Betal gruppe:
- </text>
- <text name="payee_resident">
- Betal beboer:
- </text>
+ <string name="payee_group">
+ Betal gruppe
+ </string>
+ <string name="payee_resident">
+ Betal beboer
+ </string>
+ <icon name="icon_person" tool_tip="Person"/>
<text name="payee_name">
[FIRST] [LAST]
</text>
<text name="object_name_label">
Via objekt:
</text>
+ <icon name="icon_object" tool_tip="Objekter"/>
<text name="object_name_text">
...
</text>
- <text name="fastpay text">
- Hurtig betal:
- </text>
+ <button label="L$1" label_selected="L$1" name="fastpay 1"/>
+ <button label="L$5" label_selected="L$5" name="fastpay 5"/>
+ <button label="L$10" label_selected="L$10" name="fastpay 10"/>
+ <button label="L$20" label_selected="L$20" name="fastpay 20"/>
<text name="amount text">
- Beløb:
+ Eller vælg beløb:
</text>
- <button label="L$1" label_selected="L$1" name="fastpay 1" />
- <button label="L$5" label_selected="L$5" name="fastpay 5" />
- <button label="L$10" label_selected="L$10" name="fastpay 10" />
- <button label="L$20" label_selected="L$20" name="fastpay 20" />
- <button label="Betal" label_selected="Betal" name="pay btn" />
- <button label="Annullér" label_selected="Annullér" name="cancel btn" />
+ <button label="Betal" label_selected="Betal" name="pay btn"/>
+ <button label="Annullér" label_selected="Annullér" name="cancel btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_event.xml b/indra/newview/skins/default/xui/da/floater_preview_event.xml
index 584085fea0..3e870b58ae 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_event.xml
@@ -1,2 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="event_preview" title="EVENT INFORMATION" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="event_preview" title="EVENT INFORMATION">
+ <floater.string name="Title">
+ Event: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
index 0053cb852f..bfa3c150a9 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
@@ -1,14 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="gesture_preview">
- <string name="stop_txt">
+ <floater.string name="step_anim">
+ Animation til afspilning:
+ </floater.string>
+ <floater.string name="step_sound">
+ Lyd til afspilning:
+ </floater.string>
+ <floater.string name="step_chat">
+ Sig:
+ </floater.string>
+ <floater.string name="step_wait">
+ Vent:
+ </floater.string>
+ <floater.string name="stop_txt">
Stop
- </string>
- <string name="preview_txt">
+ </floater.string>
+ <floater.string name="preview_txt">
Vis
- </string>
- <string name="none_text">
+ </floater.string>
+ <floater.string name="none_text">
-- Intet --
- </string>
+ </floater.string>
+ <floater.string name="Title">
+ Bevægelse: [NAME]
+ </floater.string>
<text name="desc_label">
Beskrivelse:
</text>
@@ -23,33 +38,27 @@
Genvejstast:
</text>
<combo_box label="Ingen" name="modifier_combo" width="60"/>
- <combo_box label="Ingen" name="key_combo" left_delta="70" width="60"/>
+ <combo_box label="Ingen" left_delta="70" name="key_combo" width="60"/>
<text name="library_label">
Type:
</text>
+ <scroll_list name="library_list"/>
+ <button label="Tilføj &gt;&gt;" name="add_btn"/>
<text name="steps_label">
Trin:
</text>
- <scroll_list name="library_list">
- Animation
-Lyd
-Chat
-Vent
- </scroll_list>
- <button label="Tilføj &gt;&gt;" name="add_btn"/>
- <button label="Flyt op" name="up_btn"/>
- <button label="Flyt ned" name="down_btn"/>
+ <button label="Op" name="up_btn"/>
+ <button label="Ned" name="down_btn"/>
<button label="Fjern" name="delete_btn"/>
- <text name="help_label">
- Alle trin vil ske samtidigt,
-medmindre du tilføjer vente trin.
- </text>
<radio_group name="animation_trigger_type">
- <radio_item name="start" label="Start" />
- <radio_item name="stop" label="Stop" />
+ <radio_item label="Start" name="start"/>
+ <radio_item label="Stop" name="stop"/>
</radio_group>
<check_box label="Indtil animation er færdig" name="wait_anim_check"/>
<check_box label="tid i sekunder" name="wait_time_check"/>
+ <text name="help_label">
+ Alle trin vil ske samtidigt, medmindre du tilføjer vente trin.
+ </text>
<check_box label="Aktiv" name="active_check" tool_tip="Aktive bevægelser kan blive aktiveret ved at skrive deress udløser tekst eller ved at trykke på genvejstaste. Bevægelser vil normalt være inaktive hvis der allerede findes en tilsvarende genvejstaste."/>
<button label="Vis" name="preview_btn"/>
<button label="Gem" name="save_btn"/>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml
new file mode 100644
index 0000000000..9892a92e4c
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="BEVÆGELSE GENVEJ"/>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml
new file mode 100644
index 0000000000..4d4cca1d90
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="GENVEJ BEVÆGELSER">
+ <text name="trigger_label">
+ Chat:
+ </text>
+ <text name="key_label">
+ Tastatur:
+ </text>
+ <combo_box label="Intet" name="modifier_combo"/>
+ <combo_box label="Intet" name="key_combo"/>
+ <text name="replace_text" tool_tip="Erstat udløser ord med disse ord. For eksempel uløser &quot;hello&quot; erstat med &quot;hej&quot; vil ændre chat &apos;Jeg ville bare sige hello&apos; til &apos;Jeg ville bare sige hej&apos; samtidig med bevægelsen afspilles!">
+ Erstat:
+ </text>
+ <line_editor name="replace_editor" tool_tip="Erstat udløser ord med disse ord. For eksempel uløser &quot;hello&quot; erstat med &quot;hej&quot; vil ændre chat &apos;Jeg ville bare sige hello&apos; til &apos;Jeg ville bare sige hej&apos; samtidig med bevægelsen afspilles!"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml
new file mode 100644
index 0000000000..9892a92e4c
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="BEVÆGELSE GENVEJ"/>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml
index 7258824878..2ebec4462f 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml
@@ -1,16 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview notecard" title="NOTE:">
- <button label="Gem" label_selected="Gem" name="Save"/>
+ <floater.string name="no_object">
+ Kunne ikke finde objekt der indeholder denne note.
+ </floater.string>
+ <floater.string name="not_allowed">
+ Du har ikke rettigheder til at se denne note.
+ </floater.string>
+ <floater.string name="Title">
+ Note: [NAME]
+ </floater.string>
+ <floater.string label="Gem" label_selected="Gem" name="Save">
+ Gem
+ </floater.string>
<text name="desc txt">
Beskrivelse:
</text>
<text_editor name="Notecard Editor">
Indlæser...
</text_editor>
- <string name="no_object">
- Kunne ikke finde objekt der indeholder denne note.
- </string>
- <string name="not_allowed">
- Du har ikke tilladelse til at læse denne note.
- </string>
+ <button label="Gem" label_selected="Gem" name="Save"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_texture.xml b/indra/newview/skins/default/xui/da/floater_preview_texture.xml
index 250659f249..ab7ddbcc72 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_texture.xml
@@ -1,9 +1,44 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview_texture">
+ <floater.string name="Title">
+ Tekstur: [NAME]
+ </floater.string>
+ <floater.string name="Copy">
+ Kopiér til beholdning
+ </floater.string>
<text name="desc txt">
Beskrivelse:
</text>
<text name="dimensions">
- Størrelse: [WIDTH] x [HEIGHT]
+ [WIDTH]px x [HEIGHT]px
</text>
+ <combo_box name="combo_aspect_ratio" tool_tip="Forhåndsvisning med et bestemt billedformat">
+ <combo_item name="Unconstrained">
+ Ikke låst
+ </combo_item>
+ <combo_item name="1:1" tool_tip="Typisk valg til gruppe logo eller &quot;Real world&quot; profil billede">
+ 1:1
+ </combo_item>
+ <combo_item name="4:3" tool_tip="Typisk valg til din &quot;Second Life Profil&quot; billede">
+ 4:3
+ </combo_item>
+ <combo_item name="10:7" tool_tip="Typisk valg til billeder i annoncer, landemærker og søgninger">
+ 10:7
+ </combo_item>
+ <combo_item name="3:2" tool_tip="Typisk valg til &quot;Om land&quot; billede">
+ 3:2
+ </combo_item>
+ <combo_item name="16:10">
+ 16:10
+ </combo_item>
+ <combo_item name="16:9" tool_tip="Typisk valg til favorit billeder i profil">
+ 16:9
+ </combo_item>
+ <combo_item name="2:1">
+ 2:1
+ </combo_item>
+ </combo_box>
+ <button label="OK" name="keep"/>
+ <button label="Annullér" name="discard"/>
+ <button label="Gem som" name="save_tex_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml
new file mode 100644
index 0000000000..e70a30fa24
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/>
diff --git a/indra/newview/skins/default/xui/da/floater_script_preview.xml b/indra/newview/skins/default/xui/da/floater_script_preview.xml
index ede277bbd2..1e8d869716 100644
--- a/indra/newview/skins/default/xui/da/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/da/floater_script_preview.xml
@@ -1,5 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="preview lsl text" title="SCRIPT: ROTATION SCRIPT">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="SCRIPT: ROTATIONS SCRIPT">
+ <floater.string name="Title">
+ Script: [NAME]
+ </floater.string>
<text name="desc txt">
Beskrivelse:
</text>
diff --git a/indra/newview/skins/default/xui/da/floater_script_search.xml b/indra/newview/skins/default/xui/da/floater_script_search.xml
index 62f311be6e..f1605cac34 100644
--- a/indra/newview/skins/default/xui/da/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/da/floater_script_search.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="script search" title="SCRIPT SØGNING">
- <check_box label="Store/små bogstaver har ingen betydning" name="case_text" />
- <button label="Søg" label_selected="Søg" name="search_btn" />
- <button label="Erstat" label_selected="Erstat" name="replace_btn" />
- <button label="Erstat alle" label_selected="Erstat alle" name="replace_all_btn" />
+ <check_box label="Store/små bogstaver har ingen betydning" name="case_text"/>
+ <button label="Søg" label_selected="Søg" name="search_btn"/>
+ <button label="Erstat" label_selected="Erstat" name="replace_btn"/>
+ <button label="Erstat alle" label_selected="Erstat alle" name="replace_all_btn"/>
<text name="txt">
Søg
</text>
diff --git a/indra/newview/skins/default/xui/da/floater_sell_land.xml b/indra/newview/skins/default/xui/da/floater_sell_land.xml
index fcbe0abe08..873e6d7995 100644
--- a/indra/newview/skins/default/xui/da/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/da/floater_sell_land.xml
@@ -1,62 +1,65 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="sell land" title="SÆLG LAND">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="info_parcel_label">
- Parcel:
- </text>
- <text name="info_parcel">
- PARCEL NAME
- </text>
- <text name="info_size_label">
- Størrelse:
- </text>
- <text name="info_size">
- [AREA] m²
- </text>
- <text name="info_action">
- Sælg denne parcel:
- </text>
- <text name="price_label">
- Sæt en pris:
- </text>
- <text name="price_text">
- Vælg en passende pris for jorden.
- </text>
- <text name="price_ld">
- L$
- </text>
- <text name="price_per_m">
- (L$[PER_METER] pr. kvadratmeter)
- </text>
- <text name="sell_to_label">
- Sælg denne jord til:
- </text>
- <text name="sell_to_text">
- Vælg om du vil sælge til hvem som helst eller en specifik køber.
- </text>
- <combo_box name="sell_to">
- <combo_box.item name="--selectone--" label="Vælg --" />
- <combo_box.item name="Anyone" label="Alle" />
- <combo_box.item name="Specificuser:" label="Specifik bruger:" />
- </combo_box>
- <button label="Vælg..." name="sell_to_select_agent" />
- <text name="sell_objects_label">
- Sælg objekter sammen med jorden?
- </text>
- <text name="sell_objects_text">
- Dine objekter der kan videregives sælges med jorden.
- </text>
- <radio_group name="sell_objects">
- <radio_item name="no" label="Nej, behold ejerskab til objekterne" />
- <radio_item name="yes" label="Ja, sælg objekter med jorden" />
- </radio_group>
- <button label="Vis objekter" name="show_objects" />
- <text name="nag_message_label">
- HUSK: Alle salg er endegyldige.
- </text>
- <button label="Sæt land til salg" name="sell_btn" />
- <button label="Annullér" name="cancel_btn" />
- </panel>
- </scroll_container>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="info_parcel_label">
+ Parcel:
+ </text>
+ <text name="info_parcel">
+ PARCEL
+ </text>
+ <text name="info_size_label">
+ Størrelse:
+ </text>
+ <text name="info_size">
+ [AREA] m²
+ </text>
+ <text name="info_action">
+ For at sælge:
+ </text>
+ <text name="price_label">
+ 1. Sæt en pris:
+ </text>
+ <text name="price_text">
+ Vælg en passende pris for jorden.
+ </text>
+ <text name="price_ld">
+ L$
+ </text>
+ <line_editor name="price">
+ 0
+ </line_editor>
+ <text name="price_per_m">
+ (L$[PER_METER] pr. m²)
+ </text>
+ <text name="sell_to_label">
+ 2. Sælg denne parcel til:
+ </text>
+ <text name="sell_to_text">
+ Vælg om du vil sælge til hvem som helst eller en specifik køber.
+ </text>
+ <combo_box name="sell_to">
+ <combo_box.item label="- Vælg -" name="--selectone--"/>
+ <combo_box.item label="Enhver" name="Anyone"/>
+ <combo_box.item label="Specifik person:" name="Specificuser:"/>
+ </combo_box>
+ <button label="Vælg" name="sell_to_select_agent"/>
+ <text name="sell_objects_label">
+ 3. Sælg objekter sammen med jorden?
+ </text>
+ <text name="sell_objects_text">
+ Objekter der kan vidergives og som tilhører ejer af land på parcel vil skifte ejerskab
+ </text>
+ <radio_group name="sell_objects">
+ <radio_item label="Nej, behold ejerskab til objekter" name="no"/>
+ <radio_item label="Ja, sælg objekter med jorden" name="yes"/>
+ </radio_group>
+ <button label="Vis objekter" name="show_objects"/>
+ <text name="nag_message_label">
+ HUSK: Alle salg er endegyldige.
+ </text>
+ <button label="Sæt land til salg" name="sell_btn"/>
+ <button label="Annullér" name="cancel_btn"/>
+ </panel>
+ </scroll_container>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_settings_debug.xml b/indra/newview/skins/default/xui/da/floater_settings_debug.xml
index c1429ed3a3..41cf100d94 100644
--- a/indra/newview/skins/default/xui/da/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/da/floater_settings_debug.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="settings_debug" title="TEKNISKE INDSTILLINGER">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="DEBUG INDSTILLINGER">
<combo_box name="boolean_combo">
- <combo_box.item name="TRUE" label="TRUE (Valgt)" />
- <combo_box.item name="FALSE" label="FALSE (Fravalgt)" />
+ <combo_box.item label="SANDT" name="TRUE"/>
+ <combo_box.item label="FALSK" name="FALSE"/>
</combo_box>
- <color_swatch label="Farve" name="color_swatch" />
- <spinner label="x" name="val_spinner_1" />
- <spinner label="x" name="val_spinner_2" />
- <spinner label="x" name="val_spinner_3" />
- <spinner label="x" name="val_spinner_4" />
- <button label="Sæt til standard" name="default_btn" />
+ <color_swatch label="Farve" name="val_color_swatch"/>
+ <spinner label="x" name="val_spinner_1"/>
+ <spinner label="x" name="val_spinner_2"/>
+ <spinner label="x" name="val_spinner_3"/>
+ <spinner label="x" name="val_spinner_4"/>
+ <button label="Sæt til standard" name="default_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_snapshot.xml b/indra/newview/skins/default/xui/da/floater_snapshot.xml
index 3eed869db4..5e8c64e21f 100644
--- a/indra/newview/skins/default/xui/da/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/da/floater_snapshot.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="SE FOTO">
+<floater name="Snapshot" title="FOTO FORHÅNDSVINSNING">
<text name="type_label">
Hvor skal foto hen?
</text>
<radio_group label="Snapshot type" name="snapshot_type_radio">
- <radio_item name="postcard" label="Send via e-mail" />
- <radio_item name="texture" label="Gem i din beholdning (L$[AMOUNT])" />
- <radio_item name="local" label="Gem på din computer" />
+ <radio_item label="Send via e-mail" name="postcard"/>
+ <radio_item label="Gem i din beholdning (L$[AMOUNT])" name="texture"/>
+ <radio_item label="Gem på din computer" name="local"/>
</radio_group>
<text name="file_size_label">
Fil størrelse: [SIZE] KB
@@ -15,12 +15,12 @@
<button label="Send" name="send_btn"/>
<button label="Gem (L$[AMOUNT])" name="upload_btn"/>
<flyout_button label="Gem" name="save_btn" tool_tip="Gem billede i på din computer">
- <flyout_button_item name="save_item" label="Gem"/>
- <flyout_button_item name="saveas_item" label="Gem som..."/>
+ <flyout_button_item label="Gem" name="save_item"/>
+ <flyout_button_item label="Gem som..." name="saveas_item"/>
</flyout_button>
<button label="Annullér" name="discard_btn"/>
- <button label="Mere &gt;&gt;" name="more_btn" tool_tip="Avancerede valg"/>
- <button label="&lt;&lt; Mindre" name="less_btn" tool_tip="Avancerede valg"/>
+ <button label="Mere &gt;&gt;" name="more_btn" tool_tip="Avancerede muligheder"/>
+ <button label="&lt;&lt; Mindre" name="less_btn" tool_tip="Avancerede muligheder"/>
<text name="type_label2">
Størrelse
</text>
@@ -28,45 +28,45 @@
Format
</text>
<combo_box label="Opløsning" name="postcard_size_combo">
- <combo_box.item name="CurrentWindow" label="Aktuelle vindue"/>
- <combo_box.item name="640x480" label="640x480"/>
- <combo_box.item name="800x600" label="800x600"/>
- <combo_box.item name="1024x768" label="1024x768"/>
- <combo_box.item name="Custom" label="Manuel"/>
+ <combo_box.item label="Aktuelle vindue" name="CurrentWindow"/>
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ <combo_box.item label="Manuel" name="Custom"/>
</combo_box>
<combo_box label="Opløsning" name="texture_size_combo">
- <combo_box.item name="CurrentWindow" label="Aktuelle vindue"/>
- <combo_box.item name="Small(128x128)" label="Lille (128x128)"/>
- <combo_box.item name="Medium(256x256)" label="Medium (256x256)"/>
- <combo_box.item name="Large(512x512)" label="Stor (512x512)"/>
- <combo_box.item name="Custom" label="Manuel"/>
+ <combo_box.item label="Aktuelle vindue" name="CurrentWindow"/>
+ <combo_box.item label="Lille (128x128)" name="Small(128x128)"/>
+ <combo_box.item label="Medium (256x256)" name="Medium(256x256)"/>
+ <combo_box.item label="Stor (512x512)" name="Large(512x512)"/>
+ <combo_box.item label="Manuel" name="Custom"/>
</combo_box>
<combo_box label="Opløsning" name="local_size_combo">
- <combo_box.item name="CurrentWindow" label="Aktuelle vindue"/>
- <combo_box.item name="320x240" label="320x240"/>
- <combo_box.item name="640x480" label="640x480"/>
- <combo_box.item name="800x600" label="800x600"/>
- <combo_box.item name="1024x768" label="1024x768"/>
- <combo_box.item name="1280x1024" label="1280x1024"/>
- <combo_box.item name="1600x1200" label="1600x1200"/>
- <combo_box.item name="Custom" label="Manuelt"/>
+ <combo_box.item label="Aktuelle vindue" name="CurrentWindow"/>
+ <combo_box.item label="320x240" name="320x240"/>
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ <combo_box.item label="1280x1024" name="1280x1024"/>
+ <combo_box.item label="1600x1200" name="1600x1200"/>
+ <combo_box.item label="Manuelt" name="Custom"/>
</combo_box>
<combo_box label="Fil-format" name="local_format_combo" width="76">
- <combo_box.item name="PNG" label="PNG"/>
- <combo_box.item name="JPEG" label="JPEG"/>
- <combo_box.item name="BMP" label="BMP"/>
+ <combo_box.item label="PNG" name="PNG"/>
+ <combo_box.item label="JPEG" name="JPEG"/>
+ <combo_box.item label="BMP" name="BMP"/>
</combo_box>
- <spinner label="Bredde" name="snapshot_width" label_width="41" width="101"/>
- <spinner label="Højde" name="snapshot_height" label_width="32" width="92" left="117"/>
+ <spinner label="Bredde" label_width="41" name="snapshot_width" width="101"/>
+ <spinner label="Højde" label_width="32" left="117" name="snapshot_height" width="92"/>
<check_box label="Fasthold proportioner" name="keep_aspect_check"/>
<slider label="Billed-kvalitet" name="image_quality_slider"/>
<text name="layer_type_label">
Benyt:
</text>
<combo_box label="Billedlag" name="layer_types">
- <combo_box.item name="Colors" label="Farver"/>
- <combo_box.item name="Depth" label="Dybde"/>
- <combo_box.item name="ObjectMattes" label="Materinger"/>
+ <combo_box.item label="Farver" name="Colors"/>
+ <combo_box.item label="Dybde" name="Depth"/>
+ <combo_box.item label="Materinger" name="ObjectMattes"/>
</combo_box>
<check_box label="Vis brugerflade på foto" name="ui_check"/>
<check_box label="Vis HUD objekter på foto" name="hud_check"/>
diff --git a/indra/newview/skins/default/xui/da/floater_sys_well.xml b/indra/newview/skins/default/xui/da/floater_sys_well.xml
new file mode 100644
index 0000000000..b5cecf93e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="BESKEDER">
+ <string name="title_im_well_window">
+ IM SESSIONER
+ </string>
+ <string name="title_notification_well_window">
+ BESKEDER
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_telehub.xml b/indra/newview/skins/default/xui/da/floater_telehub.xml
index bf31da9515..5a0e89aa98 100644
--- a/indra/newview/skins/default/xui/da/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/da/floater_telehub.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="telehub" title="TELEHUB">
<text name="status_text_connected">
Telehub forbundet til objekt [OBJECT]
@@ -12,17 +12,14 @@
<text name="help_text_not_connected">
230;lg objekt og klik &apos;Forbind telehub&apos;.
</text>
- <button label="Forbind telehub" name="connect_btn" />
- <button label="Afslut" name="disconnect_btn" />
+ <button label="Forbind telehub" name="connect_btn"/>
+ <button label="Afslut" name="disconnect_btn"/>
<text name="spawn_points_text" width="300">
Ankomst punkter (positioner, ikke objekter):
</text>
- <button label="Tilføj punkt" name="add_spawn_point_btn" />
- <button label="Fjern punkt" name="remove_spawn_point_btn" />
+ <button label="Tilføj punkt" name="add_spawn_point_btn"/>
+ <button label="Fjern punkt" name="remove_spawn_point_btn"/>
<text name="spawn_point_help">
- Vælg objekt og klik på &apos;Tilføj punkt&apos;for at angive
-position. Du kan derefter flytte eller slette
-objektet. Positioner er i forhold til telehub center.
-Vælg emne i listen for at vise position i verden.
+ Vælg objekt og klik på &apos;Tilføj punkt&apos; for at angive position. Du kan derefter flytte eller slette objektet. Positioner er i forhold til telehub center. Vælg emne i listen for at vise position i verden.
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_top_objects.xml b/indra/newview/skins/default/xui/da/floater_top_objects.xml
index 0cfbe77def..3f19350e30 100644
--- a/indra/newview/skins/default/xui/da/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/da/floater_top_objects.xml
@@ -1,33 +1,33 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="top_objects" title="INDLÆSER...">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="top_objects" title="Top objekter">
<text name="title_text">
Henter...
</text>
<scroll_list name="objects_list">
- <column label="Point" name="score" />
- <column label="Navn" name="name" />
- <column label="Ejer" name="owner" />
- <column label="Lokation" name="location" />
- <column label="Tid" name="time" />
- <column label="Mono tid" name="mono_time" />
+ <column label="Point" name="score"/>
+ <column label="Navn" name="name"/>
+ <column label="Ejer" name="owner"/>
+ <column label="Lokation" name="location"/>
+ <column label="Tid" name="time"/>
+ <column label="Mono tid" name="mono_time"/>
</scroll_list>
<text name="id_text">
Objekt ID:
</text>
- <button label="Vis pejlelys" name="show_beacon_btn" />
+ <button label="Vis pejlelys" name="show_beacon_btn"/>
<text name="obj_name_text">
Objekt navn:
</text>
- <button label="Filter" name="filter_object_btn" />
+ <button label="Filter" name="filter_object_btn"/>
<text name="owner_name_text">
- Ejers navn:
+ Ejer:
</text>
- <button label="Filter" name="filter_owner_btn" />
- <button label="Returnér valgte" name="return_selected_btn" />
- <button label="Returnér alle" name="return_all_btn" />
- <button label="Afbryd valgte" name="disable_selected_btn" />
- <button label="Afbryd alle" name="disable_all_btn" />
- <button label="Genopfrisk" name="refresh_btn" />
+ <button label="Filter" name="filter_owner_btn"/>
+ <button label="Returnér valgte" name="return_selected_btn"/>
+ <button label="Returnér alle" name="return_all_btn"/>
+ <button label="Afbryd valgte" name="disable_selected_btn"/>
+ <button label="Afbryd alle" name="disable_all_btn"/>
+ <button label="Genopfrisk" name="refresh_btn"/>
<string name="top_scripts_title">
Mest krævende scripts
</string>
diff --git a/indra/newview/skins/default/xui/da/floater_tos.xml b/indra/newview/skins/default/xui/da/floater_tos.xml
index 9a348ca7bf..77906f0f46 100644
--- a/indra/newview/skins/default/xui/da/floater_tos.xml
+++ b/indra/newview/skins/default/xui/da/floater_tos.xml
@@ -1,11 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="modal container" title="">
- <button label="Fortsæt" label_selected="Fortsæt" name="Continue" />
- <button label="Annullér" label_selected="Annullér" name="Cancel" />
- <check_box label="Jeg accepterer vilkårene for brug af tjenesten" name="agree_chk" />
+ <button label="Fortsæt" label_selected="Fortsæt" name="Continue"/>
+ <button label="Annullér" label_selected="Annullér" name="Cancel"/>
+ <check_box label="Jeg accepterer vilkårene for brug af tjenesten" name="agree_chk"/>
<text name="tos_heading">
- Læs venligst de almindelige bestemmelser og vilkår igennem, for at fortsætte til [SECOND_LIFE]
-skal du acceptere vilkårene.
+ Læs venligst de almindelige bestemmelser og vilkår igennem, for at fortsætte til [SECOND LIFE] skal du acceptere vilkårene.
</text>
<text_editor name="tos_text">
TOS_TEXT
diff --git a/indra/newview/skins/default/xui/da/floater_water.xml b/indra/newview/skins/default/xui/da/floater_water.xml
index 63880b4a69..103feaa879 100644
--- a/indra/newview/skins/default/xui/da/floater_water.xml
+++ b/indra/newview/skins/default/xui/da/floater_water.xml
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Water Floater" title="AVANCERET OPSÆTNING AF VAND">
<text name="KeyFramePresetsText">
Vand opsætninger:
</text>
- <button label="Ny" label_selected="Ny" name="WaterNewPreset" />
- <button label="Gem" label_selected="Gem" name="WaterSavePreset" />
- <button label="Slet" label_selected="Slet" name="WaterDeletePreset" />
+ <button label="Ny" label_selected="Ny" name="WaterNewPreset"/>
+ <button label="Gem" label_selected="Gem" name="WaterSavePreset"/>
+ <button label="Slet" label_selected="Slet" name="WaterDeletePreset"/>
<tab_container name="Water Tabs">
<panel label="Opsætning" name="Settings">
<text name="BHText">
Vandtåge farve
</text>
- <button label="?" name="WaterFogColorHelp" />
- <color_swatch label="" name="WaterFogColor" tool_tip="Click to open Color Picker" />
+ <button label="?" name="WaterFogColorHelp"/>
+ <color_swatch label="" name="WaterFogColor" tool_tip="Klik for at åbne farvevælger"/>
<text name="WaterFogDensText">
Tåge tæthedskarakteristik
</text>
- <button label="?" name="WaterFogDensityHelp" />
- <slider label="" name="WaterFogDensity" />
+ <button label="?" name="WaterFogDensityHelp"/>
+ <slider label="" name="WaterFogDensity"/>
<text name="WaterUnderWaterFogModText">
Tilretning undervandståge
</text>
- <button label="?" name="WaterUnderWaterFogModHelp" />
- <slider label="" name="WaterUnderWaterFogMod" />
+ <button label="?" name="WaterUnderWaterFogModHelp"/>
+ <slider label="" name="WaterUnderWaterFogMod"/>
<text name="BDensText">
Lille bølge reflektionsskala
</text>
- <button label="?" name="WaterNormalScaleHelp" />
+ <button label="?" name="WaterNormalScaleHelp"/>
<text name="BHText2">
1
</text>
@@ -36,65 +36,65 @@
<text name="BHText4">
3
</text>
- <slider label="" name="WaterNormalScaleX" />
- <slider label="" name="WaterNormalScaleY" />
- <slider label="" name="WaterNormalScaleZ" />
+ <slider label="" name="WaterNormalScaleX"/>
+ <slider label="" name="WaterNormalScaleY"/>
+ <slider label="" name="WaterNormalScaleZ"/>
<text name="HDText">
Spredningsskala
</text>
- <button label="?" name="WaterFresnelScaleHelp" />
- <slider label="" name="WaterFresnelScale" />
+ <button label="?" name="WaterFresnelScaleHelp"/>
+ <slider label="" name="WaterFresnelScale"/>
<text name="FresnelOffsetText">
Spredning offset
</text>
- <button label="?" name="WaterFresnelOffsetHelp" />
- <slider label="" name="WaterFresnelOffset" />
+ <button label="?" name="WaterFresnelOffsetHelp"/>
+ <slider label="" name="WaterFresnelOffset"/>
<text name="DensMultText">
Lysbrydning fra oven
</text>
- <button label="?" name="WaterScaleAboveHelp" />
- <slider label="" name="WaterScaleAbove" />
+ <button label="?" name="WaterScaleAboveHelp"/>
+ <slider label="" name="WaterScaleAbove"/>
<text name="WaterScaleBelowText">
Lysbrydning fra neden
</text>
- <button label="?" name="WaterScaleBelowHelp" />
- <slider label="" name="WaterScaleBelow" />
+ <button label="?" name="WaterScaleBelowHelp"/>
+ <slider label="" name="WaterScaleBelow"/>
<text name="MaxAltText">
Udviskning
</text>
- <button label="?" name="WaterBlurMultiplierHelp" />
- <slider label="" name="WaterBlurMult" />
+ <button label="?" name="WaterBlurMultiplierHelp"/>
+ <slider label="" name="WaterBlurMult"/>
</panel>
<panel label="Billede" name="Waves">
<text name="BHText">
Retning for store bølger
</text>
- <button label="?" name="WaterWave1Help" />
+ <button label="?" name="WaterWave1Help"/>
<text name="WaterWave1DirXText">
X
</text>
<text name="WaterWave1DirYText">
Y
</text>
- <slider label="" name="WaterWave1DirX" />
- <slider label="" name="WaterWave1DirY" />
+ <slider label="" name="WaterWave1DirX"/>
+ <slider label="" name="WaterWave1DirY"/>
<text name="BHText2">
Retning for små bølger
</text>
- <button label="?" name="WaterWave2Help" />
+ <button label="?" name="WaterWave2Help"/>
<text name="WaterWave2DirXText">
X
</text>
<text name="WaterWave2DirYText">
Y
</text>
- <slider label="" name="WaterWave2DirX" />
- <slider label="" name="WaterWave2DirY" />
+ <slider label="" name="WaterWave2DirX"/>
+ <slider label="" name="WaterWave2DirY"/>
<text name="BHText3">
Tekstur map
</text>
- <button label="?" name="WaterNormalMapHelp" />
- <texture_picker label="" name="WaterNormalMap" />
+ <button label="?" name="WaterNormalMapHelp"/>
+ <texture_picker label="" name="WaterNormalMap"/>
</panel>
</tab_container>
<string name="WLDefaultWaterNames">
diff --git a/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml
new file mode 100644
index 0000000000..d2f618579d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry">
+ <text name="media_label">
+ Indtast en URL eller et URL mønster for at tilføje til listen med godkendte domæner
+ </text>
+ <line_editor name="whitelist_entry" tool_tip="Indtast en URL eller et URL mønster for at godkende side(r)"/>
+ <button label="OK" name="ok_btn"/>
+ <button label="Annullér" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/inspect_object.xml b/indra/newview/skins/default/xui/da/inspect_object.xml
new file mode 100644
index 0000000000..8cbcf6cac8
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/inspect_object.xml
@@ -0,0 +1,34 @@
+<?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]
+ejer [OWNER]
+ </string>
+ <string name="Price">
+ L$[AMOUNT]
+ </string>
+ <string name="PriceFree">
+ Gratis!
+ </string>
+ <string name="Touch">
+ Berør
+ </string>
+ <string name="Sit">
+ Sid
+ </string>
+ <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/default/xui/da/mime_types_linux.xml b/indra/newview/skins/default/xui/da/mime_types_linux.xml
new file mode 100644
index 0000000000..69a0fb23f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+ <widgetset name="web">
+ <label name="web_label">
+ Web indhold
+ </label>
+ <tooltip name="web_tooltip">
+ Dette sted har ikke noget web indhold
+ </tooltip>
+ <playtip name="web_playtip">
+ Vis web indhold
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Film
+ </label>
+ <tooltip name="movie_tooltip">
+ Der er en film der kan afspilles her
+ </tooltip>
+ <playtip name="movie_playtip">
+ Afspil film
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Billede
+ </label>
+ <tooltip name="image_tooltip">
+ Der er et billede på dette sted
+ </tooltip>
+ <playtip name="image_playtip">
+ Vis stedets billede
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Lyd
+ </label>
+ <tooltip name="audio_tooltip">
+ Der er lyd på dette sted
+ </tooltip>
+ <playtip name="audio_playtip">
+ Afspil lyden for dette sted
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Realtids streaming
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Ingen -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Ingen -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Lyd
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Video
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Billede
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Film (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="application/javascript">
+ <label name="application/javascript_label">
+ Javascript
+ </label>
+ </mimetype>
+ <mimetype name="application/ogg">
+ <label name="application/ogg_label">
+ Ogg Lyd/Video
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ PDF Dokument
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Postscript Dokument
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Rich Text (RTF)
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Synchronized Multimedia Integration Language (SMIL)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Hjemmeside (XHTML)
+ </label>
+ </mimetype>
+ <mimetype name="application/x-director">
+ <label name="application/x-director_label">
+ Macromedia Director
+ </label>
+ </mimetype>
+ <mimetype name="audio/mid">
+ <label name="audio/mid_label">
+ Lyd (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Lyd (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Lyd (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Lyd (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Billede (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Billede (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Billede (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Billede (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Billede (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Billede (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Hjemmeside
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Tekst
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Film (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Film (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Film (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Film (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Film (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Film (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/da/panel_active_object_row.xml b/indra/newview/skins/default/xui/da/panel_active_object_row.xml
new file mode 100644
index 0000000000..9c27ea7fe2
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_active_object_row.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+ <string name="unknown_obj">
+ Ukendt objekt
+ </string>
+ <text name="object_name">
+ Unavngivet objekt
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml
new file mode 100644
index 0000000000..ab2e7a6e31
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <panel name="panel_call_buttons">
+ <button label="Opkald" name="call_btn"/>
+ <button label="Forlad samtale" name="end_call_btn"/>
+ <button label="Stemmekontroller" name="voice_ctrls_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_bottomtray.xml b/indra/newview/skins/default/xui/da/panel_bottomtray.xml
new file mode 100644
index 0000000000..2085840bb5
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_bottomtray.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+ <string name="SpeakBtnToolTip">
+ Slukker/tænder mikrofon
+ </string>
+ <string name="VoiceControlBtnToolTip">
+ Skjuler/viser stemme kontrol panel
+ </string>
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="gesture_panel">
+ <gesture_combo_box label="Bevægelse" name="Gesture" tool_tip="Skjuler/viser bevægelser"/>
+ </layout_panel>
+ <layout_panel name="movement_panel">
+ <button label="Flyt" name="movement_btn" tool_tip="Vis/skjul bevægelseskontroller"/>
+ </layout_panel>
+ <layout_panel name="cam_panel">
+ <button label="Vis" name="camera_btn" tool_tip="Vis/Skjul kamerakontroller"/>
+ </layout_panel>
+ <layout_panel name="snapshot_panel">
+ <button label="" name="snapshots" tool_tip="Tag foto"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml
new file mode 100644
index 0000000000..3826e8a228
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+ <panel name="avatar_alpha_color_panel">
+ <texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Alpha - øvre" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Alpha - øje" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_eyes.xml b/indra/newview/skins/default/xui/da/panel_edit_eyes.xml
new file mode 100644
index 0000000000..9c0d77c370
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_eyes.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_eyes_panel">
+ <panel name="avatar_eye_color_panel">
+ <texture_picker label="Iris" name="Iris" tool_tip="Klik for at vælge billede"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="eyes_main_tab" title="Øjne"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_gloves.xml b/indra/newview/skins/default/xui/da/panel_edit_gloves.xml
new file mode 100644
index 0000000000..1d3ba061bc
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_gloves.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+ <panel name="avatar_gloves_color_panel">
+ <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/>
+ <color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="gloves_main_tab" title="Handsker"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_jacket.xml b/indra/newview/skins/default/xui/da/panel_edit_jacket.xml
new file mode 100644
index 0000000000..4c9973c0bd
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_jacket.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+ <panel name="avatar_jacket_color_panel">
+ <texture_picker label="Stof foroven" name="Upper Fabric" tool_tip="Klik for at vælge et billede"/>
+ <texture_picker label="Stof forneden" name="Lower Fabric" tool_tip="Klik for at vælge et billede"/>
+ <color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="jacket_main_tab" title="Jakke"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_pants.xml b/indra/newview/skins/default/xui/da/panel_edit_pants.xml
new file mode 100644
index 0000000000..bcb1450258
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_pants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+ <panel name="avatar_pants_color_panel">
+ <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et bilede"/>
+ <color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="pants_main_tab" title="Bukser"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_pick.xml b/indra/newview/skins/default/xui/da/panel_edit_pick.xml
new file mode 100644
index 0000000000..41db2be5e8
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_pick.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Redigér Pick" name="panel_edit_pick">
+ <text name="title">
+ Redigér favorit
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <icon label="" name="edit_icon" tool_tip="Klik for at vælge billede"/>
+ <text name="Name:">
+ Titel:
+ </text>
+ <text name="description_label">
+ Beskrivelse:
+ </text>
+ <text name="location_label">
+ Lokation:
+ </text>
+ <text name="pick_location">
+ henter...
+ </text>
+ <button label="Sæt til nuværende lokation" name="set_to_curr_location_btn"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <button label="Gem [WHAT]" name="save_changes_btn"/>
+ <button label="Annullér" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_shoes.xml b/indra/newview/skins/default/xui/da/panel_edit_shoes.xml
new file mode 100644
index 0000000000..54a0cc01a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_shoes.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+ <panel name="avatar_shoes_color_panel">
+ <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/>
+ <color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shoes_main_tab" title="Sko"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_skin.xml b/indra/newview/skins/default/xui/da/panel_edit_skin.xml
new file mode 100644
index 0000000000..46dce354a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_skin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skin_panel">
+ <panel name="avatar_skin_color_panel">
+ <texture_picker label="Hoved tatoveringer" name="Head Tattoos" tool_tip="Klik for at vælge et bilede"/>
+ <texture_picker label="Øvre tatoveringer" name="Upper Tattoos" tool_tip="Klik for at vælge et bilede"/>
+ <texture_picker label="Nedre tatoveringer" name="Lower Tattoos" tool_tip="Klik for at vælge et bilede"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skin_color_tab" title="Hudfarve"/>
+ <accordion_tab name="skin_face_tab" title="Ansigtsdetaljer"/>
+ <accordion_tab name="skin_makeup_tab" title="Makeup"/>
+ <accordion_tab name="skin_body_tab" title="Kropsdetaljer"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_socks.xml b/indra/newview/skins/default/xui/da/panel_edit_socks.xml
new file mode 100644
index 0000000000..6ef6dad86c
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_socks.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_socks_panel">
+ <panel name="avatar_socks_color_panel">
+ <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/>
+ <color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="socks_main_tab" title="Strømper"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_underpants.xml b/indra/newview/skins/default/xui/da/panel_edit_underpants.xml
new file mode 100644
index 0000000000..de52146e29
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_underpants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+ <panel name="avatar_underpants_color_panel">
+ <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/>
+ <color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="underpants_main_tab" title="Underbukser"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml
new file mode 100644
index 0000000000..6c2e1f5833
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+ <panel name="avatar_undershirt_color_panel">
+ <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/>
+ <color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="undershirt_main_tab" title="Undertrøje"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml
new file mode 100644
index 0000000000..12bc120c45
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Kan bæres" name="panel_edit_wearable">
+ <string name="edit_shape_title">
+ Redigerer kropsbygning
+ </string>
+ <string name="edit_skin_title">
+ Redigerer hud
+ </string>
+ <string name="edit_hair_title">
+ Redigerer hår
+ </string>
+ <string name="edit_eyes_title">
+ Redigerer øjne
+ </string>
+ <string name="edit_shirt_title">
+ Redigerer trøje
+ </string>
+ <string name="edit_pants_title">
+ Redigerer bukser
+ </string>
+ <string name="edit_shoes_title">
+ Redigerer sko
+ </string>
+ <string name="edit_socks_title">
+ Redigerer strømper
+ </string>
+ <string name="edit_jacket_title">
+ Redigerer jakke
+ </string>
+ <string name="edit_skirt_title">
+ Redigerer nederdel
+ </string>
+ <string name="edit_gloves_title">
+ Redigerer handsker
+ </string>
+ <string name="edit_undershirt_title">
+ Redigerer undertrøje
+ </string>
+ <string name="edit_underpants_title">
+ Redigerer underbukser
+ </string>
+ <string name="edit_alpha_title">
+ Redigerer Alpha maske
+ </string>
+ <string name="edit_tattoo_title">
+ Redigerer tatovering
+ </string>
+ <string name="shape_desc_text">
+ Kropsbygning:
+ </string>
+ <string name="skin_desc_text">
+ Hud:
+ </string>
+ <string name="hair_desc_text">
+ Hår:
+ </string>
+ <string name="eyes_desc_text">
+ Øjne:
+ </string>
+ <string name="shirt_desc_text">
+ Trøje:
+ </string>
+ <string name="pants_desc_text">
+ Bukser:
+ </string>
+ <string name="shoes_desc_text">
+ Sko:
+ </string>
+ <string name="socks_desc_text">
+ Strømper:
+ </string>
+ <string name="jacket_desc_text">
+ Jakke:
+ </string>
+ <string name="skirt_skirt_desc_text">
+ Nederdel:
+ </string>
+ <string name="gloves_desc_text">
+ Handsker:
+ </string>
+ <string name="undershirt_desc_text">
+ Undertrøje:
+ </string>
+ <string name="underpants_desc_text">
+ Underbukser:
+ </string>
+ <string name="alpha_desc_text">
+ Alpha maske:
+ </string>
+ <string name="tattoo_desc_text">
+ Tatovering:
+ </string>
+ <text name="edit_wearable_title" value="Redigerer kropsbygning"/>
+ <panel label="Trøje" name="wearable_type_panel">
+ <text name="description_text" value="Kropsbygning:"/>
+ </panel>
+ <panel name="button_panel">
+ <button label="Gem som" name="save_as_button"/>
+ <button label="Vend tilbage" name="revert_button"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_friends.xml b/indra/newview/skins/default/xui/da/panel_friends.xml
index 2644b80968..a41eaf20c1 100644
--- a/indra/newview/skins/default/xui/da/panel_friends.xml
+++ b/indra/newview/skins/default/xui/da/panel_friends.xml
@@ -1,26 +1,20 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="friends">
<string name="Multiple">
- Flere venner...
+ Flere venner
</string>
- <scroll_list name="friend_list"
- tool_tip="Hold Shift eller Ctrl nede imens du klikker for at vælge flere venner">
- <column name="icon_online_status" tool_tip="Online status" />
- <column label="Name" name="friend_name" tool_tip="Navn" />
- <column name="icon_visible_online" tool_tip="Venner kan se at du er online" />
- <column name="icon_visible_map" tool_tip="Venner kan finde dig på kortet" />
- <column name="icon_edit_mine"
- tool_tip="Venner kan rette i, slette eller tage dine objekter" />
- <column name="icon_edit_theirs" tool_tip="Du kan rette i denne vens objekter" />
+ <scroll_list name="friend_list" tool_tip="Hold Shift eller Ctrl nede imens du klikker for at vælge flere venner">
+ <column name="icon_online_status" tool_tip="Online status"/>
+ <column label="Name" name="friend_name" tool_tip="Navn"/>
+ <column name="icon_visible_online" tool_tip="Venner kan se at du er online"/>
+ <column name="icon_visible_map" tool_tip="Venner kan finde dig på kortet"/>
+ <column name="icon_edit_mine" tool_tip="Venner kan rette i, slette eller tage dine objekter"/>
+ <column name="icon_edit_theirs" tool_tip="Du kan rette i denne vens objekter"/>
</scroll_list>
- <button label="IM" name="im_btn" tool_tip="Skriv en personlig besked (IM)" />
- <button label="Profil" name="profile_btn"
- tool_tip="Vis billede, grupper og anden information" />
- <button label="Teleport..." name="offer_teleport_btn"
- tool_tip="Tilbyd denne ven at blive teleporteret til din nuværende position" />
- <button label="Betal..." name="pay_btn"
- tool_tip="Giv Linden dollars (L$) til denne ven" />
- <button label="Fjern..." name="remove_btn"
- tool_tip="Fjern denne beboer fra din venneliste" />
- <button label="Tilføj..." name="add_btn" tool_tip="Tilbyd venskab til denne beboer" />
+ <button label="IM" name="im_btn" tool_tip="Skriv en personlig besked (IM)"/>
+ <button label="Profil" name="profile_btn" tool_tip="Vis billede, grupper og anden information"/>
+ <button label="Teleport" name="offer_teleport_btn" tool_tip="Tilbyd denne ven at blive teleporteret til din nuværende position"/>
+ <button label="Betal" name="pay_btn" tool_tip="Giv Linden dollars (L$) til denne ven"/>
+ <button label="Fjern" name="remove_btn" tool_tip="Fjern denne beboer fra din venneliste"/>
+ <button label="Tilføj" name="add_btn" tool_tip="Tilbyd venskab til denne beboer"/>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_control_panel.xml b/indra/newview/skins/default/xui/da/panel_group_control_panel.xml
new file mode 100644
index 0000000000..1db2db45af
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_group_control_panel.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <button label="Group Profile" name="group_info_btn"/>
+ <panel name="panel_call_buttons">
+ <button label="Opkaldsgruppe" name="call_btn"/>
+ <button label="Forlad samtale" name="end_call_btn"/>
+ <button label="Kontroller for åben stemmechat" name="voice_ctrls_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_general.xml b/indra/newview/skins/default/xui/da/panel_group_general.xml
index 4e98ca2bc2..ec957e6094 100644
--- a/indra/newview/skins/default/xui/da/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_general.xml
@@ -1,72 +1,35 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Generelt" name="general_tab">
- <string name="help_text">
- Generel-fanen indeholder generel information om denne gruppe, en liste med ejere og synlige medlemmer, generel-gruppeindstillinger og medlemsmuligheder.
-
-Bevæg din mus over mulighederne for mere hjælp.
- </string>
- <string name="group_info_unchanged">
- Generel gruppeinformation er ændret.
- </string>
- <button label="?" label_selected="?" name="help_button"/>
- <line_editor label="Indtast nyt gruppenavn her" name="group_name_editor"/>
- <text name="group_name">
- Skriv det nye gruppenavn her
- </text>
- <text name="prepend_founded_by">
- Grundlagt af
- </text>
- <text name="founder_name" left_delta="70" >
- (venter)
- </text>
- <text name="group_charter_label">
- Gruppens formål
- </text>
- <texture_picker label="Gruppe distinktioner" name="insignia" tool_tip="Klik for at vælge et billede"/>
+ <panel.string name="help_text">
+ Generelt-fanen indeholder generel information om denne gruppe, en liste med ejere og synlige medlemmer, generel-gruppeindstillinger og medlemsmuligheder. Bevæg din mus over mulighederne for mere hjælp.
+ </panel.string>
+ <panel.string name="group_info_unchanged">
+ Generel gruppeinformation er ændret
+ </panel.string>
+ <panel.string name="incomplete_member_data_str">
+ Henter medlemsinformationer
+ </panel.string>
<text_editor name="charter">
Gruppens formål
</text_editor>
- <button label="Tilmeld (L$0)" label_selected="Tilmeld (L$0)" name="join_button"/>
- <button label="Detaljeret visning" label_selected="Detaljeret visning" name="info_button"/>
- <text name="text_owners_and_visible_members">
- Ejere &amp; synlige medlemmer
- </text>
- <text name="text_owners_are_shown_in_bold">
- (Ejere er vist med fed skrift)
- </text>
<name_list name="visible_members">
- <name_list.columns label="Medlemsnavn" name="name"/>
+ <name_list.columns label="Medlem" name="name"/>
<name_list.columns label="Titel" name="title"/>
- <name_list.columns label="Senest på d." name="online"/>
</name_list>
- <text name="text_group_preferences">
- Gruppeindstillinger
+ <text name="active_title_label">
+ Min titel
</text>
+ <combo_box name="active_title" tool_tip="Angiver den titel der vises i din avatars navnefelt, når denne gruppe er aktiv"/>
+ <check_box label="Modtag gruppeinformationer" name="receive_notices" tool_tip="Angiver om du vil modtage informationer fra denne gruppe. Fjern markeringen i boksen hvis gruppen spammer dig."/>
+ <check_box label="Vis gruppen i min profil" name="list_groups_in_profile" tool_tip="Angiver om du vil vise denne gruppe i dine profilinformationer"/>
<panel name="preferences_container">
- <check_box label="Vis i søgning" name="show_in_group_list" tool_tip="Lad folk se denne gruppe i søgeresultater."/>
<check_box label="Åben tilmelding" name="open_enrollement" tool_tip="Angiver om denne gruppe tillader nye medlemmer at tilmelde sig, uden de er inviteret."/>
- <check_box label="Tilmeldingsgebyr:" name="check_enrollment_fee" tool_tip="Angiver om der kræves et gebyr, for at tilmelde sig gruppen."/>
- <spinner name="spin_enrollment_fee" tool_tip="Nye medlemmer skal betale dette gebyr for at tilmelde sig gruppen, når Tilmeldingsgebyr er valgt." width="60" left_delta="130"/>
+ <check_box label="Tilmeldingsgebyr" name="check_enrollment_fee" tool_tip="Angiver om der kræves et gebyr, for at tilmelde sig gruppen"/>
+ <spinner label="L$" left_delta="130" name="spin_enrollment_fee" tool_tip="Nye medlemmer skal betale dette gebyr for at tilmelde sig gruppen, når &quot;Tilmeldingsgebyr&quot; er valgt." width="60"/>
<combo_box name="group_mature_check" tool_tip="Angiver om din gruppes information anses som &apos;mature&apos;." width="150">
- <combo_box.item name="select_mature" label="- Vælg indholdsrating -"/>
- <combo_box.item name="mature" label="Mature indhold"/>
- <combo_box.item name="pg" label="PG indhold"/>
+ <combo_box.item label="PG indhold" name="pg"/>
+ <combo_box.item label="Mature indhold" name="mature"/>
</combo_box>
- <panel name="title_container">
- <text name="active_title_label">
- Min aktive titel
- </text>
- <combo_box name="active_title" tool_tip="Angiver den titel der vises i din avatars navnefelt, når denne gruppe er aktiv."/>
- </panel>
- <check_box label="Modtag gruppeinformationer" name="receive_notices" tool_tip="Angiver om du vil modtage informationer fra denne gruppe. Fjern markeringen i boksen hvis gruppen spammer dig."/>
- <check_box label="Vis gruppen i min profil" name="list_groups_in_profile" tool_tip="Angiver om du vil vise denne gruppe i dine profilinformationer"/>
+ <check_box initial_value="true" label="Vis i søgning" name="show_in_group_list" tool_tip="Lad folk se denne gruppe i søgeresultater."/>
</panel>
- <string name="incomplete_member_data_str">
- Henter medlemsinformationer
- </string>
- <string name="confirm_group_create_str">
- Creating this group will cost L$100.
-Er du virkelig, virkelig, VIRKELIG sikker på, at du vil bruge L$100 på at lave denne gruppe?
-Du skal være opmærksom på, at hvis ingen andre indmelder sig i denne gruppe indenfor 48 timer, så vil gruppen blive opløst, og gruppens navn vil ikke være tilgængelig i fremtiden.
- </string>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml
new file mode 100644
index 0000000000..9940ebbd4d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Gruppe info" name="GroupInfo">
+ <panel.string name="default_needs_apply_text">
+ Der er ændringer på denne fane der ikke er gemt
+ </panel.string>
+ <panel.string name="want_apply_text">
+ Ønsker du at gemme disse ændringer?
+ </panel.string>
+ <panel.string name="group_join_btn">
+ Tilmeld (L$[AMOUNT])
+ </panel.string>
+ <panel.string name="group_join_free">
+ Gratis
+ </panel.string>
+ <text name="group_name" value="(Henter...)"/>
+ <line_editor label="Indtast dit nye gruppenavn her" name="group_name_editor"/>
+ <texture_picker label="" name="insignia" tool_tip="Klik for at vælge bilede"/>
+ <text name="prepend_founded_by">
+ Grundlægger:
+ </text>
+ <name_box initial_value="(finder)" name="founder_name"/>
+ <text name="join_cost_text">
+ Gratis
+ </text>
+ <button label="MELD IND NU!" name="btn_join"/>
+ <accordion name="groups_accordion">
+ <accordion_tab name="group_general_tab" title="Generelt"/>
+ <accordion_tab name="group_roles_tab" title="Roller"/>
+ <accordion_tab name="group_notices_tab" title="Beskeder"/>
+ <accordion_tab name="group_land_tab" title="Land/Aktiver"/>
+ </accordion>
+ <panel name="button_row">
+ <button label="Lav" label_selected="Ny gruppe" name="btn_create"/>
+ <button label="Gem" label_selected="Gem" name="btn_apply"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_invite.xml b/indra/newview/skins/default/xui/da/panel_group_invite.xml
index 813007aee0..1e00642c29 100644
--- a/indra/newview/skins/default/xui/da/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_invite.xml
@@ -1,31 +1,30 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Invitér et medlem" name="invite_panel">
+ <panel.string name="confirm_invite_owner_str">
+ Er du sikker på, at du vil invitere ny(e) ejer(e)? Denne handling er permanent!
+ </panel.string>
+ <panel.string name="loading">
+ (indlæser...)
+ </panel.string>
+ <panel.string name="already_in_group">
+ Nogen af avatarerne var allerede i gruppen og blev ikke inviteret
+ </panel.string>
<text name="help_text">
Du kan invitere flere beboere ad
gangen til at blive medlem af din
gruppe. Klik &apos;Åben personvælger&apos; for
at begynde.
</text>
- <button label="Åben personvælger" name="add_button" bottom_delta="-30"/>
- <name_list name="invitee_list"
- tool_tip="Hold Ctrl-tasten nede og klik på beboere for at vælge flere." />
- <button label="Fjern valgte fra listen" name="remove_button"
- tool_tip="Fjerner beboere, der er valgt på ovenstående invitationsliste." />
+ <button bottom_delta="-30" label="Åben personvælger" name="add_button"/>
+ <name_list name="invitee_list" tool_tip="Hold Ctrl knappen nede og klik på beboer navne for at vælge flere"/>
+ <button label="Fjern valgte fra listen" name="remove_button" tool_tip="Fjern beboere valgt ovenfor fra invitationslisten"/>
<text name="role_text">
Vælg hvilken rolle, du vil tildele dem:
</text>
- <combo_box name="role_name"
- tool_tip="Vælg fra listen med roller, du har tilladelse til at tildele medlemmerne." />
- <button label="Send invitationer" name="ok_button" />
- <button label="Annullér" name="cancel_button" />
- <string name="confirm_invite_owner_str">
- Er du sikker på, at du vil invitere ny(e) ejer(e)? Denne handling er permanent!
- </string>
- <!--button bottom="25" font="SansSerifSmall" halign="center" height="20"
- label="Send invitationer" left="65" name="ok_button" width="140" />
- <button bottom_delta="-22" font="SansSerifSmall" halign="center" height="20"
- label="Annull&#233;r" left_delta="0" name="cancel_button" width="140" /-->
- <string name="loading">
- (indlæser...)
+ <combo_box name="role_name" tool_tip="Vælg fra en liste med roller du har ret til at tildele medlemmer"/>
+ <button label="Send invitationer" name="ok_button"/>
+ <button label="Annullér" name="cancel_button"/>
+ <string name="GroupInvitation">
+ Gruppe invitation
</string>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_land_money.xml b/indra/newview/skins/default/xui/da/panel_group_land_money.xml
index 636a16f97b..c73d7c807d 100644
--- a/indra/newview/skins/default/xui/da/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_land_money.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Land &amp; L$" name="land_money_tab">
<string name="help_text">
- Grunde ejet af gruppen er vist sammen med bidragsdetaljer. En advarsel vises indtil Total land i brug er mindre end eller lig med det totale bidrag. Planlægning, detaljer og salgsfaneblade viser information om gruppens økonomi.
+ En advarsel vises indtil Total land i brug er mindre end eller lig med det totale bidrag.
</string>
<button label="?" name="help_button"/>
<string name="cant_view_group_land_text">
@@ -17,27 +17,27 @@
Gruppeejet land
</text>
<scroll_list name="group_parcel_list">
- <column label="Grundens navn" name="name"/>
+ <column label="Parcel" name="name"/>
<column label="Region" name="location"/>
<column label="Type" name="type"/>
<column label="Område" name="area"/>
<column label="" name="hidden"/>
</scroll_list>
- <button label="Vis på kort" label_selected="Vis på kort" name="map_button"/>
+ <button label="Kort" label_selected="Kort" name="map_button"/>
<text name="total_contributed_land_label">
- Total bidrag:
+ Totalt bidrag:
</text>
<text name="total_contributed_land_value">
[AREA] m²
</text>
<text name="total_land_in_use_label">
- Total land i brug:
+ Totalt land i brug:
</text>
<text name="total_land_in_use_value">
[AREA] m²
</text>
<text name="land_available_label">
- Tilgængeligt land:
+ Ledigt land:
</text>
<text name="land_available_value">
[AREA] m²
@@ -46,40 +46,39 @@
Dit bidrag:
</text>
<string name="land_contrib_error">
- Ikke muligt at lave dit bidrag til landet.
+ Ikke muligt at lave dit bidrag til landet
</string>
<text name="your_contribution_units">
- ( m² )
+ m²
</text>
<text name="your_contribution_max_value">
([AMOUNT] maks.)
</text>
<text name="group_over_limit_text">
- Gruppemedlemmer må bidrag med mere, for at understøtte
-med det land der bliver brugt.
+ Gruppemedlemmer må bidrag med mere, for at understøtte med det land der bliver brugt
</text>
<text name="group_money_heading">
Gruppe L$
</text>
<tab_container name="group_money_tab_container">
- <panel label="Planlægning" name="group_money_planning_tab">
+ <panel label="PLANLÆGNING" name="group_money_planning_tab">
<text_editor name="group_money_planning_text">
- Beregner...
+ Henter...
</text_editor>
</panel>
- <panel label="Detaljer" name="group_money_details_tab">
+ <panel label="DETALJER" name="group_money_details_tab">
<text_editor name="group_money_details_text">
- Beregner...
+ Henter...
</text_editor>
- <button label="&lt; Før" label_selected="&lt; Før" name="earlier_details_button" tool_tip="Gå tilbage i tid"/>
- <button label="Efter &gt;" label_selected="Efter &gt;" name="later_details_button" tool_tip="Gå frem i tid"/>
+ <button label="&lt; Før" label_selected="&lt; Før" name="earlier_details_button" tool_tip="Tilbage"/>
+ <button label="Efter &gt;" label_selected="Efter &gt;" name="later_details_button" tool_tip="Næste"/>
</panel>
- <panel label="Salg" name="group_money_sales_tab">
+ <panel label="SALG" name="group_money_sales_tab">
<text_editor name="group_money_sales_text">
- Beregner...
+ Henter...
</text_editor>
- <button label="&lt; Før" label_selected="&lt; Før" name="earlier_sales_button" tool_tip="Gå tilbage i tid"/>
- <button label="Efter &gt;" label_selected="Efter &gt;" name="later_sales_button" tool_tip="Gå frem i tid"/>
+ <button label="&lt; Før" label_selected="&lt; Før" name="earlier_sales_button" tool_tip="Tilbage"/>
+ <button label="Efter &gt;" label_selected="Efter &gt;" name="later_sales_button" tool_tip="Næste"/>
</panel>
</tab_container>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_notices.xml b/indra/newview/skins/default/xui/da/panel_group_notices.xml
index 9e6aa9eb7c..ec503c37dc 100644
--- a/indra/newview/skins/default/xui/da/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_notices.xml
@@ -1,42 +1,35 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Beskeder" name="notices_tab">
- <string name="help_text">
+ <panel.string name="help_text">
Beskeder er en hurtig måde at kommunikere på
på tværs i gruppen ved at sende en meddelelse eller en
eventuel vedlagt genstand. beskeder sendes kun til
gruppemedlemmer i roller som giver evnen til at
modtage dem. Du kan slå beskeder fra i
Generel-fanebladet.
- </string>
- <string name="no_notices_text">
- Der er ingen tidligere beskeder.
- </string>
- <button label="?" label_selected="?" name="help_button" />
- <text name="lbl">
- Arkiv med gruppebeskeder
- </text>
+ </panel.string>
+ <panel.string name="no_notices_text">
+ Der er ikke nogen tidligere beskeder
+ </panel.string>
<text name="lbl2">
- Beskeder er gemt i 14 dage.
-Listen er begrænset til 200 beskeder pr. gruppe hver dag.
+ Beskeder gemmes i 14 dage.
+Maksimum er 200 pr. gruppe pr. dag
</text>
<scroll_list name="notice_list">
- <column label="" name="icon" />
- <column label="Emne" name="subject" />
- <column label="Fra" name="from" />
- <column label="Dato" name="date" />
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="Emne" name="subject"/>
+ <scroll_list.columns label="Fra" name="from"/>
+ <scroll_list.columns label="Dato" name="date"/>
</scroll_list>
<text name="notice_list_none_found">
- Ingen fundet.
+ Ingen fundet
</text>
- <button label="Lav ny besked" label_selected="Lav ny besked" name="create_new_notice" />
- <button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" />
+ <button label="Lav en ny besked" label_selected="Lav ny besked" name="create_new_notice" tool_tip="Lav en ny besked"/>
+ <button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" tool_tip="Genopfrisk beskedliste"/>
<panel label="Lav ny besked" name="panel_create_new_notice">
<text name="lbl">
Lav en besked
</text>
- <text name="lbl2">
- Du kan tilføje et bilag til beskeden ved at trække den fra beholdningen til dette felt. Vedhæftede objekter skal være sat til at kunne kopieres og overføres, og du kan ikke sende en mappe.
- </text>
<text name="lbl3">
Emne:
</text>
@@ -46,17 +39,19 @@ Listen er begrænset til 200 beskeder pr. gruppe hver dag.
<text name="lbl5">
Vedhæft:
</text>
- <button label="Fjern bilag" label_selected="Fjern bilag" name="remove_attachment" />
- <button label="Afsend" label_selected="Afsend" name="send_notice" />
- <panel name="drop_target"
- tool_tip="Træk en genstand fra beholdningen over på denne boks for at sende den sammen med beskeden. Du skal have tilladelse til at kopiere og overføre genstanden, for at kunne sende den med beskeden." />
+ <text name="string">
+ Træk og slip en gensand for at vedhæfte den:
+ </text>
+ <button label="Fjern" label_selected="Fjern bilag" name="remove_attachment"/>
+ <button label="Send" label_selected="Send" name="send_notice"/>
+ <group_drop_target name="drop_target" tool_tip="Træk en genstand fra din beholdning til dette felt for at sende den med denne besked. Du skal have rettigheder til at kopiere og overdrage denne genstand for at kunne vedhæfte den."/>
</panel>
<panel label="Se tidligere beskeder" name="panel_view_past_notice">
<text name="lbl">
Arkiverede beskeder
</text>
<text name="lbl2">
- For at sende en ny besked, klik på &apos;Lav ny besked&apos;-knappen foroven.
+ For at sende en ny besked, tryk på + knappen
</text>
<text name="lbl3">
Emne:
@@ -64,6 +59,6 @@ Listen er begrænset til 200 beskeder pr. gruppe hver dag.
<text name="lbl4">
Besked:
</text>
- <button label="åben bilag" label_selected="åben bilag" name="open_attachment" />
+ <button label="Åben bilag" label_selected="åben bilag" name="open_attachment"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_me.xml b/indra/newview/skins/default/xui/da/panel_me.xml
new file mode 100644
index 0000000000..2cfd358d13
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_me.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Min profil" name="panel_me">
+ <tab_container name="tabs">
+ <panel label="PROFIL" name="panel_profile"/>
+ <panel label="FAVORITTER" name="panel_picks"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_general.xml b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml
new file mode 100644
index 0000000000..7f1581888d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Generelt" name="Media Settings General">
+ <text name="home_label">
+ Hjemmeside:
+ </text>
+ <text name="home_fails_whitelist_label">
+ (Denne side optræder ikke i godkendte sider)
+ </text>
+ <line_editor name="home_url" tool_tip="Hjemmesiden for kilden til dette media"/>
+ <text name="preview_label">
+ Vis
+ </text>
+ <text name="current_url_label">
+ Nuværende side:
+ </text>
+ <text name="current_url" tool_tip="Den nuværende hjemmeside for kilden til dette media" value=""/>
+ <button label="Nulstil" name="current_url_reset_btn"/>
+ <check_box initial_value="false" label="Gentag afspil" name="auto_loop"/>
+ <check_box initial_value="false" label="Første klik medfører interaktion" name="first_click_interact"/>
+ <check_box initial_value="false" label="Auto zoom" name="auto_zoom"/>
+ <check_box initial_value="false" label="Afspil automatisk media" name="auto_play"/>
+ <text name="media_setting_note">
+ Note: Beboere kan selv ændre denne indstilling
+ </text>
+ <check_box initial_value="false" label="Auto skalér media på objektets overflade" name="auto_scale"/>
+ <text name="size_label">
+ Størrelse:
+ </text>
+ <text name="X_label">
+ X
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_security.xml b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml
new file mode 100644
index 0000000000..ee341f9142
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sikkerhed" name="Media Settings Security">
+ <check_box initial_value="false" label="Tillad kun adgang til specifikke URL&apos;er (via &quot;prefix&quot;)" name="whitelist_enable"/>
+ <text name="home_url_fails_some_items_in_whitelist">
+ Opslag som hjemmesiden fejler ved er markeret:
+ </text>
+ <button label="Tilføj" name="whitelist_add"/>
+ <button label="Slet" name="whitelist_del"/>
+ <text name="home_url_fails_whitelist">
+ Advarsel: Hjemmesiden angive i &quot;Generelt&quot; fanen er ikke indeholdt i godkendte sider. Den er slået fra, indtil en gyldig værdi er tilføjet.
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml
new file mode 100644
index 0000000000..1dffc73239
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_my_profile.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profil" name="panel_profile">
+ <string name="no_partner_text" value="Ingen"/>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="second_life_image_panel">
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Klik på Rediger Profil knappen nedenfor for at ændre billede"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <icon label="" name="real_world_edit_icon" tool_tip="Klik på Rediger Profil knappen nedenfor for at ændre billede"/>
+ <text name="title_rw_descr_text" value="RL:"/>
+ </panel>
+ <text name="me_homepage_text">
+ Web:
+ </text>
+ <text name="title_member_text" value="Medlem siden:"/>
+ <text name="title_acc_status_text" value="Konto:"/>
+ <text name="acc_status_text" value="Beboer. Ingen betalingsinfo"/>
+ <text name="title_partner_text" value="Partner:"/>
+ <text name="title_groups_text" value="Grupper:"/>
+ </panel>
+ </scroll_container>
+ <panel name="profile_buttons_panel">
+ <button label="Tilføj ven" name="add_friend"/>
+ <button label="IM" name="im"/>
+ <button label="Opkald" name="call"/>
+ <button label="Kort" name="show_on_map_btn"/>
+ <button label="Teleportér" name="teleport"/>
+ </panel>
+ <panel name="profile_me_buttons_panel">
+ <button label="Rediger profil" name="edit_profile_btn" tool_tip="Redigér personlig information"/>
+ <button label="Ændre udseende" name="edit_appearance_btn" tool_tip="Ændre dit udseende: fysiske data, tøj m.v."/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat.xml
new file mode 100644
index 0000000000..7f94345976
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- All our XML is utf-8 encoded. -->
+<panel name="nearby_chat">
+ <panel name="chat_caption">
+ <text name="sender_name">
+ CHAT NÆRVED
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
new file mode 100644
index 0000000000..2aa7ed7c6c
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+ <string name="min_width">
+ 192
+ </string>
+ <string name="max_width">
+ 320
+ </string>
+ <line_editor label="Klik her for at chatte." name="chat_box" tool_tip="Tryk på enter for at tale, Ctrl-Enter for at råbe."/>
+ <button name="show_nearby_chat" tool_tip="Viser/skjuler log for chat nærved"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_pick_info.xml b/indra/newview/skins/default/xui/da/panel_pick_info.xml
new file mode 100644
index 0000000000..ce05018b5b
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_pick_info.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+ <text name="title" value="Favorit info"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="pick_name" value="[name]"/>
+ <text name="pick_location" value="[loading...]"/>
+ <text name="pick_desc" value="[description]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <button label="Teleportér" name="teleport_btn"/>
+ <button label="Kort" name="show_on_map_btn"/>
+ <button label="Redigér" name="edit_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_place_profile.xml b/indra/newview/skins/default/xui/da/panel_place_profile.xml
new file mode 100644
index 0000000000..24316fea14
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_place_profile.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+ <string name="on" value="Til"/>
+ <string name="off" value="Fra"/>
+ <string name="anyone" value="Enhver"/>
+ <string name="available" value="ledig"/>
+ <string name="allocated" value="fordelt"/>
+ <string name="title_place" value="Sted profil"/>
+ <string name="title_teleport_history" value="Teleport historik sted"/>
+ <string name="not_available" value="(N\A)"/>
+ <string name="unknown" value="(ukendt)"/>
+ <string name="public" value="(offentlig)"/>
+ <string name="none_text" value="(ingen)"/>
+ <string name="sale_pending_text" value="(Salg igang)"/>
+ <string name="group_owned_text" value="(Gruppe ejet)"/>
+ <string name="price_text" value="L$"/>
+ <string name="area_text" value="m²"/>
+ <string name="all_residents_text" value="Alle beboere"/>
+ <string name="group_text" value="Gruppe"/>
+ <string name="can_resell">
+ Købt land i denne region må sælges videre
+ </string>
+ <string name="can_not_resell">
+ Købt land i denne region må ikke sælges videre
+ </string>
+ <string name="can_change">
+ Købt jord i denne region må gerne samles eller opdeles.
+ </string>
+ <string name="can_not_change">
+ Købt jord i denne region må ikke samles eller opdeles.
+ </string>
+ <string name="server_update_text">
+ Information om dette sted er ikke tilgængelig før en server opdatering.
+ </string>
+ <string name="server_error_text">
+ Information om dette sted er ikke tilgængelig lige nu, prøv venligst igen senere.
+ </string>
+ <string name="server_forbidden_text">
+ Information om dette sted er ikke tilgængelig på grund af adgangsbegrænsninger. Check venligst dine rettigheder med stedets ejer.
+ </string>
+ <string name="acquired_date">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </string>
+ <text name="title" value="Sted profil"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="owner_label" value="Ejer:"/>
+ <text name="maturity_value" value="ukendt"/>
+ <accordion name="advanced_info_accordion">
+ <accordion_tab name="parcel_characteristics_tab" title="Parcel">
+ <panel>
+ <text name="rating_label" value="Rating:"/>
+ <text name="rating_value" value="ukendt"/>
+ <text name="voice_label" value="Stem:"/>
+ <text name="voice_value" value="Til"/>
+ <text name="fly_label" value="Flyve:"/>
+ <text name="fly_value" value="Til"/>
+ <text name="push_label" value="Skub:"/>
+ <text name="push_value" value="Fra"/>
+ <text name="build_label" value="Byg:"/>
+ <text name="build_value" value="Til"/>
+ <text name="scripts_label" value="Scripts:"/>
+ <text name="scripts_value" value="Til"/>
+ <text name="damage_label" value="Skade:"/>
+ <text name="damage_value" value="Fra"/>
+ <button label="Om land" name="about_land_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="region_information_tab" title="Region">
+ <panel>
+ <text name="region_name_label" value="Region:"/>
+ <text name="region_type_label" value="Type:"/>
+ <text name="region_rating_label" value="Rating:"/>
+ <text name="region_owner_label" value="Ejer:"/>
+ <text name="region_group_label" value="Gruppe:"/>
+ <button label="Region/Estate" name="region_info_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="estate_information_tab" title="Estate">
+ <panel>
+ <text name="estate_name_label" value="Estate:"/>
+ <text name="estate_rating_label" value="Rating:"/>
+ <text name="estate_owner_label" value="Ejer:"/>
+ <text name="covenant_label" value="Regler:"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="sales_tab" title="Til salg">
+ <panel>
+ <text name="sales_price_label" value="Pris:"/>
+ <text name="area_label" value="Areal:"/>
+ <text name="traffic_label" value="Trafik:"/>
+ <text name="primitives_label" value="Prims:"/>
+ <text name="parcel_scripts_label" value="Scripts:"/>
+ <text name="terraform_limits_label" value="Terraform begrænsninger:"/>
+ <text name="subdivide_label" value="Mulighed for at Opdele/samle:"/>
+ <text name="resale_label" value="Mulighed for videresalg:"/>
+ <text name="sale_to_label" value="Til salg til:"/>
+ </panel>
+ </accordion_tab>
+ </accordion>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
index c8602d3119..609512bc1b 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
@@ -39,4 +39,8 @@
</text>
<check_box initial_value="true" label="Afspil skrive animation ved chat" name="play_typing_animation"/>
<check_box label="Send e-mail til mig når jeg modtager IM og er offline" name="send_im_to_email"/>
+ <radio_group name="chat_window" tool_tip="Vis dine personlige beskeder i separate vinduer eller i ét vindue med mange faner (ændring kræver genstart)">
+ <radio_item label="Flere vinduer" name="radio"/>
+ <radio_item label="Et vindue" name="radio2"/>
+ </radio_group>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_general.xml b/indra/newview/skins/default/xui/da/panel_preferences_general.xml
index ed23a9a706..e17ccca4a1 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_general.xml
@@ -1,85 +1,62 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Generelt" name="general_panel">
- <combo_box name="start_location_combo">
- <combo_box.item name="MyHome" tool_tip="Log ind til min hjemme lokation som standard." label="Mit hjem" />
- <combo_box.item name="MyLastLocation" tool_tip="Log ind til min sidste lokation som standard." label="Min sidste lokation" />
- </combo_box>
- <check_box label="Vis start lokation på login billedet" name="show_location_checkbox"/>
- <combo_box name="fade_out_combobox">
- <combo_box.item name="Never" label="Aldrig"/>
- <combo_box.item name="Show Temporarily" label="Vis midlertidigt"/>
- <combo_box.item name="Always" label="Altid"/>
- </combo_box>
- <check_box label="Små avatar navne" name="small_avatar_names_checkbox"/>
- <check_box label="Skjul mit navn på min skærm" name="show_my_name_checkbox"/>
- <text name="group_titles_textbox">
- Gruppe titler:
- </text>
- <check_box label="Skjul alle gruppe titler" name="show_all_title_checkbox"/>
- <check_box label="Gem min gruppe titel" name="show_my_title_checkbox"/>
- <color_swatch label="" name="effect_color_swatch" tool_tip="Klik for at åbne farvevælger"/>
- <text name="UI Size:">
- UI Størrelse:
+ <text name="language_textbox">
+ Sprog:
</text>
- <check_box label="Brug opløsnings uafhængig skalering" name="ui_auto_scale"/>
- <spinner label="Tid før inaktiv:" name="afk_timeout_spinner"/>
- <check_box label="Giv besked når Linden dollars (L$) bliver brugt eller modtaget" name="notify_money_change_checkbox"/>
- <text name="maturity_desired_label">
- Rating:
+ <combo_box name="language_combobox">
+ <combo_box.item label="System standard" name="System Default Language"/>
+ <combo_box.item label="English (Engelsk)" name="English"/>
+ <combo_box.item label="Dansk - Beta" name="Danish"/>
+ <combo_box.item label="Deutsch (Tysk) - Beta" name="Deutsch(German)"/>
+ <combo_box.item label="Español (Spansk) - Beta" name="Spanish"/>
+ <combo_box.item label="Français (Fransk) - Beta" name="French"/>
+ <combo_box.item label="Polski (Polsk) - Beta" name="Polish"/>
+ <combo_box.item label="Portugués (Portugisisk) - Beta" name="Portugese"/>
+ <combo_box.item label="日本語 (Japansk) - Beta" name="(Japanese)"/>
+ </combo_box>
+ <text name="language_textbox2">
+ (Kræver genstart)
</text>
<text name="maturity_desired_prompt">
Jeg ønsker adgang til inhold med rating:
</text>
+ <text name="maturity_desired_textbox"/>
<combo_box name="maturity_desired_combobox">
- <combo_box.item name="Desired_Adult" label="PG, Mature og Adult"/>
- <combo_box.item name="Desired_Mature" label="PG and Mature"/>
- <combo_box.item name="Desired_PG" label="PG"/>
+ <combo_box.item label="PG, Mature og Adult" name="Desired_Adult"/>
+ <combo_box.item label="PG and Mature" name="Desired_Mature"/>
+ <combo_box.item label="PG" name="Desired_PG"/>
</combo_box>
- <text name="maturity_desired_textbox">
- PG
- </text>
<text name="start_location_textbox">
Start lokation:
</text>
- <text name="show_names_textbox">
- Vis navne:
- </text>
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Min sidste lokation" name="MyLastLocation" tool_tip="Log ind til min sidste lokation som standard."/>
+ <combo_box.item label="Mit hjem" name="MyHome" tool_tip="Log ind til min hjemme lokation som standard."/>
+ </combo_box>
+ <check_box initial_value="true" label="Vis start lokation på login billedet" name="show_location_checkbox"/>
+ <text name="name_tags_textbox">
+ Navneskilte:
+ </text>
+ <radio_group name="Name_Tag_Preference">
+ <radio_item label="Skjul" name="radio"/>
+ <radio_item label="Vis" name="radio2"/>
+ <radio_item label="Vis et øjeblik" name="radio3"/>
+ </radio_group>
+ <check_box label="Vis mit navn" name="show_my_name_checkbox1"/>
+ <check_box initial_value="true" label="Små avatar navne" name="small_avatar_names_checkbox"/>
+ <check_box label="Gruppetitler" name="show_all_title_checkbox1"/>
<text name="effects_color_textbox">
Farve til mine effekter:
</text>
+ <color_swatch label="" name="effect_color_swatch" tool_tip="Klik for at åbne farvevælger"/>
+ <text name="title_afk_text">
+ Tid inden &quot;væk&quot;:
+ </text>
+ <spinner label="Tid før inaktiv:" name="afk_timeout_spinner"/>
<text name="seconds_textbox">
sekunder
</text>
- <text name="crash_report_textbox">
- Nedbrudsrapporter:
+ <text name="text_box3">
+ Optaget autosvar:
</text>
- <text name="language_textbox">
- Sprog:
- </text>
- <text name="language_textbox2">
- (Kræver genstart for at virke optimalt)
- </text>
- <string name="region_name_prompt">
- &lt;Skriv regions navn&gt;
- </string>
- <combo_box name="crash_behavior_combobox">
- <combo_box.item name="Askbeforesending" label="Bed om bekræftigelse"/>
- <combo_box.item name="Alwayssend" label="Send altid"/>
- <combo_box.item name="Neversend" label="Send aldrig"/>
- </combo_box>
- <combo_box name="language_combobox">
- <combo_box.item name="System Default Language" label="System standard"/>
- <combo_box.item name="English" label="English (Engelsk)"/>
- <combo_box.item name="Danish" label="Dansk - Beta"/>
- <combo_box.item name="Deutsch(German)" label="Deutsch (Tysk) - Beta"/>
- <combo_box.item name="Spanish" label="Español (Spansk) - Beta"/>
- <combo_box.item name="French" label="Français (Fransk) - Beta"/>
- <combo_box.item name="Hungarian" label="Magyar (Ungarsk) - Beta"/>
- <combo_box.item name="Polish" label="Polski (Polsk) - Beta"/>
- <combo_box.item name="Portugese" label="Portugués (Portugisisk) - Beta"/>
- <combo_box.item name="Chinese" label="中文 (简体) (Kinesisk) - Beta"/>
- <combo_box.item name="(Japanese)" label="日本語 (Japansk) - Beta"/>
- <combo_box.item name="(Korean)" label="한국어 (Koreansk) - Beta"/>
- </combo_box>
- <check_box label="Del sprog med objekter" name="language_is_public" tool_tip="Dette lader objekter i verden vide hvad dit foretrukne sprog er."/>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
index 4dac7be413..bb1cacc773 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
@@ -1,42 +1,18 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Grafik" name="Display panel">
- <button label="?" name="GraphicsPreferencesHelpButton" />
- <check_box label="Kør Second Life i et vindue" name="windowed mode" />
- <text_editor name="FullScreenInfo">
- Hvis dette ikke er valgt kører Second Life i Fuld skærm.
- </text_editor>
- <text name="WindowSizeLabel">
- Opløsning:
+ <text name="UI Size:">
+ UI størrelse:
</text>
- <combo_box name="windowsize combo">
- <combo_box.item name="640x480" label="640x480" />
- <combo_box.item name="800x600" label="800x600" />
- <combo_box.item name="720x480" label="720x480 (NTSC)" />
- <combo_box.item name="768x576" label="768x576 (PAL)" />
- <combo_box.item name="1024x768" label="1024x768" />
- </combo_box>
- <text name="DisplayResLabel">
- Skærm opløsning:
- </text>
- <text name="AspectRatioLabel1" tool_tip="bredde / højde">
- Format:
- </text>
- <combo_box name="aspect_ratio" tool_tip="bredde/ højde">
- <combo_box.item name="4:3(StandardCRT)" label="4:3 (Standard CRT)" />
- <combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)" />
- <combo_box.item name="8:5(Widescreen)" label="8:5 (Widescreen)" />
- <combo_box.item name="16:9(Widescreen)" label="16:9 (Widescreen)" />
- </combo_box>
- <check_box label="Auto-detect format" name="aspect_auto_detect" />
- <text name="HigherText">
- Kvalitet og
- </text>
- <text name="QualityText">
- Ydelse:
+ <text name="QualitySpeed">
+ Kvalitet og hastighed:
</text>
<text name="FasterText">
Hurtigere
</text>
+ <text name="BetterText">
+ Bedre
+ </text>
+ <slider label="" name="QualityPerformanceSelection"/>
<text name="ShadersPrefText">
Lav
</text>
@@ -49,99 +25,82 @@
<text name="ShadersPrefText4">
Ultra
</text>
- <text name="HigherText2">
- Højere
- </text>
- <text name="QualityText2">
- Kvalitet
- </text>
- <slider label="" name="QualityPerformanceSelection" />
- <check_box label="Manuelt" name="CustomSettings" />
- <panel name="CustomGraphics Panel">
- <text name="ShadersText">
- Overflader:
- </text>
- <check_box label="Glatte flader og skin" name="BumpShiny" />
- <check_box label="Basale flader" name="BasicShaders"
- tool_tip="Ved at slå dette valg fra, kan det forhindres at visse grafikkort drivere crasher." />
- <check_box label="Atmosfæriske flader" name="WindLightUseAtmosShaders" />
- <check_box label="Reflektioner i vand" name="Reflections" />
- <text name="ReflectionDetailText">
- Spejlnings detaljer:
- </text>
- <radio_group name="ReflectionDetailRadio">
- <radio_item name="0" label="Terræn og træer" />
- <radio_item name="1" label="Alle statiske objekter" />
- <radio_item name="2" label="Alle avatarer og objekter" />
- <radio_item name="3" label="Alt" />
- </radio_group>
- <text name="AvatarRenderingText">
- Avatar gengivelse
- </text>
- <check_box label="Mini-figurer på lang afstand" name="AvatarImpostors" />
- <check_box label="Hardware Skinning" name="AvatarVertexProgram" />
- <check_box label="Avatar tøj" name="AvatarCloth" />
- <text name="DrawDistanceMeterText1">
- m
- </text>
- <text name="DrawDistanceMeterText2">
- m
- </text>
- <slider label="Maks. visnings-afstand:" name="DrawDistance" />
- <slider label="Maks. antal partikler:" name="MaxParticleCount" />
- <slider label="Efterbehandlingskvalitet:" name="RenderPostProcess" />
- <text name="MeshDetailText">
- Netmaske detaljer:
- </text>
- <slider label=" Objekter:" name="ObjectMeshDetail" />
- <slider label=" Flexiprims:" name="FlexibleMeshDetail" />
- <slider label=" Træer:" name="TreeMeshDetail" />
- <slider label=" Avatarer:" name="AvatarMeshDetail" />
- <slider label=" Terræn:" name="TerrainMeshDetail" />
- <slider label=" Himmel:" name="SkyMeshDetail" />
- <text name="PostProcessText">
- Lav
- </text>
- <text name="ObjectMeshDetailText">
- Lav
- </text>
- <text name="FlexibleMeshDetailText">
- Lav
- </text>
- <text name="TreeMeshDetailText">
- Lav
- </text>
- <text name="AvatarMeshDetailText">
- Lav
- </text>
- <text name="TerrainMeshDetailText">
- Lav
- </text>
- <text name="SkyMeshDetailText">
- Lav
- </text>
- <text name="LightingDetailText">
- Lys detaljer:
- </text>
- <radio_group name="LightingDetailRadio">
- <radio_item name="SunMoon" label="Kun sol og måne" />
- <radio_item name="LocalLights" label="Lys i nærheden" />
- </radio_group>
- <text name="TerrainDetailText">
- Terræn detaljer:
- </text>
- <radio_group name="TerrainDetailRadio">
- <radio_item name="0" label="Lav" />
- <radio_item name="2" label="Høj" />
- </radio_group>
+ <panel label="CustomGraphics" name="CustomGraphics Panel">
+ <text name="ShadersText">
+ Overflader:
+ </text>
+ <check_box initial_value="true" label="Glatte flader og skin" name="BumpShiny"/>
+ <check_box initial_value="true" label="Basale flader" name="BasicShaders" tool_tip="Ved at slå dette valg fra, kan det forhindres at visse grafikkort drivere crasher."/>
+ <check_box initial_value="true" label="Atmosfæriske flader" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Reflektioner i vand" name="Reflections"/>
+ <text name="ReflectionDetailText">
+ Spejlnings detaljer:
+ </text>
+ <radio_group name="ReflectionDetailRadio">
+ <radio_item label="Terræn og træer" name="0"/>
+ <radio_item label="Alle statiske objekter" name="1"/>
+ <radio_item label="Alle avatarer og objekter" name="2"/>
+ <radio_item label="Alt" name="3"/>
+ </radio_group>
+ <text name="AvatarRenderingText">
+ Avatar gengivelse
+ </text>
+ <check_box initial_value="true" label="Mini-figurer på lang afstand" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/>
+ <check_box initial_value="true" label="Avatar tøj" name="AvatarCloth"/>
+ <slider label="Maks. visnings-afstand:" name="DrawDistance"/>
+ <text name="DrawDistanceMeterText2">
+ m
+ </text>
+ <slider label="Maks. antal partikler:" name="MaxParticleCount"/>
+ <slider label="Efterbehandlingskvalitet:" name="RenderPostProcess"/>
+ <text name="MeshDetailText">
+ Netmaske detaljer:
+ </text>
+ <slider label=" Objekter:" name="ObjectMeshDetail"/>
+ <slider label=" Flexiprims:" name="FlexibleMeshDetail"/>
+ <slider label=" Træer:" name="TreeMeshDetail"/>
+ <slider label=" Avatarer:" name="AvatarMeshDetail"/>
+ <slider label=" Terræn:" name="TerrainMeshDetail"/>
+ <slider label=" Himmel:" name="SkyMeshDetail"/>
+ <text name="PostProcessText">
+ Lav
+ </text>
+ <text name="ObjectMeshDetailText">
+ Lav
+ </text>
+ <text name="FlexibleMeshDetailText">
+ Lav
+ </text>
+ <text name="TreeMeshDetailText">
+ Lav
+ </text>
+ <text name="AvatarMeshDetailText">
+ Lav
+ </text>
+ <text name="TerrainMeshDetailText">
+ Lav
+ </text>
+ <text name="SkyMeshDetailText">
+ Lav
+ </text>
+ <text name="LightingDetailText">
+ Lys detaljer:
+ </text>
+ <radio_group name="LightingDetailRadio">
+ <radio_item label="Kun sol og måne" name="SunMoon"/>
+ <radio_item label="Lys i nærheden" name="LocalLights"/>
+ </radio_group>
+ <text name="TerrainDetailText">
+ Terræn detaljer:
+ </text>
+ <radio_group name="TerrainDetailRadio">
+ <radio_item label="Lav" name="0"/>
+ <radio_item label="Høj" name="2"/>
+ </radio_group>
</panel>
- <button label="Anbefalede indstillinger" name="Defaults" />
- <button label="Hardware valg" label_selected="Hardware Options"
- name="GraphicsHardwareButton" />
- <panel.string name="resolution_format">
- [RES_X] x [RES_Y]
- </panel.string>
- <panel.string name="aspect_ratio_text">
- [NUM]:[DEN]
- </panel.string>
+ <button label="Benyt" label_selected="Benyt" name="Apply"/>
+ <button label="Nulstil" name="Defaults"/>
+ <button label="Avanceret" name="Advanced"/>
+ <button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml
new file mode 100644
index 0000000000..987ba2a3f8
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+ <layout_stack name="media_controls">
+ <layout_panel name="media_address">
+ <line_editor name="media_address_url" tool_tip="Media URL"/>
+ <layout_stack name="media_address_url_icons">
+ <layout_panel>
+ <icon name="media_whitelist_flag" tool_tip="Godkendt side"/>
+ </layout_panel>
+ <layout_panel>
+ <icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="media_play_position">
+ <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Filmafspilning fremskridt"/>
+ </layout_panel>
+ <layout_panel name="media_volume">
+ <button name="media_mute_button" tool_tip="Sluk for dette media"/>
+ <slider name="volume_slider" tool_tip="Media lydstyrke"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack>
+ <panel name="media_progress_indicator">
+ <progress_bar name="media_progress_bar" tool_tip="Media hentes"/>
+ </panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_profile_view.xml b/indra/newview/skins/default/xui/da/panel_profile_view.xml
new file mode 100644
index 0000000000..23b9d3ba83
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_profile_view.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_target_profile">
+ <string name="status_online">
+ Online
+ </string>
+ <string name="status_offline">
+ Offline
+ </string>
+ <text_editor name="user_name" value="(Henter...)"/>
+ <text name="status" value="Online"/>
+ <tab_container name="tabs">
+ <panel label="PROFIL" name="panel_profile"/>
+ <panel label="FAVORITTER" name="panel_picks"/>
+ <panel label="NOTER &amp; PRIVATLIV" name="panel_notes"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_region_estate.xml b/indra/newview/skins/default/xui/da/panel_region_estate.xml
index 5d0799cab9..d726fedfe9 100644
--- a/indra/newview/skins/default/xui/da/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/da/panel_region_estate.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Estate" name="Estate">
<text name="estate_help_text">
Ændringer i dette afsnit vil påvirke alle
@@ -11,61 +11,59 @@ regioner i dette estate.
(ukendt)
</text>
<text name="owner_text">
- Ejer:
+ Estate ejer:
</text>
<text name="estate_owner">
(ukendt)
</text>
- <check_box label="Brug global tid" name="use_global_time_check" />
- <button label="?" name="use_global_time_help" />
- <check_box label="Sol i fast position" name="fixed_sun_check" />
- <button label="?" name="fixed_sun_help" />
- <slider label="Fase" name="sun_hour_slider" />
- <check_box label="Tillad offentlig adgang" name="externally_visible_check" />
- <button label="?" name="externally_visible_help" />
+ <check_box label="Brug global tid" name="use_global_time_check"/>
+ <button label="?" name="use_global_time_help"/>
+ <check_box label="Sol i fast position" name="fixed_sun_check"/>
+ <button label="?" name="fixed_sun_help"/>
+ <slider label="Fase" name="sun_hour_slider"/>
+ <check_box label="Tillad offentlig adgang" name="externally_visible_check"/>
+ <button label="?" name="externally_visible_help"/>
<text name="Only Allow">
Begræns adgang til:
</text>
- <check_box label="Beboere med betalingsoplysninger" name="limit_payment"
- tool_tip="Blokér for brugere uden identifikation" />
- <check_box label="Beboere der er godkendt som voksne" name="limit_age_verified"
- tool_tip="Blokér for brugere der ikke har verificéret deres alder. Se support.secondlife.com for mere information." />
- <check_box label="Tillad stemme chat" name="voice_chat_check" />
- <button label="?" name="voice_chat_help" />
- <check_box label="Tillad direkte teleport" name="allow_direct_teleport" />
- <button label="?" name="allow_direct_teleport_help" />
+ <check_box label="Beboere med betalingsoplysninger" name="limit_payment" tool_tip="Blokér for brugere uden identifikation"/>
+ <check_box label="Beboere der er godkendt som voksne" name="limit_age_verified" tool_tip="Blokér for brugere der ikke har verificéret deres alder. Se [SUPPORT_SITE] for mere information."/>
+ <check_box label="Tillad stemme chat" name="voice_chat_check"/>
+ <button label="?" name="voice_chat_help"/>
+ <check_box label="Tillad direkte teleport" name="allow_direct_teleport"/>
+ <button label="?" name="allow_direct_teleport_help"/>
<text name="abuse_email_text" width="260">
Send beskeder misbrug til email adresse:
</text>
<string name="email_unsupported">
Ikke supporteret
</string>
- <button label="?" name="abuse_email_address_help" />
- <button label="Gem" name="apply_btn" />
- <button label="Smid bruger ud fra estate..." name="kick_user_from_estate_btn" />
- <button label="Send besked til estate..." name="message_estate_btn" />
+ <button label="?" name="abuse_email_address_help"/>
+ <button label="Gem" name="apply_btn"/>
+ <button label="Smid bruger ud fra estate..." name="kick_user_from_estate_btn"/>
+ <button label="Send besked til estate..." name="message_estate_btn"/>
<text name="estate_manager_label">
Administratorer:
</text>
- <button label="?" name="estate_manager_help" />
- <button label="Fjern..." name="remove_estate_manager_btn" />
- <button label="Tilføj..." name="add_estate_manager_btn" />
+ <button label="?" name="estate_manager_help"/>
+ <button label="Fjern..." name="remove_estate_manager_btn"/>
+ <button label="Tilføj..." name="add_estate_manager_btn"/>
<text name="allow_resident_label">
Godkendte beboere:
</text>
- <button label="?" name="allow_resident_help" />
- <button label="Fjern..." name="remove_allowed_avatar_btn" />
- <button label="Tilføj..." name="add_allowed_avatar_btn" />
+ <button label="?" name="allow_resident_help"/>
+ <button label="Fjern..." name="remove_allowed_avatar_btn"/>
+ <button label="Tilføj..." name="add_allowed_avatar_btn"/>
<text name="allow_group_label">
Tilladte grupper:
</text>
- <button label="?" name="allow_group_help" />
- <button label="Fjern..." name="remove_allowed_group_btn" />
- <button label="Tilføj..." name="add_allowed_group_btn" />
+ <button label="?" name="allow_group_help"/>
+ <button label="Fjern..." name="remove_allowed_group_btn"/>
+ <button label="Tilføj..." name="add_allowed_group_btn"/>
<text name="ban_resident_label">
Blokérede beboere:
</text>
- <button label="?" name="ban_resident_help" />
- <button label="Fjern..." name="remove_banned_avatar_btn" />
- <button label="Tilføj..." name="add_banned_avatar_btn" />
+ <button label="?" name="ban_resident_help"/>
+ <button label="Fjern..." name="remove_banned_avatar_btn"/>
+ <button label="Tilføj..." name="add_banned_avatar_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml
new file mode 100644
index 0000000000..5c0bd829d8
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml
@@ -0,0 +1,5 @@
+<?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="show_help" tool_tip="Vis hjælp"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml
index 20e72827f2..4e45b7e328 100644
--- a/indra/newview/skins/default/xui/da/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml
@@ -1,44 +1,29 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="status">
- <text name="ParcelNameText"
- tool_tip="Navn på det land/parcel som du står på. Klik på teksten for yderligere info.">
- parcel name goes here
- </text>
- <text name="BalanceText" tool_tip="Konto balance">
- Henter...
- </text>
- <button label="" label_selected="" name="buycurrency" tool_tip="Køb valuta" />
- <text name="TimeText" tool_tip="Nuværende [SECOND_LIFE] tid">
- 12:00
- </text>
- <string name="StatBarDaysOfWeek">
+ <panel.string name="StatBarDaysOfWeek">
Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag
- </string>
- <string name="StatBarMonthsOfYear">
+ </panel.string>
+ <panel.string name="StatBarMonthsOfYear">
Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December
- </string>
- <button label="" label_selected="" name="scriptout" tool_tip="Script advarsler og fejl" />
- <button label="" label_selected="" name="health" tool_tip="Helbred" />
- <text name="HealthText" tool_tip="Helbred">
- 100%
- </text>
- <button label="" label_selected="" name="no_fly" tool_tip="Flyvning ikke tilladt" />
- <button label="" label_selected="" name="no_build"
- tool_tip="Bygning og placering af objekter ikke tilladt" />
- <button label="" label_selected="" name="no_scripts"
- tool_tip="Afvikling af scripts ikke tilladt" />
- <button label="" label_selected="" name="restrictpush"
- tool_tip="Ikke tilladt at skubbe" />
- <button label="" label_selected="" name="status_no_voice"
- tool_tip="Stemme chat ikke tilgængelig" />
- <button label="" label_selected="" name="buyland" tool_tip="Køb denne parcel" />
- <button label="" name="menubar_search_bevel_bg" />
- <line_editor label="Søg" name="search_editor" tool_tip="Søg [SECOND_LIFE]" />
- <button label="" label_selected="" name="search_btn" tool_tip="Søg [SECOND_LIFE]" />
- <string name="packet_loss_tooltip">
+ </panel.string>
+ <panel.string name="packet_loss_tooltip">
Packet Loss
- </string>
- <string name="bandwidth_tooltip">
+ </panel.string>
+ <panel.string name="bandwidth_tooltip">
Båndbredde
- </string>
+ </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>
+ <button label="" label_selected="" name="buycurrency" tool_tip="My Balance: Click to buy more L$"/>
+ <text name="TimeText" tool_tip="Nuværende tid (Pacific)">
+ 12:00
+ </text>
+ <button name="volume_btn" tool_tip="Kontrol for generel lydstyrke"/>
</panel>
diff --git a/indra/newview/skins/default/xui/da/role_actions.xml b/indra/newview/skins/default/xui/da/role_actions.xml
index e4c8c4b93b..5ec90a759a 100644
--- a/indra/newview/skins/default/xui/da/role_actions.xml
+++ b/indra/newview/skins/default/xui/da/role_actions.xml
@@ -1,201 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<role_actions>
- <action_set
- description="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation"
- name="Membership">
- <action description="Invitér personer til denne gruppe"
- longdescription="Invitér personer til denne gruppe via &apos;Invitér ny person...&apos; knappen i fanen: medlemmer &amp; roller &gt; underfanen: medlemmer"
- name="member invite" />
- <action description="Fjern medlemmer fra denne gruppe"
- longdescription="Fjern medlemmer i denne gruppe via &apos;Fjern fra gruppe&apos; knappen i fanen: medlemmer &amp; roller &gt; underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden &apos;Fjern medlemmer fra roller&apos;"
- name="member eject" />
- <action
- description="Åben eller luk for &apos;fri tilmelding&apos; og ændre &apos;tilmeldingsgebyr&apos;"
- longdescription="Åben for &apos;fri tilmelding&apos; så alle kan blive medlem af gruppen, eller luk for &apos;fri tilmelding&apos; så kun inveterede kan blive medlem. ændre &apos;tilmeldingsgebyr&apos; i gruppe opsætningsbilledet sektionen i Generelt fanen"
- name="member options" />
+ <action_set description="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation" name="Membership">
+ <action description="Invitér personer til denne gruppe" longdescription="Invitér personer til denne gruppe via &apos;Invitér ny person...&apos; knappen i fanen: medlemmer &amp; roller &gt; underfanen: medlemmer" name="member invite"/>
+ <action description="Fjern medlemmer fra denne gruppe" longdescription="Fjern medlemmer i denne gruppe via &apos;Fjern fra gruppe&apos; knappen i fanen: medlemmer &amp; roller &gt; underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden &apos;Fjern medlemmer fra roller" name="member eject"/>
+ <action description="Åben eller luk for &apos;fri tilmelding&apos; og ændre &apos;tilmeldingsgebyr&apos;" longdescription="Åben for &apos;fri tilmelding&apos; så alle kan blive medlem af gruppen, eller luk for &apos;fri tilmelding&apos; så kun inveterede kan blive medlem. ændre &apos;tilmeldingsgebyr&apos; i gruppe opsætningsbilledet sektionen i Generelt fanen" name="member options"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller"
- name="Roles">
- <action description="Opret nye roller"
- longdescription="Opret nye roller i fanen: Medlemmer &amp; roller &gt; under-fanen: Roller."
- name="role create" />
- <action description="Slet roller"
- longdescription="Slet roller i roller i fanen: Medlemmer &amp; roller &gt; under-fanen: Roller."
- name="role delete" />
- <action
- description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen"
- longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette håndteres i bunden af fanen:: Medlemmer &amp; roller &gt; under-fanen: Roller efter at have valgt en rolle."
- name="role properties" />
- <action description="Tildel andre samme roller som dig selv"
- longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har."
- name="role assign member limited" />
- <action description="Tildele medlemmer enhver rolle"
- longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed."
- name="role assign member" />
- <action description="Fjern medlemmer fra roller"
- longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. Ejere kan ikke fjernes."
- name="role remove member" />
- <action description="Tildel og fjern rettigheder for roller"
- longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du gør inden du tildeler denne rettighed."
- name="role change actions" />
+ <action_set description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller" name="Roles">
+ <action description="Opret nye roller" longdescription="Opret nye roller i fanen: Medlemmer &amp; roller &gt; under-fanen: Roller." name="role create"/>
+ <action description="Slet roller" longdescription="Slet roller i roller i fanen: Medlemmer &amp; roller &gt; under-fanen: Roller." name="role delete"/>
+ <action description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen" longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette håndteres i bunden af fanen:: Medlemmer &amp; roller &gt; under-fanen: Roller efter at have valgt en rolle." name="role properties"/>
+ <action description="Tildel andre samme roller som dig selv" longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har." name="role assign member limited"/>
+ <action description="Tildele medlemmer enhver rolle" longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="role assign member"/>
+ <action description="Fjern medlemmer fra roller" longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. Ejere kan ikke fjernes." name="role remove member"/>
+ <action description="Tildel og fjern rettigheder for roller" longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du gør inden du tildeler denne rettighed." name="role change actions"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede."
- name="Group Identity">
- <action description="Ændre fundats, billede og &apos;Vis i søgning&apos;"
- longdescription="Ændre fundats og &apos;Vis i søgning&apos;. Dette gøres under fanen Generelt."
- name="group change identity" />
+ <action_set description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede." name="Group Identity">
+ <action description="Ændre fundats, billede og &apos;Vis i søgning&apos;" longdescription="Ændre fundats og &apos;Vis i søgning&apos;. Dette gøres under fanen Generelt." name="group change identity"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at åbne &apos;Om land...&apos; vinduet, højre-klik på jorden og vælg &apos;Om land...&apos;, eller klik på &apos;Om land...&apos; i &apos;Verden&apos; menuen."
- name="Parcel Management">
- <action description="Dedikér eller køb land til gruppen"
- longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i &apos;Om land...&apos;."
- name="land deed" />
- <action description="Forlad land og overgiv det til guvernør Linden"
- longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i &apos;Om land...&apos; til Lindens ejerskab uden salg! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed."
- name="land release" />
- <action description="Sæt land til salg"
- longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i &apos;Om land...&apos;! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed."
- name="land set sale info" />
- <action description="Opdel og saml parceller"
- longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke på jorden og vælge &apos;Redigér terræn&apos;"
- name="land divide join" />
+ <action_set description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at åbne &apos;Om land...&apos; vinduet, højre-klik på jorden og vælg &apos;Om land...&apos;, eller klik på &apos;Om land...&apos; i &apos;Verden&apos; menuen." name="Parcel Management">
+ <action description="Dedikér eller køb land til gruppen" longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i &apos;Om land...&apos;." name="land deed"/>
+ <action description="Forlad land og overgiv det til guvernør Linden" longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i &apos;Om land...&apos; til Lindens ejerskab uden salg! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land release"/>
+ <action description="Sæt land til salg" longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i &apos;Om land...&apos;! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land set sale info"/>
+ <action description="Opdel og saml parceller" longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke på jorden og vælge &apos;Redigér terræn&apos;" name="land divide join"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.."
- name="Parcel Identity">
- <action
- description="Angive om sted skal vises i &apos;vis i Søg steder&apos; og angivelse af kategori"
- longdescription="Angive om sted skal vises i &apos;vis i Søg steder&apos; og angivelse af kategori i &apos;Om land...&apos; &gt; Indstillinger fanen."
- name="land find places" />
- <action
- description="Ændre parcel navn, beskrivelse, og &apos;Vis i Søg&apos; opsætning"
- longdescription="Ændre parcel navn, beskrivelse, og &apos;Vis i Søg&apos; opsætning. Dette håndteres i &apos;Om land...&apos;&gt; Opsætning fanen."
- name="land change identity" />
- <action description="Sæt landingspunkt og teleport muligheder"
- longdescription="På en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette håndteres i &apos;Om land...&apos;&gt; Opsætning fanen."
- name="land set landing point" />
+ <action_set description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.." name="Parcel Identity">
+ <action description="Angive om sted skal vises i &apos;vis i Søg steder&apos; og angivelse af kategori" longdescription="Angive om sted skal vises i &apos;vis i Søg steder&apos; og angivelse af kategori i &apos;Om land...&apos; &gt; Indstillinger fanen." name="land find places"/>
+ <action description="Ændre parcel navn, beskrivelse, og &apos;Vis i Søg&apos; opsætning" longdescription="Ændre parcel navn, beskrivelse, og &apos;Vis i Søg&apos; opsætning. Dette håndteres i &apos;Om land...&apos;&gt; Opsætning fanen." name="land change identity"/>
+ <action description="Sæt landingspunkt og teleport muligheder" longdescription="På en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette håndteres i &apos;Om land...&apos;&gt; Opsætning fanen." name="land set landing point"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. &apos;Lave objekter&apos;, &apos;Redigere terræn&apos;, samt musik og media indstillinger."
- name="Parcel Settings">
- <action description="Ændre musik og media indstillinger"
- longdescription="Ændre oplysninger om streaming musik og film i &apos;Om land...&apos; &gt; Media fanen."
- name="land change media" />
- <action description="Ændre rettighed til &apos;Redigere terræn&apos;"
- longdescription="Ændre rettighed til &apos;Redigere terræn&apos;. *ADVARSEL*: Redigere terræn&apos; kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed."
- name="land edit" />
- <action
- description="Ændre diverse andre indstillinger i &apos;Om land...&apos;&gt; indstillinger fanen"
- longdescription="Giv adgang til at ændre &apos;Sikker (ingen skade)&apos;, &apos;Flyve&apos;, og tillad andre beboere at: &apos;Lave objekter&apos;, &apos;Redigere terræn&apos;, &apos;Lave landemærker&apos;, og &apos;Køre scripts&apos; på gruppe-ejet land via About Land &gt; Indstillinger fanen."
- name="land options" />
+ <action_set description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. &apos;Lave objekter&apos;, &apos;Redigere terræn&apos;, samt musik og media indstillinger." name="Parcel Settings">
+ <action description="Ændre musik og media indstillinger" longdescription="Ændre oplysninger om streaming musik og film i &apos;Om land...&apos; &gt; Media fanen." name="land change media"/>
+ <action description="Ændre rettighed til &apos;Redigere terræn&apos;" longdescription="Ændre rettighed til &apos;Redigere terræn&apos;. *ADVARSEL*: Redigere terræn&apos; kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land edit"/>
+ <action description="Ændre diverse andre indstillinger i &apos;Om land...&apos;&gt; indstillinger fanen" longdescription="Giv adgang til at ændre &apos;Sikker (ingen skade)&apos;, &apos;Flyve&apos;, og tillad andre beboere at: &apos;Lave objekter&apos;, &apos;Redigere terræn&apos;, &apos;Lave landemærker&apos;, og &apos;Køre scripts&apos; på gruppe-ejet land via About Land &gt; Indstillinger fanen." name="land options"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til at medlemmer kan omgå restriktioner på gruppe-ejede parceller."
- name="Parcel Powers">
- <action description="Tillad altid &apos;Rediger Terræn&apos;"
- longdescription="Medlemmer med denne rolle har adgang til at redigere terræn på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen."
- name="land allow edit land" />
- <action description="Tillad altid at &apos;Flyve&apos;"
- longdescription="Medlemmer med denne rolle har adgang til at flyve på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen."
- name="land allow fly" />
- <action description="Tillad altid &apos;Lave objekter&apos;"
- longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen."
- name="land allow create" />
- <action description="Tillad altid at &apos;Lave landemærker&apos;"
- longdescription="Medlemmer med denne rolle har adgang til at lave landemærker på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen."
- name="land allow landmark" />
- <action description="Tillad altid &apos;sæt til hjem&apos; på gruppe-ejet land"
- longdescription="Medlemmer med denne rolle har adgang til at benytte &apos;Verden&apos; menuen og vælge &apos;sæt til hjem&apos; på en parcel der er dedikeret til gruppen."
- name="land allow set home" />
+ <action_set description="Disse rettigheder inkluderer adgang til at medlemmer kan omgå restriktioner på gruppe-ejede parceller." name="Parcel Powers">
+ <action description="Tillad altid &apos;Rediger Terræn&apos;" longdescription="Medlemmer med denne rolle har adgang til at redigere terræn på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen." name="land allow edit land"/>
+ <action description="Tillad altid at &apos;Flyve&apos;" longdescription="Medlemmer med denne rolle har adgang til at flyve på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen." name="land allow fly"/>
+ <action description="Tillad altid &apos;Lave objekter&apos;" longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen." name="land allow create"/>
+ <action description="Tillad altid at &apos;Lave landemærker&apos;" longdescription="Medlemmer med denne rolle har adgang til at lave landemærker på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen." name="land allow landmark"/>
+ <action description="Tillad altid &apos;sæt til hjem&apos; på gruppe-ejet land" longdescription="Medlemmer med denne rolle har adgang til at benytte &apos;Verden&apos; menuen og vælge &apos;sæt til hjem&apos; på en parcel der er dedikeret til gruppen." name="land allow set home"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at &apos;fryse&apos; og udsmide beboere."
- name="Parcel Access">
- <action description="Administrér adgangsregler for parceller"
- longdescription="Administrér adgangsregler for parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen."
- name="land manage allowed" />
- <action description="Administrér liste med blokerede beboere på parceller"
- longdescription="Administrér liste med blokerede beboere på parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen."
- name="land manage banned" />
- <action
- description="Ændre indstillinger for at &apos;Sælge adgang til&apos; parceller"
- longdescription="Ændre indstillinger for at &apos;Sælge adgang til&apos; parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen."
- name="land manage passes" />
- <action
- description="Adgang til at smide beboere ud og &apos;fryse&apos; beboere på parceller"
- longdescription="Medlermmer med denne rolle kan håndtere beboere som ikke er velkomne på gruppe-ejet parceller ved at højreklikke på dem, vælge Mere&gt;, og vælge &apos;Smid ud...&apos; eller &apos;Frys...&apos;."
- name="land admin" />
+ <action_set description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at &apos;fryse&apos; og udsmide beboere." name="Parcel Access">
+ <action description="Administrér adgangsregler for parceller" longdescription="Administrér adgangsregler for parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen." name="land manage allowed"/>
+ <action description="Administrér liste med blokerede beboere på parceller" longdescription="Administrér liste med blokerede beboere på parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen." name="land manage banned"/>
+ <action description="Ændre indstillinger for at &apos;Sælge adgang til&apos; parceller" longdescription="Ændre indstillinger for at &apos;Sælge adgang til&apos; parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen." name="land manage passes"/>
+ <action description="Adgang til at smide beboere ud og &apos;fryse&apos; beboere på parceller" longdescription="Medlemmer med denne rolle kan håndtere beboere som ikke er velkomne på gruppe-ejet parceller ved at højreklikke på dem, vælge Mere&gt;, og vælge &apos;Smid ud...&apos; eller &apos;Frys...&apos;." name="land admin"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet."
- name="Parcel Content">
- <action description="Returnere objekter ejet af gruppen"
- longdescription="Returne objekter på gruppe-ejede parceller der er ejet af gruppen. Dette håndteres i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen."
- name="land return group owned" />
- <action description="Returnere objekter der er sat til &apos;gruppe&apos;"
- longdescription="Returnere objekter på gruppe-ejede parceller, der er &apos;sat til gruppe&apos; i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen."
- name="land return group set" />
- <action description="Returnere objekter der ikke er ejet af andre"
- longdescription="Returnere objekter på gruppe-ejede parceller, der er &apos;Ejet af andre&apos; i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen."
- name="land return non group" />
- <action description="Ændre landskab med Linden planter"
- longdescription="Mulighed for at ændre landskabet ved at placere og flytte Linden træer, planter, og græs. Disse genstande kan findes i din beholdnings Library &gt; Objects mappe eller de kan oprettes via &apos;Byg&apos; knappen."
- name="land gardening" />
+ <action_set description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="Parcel Content">
+ <action description="Returnere objekter ejet af gruppen" longdescription="Returne objekter på gruppe-ejede parceller der er ejet af gruppen. Dette håndteres i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen." name="land return group owned"/>
+ <action description="Returnere objekter der er sat til &apos;gruppe&apos;" longdescription="Returnere objekter på gruppe-ejede parceller, der er &apos;sat til gruppe&apos; i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen." name="land return group set"/>
+ <action description="Returnere objekter der ikke er ejet af andre" longdescription="Returnere objekter på gruppe-ejede parceller, der er &apos;Ejet af andre&apos; i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen." name="land return non group"/>
+ <action description="Ændre landskab med Linden planter" longdescription="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="land gardening"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen."
- name="Object Management">
- <action description="Dediker objekter til gruppe"
- longdescription="Dediker objekter til gruppe i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen."
- name="object deed" />
- <action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter"
- longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen."
- name="object manipulate" />
- <action description="Sæt gruppe-ejede objekter til salg"
- longdescription="Sæt gruppe-ejede objekter til salg i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen."
- name="object set sale" />
+ <action_set description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen." name="Object Management">
+ <action description="Dediker objekter til gruppe" longdescription="Dediker objekter til gruppe i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen." name="object deed"/>
+ <action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter" longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen." name="object manipulate"/>
+ <action description="Sæt gruppe-ejede objekter til salg" longdescription="Sæt gruppe-ejede objekter til salg i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen." name="object set sale"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer mulighed til at håndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser."
- name="Accounting">
- <action description="Betale gruppe regninger og modtage gruppe udbytte"
- longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. "
- name="accounting accountable" />
+ <action_set description="Disse rettigheder inkluderer mulighed til at håndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser." name="Accounting">
+ <action description="Betale gruppe regninger og modtage gruppe udbytte" longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. " name="accounting accountable"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder."
- name="Notices">
- <action description="Send beskeder"
- longdescription="Medlemmer med denne rolle kan sende beskeder i &apos;Beskeder&apos; fanen."
- name="notices send" />
- <action description="Modtage og se tidligere beskeder"
- longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i &apos;Beskeder&apos; fanen."
- name="notices receive" />
+ <action_set description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder." name="Notices">
+ <action description="Send beskeder" longdescription="Medlemmer med denne rolle kan sende beskeder i &apos;Beskeder&apos; fanen." name="notices send"/>
+ <action description="Modtage og se tidligere beskeder" longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i &apos;Beskeder&apos; fanen." name="notices receive"/>
</action_set>
- <action_set
- description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme på forslag og se historik med forslag."
- name="Proposals">
- <action description="Opret forslag"
- longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i &apos;Forslag&apos; fanen."
- name="proposal start" />
- <action description="Stem på forslag"
- longdescription="Medlemmer med denne rolle kan stemme på forslag i &apos;Forslag&apos; fanen."
- name="proposal vote" />
+ <action_set description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme på forslag og se historik med forslag." name="Proposals">
+ <action description="Opret forslag" longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i &apos;Forslag&apos; fanen." name="proposal start"/>
+ <action description="Stem på forslag" longdescription="Medlemmer med denne rolle kan stemme på forslag i &apos;Forslag&apos; fanen." name="proposal vote"/>
</action_set>
- <action_set
- description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat."
- name="Chat">
- <action description="Deltage i gruppe-chat"
- longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner"
- name="join group chat" />
- <action description="Deltag i gruppe stemme-chat"
- longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner. BEMÆRK: Medlemmet skal også have rollen &apos;Deltage i gruppe-chat&apos; for at denne rolle har effekt."
- name="join voice chat" />
- <action description="Styr gruppe-chat"
- longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner."
- name="moderate group chat" />
+ <action_set description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat." name="Chat">
+ <action description="Deltage i gruppe-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner" name="join group chat"/>
+ <action description="Deltag i gruppe stemme-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner. BEMÆRK: Medlemmet skal også have rollen &apos;Deltage i gruppe-chat&apos; for at denne rolle har effekt." name="join voice chat"/>
+ <action description="Styr gruppe-chat" longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner." name="moderate group chat"/>
</action_set>
</role_actions>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_appearance.xml b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml
new file mode 100644
index 0000000000..27708f5c7a
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sæt" name="appearance panel">
+ <string name="No Outfit" value="Intet sæt"/>
+ <filter_editor label="Filtrér sæt" name="Filter"/>
+ <panel name="bottom_panel">
+ <button name="options_gear_btn" tool_tip="Vis flere muligheder"/>
+ <button name="newlook_btn" tool_tip="Tilføj nyt sæt"/>
+ <dnd_button name="trash_btn" tool_tip="Fjern valgte del"/>
+ <button label="Bær" name="wear_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_inventory.xml b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml
new file mode 100644
index 0000000000..ae029f5939
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ting" name="objects panel">
+ <panel label="" name="sidepanel__inventory_panel">
+ <panel name="button_panel">
+ <button label="Profil" name="info_btn"/>
+ <button label="Bær" name="wear_btn"/>
+ <button label="Afspil" name="play_btn"/>
+ <button label="Teleportér" name="teleport_btn"/>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml
index 0beb54032f..c19f98516d 100644
--- a/indra/newview/skins/default/xui/de/floater_about.xml
+++ b/indra/newview/skins/default/xui/de/floater_about.xml
@@ -8,7 +8,7 @@
Kompiliert mit [COMPILER] version [COMPILER_VERSION]
</floater.string>
<floater.string name="AboutPosition">
- Sie befinden sich in [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] auf [HOSTNAME] ([HOSTIP])
+ Sie befinden sich in [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] auf &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
[SERVER_VERSION]
[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
</floater.string>
@@ -73,7 +73,8 @@ google-perftools Copyright (c) 2005, Google Inc.
Alle Rechte vorbehalten. Details siehe licenses.txt.
-Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) (ITU-T Empf.G.722.1 Anhang C)
+Voice-Chat-Audiocoding: Polycom(R) Siren14(TM)
+(ITU-T Empf.G.722.1 Anhang C)
</text_editor>
</panel>
</tab_container>
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index cd5abf86e0..05e2d4d754 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -12,7 +12,7 @@
<floater.string name="Remaining">
Restzeit
</floater.string>
- <tab_container name="landtab">
+ <tab_container name="landtab" tab_min_width="40" width="489">
<panel label="ALLGEMEIN" name="land_general_panel">
<panel.string name="new users only">
Nur neue Benutzer
@@ -83,7 +83,7 @@
<text name="GroupText">
Leyla Linden
</text>
- <button label="Festlegen" label_selected="Einstellen..." name="Set..."/>
+ <button label="Festlegen" label_selected="Einstellen..." name="Set..." width="90"/>
<check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/>
<button label="Übertragung" label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/>
<check_box label="Eigentümer leistet Beitrag durch Übertragung" name="check contrib" tool_tip="Wenn das Land an die Gruppe übertragen wird, trägt der frühere Eigentümer ausreichend Landnutzungsrechte bei, um es zu halten."/>
@@ -101,10 +101,10 @@
<text name="For sale to">
Zum Verkauf an: [BUYER]
</text>
- <text name="Sell with landowners objects in parcel." width="210">
+ <text left_delta="-50" name="Sell with landowners objects in parcel." width="240">
Objekte sind im Verkauf eingeschlossen
</text>
- <text name="Selling with no objects in parcel." width="237">
+ <text name="Selling with no objects in parcel." width="260">
Objekte sind im Verkauf nicht eingeschlossen
</text>
<button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/>
@@ -230,7 +230,7 @@ werden.
<text left="14" name="Owned by parcel owner:" width="200">
Im Eigentum des Parzellenbesitzers:
</text>
- <text left="204" name="owner_objects_text" width="48">
+ <text left="204" left_delta="200" name="owner_objects_text" width="48">
[COUNT]
</text>
<button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/>
@@ -257,7 +257,7 @@ werden.
<text left="204" name="selected_objects_text" width="48">
[COUNT]
</text>
- <text left="4" name="Autoreturn" width="380">
+ <text left="4" name="Autoreturn" width="410">
Objekte anderer Einwohner automatisch zurückgeben (Minuten, 0 für aus):
</text>
<line_editor name="clean other time" right="-10" width="56"/>
@@ -269,7 +269,7 @@ werden.
<name_list name="owner list">
<name_list.columns label="Typ" name="type"/>
<name_list.columns label="Name" name="name"/>
- <name_list.columns label="Zählen" name="count"/>
+ <name_list.columns label="Zählen" name="count" width="80"/>
<name_list.columns label="Aktuellster" name="mostrecent"/>
</name_list>
</panel>
@@ -368,7 +368,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
<text name="landing_point">
Landepunkt: [LANDING]
</text>
- <button label="Festlegen" label_selected="Festlegen" left="234" name="Set" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/>
+ <button label="Festlegen" label_selected="Festlegen" left="234" name="Set" right="-88" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/>
<button label="Löschen" label_selected="Löschen" left="312" name="Clear" tool_tip="Landepunkt löschen" width="70"/>
<text name="Teleport Routing: ">
Teleport-Route:
@@ -422,6 +422,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
<text name="MusicURL:">
Musik-URL:
</text>
+ <check_box label="URL ausblenden" name="hide_music_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Musik-URL sehen können"/>
<text name="Sound:">
Sound:
</text>
@@ -431,7 +432,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
</text>
<check_box label="Voice aktivieren" name="parcel_enable_voice_channel"/>
<check_box label="Voice aktivieren (vom Grundstück eingerichtet)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box label="Voice auf diese Parzelle beschränken" name="parcel_enable_voice_channel_parcel"/>
+ <check_box label="Voice auf diese Parzelle beschränken" name="parcel_enable_voice_channel_local"/>
</panel>
<panel label="ZUGANG" name="land_access_panel">
<panel.string name="access_estate_defined">
@@ -444,7 +445,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
Zugang zu dieser Parzelle
</text>
<check_box label="Öffentlichen Zugang erlauben [MATURITY]" name="public_access"/>
- <text name="Only Allow">
+ <text name="Only Allow" width="400">
Zugang auf Einwohner beschränken, die überprüft wurden von:
</text>
<check_box label="Zahlungsinformation gespeichert [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/>
diff --git a/indra/newview/skins/default/xui/de/floater_animation_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_preview.xml
index ce971d158d..0d55ea7413 100644
--- a/indra/newview/skins/default/xui/de/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_animation_preview.xml
@@ -106,6 +106,9 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden.
<floater.string name="E_ST_NO_XLT_EMOTE">
Emote-Name kann nicht gelesen werden.
</floater.string>
+ <floater.string name="E_ST_BAD_ROOT">
+ Falscher Root-Joint-Name, &quot;hip&quot; verwenden.
+ </floater.string>
<text name="name_label">
Name:
</text>
@@ -180,6 +183,6 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden.
Wir empfehlen exportierte BVH-Dateien aus Poser 4.
</text>
- <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
- <button label="Abbrechen" name="cancel_btn"/>
+ <button label="Hochladen ([AMOUNT] L$)" name="ok_btn" width="160"/>
+ <button label="Abbrechen" left="180" name="cancel_btn" width="88"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
index bc78ccd7f8..f1281bfb9b 100644
--- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
@@ -21,11 +21,12 @@
<tab_container name="ResidentChooserTabs">
<panel label="Suchen" name="SearchPanel">
<text name="InstructSearchResidentName">
- Geben Sie einen Teil des Namens einer Person ein:
+ Geben Sie einen Teil des Namens einer
+Person ein:
</text>
- <line_editor bottom_delta="-36" name="Edit"/>
- <button label="Los" label_selected="Los" name="Find"/>
- <scroll_list bottom_delta="-79" height="74" name="SearchResults"/>
+ <line_editor bottom_delta="-76" name="Edit" top_pad="16"/>
+ <button label="Los" label_selected="Los" name="Find" top="70"/>
+ <scroll_list top="80" height="54" name="SearchResults"/>
</panel>
<panel label="Freunde" name="FriendsPanel">
<text name="InstructSelectFriend">
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
index 3be5194a8f..cf1b809aa1 100644
--- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
@@ -3,10 +3,10 @@
<floater.string name="InvalidAvatar">
UNGÜLTIGER AVATAR
</floater.string>
- <text name="label">
+ <text name="label" width="120">
Gebackene Texturen
</text>
- <text name="composite_label" width="150">
+ <text name="composite_label" width="170">
Zusammengesetzte Texturen
</text>
<button label="Läd IDs in Konsole ab" label_selected="Abladen" name="Dump"/>
@@ -23,7 +23,8 @@
<texture_picker label="Auge" name="eyes_iris"/>
<texture_picker label="Alpha: Augen" name="eyes_alpha"/>
<texture_picker label="Oberkörper" name="upper-baked"/>
- <texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint"/>
+ <texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint" width=
+ "140"/>
<texture_picker label="Unterhemd" name="upper_undershirt"/>
<texture_picker label="Handschuhe" name="upper_gloves"/>
<texture_picker label="Hemd" name="upper_shirt"/>
@@ -31,7 +32,8 @@
<texture_picker label="Alpha: Oben" name="upper_alpha"/>
<texture_picker label="Obere Tattoos" name="upper_tattoo"/>
<texture_picker label="Unterkörper" name="lower-baked"/>
- <texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint"/>
+ <texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint" width=
+ "140"/>
<texture_picker label="Unterhose" name="lower_underpants"/>
<texture_picker label="Socken" name="lower_socks"/>
<texture_picker label="Schuhe" name="lower_shoes"/>
diff --git a/indra/newview/skins/default/xui/de/floater_beacons.xml b/indra/newview/skins/default/xui/de/floater_beacons.xml
index 50a4555ae0..6e83e0419b 100644
--- a/indra/newview/skins/default/xui/de/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/de/floater_beacons.xml
@@ -5,7 +5,7 @@
Anzeigen:
</text>
<check_box label="Strahlen" name="beacons"/>
- <check_box label="Glanzlichter" name="highlights"/>
+ <check_box label="Hervorhebung" name="highlights"/>
<text name="beacon_width_label" tool_tip="Strahlbreite">
Breite:
</text>
diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
index 218c66d298..1d766ac07b 100644
--- a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
@@ -43,7 +43,7 @@
Jeder:
</text>
<check_box label="Kopieren" name="everyone_copy"/>
- <text name="NextOwnerLabel">
+ <text name="NextOwnerLabel" top="160" left="10">
Nächster Eigentümer:
</text>
<check_box label="Bearbeiten" name="next_owner_modify"/>
diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
index aa6201ec26..72959c7a0c 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
@@ -59,8 +59,9 @@
</text>
<button label="Jetzt kaufen" name="buy_btn"/>
<button label="Abbrechen" name="cancel_btn"/>
- <text name="info_cannot_buy">
- Kauf nicht möglich
+ <text name="info_cannot_buy" left="160" width="200" height="40">
+ Kauf nicht
+möglich
</text>
<button label="Weiter zum Internet" name="error_web"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_buy_land.xml b/indra/newview/skins/default/xui/de/floater_buy_land.xml
index 4c59f1e8e6..7426e97d9e 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_land.xml
@@ -1,43 +1,170 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="buy land" title="LAND KAUFEN">
+ <floater.string name="can_resell">
+ Verkauf möglich.
+ </floater.string>
+ <floater.string name="can_not_resell">
+ Verkauf nicht möglich.
+ </floater.string>
+ <floater.string name="can_change">
+ Zusammenlegen/unterteilen möglich.
+ </floater.string>
+ <floater.string name="can_not_change">
+ Zusammenlegen/unterteilen nicht möglich.
+ </floater.string>
+ <floater.string name="cant_buy_for_group">
+ Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
+ </floater.string>
+ <floater.string name="no_land_selected">
+ Kein Land ausgewählt.
+ </floater.string>
+ <floater.string name="multiple_parcels_selected">
+ Mehrere unterschiedliche Parzellen ausgewählt.
+Verkleinern Sie Ihre Auswahl.
+ </floater.string>
+ <floater.string name="no_permission">
+ Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
+ </floater.string>
+ <floater.string name="parcel_not_for_sale">
+ Die ausgewählte Parzelle steht nicht zum Verkauf.
+ </floater.string>
+ <floater.string name="group_already_owns">
+ Die Parzelle befindet sich bereits in Gruppenbesitz.
+ </floater.string>
+ <floater.string name="you_already_own">
+ Die Parzelle gehört Ihnen bereits.
+ </floater.string>
+ <floater.string name="set_to_sell_to_other">
+ Die ausgewählte Parzelle steht zum Verkauf an Dritte.
+ </floater.string>
+ <floater.string name="no_public_land">
+ Das ausgewählte Land beinhaltet kein öffentliches Land.
+ </floater.string>
+ <floater.string name="not_owned_by_you">
+ Sie haben Land ausgewählt, das einer anderen Person gehört.
+Verkleinern Sie Ihre Auswahl.
+ </floater.string>
+ <floater.string name="processing">
+ Kauf wird abgewickelt...
+
+(Dies kann 1 bis 2 Minuten dauern.)
+ </floater.string>
+ <floater.string name="fetching_error">
+ Fehler bei Abfrage der Landkauf-Informationen.
+ </floater.string>
+ <floater.string name="buying_will">
+ Bei Landkauf:
+ </floater.string>
+ <floater.string name="buying_for_group">
+ Landkauf für Gruppe:
+ </floater.string>
+ <floater.string name="cannot_buy_now">
+ Kaufen jetzt nicht möglich:
+ </floater.string>
+ <floater.string name="not_for_sale">
+ Nicht zu verkaufen:
+ </floater.string>
+ <floater.string name="none_needed">
+ nicht benötigt
+ </floater.string>
+ <floater.string name="must_upgrade">
+ Sie müssen Ihr Konto upgraden, um Land kaufen zu können.
+ </floater.string>
+ <floater.string name="cant_own_land">
+ Mit Ihrem Konto können Sie Land kaufen.
+ </floater.string>
+ <floater.string name="land_holdings">
+ Sie besitzen [BUYER] m² Land.
+ </floater.string>
+ <floater.string name="pay_to_for_land">
+ [SELLER] [AMOUNT] L$ für das Land bezahlen
+ </floater.string>
+ <floater.string name="buy_for_US">
+ Kaufen Sie [AMOUNT] L$ für ca. [LOCAL_AMOUNT],
+ </floater.string>
+ <floater.string name="parcel_meters">
+ Diese Parzelle ist [AMOUNT] m².
+ </floater.string>
+ <floater.string name="premium_land">
+ Dieses Land ist eine Premium-Immobilie. Es wird mit [AMOUNT] m² angesetzt.
+ </floater.string>
+ <floater.string name="discounted_land">
+ Dieses Land ist im Angebot. Es wird mit [AMOUNT] m² angesetzt.
+ </floater.string>
+ <floater.string name="meters_supports_object">
+ [AMOUNT] m²
+unterstützt [AMOUNT2] Objekte
+ </floater.string>
+ <floater.string name="sold_with_objects">
+ mit Objekten verkauft
+ </floater.string>
+ <floater.string name="sold_without_objects">
+ Objekte nicht im Verkauf mit eingeschlossen
+ </floater.string>
+ <floater.string name="info_price_string">
+ [PRICE] L$
+([PRICE_PER_SQM] L$/m²)
+[SOLD_WITH_OBJECTS]
+ </floater.string>
+ <floater.string name="insufficient_land_credits">
+ Die Gruppe [GROUP] benötigt ausreichende gespendete Landnutzungsrechte, um die Parzelle abzudecken, bevor der Kauf abgeschlossen werden kann.
+ </floater.string>
+ <floater.string name="have_enough_lindens">
+ Sie haben [AMOUNT] L$, genug zum Kauf dieses Landes.
+ </floater.string>
+ <floater.string name="not_enough_lindens">
+ Sie haben nur [AMOUNT] L$, brauchen aber mindestens [AMOUNT2] L$.
+ </floater.string>
+ <floater.string name="balance_left">
+ Nach dem Einkauf verbleiben Ihnen noch [AMOUNT] L$.
+ </floater.string>
+ <floater.string name="balance_needed">
+ Für dieses Land müssen Sie mindestens [AMOUNT] L$ kaufen.
+ </floater.string>
+ <floater.string name="no_parcel_selected">
+ (keine Parzelle ausgewählt)
+ </floater.string>
+ <floater.string name="icon_PG" value="Parcel_PG_Dark"/>
+ <floater.string name="icon_M" value="Parcel_M_Dark"/>
+ <floater.string name="icon_R" value="Parcel_R_Dark"/>
<text name="region_name_label">
Region:
</text>
- <text left="580" name="region_name_text">
+ <text left="680" left_delta="140" name="region_name_text">
(unbekannt)
</text>
<text name="region_type_label">
Typ:
</text>
- <text left="580" name="region_type_text">
+ <text left="680" left_delta="140" name="region_type_text">
(unbekannt)
</text>
<text name="estate_name_label">
Grundstück:
</text>
- <text left="580" name="estate_name_text">
+ <text left="680" left_delta="140" name="estate_name_text">
(unbekannt)
</text>
<text name="estate_owner_label" right="600" width="200">
Grundstückseigentümer:
</text>
- <text left="580" name="estate_owner_text">
+ <text left="680" left_delta="140" name="estate_owner_text">
(unbekannt)
</text>
- <text name="resellable_changeable_label">
+ <text left="410" name="resellable_changeable_label">
Gekauftes Land in dieser Region:
</text>
- <text name="resellable_clause">
+ <text left="410" name="resellable_clause">
Wiederverkauf möglich oder nicht möglich.
</text>
- <text name="changeable_clause">
+ <text left="410" name="changeable_clause">
Darft oder darf nicht zusammengelegt/unterteilt werden.
</text>
- <text name="covenant_text">
+ <text left="410" name="covenant_text">
Sie müssen dem Grundstücksvertrag zustimmen:
</text>
<text left="470" name="covenant_timestamp_text"/>
- <text_editor name="covenant_editor">
+ <text_editor left="470" name="covenant_editor">
Wird geladen...
</text_editor>
<check_box label="Ich stimme dem obigen Vertrag zu." name="agree_covenant"/>
@@ -67,7 +194,7 @@ Objekte im Verkauf eingeschlossen
<text name="error_message">
Irgendetwas stimmt nicht.
</text>
- <button label="Gehe zu Website" name="error_web"/>
+ <button label="Gehe zu Website" name="error_web" top_delta="136"/>
<text name="account_action">
Macht Sie zum Premium-Mitglied.
</text>
@@ -79,8 +206,9 @@ Objekte im Verkauf eingeschlossen
<combo_box.item label="7,50 US$/Monat, vierteljährliche Abrechnung" name="US$7.50/month,billedquarterly"/>
<combo_box.item label="6,00 US$/Monat, jährliche Abrechnung" name="US$6.00/month,billedannually"/>
</combo_box>
- <text name="land_use_action">
- Erhöhen Sie Ihre monatlichen Landnutzungsgebühren auf 40 US$/month.
+ <text height="36" name="land_use_action" top="270">
+ Erhöhen Sie Ihre monatlichen Landnutzungsgebühren
+auf 40 US$/month.
</text>
<text name="land_use_reason">
Sie besitzen 1309 m² Land.
@@ -107,131 +235,4 @@ Diese Parzelle ist 512 m² gross.
<check_box label="[AMOUNT] m² Beitrag von der Gruppe entfernen." name="remove_contribution"/>
<button label="Kaufen" name="buy_btn"/>
<button label="Abbrechen" name="cancel_btn"/>
- <string name="can_resell">
- Verkauf möglich.
- </string>
- <string name="can_not_resell">
- Verkauf nicht möglich.
- </string>
- <string name="can_change">
- Zusammenlegen/unterteilen möglich.
- </string>
- <string name="can_not_change">
- Zusammenlegen/unterteilen nicht möglich.
- </string>
- <string name="cant_buy_for_group">
- Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
- </string>
- <string name="no_land_selected">
- Kein Land ausgewählt.
- </string>
- <string name="multiple_parcels_selected">
- Mehrere unterschiedliche Parzellen ausgewählt.
-Verkleinern Sie Ihre Auswahl.
- </string>
- <string name="no_permission">
- Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
- </string>
- <string name="parcel_not_for_sale">
- Die ausgewählte Parzelle steht nicht zum Verkauf.
- </string>
- <string name="group_already_owns">
- Die Parzelle befindet sich bereits in Gruppenbesitz.
- </string>
- <string name="you_already_own">
- Die Parzelle gehört Ihnen bereits.
- </string>
- <string name="set_to_sell_to_other">
- Die ausgewählte Parzelle steht zum Verkauf an Dritte.
- </string>
- <string name="no_public_land">
- Das ausgewählte Land beinhaltet kein öffentliches Land.
- </string>
- <string name="not_owned_by_you">
- Sie haben Land ausgewählt, das einer anderen Person gehört.
-Verkleinern Sie Ihre Auswahl.
- </string>
- <string name="processing">
- Kauf wird abgewickelt...
-
-(Dies kann 1 bis 2 Minuten dauern.)
- </string>
- <string name="fetching_error">
- Fehler bei Abfrage der Landkauf-Informationen.
- </string>
- <string name="buying_will">
- Bei Landkauf:
- </string>
- <string name="buying_for_group">
- Landkauf für Gruppe:
- </string>
- <string name="cannot_buy_now">
- Kaufen jetzt nicht möglich:
- </string>
- <string name="not_for_sale">
- Nicht zu verkaufen:
- </string>
- <string name="none_needed">
- nicht benötigt
- </string>
- <string name="must_upgrade">
- Sie müssen Ihr Konto upgraden, um Land kaufen zu können.
- </string>
- <string name="cant_own_land">
- Mit Ihrem Konto können Sie Land kaufen.
- </string>
- <string name="land_holdings">
- Sie besitzen [BUYER] m² Land.
- </string>
- <string name="pay_to_for_land">
- [SELLER] [AMOUNT] L$ für das Land bezahlen
- </string>
- <string name="buy_for_US">
- Kaufen Sie [AMOUNT] L$ für ca. [LOCAL_AMOUNT],
- </string>
- <string name="parcel_meters">
- Diese Parzelle ist [AMOUNT] m².
- </string>
- <string name="premium_land">
- Dieses Land ist eine Premium-Immobilie. Es wird mit [AMOUNT] m² angesetzt.
- </string>
- <string name="discounted_land">
- Dieses Land ist im Angebot. Es wird mit [AMOUNT] m² angesetzt.
- </string>
- <string name="meters_supports_object">
- [AMOUNT] m²
-unterstützt [AMOUNT2] Objekte
- </string>
- <string name="sold_with_objects">
- mit Objekten verkauft
- </string>
- <string name="sold_without_objects">
- Objekte nicht im Verkauf mit eingeschlossen
- </string>
- <string name="info_price_string">
- [PRICE] L$
-([PRICE_PER_SQM] L$/m²)
-[SOLD_WITH_OBJECTS]
- </string>
- <string name="insufficient_land_credits">
- Die Gruppe [GROUP] benötigt ausreichende gespendete Landnutzungsrechte, um die Parzelle abzudecken, bevor der Kauf abgeschlossen werden kann.
- </string>
- <string name="have_enough_lindens">
- Sie haben [AMOUNT] L$, genug zum Kauf dieses Landes.
- </string>
- <string name="not_enough_lindens">
- Sie haben nur [AMOUNT] L$, brauchen aber mindestens [AMOUNT2] L$.
- </string>
- <string name="balance_left">
- Nach dem Einkauf verbleiben Ihnen noch [AMOUNT] L$.
- </string>
- <string name="balance_needed">
- Für dieses Land müssen Sie mindestens [AMOUNT] L$ kaufen.
- </string>
- <string name="no_parcel_selected">
- (keine Parzelle ausgewählt)
- </string>
- <string name="buy_currency">
- [LINDENS] L$ für ca. [USD] US$ kaufen
- </string>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml
index a2bf45852a..b1e9ef6f19 100644
--- a/indra/newview/skins/default/xui/de/floater_customize.xml
+++ b/indra/newview/skins/default/xui/de/floater_customize.xml
@@ -156,8 +156,8 @@
<panel label="Hemd" name="Shirt">
<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neues Hemd" label_selected="Neues Hemd" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
+ <button label="Neues Hemd" label_selected="Neues Hemd" name="Create New"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
<button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/>
@@ -189,8 +189,8 @@
<panel label="Hose" name="Pants">
<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neue Hose" label_selected="Neue Hose" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
+ <button label="Neue Hose" label_selected="Neue Hose" name="Create New"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
<button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/>
@@ -238,6 +238,7 @@
<text name="not worn instructions">
Ziehen Sie neue Schuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neue Schuhe" label_selected="Neue Schuhe" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
@@ -246,7 +247,6 @@
</text>
<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neue Schuhe" label_selected="Neue Schuhe" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
@@ -271,6 +271,7 @@
<text name="not worn instructions">
Ziehen Sie neue Strümpfe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neue Socken" label_selected="Neue Socken" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
@@ -279,7 +280,6 @@
</text>
<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neue Socken" label_selected="Neue Socken" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
@@ -304,6 +304,7 @@
<text name="not worn instructions">
Ziehen Sie eine neue Jacke aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neue Jacke" label_selected="Neue Jacke" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
@@ -313,7 +314,6 @@
<texture_picker label="Oberstoff" name="Upper Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<texture_picker label="Unterstoff" name="Lower Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neue Jacke" label_selected="Neue Jacke" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
@@ -338,6 +338,7 @@
<text name="not worn instructions">
Ziehen Sie neue Handschuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neue Handschuhe" label_selected="Neue Handschuhe" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
@@ -346,7 +347,6 @@
</text>
<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neue Handschuhe" label_selected="Neue Handschuhe" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
@@ -371,6 +371,7 @@
<text name="not worn instructions">
Ziehen Sie ein neues Unterhemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neues Unterhemd" label_selected="Neues Unterhemd" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
@@ -379,7 +380,6 @@
</text>
<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neues Unterhemd" label_selected="Neues Unterhemd" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
@@ -404,6 +404,7 @@
<text name="not worn instructions">
Ziehen Sie eine neue Unterhose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neue Unterhose" label_selected="Neue Unterhose" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
@@ -412,7 +413,6 @@
</text>
<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neue Unterhose" label_selected="Neue Unterhose" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
@@ -437,6 +437,7 @@
<text name="not worn instructions">
Ziehen Sie einen neuen Rock aus dem Inventar auf Ihren Avatar, um diesen anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neuer Rock" label_selected="Neuer Rock" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
@@ -445,13 +446,12 @@
</text>
<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
- <button label="Neuer Rock" label_selected="Neuer Rock" name="Create New"/>
<button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/>
<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
<button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/>
</panel>
- <panel label="Alpha" name="Alpha">
+ <panel label="Tätowierung" name="Tattoo">
<text name="title">
[BESCHR]
</text>
@@ -468,26 +468,24 @@
Befindet sich in [PATH]
</text>
<text name="not worn instructions">
- Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen. Sie können aber auch eine neue erstellen und diese anlegen.
+ Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neue Tätowierung erstellen" label_selected="Neue Tätowierung erstellen" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
<text name="Item Action Label">
- Alpha:
+ Tätowierung:
</text>
- <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <button label="Neue Alpha erstellen" label_selected="Neue Alpha erstellen" name="Create New"/>
+ <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
<button label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button label="Speichern" label_selected="Speichern" name="Save"/>
<button label="Speichern unter..." label_selected="Speichern unter..." name="Save As"/>
<button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/>
</panel>
- <panel label="Tätowierung" name="Tattoo">
+ <panel label="Alpha" name="Alpha">
<text name="title">
[BESCHR]
</text>
@@ -504,25 +502,27 @@
Befindet sich in [PATH]
</text>
<text name="not worn instructions">
- Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen.
+ Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen. Sie können aber auch eine neue erstellen und diese anlegen.
</text>
+ <button label="Neue Alpha erstellen" label_selected="Neue Alpha erstellen" name="Create New"/>
<text name="no modify instructions">
Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
</text>
<text name="Item Action Label">
- Tätowierung:
+ Alpha:
</text>
- <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <button label="Neue Tätowierung erstellen" label_selected="Neue Tätowierung erstellen" name="Create New"/>
+ <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
<button label="Ausziehen" label_selected="Ausziehen" name="Take Off"/>
<button label="Speichern" label_selected="Speichern" name="Save"/>
<button label="Speichern unter..." label_selected="Speichern unter..." name="Save As"/>
<button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/>
</panel>
</tab_container>
- <button label="Skriptinfo" label_selected="Skriptinfo" name="script_info"/>
+ <button label="Skriptinfo" label_selected="Skriptinfo" name="script_info" tool_tip="Skripts, die an Ihren Avatar angehängt sind, anzeigen"/>
<button label="Outfit erstellen" label_selected="Outfit erstellen" name="make_outfit_btn"/>
<button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
<button label="OK" label_selected="OK" name="Ok"/>
diff --git a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
index 7f4dc4a79e..9baf30fb53 100644
--- a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
@@ -66,7 +66,7 @@
Key-Zeit:
</text>
<spinner label="Std." name="WLCurKeyHour" />
- <spinner label="Min." name="WLCurKeyMin" />
+ <spinner label="Min." name="WLCurKeyMin" label_width="100" width="66"/>
<text name="WLCurKeyTimeText2">
Key-Voreinstellung:
</text>
@@ -79,8 +79,8 @@
Zykluslänge:
</text>
<spinner label="Std." name="WLLengthOfDayHour" />
- <spinner label="Min." name="WLLengthOfDayMin" />
- <spinner label="Sek." name="WLLengthOfDaySec" />
+ <spinner label="Min." name="WLLengthOfDayMin" label_width="100" width="66"/>
+ <spinner label="Sek." name="WLLengthOfDaySec" label_width="100" width="66"/>
<text name="DayCycleText3">
Vorschau:
</text>
diff --git a/indra/newview/skins/default/xui/de/floater_event.xml b/indra/newview/skins/default/xui/de/floater_event.xml
new file mode 100644
index 0000000000..a41ac521a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_event.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Event" name="Event" title="EVENT-DETAILS">
+ <floater.string name="none">
+ keines
+ </floater.string>
+ <floater.string name="notify">
+ Benachrichtigen
+ </floater.string>
+ <floater.string name="dont_notify">
+ Nicht benachrichtigen
+ </floater.string>
+ <layout_stack name="layout">
+ <layout_panel name="profile_stack">
+ <text name="event_name">
+ Namenloses Event....namenlos! Tadaaa! Tadatadaaaah!
+ </text>
+ <text name="event_category">
+ (keine Kategorie)
+ </text>
+ <text name="event_runby_label">
+ Ausgeführt von:
+ </text>
+ <text initial_value="(wird in Datenbank gesucht)" name="event_runby"/>
+ <text name="event_date">
+ 10/10/2010
+ </text>
+ <text name="event_duration">
+ 1 Stunde
+ </text>
+ <text name="event_cover">
+ Kostenlos
+ </text>
+ <text name="event_location_label">
+ Standort:
+ </text>
+ <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
+ <text name="rating_label" value="Einstufung:"/>
+ <text name="rating_value" value="unbekannt"/>
+ </layout_panel>
+ <layout_panel name="button_panel">
+ <button name="create_event_btn" tool_tip="Event erstellen"/>
+ <button name="god_delete_event_btn" tool_tip="Event löschen"/>
+ <button label="Mich benachrichtigen" name="notify_btn"/>
+ <button label="Teleportieren" name="teleport_btn"/>
+ <button label="Karte" name="map_btn"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml
index 716165bb6b..2bb123ad51 100644
--- a/indra/newview/skins/default/xui/de/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml
@@ -7,19 +7,19 @@
</panel>
<panel label="Region" name="region">
<text name="Sim Name:" width="55">
- Sim-Name:
+ Sim:
</text>
<check_box label="Startbereich Einleitung" name="check prelude" tool_tip="Diese Region zu einem Startbereich machen."/>
<check_box label="Sonne fest" name="check fixed sun" tool_tip="Fixiert den Sonnenstand (wie in „Region/Grundstück“ &gt; „Terrain“."/>
- <check_box height="32" label="Zuhause auf Teleport zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner weg teleportieren, ihr Zuhause auf Zielposition setzen."/>
- <check_box bottom_delta="-32" label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/>
+ <check_box label="Zuhause auf Teleport zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner weg teleportieren, ihr Zuhause auf Zielposition setzen."/>
+ <check_box label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/>
<check_box label="Schaden" name="check damage" tool_tip="Schaden in dieser Region aktivieren."/>
<check_box label="Trafficüberwachung blockieren" name="block dwell" tool_tip="In dieser Region die Traffic-Berechnung abschalten."/>
<check_box label="Terraformen blockieren" name="block terraform" tool_tip="Das Terraformen von Land verbieten (Benutzen Sie dies um Leuten das Terraformen ihres Landes zu verbieten)"/>
<check_box label="Sandkasten" name="is sandbox" tool_tip="Sandkastenregion ein-/ausschalten."/>
- <button label="Terrain formen" label_selected="Terrain formen" name="Bake Terrain" tool_tip="Das aktuelle Terrain als Standard speichern." width="118"/>
- <button label="Terrain zurücksetzen" label_selected="Terrain zurücksetzen" name="Revert Terrain" tool_tip="Das aktuelle Terrain mit dem Standard ersetzen." width="118"/>
- <button label="Terrain tauschen" label_selected="Terrain tauschen" name="Swap Terrain" tool_tip="Aktuelles Terrain gegen Standard austauschen." width="118"/>
+ <button label="Terrain formen" label_selected="Terrain formen" name="Bake Terrain" tool_tip="Das aktuelle Terrain als Standard speichern." width="120"/>
+ <button label="Terrain zurücksetzen" label_selected="Terrain zurücksetzen" name="Revert Terrain" tool_tip="Das aktuelle Terrain mit dem Standard ersetzen." width="120"/>
+ <button label="Terrain tauschen" label_selected="Terrain tauschen" name="Swap Terrain" tool_tip="Aktuelles Terrain gegen Standard austauschen." width="120"/>
<text name="estate id">
Grundstücks-ID:
</text>
@@ -32,21 +32,21 @@
</text>
<line_editor left_delta="110" name="gridposx" tool_tip="Die X-Rasterposition dieser Region" width="35"/>
<line_editor left_delta="45" name="gridposy" tool_tip="Die Y-Rasterposition dieser Region" width="35"/>
- <text name="Redirect to Grid: ">
+ <text name="Redirect to Grid: " width="110">
Auf Raster umleiten:
</text>
- <line_editor left_delta="110" name="redirectx" width="35"/>
- <line_editor left_delta="45" name="redirecty" width="35"/>
+ <line_editor left_delta="110" name="redirectx" width="35" left_pad="0"/>
+ <line_editor left_delta="45" name="redirecty" width="35" />
<text font="SansSerifSmall" name="billable factor text">
Abrechnungsfaktor:
</text>
<text name="land cost text">
- L$ pro qm:
+ L$ pro m²:
</text>
<button label="Aktualisieren" label_selected="Aktualisieren" name="Refresh" tool_tip="Klicken Sie hier, um die obigen Informationen zu aktualisieren."/>
<button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/>
- <button label="Region auswählen" label_selected="Region auswählen" left="136" name="Select Region" tool_tip="Die gesamte Region mit dem Landwerkzeug auswählen." width="130"/>
- <button label="Automatisch speichern" label_selected="Automatisch speichern" left="136" name="Autosave now" tool_tip="gzipped-Status im Autosave-Verzeichnis speichern." width="130"/>
+ <button label="Region auswählen" label_selected="Region auswählen" left="136" name="Select Region" tool_tip="Die gesamte Region mit dem Landwerkzeug auswählen." width="132"/>
+ <button label="Automatisch speichern" label_selected="Automatisch speichern" left="136" name="Autosave now" tool_tip="gzipped-Status im Autosave-Verzeichnis speichern." width="132"/>
</panel>
<panel label="Objekte" name="objects">
<panel.string name="no_target">
diff --git a/indra/newview/skins/default/xui/de/floater_help_browser.xml b/indra/newview/skins/default/xui/de/floater_help_browser.xml
index bfefa57731..d55a3b0a26 100644
--- a/indra/newview/skins/default/xui/de/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/de/floater_help_browser.xml
@@ -1,14 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_help_browser" title="HILFE-BROWSER">
- <floater.string name="home_page_url">
- http://de.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://de.secondlife.com/support
+ <floater.string name="loading_text">
+ Wird geladen...
</floater.string>
<layout_stack name="stack1">
- <layout_panel name="external_controls">
- <button label="In meinem Browser öffnen" name="open_browser"/>
- </layout_panel>
+ <layout_panel name="external_controls"/>
</layout_stack>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_image_preview.xml b/indra/newview/skins/default/xui/de/floater_image_preview.xml
index 7f66234dab..fd675f8808 100644
--- a/indra/newview/skins/default/xui/de/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_image_preview.xml
@@ -28,5 +28,5 @@ Speichern Sie das Bild als 24 Bit Targa (.tga).
</text>
<check_box label="Verlustfreie Komprimierung verwenden" name="lossless_check"/>
<button label="Abbrechen" name="cancel_btn"/>
- <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
+ <button label="Hochladen ([AMOUNT] L$)" name="ok_btn" width="146"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_inspect.xml b/indra/newview/skins/default/xui/de/floater_inspect.xml
index 939aa964c0..da97ceb2d8 100644
--- a/indra/newview/skins/default/xui/de/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/de/floater_inspect.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="450" name="inspect" title="OBJEKTE UNTERSUCHEN">
+<floater min_width="460" name="inspect" title="OBJEKTE UNTERSUCHEN" width="460">
<floater.string name="timeStamp">
[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
</floater.string>
<scroll_list name="object_list" tool_tip="Wählen Sie ein Objekt aus dieser Liste, um es in der Second Life-Welt zu markieren">
<scroll_list.columns label="Objektname" name="object_name"/>
- <scroll_list.columns label="Besitzer" name="owner_name"/>
+ <scroll_list.columns label="Besitzer" name="owner_name" />
<scroll_list.columns label="Ersteller" name="creator_name"/>
- <scroll_list.columns label="Erstellungsdatum" name="creation_date"/>
+ <scroll_list.columns label="Erstellungsdatum" name="creation_date" width="116"/>
</scroll_list>
<button label="Besitzerprofil einsehen..." name="button owner" tool_tip="Profil des Besitzers des markierten Objekts einsehen" width="155"/>
<button label="Erstellerprofil einsehen..." left="175" name="button creator" tool_tip="Profil des ursprünglichen Erstellers des markierten Objekts einsehen" width="155"/>
diff --git a/indra/newview/skins/default/xui/de/floater_inventory.xml b/indra/newview/skins/default/xui/de/floater_inventory.xml
index d9014fc0ef..d9b7c30fd2 100644
--- a/indra/newview/skins/default/xui/de/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/de/floater_inventory.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Inventory" title="INVENTAR">
+<floater name="Inventory" title="MEIN INVENTAR">
<floater.string name="Title">
- Inventar
+ MEIN INVENTAR
</floater.string>
<floater.string name="TitleFetching">
- Inventar ([ITEM_COUNT] Artikel werden abgerufen...) [FILTER]
+ MEIN INVENTAR ([ITEM_COUNT] Objekte werden abgerufen...) [FILTER]
</floater.string>
<floater.string name="TitleCompleted">
- Inventar ([ITEM_COUNT] Artikel) [FILTER]
+ MEIN INVENTAR ([ITEM_COUNT] Objekte) [FILTER]
</floater.string>
<floater.string name="Fetched">
Abgerufen
diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
index e894f666c9..f98e23bbc4 100644
--- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
@@ -59,10 +59,10 @@
Nächster Eigentümer:
</text>
<check_box label="Bearbeiten" name="CheckNextOwnerModify"/>
- <check_box label="Kopieren" left_delta="85" name="CheckNextOwnerCopy"/>
+ <check_box label="Kopieren" left_delta="55" name="CheckNextOwnerCopy"/>
<check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/>
<check_box label="Zum Verkauf" name="CheckPurchase"/>
- <combo_box name="combobox sale copy">
+ <combo_box name="combobox sale copy" left_pad="25">
<combo_box.item label="Kopieren" name="Copy"/>
<combo_box.item label="Original" name="Original"/>
</combo_box>
diff --git a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml
index 248460af82..3b42a8b741 100644
--- a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml
@@ -7,7 +7,7 @@
Läuft
</floater.string>
<floater.string name="Title">
- Skript: [NAME]
+ SKRIPT: [NAME]
</floater.string>
<button label="Zurücksetzen" label_selected="Zurücksetzen" name="Reset"/>
<check_box initial_value="true" label="Läuft" name="running"/>
diff --git a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
index 1d6f690d3c..73c21edc67 100644
--- a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="script ed float" title="LSL-REFERENZ">
<check_box label="Cursor folgen" name="lock_check"/>
- <combo_box label="Sperren" name="history_combo"/>
+ <combo_box label="Sperren" name="history_combo" left_pad="50" width="80"/>
<button label="Zurück" name="back_btn"/>
<button label="Weiter" name="fwd_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml
index b985d1d187..a9a3149177 100644
--- a/indra/newview/skins/default/xui/de/floater_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_map.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map">
+<floater name="Map" title="Minikarte">
<floater.string name="mini_map_north">
N
</floater.string>
diff --git a/indra/newview/skins/default/xui/de/floater_media_browser.xml b/indra/newview/skins/default/xui/de/floater_media_browser.xml
index 18adb5ee7f..2d438dfe21 100644
--- a/indra/newview/skins/default/xui/de/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/de/floater_media_browser.xml
@@ -14,8 +14,8 @@
<button label="Los" name="go"/>
</layout_panel>
<layout_panel name="time_controls">
- <button label="zurückspulen" name="rewind"/>
- <button label="anhalten" name="stop"/>
+ <button label="zurückspulen" name="rewind" width="100"/>
+ <button label="anhalten" name="stop" left_pad="20"/>
<button label="vorwärts" name="seek"/>
</layout_panel>
<layout_panel name="parcel_owner_controls">
diff --git a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
index b730146aa6..fdc9b950b6 100644
--- a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="MemLeak" title="SPEICHERVERLUST SIMULIEREN">
- <spinner label="Verlustgeschwindigkeit (Bytes pro Frame):" name="leak_speed"/>
- <spinner label="Max. Speicherverlust (MB):" name="max_leak"/>
+ <spinner label="Verlustgeschwindigkeit (Bytes pro Frame):" name="leak_speed" label_width="224"/>
+ <spinner label="Max. Speicherverlust (MB):" name="max_leak" label_width="224"/>
<text name="total_leaked_label">
Aktueller Speicherverlust:[SIZE] KB
</text>
diff --git a/indra/newview/skins/default/xui/de/floater_openobject.xml b/indra/newview/skins/default/xui/de/floater_openobject.xml
index f0b6aa498b..c3e7052283 100644
--- a/indra/newview/skins/default/xui/de/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/de/floater_openobject.xml
@@ -3,6 +3,6 @@
<text name="object_name">
[DESC]:
</text>
- <button label="In Inventar kopieren" label_selected="In Inventar kopieren" name="copy_to_inventory_button" width="132"/>
- <button label="Kopieren und anziehen" label_selected="Kopieren und anziehen" left="150" name="copy_and_wear_button" width="132"/>
+ <button label="In Inventar kopieren" label_selected="In Inventar kopieren" name="copy_to_inventory_button" width="120"/>
+ <button label="Kopieren und anziehen" label_selected="Kopieren und anziehen" left_pad="6" name="copy_and_wear_button" width="136"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
index 42cb91ccbb..8c110e5516 100644
--- a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container">
+<floater name="modal container" title="Outfit speichern">
<button label="Speichern" label_selected="Speichern" name="Save"/>
<button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
<text name="Save item as:">
- Outfit speichern als:
+ Meine aktuelle Kleidung
+als neues Outfit speichern:
</text>
<line_editor name="name ed">
- [BESCHR]
+ [DESC] (neu)
</line_editor>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml
index 99ef0e900e..5372b8387e 100644
--- a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml
@@ -25,10 +25,13 @@
Der Anruf wurde nicht entgegengenommen. Bitte versuchen Sie es später erneut.
</text>
<text name="nearby">
- Die Verbindung zu [VOICE_CHANNEL_NAME] wurde abgebrochen. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden.
+ Die Verbindung zu [VOICE_CHANNEL_NAME] wurde abgebrochen. [RECONNECT_NEARBY]
</text>
- <text name="nearby_P2P">
- [VOICE_CHANNEL_NAME] hat den Anruf beendet. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden.
+ <text name="nearby_P2P_by_other">
+ [VOICE_CHANNEL_NAME] hat den Anruf beendet. [RECONNECT_NEARBY]
+ </text>
+ <text name="nearby_P2P_by_agent">
+ Sie haben das Gespräch beendet. [RECONNECT_NEARBY]
</text>
<text name="leaving">
[CURRENT_CHAT] wird verlassen.
diff --git a/indra/newview/skins/default/xui/de/floater_pay.xml b/indra/newview/skins/default/xui/de/floater_pay.xml
index 6eb1d9472d..fb89eeb600 100644
--- a/indra/newview/skins/default/xui/de/floater_pay.xml
+++ b/indra/newview/skins/default/xui/de/floater_pay.xml
@@ -7,7 +7,7 @@
Einwohner bezahlen
</string>
<text name="payee_label" width="130">
- Zahlen:
+ Bezahlen:
</text>
<icon name="icon_person" tool_tip="Person"/>
<text left="130" name="payee_name">
@@ -20,6 +20,6 @@
<text name="amount text">
Oder Betrag auswählen:
</text>
- <button label="Zahlen" label_selected="Zahlen" name="pay btn"/>
+ <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/>
<button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_pay_object.xml b/indra/newview/skins/default/xui/de/floater_pay_object.xml
index 92f5ea415e..ff85efad50 100644
--- a/indra/newview/skins/default/xui/de/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/de/floater_pay_object.xml
@@ -17,13 +17,13 @@
<text left="105" name="object_name_text">
...
</text>
- <button label="1 L$" label_selected="1 L$" left="105" name="fastpay 1"/>
- <button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/>
- <button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/>
- <button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/>
+ <button label="1 L$" label_selected="1 L$" name="fastpay 1"/>
+ <button label="5 L$" label_selected="5 L$" name="fastpay 5"/>
+ <button label="10 L$" label_selected="10 L$" name="fastpay 10"/>
+ <button label="20 L$" label_selected="20 L$" name="fastpay 20"/>
<text name="amount text">
Oder Betrag auswählen:
</text>
- <button label="Zahlen" label_selected="Zahlen" name="pay btn"/>
+ <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/>
<button label="Abbrechen" label_selected="Abbrechen" name="cancel btn" width="76"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_postcard.xml b/indra/newview/skins/default/xui/de/floater_postcard.xml
index 37a0a0ad1d..91e0bb8133 100644
--- a/indra/newview/skins/default/xui/de/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/de/floater_postcard.xml
@@ -3,19 +3,19 @@
<text name="to_label">
E-Mail des Empfängers:
</text>
- <line_editor left="145" name="to_form" width="125"/>
+ <line_editor left_delta="145" name="to_form" width="125"/>
<text name="from_label">
Ihre E-Mail:
</text>
- <line_editor left="145" name="from_form" width="125"/>
+ <line_editor left_delta="145" name="from_form" width="125"/>
<text name="name_label">
Ihr Name:
</text>
- <line_editor left="145" name="name_form" width="125"/>
+ <line_editor left_delta="145" name="name_form" width="125"/>
<text name="subject_label">
Betreff:
</text>
- <line_editor label="Betreff hier eingeben." left="145" name="subject_form" width="125"/>
+ <line_editor label="Betreff hier eingeben." left_delta="145" name="subject_form" width="125"/>
<text name="msg_label">
Nachricht:
</text>
@@ -25,7 +25,7 @@
<check_box label="Im Web veröffentlichen" name="allow_publish_check" tool_tip="Veröffentlicht diese Postkarte im Web."/>
<check_box label="Ab-18-Inhalt" name="mature_check" tool_tip="Diese Postkarte enthält nicht jugendfreie Inhalte."/>
<button label="?" name="publish_help_btn"/>
- <text name="fine_print">
+ <text name="fine_print" bottom_delta="21" height="140">
Wenn sich der Empfänger bei SL anmeldet, erhalten Sie einen Empfehlungsbonus.
</text>
<button label="Abbrechen" name="cancel_btn"/>
diff --git a/indra/newview/skins/default/xui/de/floater_preferences.xml b/indra/newview/skins/default/xui/de/floater_preferences.xml
index 106fd6dfd3..a2712c437b 100644
--- a/indra/newview/skins/default/xui/de/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/de/floater_preferences.xml
@@ -6,10 +6,10 @@
<panel label="Allgemein" name="general"/>
<panel label="Grafik" name="display"/>
<panel label="Privatsphäre" name="im"/>
- <panel label="Sound" name="audio"/>
+ <panel label="Sound &amp; Medien" name="audio"/>
<panel label="Chat" name="chat"/>
- <panel label="Benachrichtigungen" name="msgs"/>
- <panel label="Setup" name="input"/>
+ <panel label="Meldungen" name="msgs"/>
+ <panel label="Konfiguration" name="input"/>
<panel label="Erweitert" name="advanced1"/>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_animation.xml b/indra/newview/skins/default/xui/de/floater_preview_animation.xml
index e98faeb1f4..3dcdb52555 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_animation.xml
@@ -3,10 +3,10 @@
<floater.string name="Title">
Animation: [NAME]
</floater.string>
- <text name="desc txt">
+ <text name="desc txt" width="140">
Beschreibung:
</text>
- <line_editor left="98" name="desc" width="189"/>
- <button label="In Welt abspielen" label_selected="Stopp" name="Anim play btn" tool_tip="Diese Animation so wiedergeben, dass andere sie sehen können." width="116"/>
- <button label="Lokal wiedergeben" label_selected="Stopp" left="171" name="Anim audition btn" tool_tip="Diese Animation so wiedergeben, dass nur Sie sie sehen." width="116"/>
+ <line_editor left="108" name="desc" width="160"/>
+ <button label="Inworld abspielen" label_selected="Stopp" name="Anim play btn" tool_tip="Diese Animation so wiedergeben, dass andere sie sehen können." width="116"/>
+ <button label="Lokal abspielen" label_selected="Stopp" left="171" name="Anim audition btn" tool_tip="Diese Animation so wiedergeben, dass nur Sie sie sehen." width="116"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
index 51c41a3209..1426a33d1d 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
@@ -36,7 +36,7 @@
<text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt.">
Ersetzen mit:
</text>
- <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt."/>
+ <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt." left_delta="94" width="160"/>
<text name="key_label">
Tastenkürzel:
</text>
@@ -45,8 +45,8 @@
<text name="library_label">
Bibliothek:
</text>
- <scroll_list name="library_list"/>
- <button label="Hinzufügen &gt;&gt;" name="add_btn"/>
+ <scroll_list name="library_list" width="166"/>
+ <button label="Hinzufügen &gt;&gt;" name="add_btn" left_pad="6" width="94"/>
<text name="steps_label">
Schritte:
</text>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_sound.xml b/indra/newview/skins/default/xui/de/floater_preview_sound.xml
index 17419548bc..4629ec4a04 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_sound.xml
@@ -6,6 +6,6 @@
<text name="desc txt">
Beschreibung:
</text>
- <button label="In Welt abspielen" label_selected="In Welt abspielen" name="Sound play btn" tool_tip="Gibt diesen Sound so wieder, dass andere ihn hören können."/>
- <button label="Lokal wiedergeben" label_selected="Lokal wiedergeben" name="Sound audition btn" tool_tip="Gibt diesen Sound so wieder, dass nur Sie ihn hören."/>
+ <button label="Inworld abspielen" label_selected="Inworld abspielen" name="Sound play btn" tool_tip="Gibt diesen Sound so wieder, dass andere ihn hören können."/>
+ <button label="Lokal abspielen" label_selected="Lokal abspielen" name="Sound audition btn" tool_tip="Gibt diesen Sound so wieder, dass nur Sie ihn hören."/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_texture.xml b/indra/newview/skins/default/xui/de/floater_preview_texture.xml
index ac6a61cde6..526c0813bd 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_texture.xml
@@ -42,6 +42,6 @@
</combo_item>
</combo_box>
<button label="OK" name="Keep"/>
- <button label="Abbrechen" name="Discard"/>
+ <button label="Verwerfen" name="Discard"/>
<button label="Speichern unter" name="save_tex_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
index 3edf5959a2..49e6d031d6 100644
--- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
@@ -23,7 +23,8 @@
{128.1, 128.1, 15.4}
</text>
<text bottom_delta="-38" height="32" name="select_object_label">
- Klicken Sie auf die Schaltfläche, dann auf das entsprechende Objekt:
+ Klicken Sie die Schaltfläche, dann das entsprechende
+Objekt:
</text>
<button label="" label_selected="" name="pick_btn" tool_tip="Objektauswahl – Wählen Sie ein Objekt als Thema dieses Berichts aus"/>
<text name="object_name_label">
@@ -93,9 +94,9 @@
Details:
</text>
<text name="bug_aviso">
- Bitte beschreiben Sie alles so genau wie möglich.
+ Detaillierte Beschreibung:
</text>
- <text_editor bottom_delta="-136" height="130" name="details_edit"/>
+ <text_editor bottom_delta="-136" height="70" name="details_edit"/>
<text bottom_delta="-20" name="incomplete_title">
* Unvollständige Berichte werden nicht bearbeitet
</text>
diff --git a/indra/newview/skins/default/xui/de/floater_script_preview.xml b/indra/newview/skins/default/xui/de/floater_script_preview.xml
index 27c40aff07..e0bcd42523 100644
--- a/indra/newview/skins/default/xui/de/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_script_preview.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview lsl text" title="SKRIPT: ROTATIONS-SKRIPT">
<floater.string name="Title">
- Skript: [NAME]
+ SKRIPT: [NAME]
</floater.string>
- <text name="desc txt">
+ <text name="desc txt" width="120">
Beschreibung:
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml
index 2bc7356e65..8f67fae464 100644
--- a/indra/newview/skins/default/xui/de/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml
@@ -5,13 +5,13 @@
<text name="info_parcel_label">
Parzelle:
</text>
- <text bottom_delta="-5" height="16" name="info_parcel">
+ <text bottom_delta="-5" height="16" name="info_parcel" left="70">
PARZELLENNAME
</text>
<text name="info_size_label">
Größe:
</text>
- <text bottom_delta="-21" height="32" name="info_size">
+ <text bottom_delta="-21" height="32" name="info_size" left="70">
[AREA] m².
</text>
<text bottom_delta="-57" height="28" name="info_action">
@@ -20,8 +20,8 @@
<text name="price_label">
1. Preis festlegen:
</text>
- <text name="price_text">
- Einen angemessenen Preis auswählen.
+ <text name="price_text" >
+ Preis eingeben
</text>
<text name="price_ld">
L$
@@ -36,12 +36,12 @@
2. Land verkaufen an:
</text>
<text bottom_delta="-16" height="16" left="72" name="sell_to_text" right="-10">
- Wählen Sie, ob der Verkauf offen oder auf eine bestimmte Person beschränkt ist.
+ Offener Verkauf oder Verkauf an bestimmte Person?
</text>
<combo_box bottom_delta="-32" height="16" left="72" name="sell_to" width="140">
<combo_box.item label="-- Auswählen --" name="--selectone--"/>
- <combo_box.item label="Jeder" name="Anyone"/>
- <combo_box.item label="Bestimmte Person:" name="Specificuser:"/>
+ <combo_box.item label="An jeden" name="Anyone"/>
+ <combo_box.item label="An bestimmte Person:" name="Specificuser:"/>
</combo_box>
<button label="Auswählen" name="sell_to_select_agent"/>
<text name="sell_objects_label">
@@ -58,7 +58,7 @@
<text name="nag_message_label">
ACHTUNG: Verkäufe sind endgültig.
</text>
- <button label="Land zum Verkauf freigeben" name="sell_btn" width="180"/>
+ <button label="Zum Verkauf freigeben" name="sell_btn" width="180"/>
<button label="Abbrechen" name="cancel_btn"/>
</panel>
</scroll_container>
diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml
index 80573d69ad..9ee50c7c5c 100644
--- a/indra/newview/skins/default/xui/de/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="FOTO-ANZEIGE">
+<floater name="Snapshot" title="FOTO-VORSCHAU">
<text name="type_label">
Zweck des Fotos
</text>
<radio_group label="Fototyp" name="snapshot_type_radio">
- <radio_item label="Email-Adresse" name="postcard"/>
+ <radio_item label="Emailen" name="postcard"/>
<radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/>
<radio_item label="Auf meinem Computer speichern" name="local"/>
</radio_group>
@@ -60,7 +60,7 @@
<spinner label="Höhe" name="snapshot_height"/>
<check_box label="Seitenverhältnis beibehalten" name="keep_aspect_check"/>
<slider label="Bildqualität" name="image_quality_slider"/>
- <text name="layer_type_label" width="63">
+ <text name="layer_type_label" width="66">
Aufnehmen:
</text>
<combo_box label="Bildlayer" left="73" name="layer_types" width="132">
@@ -68,7 +68,7 @@
<combo_box.item label="Tiefe" name="Depth"/>
<combo_box.item label="Objektmasken" name="ObjectMattes"/>
</combo_box>
- <check_box label="Schnittstelle" name="ui_check"/>
+ <check_box label="Oberfläche" name="ui_check"/>
<check_box label="HUDs" name="hud_check"/>
<check_box label="Nach dem Speichern offen lassen" name="keep_open_check"/>
<check_box label="Frame einfrieren (Vollbild)" name="freeze_frame_check"/>
diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml
index dcea484e13..1eb2dd4288 100644
--- a/indra/newview/skins/default/xui/de/floater_stats.xml
+++ b/indra/newview/skins/default/xui/de/floater_stats.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Statistics" title="STATISTIKEN">
- <scroll_container name="statistics_scroll">
- <container_view name="statistics_view">
+<floater name="Statistics" title="STATISTIKEN" width="280">
+ <scroll_container name="statistics_scroll" width="280">
+ <container_view name="statistics_view" width="280">
<stat_view label="Basic" name="basic">
<stat_bar label="FPS" name="fps"/>
<stat_bar label="Bandbreite" name="bandwidth"/>
diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml
index 982786b66e..d7db97722c 100644
--- a/indra/newview/skins/default/xui/de/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/de/floater_sys_well.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="notification_chiclet" title="MELDUNGEN">
<string name="title_im_well_window">
- IM-SITZUNGEN
+ GESPRÄCHE
</string>
<string name="title_notification_well_window">
BENACHRICHTIGUNGEN
diff --git a/indra/newview/skins/default/xui/de/floater_telehub.xml b/indra/newview/skins/default/xui/de/floater_telehub.xml
index 923b4c0079..83d37b2ce4 100644
--- a/indra/newview/skins/default/xui/de/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/de/floater_telehub.xml
@@ -6,22 +6,22 @@
<text name="status_text_not_connected">
Kein Telehub verbunden.
</text>
- <text name="help_text_connected">
+ <text name="help_text_connected" width="300">
Klicken Sie zum Entfernen auf „Trennen“.
</text>
<text bottom_delta="-18" height="38" name="help_text_not_connected">
Wählen Sie ein Objekt und klicken Sie auf
„Mit Telehub verbinden“.
</text>
- <button label="Mit Telehub verbinden" name="connect_btn" width="122"/>
- <button label="Trennen" left="142" name="disconnect_btn" width="98"/>
+ <button label="Mit Telehub verbinden" name="connect_btn" width="134"/>
+ <button label="Trennen" left="152" name="disconnect_btn" width="88"/>
<text name="spawn_points_text" width="230">
Spawn-Punkte (Positionen, nicht Objekte):
</text>
<button label="Spawn hinzufügen" name="add_spawn_point_btn"/>
<button label="Spawn entfernen" name="remove_spawn_point_btn"/>
<text name="spawn_point_help">
- Wählen Sie ein Objekt und klicken zur Positionsangabe auf Spawn hinzufügen.
+ Wählen Sie ein Objekt und klicken Sie zur Positionsangabe auf Spawn hinzufügen.
Anschließend können Sie das Objekt verschieben oder löschen.
Positionsangaben sind relativ zum Telehub-Mittelpunkt.
Wählen Sie ein Objekt aus der Liste aus, um dieses inworld zu markieren.
diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
index 4e2d8a9274..d20ab8d1c3 100644
--- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
@@ -4,7 +4,7 @@
Zum Auswählen eines Bildes hier klicken
</string>
<text name="Multiple">
- Mehrer Texturen
+ Mehrere Texturen
</text>
<text name="unknown">
Größe: [DIMENSIONS]
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index b2f8cbed45..34f97af04f 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -64,7 +64,7 @@
<radio_item label="Fläche auswählen" name="radio select face"/>
</radio_group>
<check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/>
- <text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für diesen Objekt">
+ <text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt">
þ: [COUNT]
</text>
<check_box label="Beide Seiten dehnen" name="checkbox uniform"/>
@@ -363,7 +363,7 @@
<text name="edit_object">
Objekteigenschaften bearbeiten:
</text>
- <check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" tool_tip="Bewirkt, dass sich das Objekt um die Z-Achse biegen kann. (Nur Client-Seite)"/>
+ <check_box label="Flexibler Pfad" name="Flexible1D Checkbox Ctrl" tool_tip="Bewirkt, dass sich das Objekt um die Z-Achse biegen kann. (Nur Client-Seite)"/>
<spinner label="Weichheit" name="FlexNumSections"/>
<spinner label="Schwerkraft" name="FlexGravity"/>
<spinner label="Ziehen" name="FlexFriction"/>
diff --git a/indra/newview/skins/default/xui/de/floater_url_entry.xml b/indra/newview/skins/default/xui/de/floater_url_entry.xml
index 392d53a33d..f5fa449c85 100644
--- a/indra/newview/skins/default/xui/de/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/de/floater_url_entry.xml
@@ -3,10 +3,10 @@
<text name="media_label">
Medien-URL:
</text>
- <button label="OK" name="ok_btn" />
- <button label="Abbrechen" name="cancel_btn" width="75" />
- <button label="Löschen" name="clear_btn" />
- <text name="loading_label">
+ <button label="OK" name="ok_btn" width="30"/>
+ <button label="Abbrechen" name="cancel_btn" width="66" />
+ <button label="Löschen" name="clear_btn" left_pad="100"/>
+ <text name="loading_label" left="120">
Wird geladen...
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_water.xml b/indra/newview/skins/default/xui/de/floater_water.xml
index ed18dfdfff..ecd6d7ff3e 100644
--- a/indra/newview/skins/default/xui/de/floater_water.xml
+++ b/indra/newview/skins/default/xui/de/floater_water.xml
@@ -3,7 +3,7 @@
<floater.string name="WLDefaultWaterNames">
Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
</floater.string>
- <text name="KeyFramePresetsText">
+ <text name="KeyFramePresetsText" width="116">
Voreinstellungen:
</text>
<button label="Neu" label_selected="Neu" name="WaterNewPreset"/>
diff --git a/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml
index dad1b62975..f9b3552e8b 100644
--- a/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="modal container" title=" ">
- <button label="Speichern" label_selected="Speichern" name="Save" />
- <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" />
+ <button label="Speichern" label_selected="Speichern" name="Save"/>
+ <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
<text name="Save item as:">
- Objekt speichern als:
+ Objekt in meinem Inventar speichern als:
</text>
<line_editor name="name ed">
Neu [DESC]
diff --git a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
index 35a5ec35f7..1332509529 100644
--- a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
+++ b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
@@ -5,5 +5,5 @@
</text>
<line_editor name="whitelist_entry" tool_tip="Eine URL oder URL-Patten in die Whitelist eingeben"/>
<button label="OK" name="ok_btn"/>
- <button label="Abbrechen" name="cancel_btn"/>
+ <button label="Abbrechen" name="cancel_btn" width="80"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml
index accc023b8f..7d8a634452 100644
--- a/indra/newview/skins/default/xui/de/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_world_map.xml
@@ -62,6 +62,7 @@
</combo_box>
<search_editor label="Regionen nach Name" name="location" tool_tip="Geben Sie den Namen einer Region ein"/>
<button label="Suchen" name="DoSearch" tool_tip="Nach einer Region suchen"/>
+ <button name="Clear" tool_tip="Karte zurücksetzen"/>
<scroll_list name="search_results">
<scroll_list.columns label="" name="icon"/>
<scroll_list.columns label="" name="sim_name"/>
diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml
index 489e257867..a0bd24a69f 100644
--- a/indra/newview/skins/default/xui/de/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml
@@ -16,9 +16,9 @@
Dies ist meine Beschreibung und ich finde sie wirklich gut!
</text>
<slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
- <button label="Freund hinzufügen" name="add_friend_btn"/>
+ <button label="Freund hinzufügen" name="add_friend_btn" width="110"/>
<button label="IM" name="im_btn"/>
- <button label="Mehr" name="view_profile_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"/>
diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml
index 81d946be9d..badb47bf08 100644
--- a/indra/newview/skins/default/xui/de/inspect_group.xml
+++ b/indra/newview/skins/default/xui/de/inspect_group.xml
@@ -24,7 +24,7 @@
</text>
<text name="group_details">
Eine Gruppe für Leute, die sich gerne mit Elchen unterhält.
-Hoch solln sie leben! Elche forever! Und auch Mungos!
+Hoch solln sie leben! Elche forever! Und auch Mungos!
</text>
<text name="group_cost">
Mitgliedschaft: 123 L$
diff --git a/indra/newview/skins/default/xui/de/inspect_object.xml b/indra/newview/skins/default/xui/de/inspect_object.xml
index 61f2cc8dc9..ede14a37d7 100644
--- a/indra/newview/skins/default/xui/de/inspect_object.xml
+++ b/indra/newview/skins/default/xui/de/inspect_object.xml
@@ -38,8 +38,8 @@ Besitzer secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
http://www.superdupertest.com
</text>
<button label="Kaufen" name="buy_btn"/>
- <button label="Zahlen" name="pay_btn"/>
- <button label="Kopie nehmen" name="take_free_copy_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"/>
diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml
index 33cff066a2..d234443fae 100644
--- a/indra/newview/skins/default/xui/de/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml
@@ -12,6 +12,6 @@
<menu_item_call label="Hinauswerfen" name="Eject..."/>
<menu_item_call label="Debug" name="Debug..."/>
<menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <menu_item_call label="Zahlen" name="Pay..."/>
+ <menu_item_call label="Bezahlen" name="Pay..."/>
<menu_item_call label="Objektprofil" name="Object Inspect"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml
index 85db648119..05eade1d34 100644
--- a/indra/newview/skins/default/xui/de/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml
@@ -12,5 +12,5 @@
<menu_item_call label="Hinauswerfen" name="Eject..."/>
<menu_item_call label="Debug" name="Debug..."/>
<menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <menu_item_call label="Zahlen" name="Pay..."/>
+ <menu_item_call label="Bezahlen" name="Pay..."/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml
index 5f9856a9cb..3a116b84a2 100644
--- a/indra/newview/skins/default/xui/de/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Self Pie">
<menu_item_call label="Aufstehen" name="Stand Up"/>
- <context_menu label="Ausziehen &gt;" name="Take Off &gt;">
- <context_menu label="Kleidung &gt;" name="Clothes &gt;">
+ <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"/>
@@ -16,8 +16,8 @@
<menu_item_call label="Alpha" name="Self Alpha"/>
<menu_item_call label="Alle Kleider" name="All Clothes"/>
</context_menu>
- <context_menu label="HUD &gt;" name="Object Detach HUD"/>
- <context_menu label="Abnehmen &gt;" name="Object Detach"/>
+ <context_menu label="HUD ▶" name="Object Detach HUD"/>
+ <context_menu label="Abnehmen ▶" name="Object Detach"/>
<menu_item_call label="Alles abnehmen" name="Detach All"/>
</context_menu>
<menu_item_call label="Mein Aussehen" name="Appearance..."/>
diff --git a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
index 9b6a6b2c4a..6f003dc9a5 100644
--- a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
@@ -14,5 +14,6 @@
<menu_item_call label="Debug" name="debug"/>
<menu_item_call label="Auf Karte anzeigen" name="find_on_map"/>
<menu_item_call label="Hineinzoomen" name="zoom_in"/>
- <menu_item_call label="Zahlen" name="pay"/>
+ <menu_item_call label="Bezahlen" name="pay"/>
+ <menu_item_call label="Teilen" name="share"/>
</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml
index 5efee8617b..634ef0b198 100644
--- a/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml
@@ -2,7 +2,7 @@
<menu name="Gear Menu">
<menu_item_call label="Berühren" name="touch"/>
<menu_item_call label="Sitzen" name="sit"/>
- <menu_item_call label="Zahlen" name="pay"/>
+ <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"/>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml
index 77c012d045..a0625d88a8 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory.xml
@@ -2,7 +2,7 @@
<menu name="Popup">
<menu_item_call label="Kaufen" name="Task Buy"/>
<menu_item_call label="Öffnen" name="Task Open"/>
- <menu_item_call label="Wiedergeben/Abspielen" name="Task Play"/>
+ <menu_item_call label="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"/>
@@ -65,8 +65,8 @@
<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="In Welt abspielen" name="Animation Play"/>
- <menu_item_call label="Lokal wiedergeben" name="Animation Audition"/>
+ <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"/>
diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml
index 6f8d85ecb8..320f93c796 100644
--- a/indra/newview/skins/default/xui/de/menu_object.xml
+++ b/indra/newview/skins/default/xui/de/menu_object.xml
@@ -7,19 +7,19 @@
<menu_item_call label="Hier sitzen" name="Object Sit"/>
<menu_item_call label="Objektprofil" name="Object Inspect"/>
<menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <context_menu label="Anziehen &gt;" name="Put On">
+ <context_menu label="Anziehen ▶" name="Put On">
<menu_item_call label="Anziehen" name="Wear"/>
- <context_menu label="Anhängen &gt;" name="Object Attach"/>
- <context_menu label="HUD anhängen &gt;" name="Object Attach HUD"/>
+ <context_menu label="Anhängen ▶" name="Object Attach"/>
+ <context_menu label="HUD anhängen ▶" name="Object Attach HUD"/>
</context_menu>
- <context_menu label="Entfernen &gt;" name="Remove">
- <menu_item_call label="Nehmen" name="Pie Object Take"/>
+ <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="Zahlen" name="Pay..."/>
+ <menu_item_call label="Bezahlen" name="Pay..."/>
<menu_item_call label="Kaufen" name="Buy..."/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_participant_list.xml b/indra/newview/skins/default/xui/de/menu_participant_list.xml
index 15c957cee3..5ca4eaaa50 100644
--- a/indra/newview/skins/default/xui/de/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/de/menu_participant_list.xml
@@ -7,7 +7,7 @@
<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="Zahlen" name="Pay"/>
+ <menu_item_call label="Bezahlen" name="Pay"/>
<menu_item_check label="Voice ignorieren" name="Block/Unblock"/>
<menu_item_check label="Text ignorieren" name="MuteText"/>
<context_menu label="Moderator-Optionen &gt;" name="Moderator Options">
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml
index 87f43d27e6..76225ba241 100644
--- a/indra/newview/skins/default/xui/de/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_groups.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_group_plus">
- <menu_item_call label="Ansichts-Info" name="View Info"/>
+ <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"/>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
index 9fa5db5fa3..a69ef3891a 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
@@ -2,10 +2,11 @@
<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="Teilen" name="Share"/>
- <menu_item_call label="Zahlen" name="Pay"/>
+ <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/default/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
index d572a8ca1c..d978d9e40c 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
@@ -1,8 +1,9 @@
<?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="Zahlen" name="Pay"/>
+ <menu_item_call label="Bezahlen" name="Pay"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml
index d0881ddd05..0f252ab46d 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml
@@ -3,6 +3,6 @@
<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="Profilbilder anzeigen" name="view_icons"/>
- <menu_item_call label="Zeige geblockte Einwohner &amp; Objekte" name="show_blocked_list"/>
+ <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/default/xui/de/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml
index 837983b716..1ef020f5e1 100644
--- a/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_group_plus">
- <menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_most"/>
+ <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"/>
diff --git a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml
index f5cedf5464..03bc19aa3f 100644
--- a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml
@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Zahlen" name="pay"/>
+ <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"/>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index c6bbea285f..a04532376c 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -9,8 +9,8 @@
<menu_item_call label="Mein Profil" name="Profile"/>
<menu_item_call label="Mein Aussehen" name="Appearance"/>
<menu_item_check label="Mein Inventar" name="Inventory"/>
- <menu_item_call label="Inventar auf Seitenleiste anzeigen" name="ShowSidetrayInventory"/>
- <menu_item_call label="Meine Gesten" name="Gestures"/>
+ <menu_item_check label="Mein Inventar" name="ShowSidetrayInventory"/>
+ <menu_item_check label="Meine Gesten" name="Gestures"/>
<menu label="Mein Status" name="Status">
<menu_item_call label="Abwesend" name="Set Away"/>
<menu_item_call label="Beschäftigt" name="Set Busy"/>
@@ -22,13 +22,12 @@
<menu label="Unterhalten" name="Communicate">
<menu_item_call label="Meine Freunde" name="My Friends"/>
<menu_item_call label="Meine Gruppen" name="My Groups"/>
- <menu_item_check label="Lokaler Chat" name="Nearby Chat"/>
+ <menu_item_check label="Chat in der Nähe" name="Nearby Chat"/>
<menu_item_call label="Leute in der Nähe" name="Active Speakers"/>
- <menu_item_check label="Medien in der Nähe" name="Nearby Media"/>
</menu>
<menu label="Welt" name="World">
<menu_item_check label="Minikarte" name="Mini-Map"/>
- <menu_item_check label="Weltkarte" name="World Map"/>
+ <menu_item_check label="Karte" name="World Map"/>
<menu_item_call label="Foto" name="Take Snapshot"/>
<menu_item_call label="Landmarke für diesen Ort setzen" name="Create Landmark Here"/>
<menu label="Ortsprofil" name="Land">
@@ -40,6 +39,10 @@
<menu label="Anzeigen" name="LandShow">
<menu_item_check label="Bewegungssteuerung" name="Movement Controls"/>
<menu_item_check label="Ansichtsteuerung" name="Camera Controls"/>
+ <menu_item_check label="Bannlinien" name="Ban Lines"/>
+ <menu_item_check label="Strahlen" name="beacons"/>
+ <menu_item_check label="Grundstücksgrenzen" name="Property Lines"/>
+ <menu_item_check label="Landeigentümer" name="Land Owners"/>
</menu>
<menu_item_call label="Teleport nach Hause" name="Teleport Home"/>
<menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/>
@@ -55,11 +58,11 @@
<menu label="Bauen" name="BuildTools">
<menu_item_check label="Bauen" name="Show Build Tools"/>
<menu label="Bauwerkzeug auswählen" name="Select Tool">
- <menu_item_call label="Fokus-Werkzeug" name="Focus"/>
- <menu_item_call label="Werkzeug „Bewegen“" name="Move"/>
+ <menu_item_call label="Fokus" name="Focus"/>
+ <menu_item_call label="Verschieben" name="Move"/>
<menu_item_call label="Bearbeiten" name="Edit"/>
- <menu_item_call label="Werkzeug „Erstellen&quot;" name="Create"/>
- <menu_item_call label="Land-Werkzeug" name="Land"/>
+ <menu_item_call label="Erstellen" name="Create"/>
+ <menu_item_call label="Land" name="Land"/>
</menu>
<menu label="Bearbeiten" name="Edit">
<menu_item_call label="Rückgängig" name="Undo"/>
@@ -74,6 +77,7 @@
</menu>
<menu_item_call label="Verknüpfung" name="Link"/>
<menu_item_call label="Verknüpfung auflösen" name="Unlink"/>
+ <menu_item_check label="Verknüpfte Teile bearbeiten" name="Edit Linked Parts"/>
<menu_item_call label="Fokus auf Auswahl" name="Focus on Selection"/>
<menu_item_call label="Auf Auswahl zoomen" name="Zoom to Selection"/>
<menu label="Objekt" name="Object">
@@ -90,25 +94,18 @@
<menu_item_call label="Skripts auf nicht ausführen einstellen" name="Set Scripts to Not Running"/>
</menu>
<menu label="Optionen" name="Options">
- <menu_item_check label="Verknüpfte Teile bearbeiten" name="Edit Linked Parts"/>
<menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/>
<menu_item_check label="Erweiterte Berechtigungen anzeigen" name="DebugPermissions"/>
- <menu label="Auswahl" name="Selection">
- <menu_item_check label="Nur meine Objekte auswählen" name="Select Only My Objects"/>
- <menu_item_check label="Nur bewegliche Objekte auswählen" name="Select Only Movable Objects"/>
- <menu_item_check label="Nach Umgebung auswählen" name="Select By Surrounding"/>
- </menu>
- <menu label="Anzeigen" name="Show">
- <menu_item_check label="Ausgeblendete Auswahl anzeigen" name="Show Hidden Selection"/>
- <menu_item_check label="Lichtradius für Auswahl anzeigen" name="Show Light Radius for Selection"/>
- <menu_item_check label="Auswahlstrahl anzeigen" name="Show Selection Beam"/>
- </menu>
- <menu label="Raster" name="Grid">
- <menu_item_check label="An Raster ausrichten" name="Snap to Grid"/>
- <menu_item_call label="Objekt-XY an Raster ausrichten" name="Snap Object XY to Grid"/>
- <menu_item_call label="Auswahl für Raster verwenden" name="Use Selection for Grid"/>
- <menu_item_call label="Rasteroptionen" name="Grid Options"/>
- </menu>
+ <menu_item_check label="Nur meine Objekte auswählen" name="Select Only My Objects"/>
+ <menu_item_check label="Nur bewegliche Objekte auswählen" name="Select Only Movable Objects"/>
+ <menu_item_check label="Nach Umgebung auswählen" name="Select By Surrounding"/>
+ <menu_item_check label="Ausgeblendete Auswahl anzeigen" name="Show Hidden Selection"/>
+ <menu_item_check label="Lichtradius für Auswahl anzeigen" name="Show Light Radius for Selection"/>
+ <menu_item_check label="Auswahlstrahl anzeigen" name="Show Selection Beam"/>
+ <menu_item_check label="An Raster ausrichten" name="Snap to Grid"/>
+ <menu_item_call label="Objekt-XY an Raster ausrichten" name="Snap Object XY to Grid"/>
+ <menu_item_call label="Auswahl für Raster verwenden" name="Use Selection for Grid"/>
+ <menu_item_call label="Rasteroptionen" name="Grid Options"/>
</menu>
<menu label="Verknüpfte Teile auswählen" name="Select Linked Parts">
<menu_item_call label="Nächstes Teil auswählen" name="Select Next Part"/>
@@ -175,8 +172,8 @@
<menu_item_check label="Mehrer Threads ausführen" name="Run Multiple Threads"/>
<menu_item_call label="Gruppen-Cache löschen" name="ClearGroupCache"/>
<menu_item_check label="Weiche Mausbewegung" name="Mouse Smoothing"/>
- <menu_item_check label="IMs in lokalem Chat anzeigen" name="IMInChat"/>
<menu label="Tastaturkürzel" name="Shortcuts">
+ <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/>
<menu_item_check label="Suchen" name="Search"/>
<menu_item_call label="Tasten freigeben" name="Release Keys"/>
<menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/>
@@ -219,6 +216,7 @@
<menu_item_check label="Kamera" name="Camera"/>
<menu_item_check label="Wind" name="Wind"/>
<menu_item_check label="FOV" name="FOV"/>
+ <menu_item_check label="Gütesiegel" name="Badge"/>
</menu>
<menu label="Info anzeigen" name="Display Info">
<menu_item_check label="Zeit anzeigen" name="Show Time"/>
@@ -384,7 +382,7 @@
<menu_item_call label="Temp-Asset-Daten ausgeben" name="Dump Temp Asset Data"/>
<menu_item_call label="Regions-Status speichern" name="Save Region State"/>
</menu>
- <menu_item_call label="Gott-Tools" name="God Tools"/>
+ <menu_item_call label="Gott-Werkzeuge" name="God Tools"/>
</menu>
<menu label="Admin" name="Deprecated">
<menu label="Objekt anhängen" name="Attach Object"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index d94bbd8564..da4a96962e 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -11,18 +11,29 @@
</global>
<template name="okbutton">
<form>
- <button name="OK" text="$yestext"/>
+ <button name="OK_okbutton" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore">
+ <form>
+ <button name="OK_okignore" text="$yestext"/>
</form>
</template>
- <template name="okignore"/>
<template name="okcancelbuttons">
<form>
- <button name="Cancel" text="$notext"/>
+ <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="okcancelignore"/>
<template name="okhelpbuttons">
<form>
+ <button name="OK_okhelpbuttons" text="$yestext"/>
<button name="Help" text="$helptext"/>
</form>
</template>
@@ -30,6 +41,7 @@
<form>
<button name="Yes" text="$yestext"/>
<button name="No" text="$notext"/>
+ <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
</form>
</template>
<notification functor="GenericAcknowledge" label="Unbekannte Meldung" name="MissingAlert">
@@ -93,6 +105,10 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
Änderung an Kleidung/Körperteilen speichern?
<usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/>
</notification>
+ <notification name="FriendsAndGroupsOnly">
+ Leute, die nicht auf Ihrer Freundesliste stehen, werden nicht wissen, dass Sie deren Anrufe oder Sofortnachrichten ignoriert haben.
+ <usetemplate name="okbutton" yestext="Ja"/>
+ </notification>
<notification name="GrantModifyRights">
Wenn Sie einem anderen Einwohner, das die Erlaubnis zum Bearbeiten erteilen, dann kann dieser JEDES Objekt, das Sie inworld besitzen, verändern, löschen oder nehmen. Seien Sie SEHR vorsichtig, wenn Sie diese Erlaubnis gewähren!
Möchten Sie [FIRST_NAME] [LAST_NAME] die Erlaubnis zum Bearbeiten gewähren?
@@ -161,14 +177,16 @@ Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen?
Möchten Sie fortfahren?
<usetemplate ignoretext="Bestätigen, bevor Anhänge fallen gelassen werden" name="okcancelignore" notext="Nein" yestext="Ja"/>
</notification>
- <notification name="ClickUnimplemented">
- Leider ist diese Funktion noch nicht implementiert.
- </notification>
<notification name="JoinGroupCanAfford">
Der Beitritt zu dieser Gruppe kostet [COST] L$.
Fortfahren?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Beitreten"/>
</notification>
+ <notification name="JoinGroupNoCost">
+ Sie treten der Gruppe [NAME] bei.
+Fortfahren?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Zusammenlegen"/>
+ </notification>
<notification name="JoinGroupCannotAfford">
Der Beitritt zu dieser Gruppe kostet [COST] L$.
Sie haben nicht genug L$, um dieser Gruppe beizutreten.
@@ -318,7 +336,7 @@ Sie benötigen ein Benutzerkonto, um [SECOND_LIFE] betreten zu können. Möchten
<notification name="AddClassified">
Anzeigen werden im Suchverzeichnis im Abschnitt „Anzeigen&quot; und auf [http://secondlife.com/community/classifieds secondlife.com] für eine Woche angezeigt.
Füllen Sie Ihre Anzeige aus und klicken Sie auf &apos;Veröffentlichen...&apos;, um sie zum Verzeichnis hinzuzufügen.
-Sie werden gebeten, einen Preis zu bezahlen, wenn Sie auf &apos;Veröffentlichen&apos; klicken.
+Sie werden gebeten für die Anzeige zu bezahlen, wenn Sie auf &apos;Veröffentlichen&apos; klicken.
Wenn Sie mehr bezahlen, erscheint Ihre Anzeige weiter oben in der Liste, ebenso wenn ein Benutzer nach Ihren Suchbegriffen sucht.
<usetemplate ignoretext="So wird eine neue Anzeige erstellt" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
</notification>
@@ -336,6 +354,10 @@ Sind Sie sicher, dass Sie fortfahren wollen?
Änderung an Anzeige [NAME] speichern?
<usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/>
</notification>
+ <notification name="ClassifiedInsufficientFunds">
+ Sie haben nicht genügend Geld, um eine Anzeige zu erstellen.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
<notification name="DeleteAvatarPick">
Auswahl [PICK] löschen?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
@@ -431,18 +453,18 @@ Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
Datei [[FILE]] kann nicht geschrieben werden
</notification>
<notification name="UnsupportedHardware">
- Achtung: Ihr System erfüllt nicht die Mindestanforderungen von [APP_NAME]. Dies kann eine schlechte Darstellungsleistung in [APP_NAME] zur Folge haben. Bei nicht unterstützten Systemkonfigurationen kann Ihnen unsere [SUPPORT_SITE] leider nicht helfen.
+ Ihr Computer entspricht leider nicht den Mindestanforderungen von [APP_NAME]. Dies kann zur Folge haben, dass das Programm nicht sehr gut ausgeführt wird. Bei nicht unterstützten Systemkonfigurationen kann Ihnen unser [SUPPORT_SITE] leider nicht helfen.
MINDESTANF.
-Die Seite [_URL] für weitere Informationen öffnen?
+Weitere Informationen finden Sie auf [_URL].
<url name="url" option="0">
http://secondlife.com/support/sysreqs.php?lang=de
</url>
<usetemplate ignoretext="Meine Hardware wird nicht unterstützt" name="okcancelignore" notext="Nein" yestext="Ja"/>
</notification>
<notification name="UnknownGPU">
- Ihr System verwendet eine uns zurzeit unbekannte Grafikkarte.
-Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde. [APP_NAME] wird wahrscheinlich korrekt ausgeführt werden, jedoch sollten Sie Ihre Grafikeinstellungen anpassen, um eine bessere Darstellung zu erzielen.
+ Ihr System verwendet eine Grafikkarte, die [APP_NAME] nicht erkennt.
+Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde. Wahrscheinlich wird das Programm richtig ausgeführt, aber Sie müssen eventuell ein paar Grafikeinstellungen vornehmen.
(Ich &gt; Einstellungen &gt; Grafik).
<form name="form">
<ignore name="ignore" text="Meine Grafikkarte konnte nicht identifiziert werden."/>
@@ -667,7 +689,7 @@ Ihre Suchanfrage: [FINALQUERY]
Es wurde keine Suche durchgeführt.
</notification>
<notification name="CouldNotTeleportReason">
- Teleport fehlgeschlagen.
+ Teleport ist fehlgeschlagen.
[REASON]
</notification>
<notification name="invalid_tport">
@@ -768,14 +790,6 @@ Mehrere Parzellen ausgewählt.
Wählen Sie eine einzelne Parzelle.
</notification>
- <notification name="ParcelCanPlayMedia">
- Dieser Ort kann Streaming-Medien abspielen.
-Streaming-Medien erfordern eine schnelle Internet-Verbindung.
-
-Streaming-Medien abspielen, wenn verfügbar?
-(Sie können diese Option später unter Einstellungen &gt; Datenschutz ändern.)
- <usetemplate name="okcancelbuttons" notext="Deaktivieren" yestext="Medien wiedergeben"/>
- </notification>
<notification name="CannotDeedLandWaitingForServer">
Land kann nicht übertragen werden:
Warte auf Server für Eigentümerinformationen.
@@ -898,9 +912,8 @@ Land zusammenlegen?
Dies ist ein temporärer Fehler. Bitte passen Sie das Kleidungsstück in einigen Minuten noch einmal an und speichern Sie es erneut.
</notification>
<notification name="YouHaveBeenLoggedOut">
- Sie wurden von [SECOND_LIFE] abgemeldet:
+ Es tut uns leid! Sie wurden von [SECOND_LIFE] abgemeldet.
[MESSAGE]
-Klicken Sie auf „IM &amp; Chat anzeigen“, um vorhandene Nachrichten und Chat weiterhin anzuzeigen. Um [APP_NAME] zu schließen, auf „Beenden“ klicken.
<usetemplate name="okcancelbuttons" notext="Beenden" yestext="IM &amp; Chat anzeigen"/>
</notification>
<notification name="OnlyOfficerCanBuyLand">
@@ -1058,6 +1071,7 @@ Der Gruppe „[GROUP_NAME]“
</notification>
<notification name="ErrorMessage">
[ERROR_MESSAGE]
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="AvatarMovedDesired">
Ihr gewünschter Zielort ist zurzeit nicht verfügbar.
@@ -1068,9 +1082,9 @@ Sie wurden zur nächstgelegenen Region teleportiert.
Sie wurden zur nächstgelegenen Region teleportiert.
</notification>
<notification name="AvatarMovedHome">
- Ihr Heimatort ist zurzeit nicht verfügbar.
+ Ihr Zuhause ist zurzeit nicht verfügbar.
Sie wurden zur nächstgelegenen Region teleportiert.
-Sie müssen eventuell einen neuen Heimatort festlegen.
+Sie müssen eventuell ein neues Zuhause festlegen.
</notification>
<notification name="ClothingLoading">
Ihre Kleidung wird noch heruntergeladen.
@@ -1335,7 +1349,6 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht
<notification name="JoinedTooManyGroupsMember">
Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine andere Gruppe, um dieser beitreten zu können oder lehnen Sie das Angebot ab.
[NAME] hat Sie eingeladen, einer Gruppe beizutreten.
-[INVITE]
<usetemplate name="okcancelbuttons" notext="Ablehnen" yestext="Beitreten"/>
</notification>
<notification name="JoinedTooManyGroups">
@@ -1403,7 +1416,7 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht
</form>
</notification>
<notification name="TeleportFromLandmark">
- Möchten Sie sich wirklich teleportieren?
+ Sind Sie sicher, dass Sie zu &lt;nolink&gt;[LOCATION]&lt;/nolink&gt; teleportieren möchten?
<usetemplate ignoretext="Bestätigen, dass ich zu einer Landmarke teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/>
</notification>
<notification name="TeleportToPick">
@@ -1730,7 +1743,7 @@ Inventarobjekt(e) verschieben?
<notification name="HelpReportAbuseEmailLL">
Mit dieser Funktion können Sie Verstöße gegen die [http://secondlife.com/corporate/tos.php Servicebedingungen (EN)] and [http://secondlife.com/corporate/cs.php Community-Standards] melden.
-Alle gemeldeten Verstöße werden bearbeitet. Sie können auf der Seite [http://secondlife.com/support/incidentreport.php Verstoßmeldungen] nachverfolgen, welche Verstoßmeldungen bearbeitet wurden.
+Alle gemeldeten Verstöße werden bearbeitet.
</notification>
<notification name="HelpReportAbuseSelectCategory">
Wählen Sie eine Missbrauchskategorie aus.
@@ -2140,7 +2153,7 @@ Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht.
</notification>
<notification name="ServerObjectMessage">
Nachricht von [NAME]:
-[MSG]
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
</notification>
<notification name="NotSafe">
Auf diesem Land ist Schaden aktiviert.
@@ -2320,7 +2333,6 @@ Versuchen Sie es in einigen Minuten erneut.
<form name="form">
<button name="Accept" text="Akzeptieren"/>
<button name="Decline" text="Ablehnen"/>
- <button name="Send IM" text="IM senden"/>
</form>
</notification>
<notification name="FriendshipOffered">
@@ -2600,7 +2612,7 @@ Sollte das Problem fortbestehen, finden Sie weitere Hilfestellung unter [SUPPORT
- Ihr Arbeitsspeicher entspricht nicht den Mindestanforderungen.
</global>
<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Wenn Sie ein Stück Land besitzen, können Sie dies als Ihren Heimatort festlegen.
+ Wenn Sie ein Stück Land besitzen, können Sie dies als Ihr Zuhause festlegen.
Ansonsten können Sie auf der Karte nachsehen und dort Ort suchen, die als „Infohub“ gekennzeichnet sind.
</global>
</notifications>
diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
index eb4832770e..2d140515d4 100644
--- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="block_list_panel">
- <text name="title_text">
+<panel name="block_list_panel" width="300">
+ <text left_pad="5" name="title_text" width="260">
Liste der ignorierten Einwohner
</text>
- <scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner"/>
+ <scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
<button label="Einwohner ignorieren" label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/>
<button label="Objekt nach Name ignorieren" label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/>
<button label="Freischalten" label_selected="Freischalten" name="Unblock" tool_tip="Einwohner oder Objekt von der Liste der ignorierten Einwohner oder Objekte entfernen"/>
diff --git a/indra/newview/skins/default/xui/de/panel_bottomtray.xml b/indra/newview/skins/default/xui/de/panel_bottomtray.xml
index 7a627e32c8..d3f89b0ad3 100644
--- a/indra/newview/skins/default/xui/de/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/de/panel_bottomtray.xml
@@ -7,6 +7,11 @@
Voice-Chat-Steuerung anzeigen/ausblenden
</string>
<layout_stack name="toolbar_stack">
+ <layout_panel name="speak_panel">
+ <talk_button name="talk">
+ <speak_button label="Sprechen" label_selected="Sprechen" name="speak_btn"/>
+ </talk_button>
+ </layout_panel>
<layout_panel name="gesture_panel">
<gesture_combo_list label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml
new file mode 100644
index 0000000000..9c84105254
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray_lite">
+ <layout_stack name="toolbar_stack_lite">
+ <layout_panel name="gesture_panel">
+ <gesture_combo_list label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_classified_info.xml b/indra/newview/skins/default/xui/de/panel_classified_info.xml
index d45e28f0c8..d824eff338 100644
--- a/indra/newview/skins/default/xui/de/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/de/panel_classified_info.xml
@@ -6,18 +6,19 @@
<panel.string name="type_pg">
Allgemeiner Inhalt
</panel.string>
- <text name="title" value="Informationen über Anzeige"/>
+ <panel.string name="l$_price">
+ [PRICE] L$
+ </panel.string>
+ <text name="title" value="Anzeigen-Info"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
- <text name="classified_name" value="[name]"/>
- <text name="classified_location" value="[wird geladen...]"/>
- <text name="content_type" value="[Inhalts-Art]"/>
- <text name="category" value="[Kategorie]"/>
+ <text_editor name="classified_name" value="[name]"/>
+ <text_editor name="classified_location" value="[wird geladen...]"/>
+ <text_editor name="content_type" value="[Inhalts-Art]"/>
+ <text_editor name="category" value="[Kategorie]"/>
<check_box label="Jede Woche automatisch erneuern" name="auto_renew"/>
- <text name="price_for_listing" tool_tip="Preis für Anzeige.">
- [PRICE] L$
- </text>
- <text name="classified_desc" value="[description]"/>
+ <text_editor name="price_for_listing" tool_tip="Preis für Anzeige."/>
+ <text_editor name="classified_desc" value="[description]"/>
</panel>
</scroll_container>
<panel name="buttons">
diff --git a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
index 4b48950341..b6c53be778 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="edit_alpha_panel">
- <panel name="avatar_alpha_color_panel">
- <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+<panel name="edit_alpha_panel" width="320">
+ <panel name="avatar_alpha_color_panel" width="300">
+ <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/>
+ <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="66"/>
<texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="72"/>
+ <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_classified.xml b/indra/newview/skins/default/xui/de/panel_edit_classified.xml
index a9b5da163f..2e0370c579 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_classified.xml
@@ -21,7 +21,7 @@
<text name="classified_location">
wird geladen...
</text>
- <button label="Auf aktuelle Position einstellen" name="set_to_curr_location_btn"/>
+ <button label="Aktuellen Standort verwenden" name="set_to_curr_location_btn"/>
<combo_box name="content_type">
<combo_item name="mature_ci">
Moderater Inhalt
diff --git a/indra/newview/skins/default/xui/de/panel_edit_pick.xml b/indra/newview/skins/default/xui/de/panel_edit_pick.xml
index bd05a4151e..0cb14177af 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_pick.xml
@@ -18,7 +18,7 @@
<text name="pick_location">
wird geladen...
</text>
- <button label="Auf aktuelle Position einstellen" name="set_to_curr_location_btn"/>
+ <button label="Aktuellen Standort verwenden" name="set_to_curr_location_btn"/>
</panel>
</scroll_container>
<panel label="bottom_panel" name="bottom_panel">
diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
index f643115dbe..bf74abaeba 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
@@ -42,13 +42,13 @@
<line_editor name="homepage_edit" value="http://"/>
<check_box label="In Suchergebnissen anzeigen" name="show_in_search_checkbox"/>
<text name="title_acc_status_text" value="Mein Konto:"/>
+ <text_editor name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/>
<text name="my_account_link" value="[[URL] Meine Startseite aufrufen]"/>
- <text name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/>
<text name="title_partner_text" value="Mein Partner:"/>
- <text name="partner_edit_link" value="[[URL] bearbeiten]"/>
<panel name="partner_data_panel">
- <name_box name="partner_text" value="[FIRST] [LAST]"/>
+ <name_box initial_value="(wird in Datenbank gesucht)" name="partner_text" value="[FIRST] [LAST]"/>
</panel>
+ <text name="partner_edit_link" value="[[URL] bearbeiten]"/>
</panel>
</panel>
</scroll_container>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
index c05a3a6645..12649e9251 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="edit_tattoo_panel">
<panel name="avatar_tattoo_color_panel">
- <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
- <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+ <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
+ <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
+ <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_friends.xml b/indra/newview/skins/default/xui/de/panel_friends.xml
index 10c5954775..50013a2b24 100644
--- a/indra/newview/skins/default/xui/de/panel_friends.xml
+++ b/indra/newview/skins/default/xui/de/panel_friends.xml
@@ -25,7 +25,7 @@
<button label="IM/Anruf" name="im_btn" tool_tip="Beginnt eine Instant Message-Sitzung"/>
<button label="Profil" name="profile_btn" tool_tip="Bilder, Gruppen und andere Informationen anzeigen"/>
<button label="Teleportieren" name="offer_teleport_btn" tool_tip="Bieten Sie diesem Freund einen Teleport an Ihre Position an"/>
- <button label="Zahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben"/>
+ <button label="Bezahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben"/>
<button label="Entfernen" name="remove_btn" tool_tip="Diese Person von Ihrer Freundesliste entfernen"/>
<button label="Hinzufügen" name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml
index 8904193f18..0d3c082a16 100644
--- a/indra/newview/skins/default/xui/de/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_general.xml
@@ -11,27 +11,45 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen.
<panel.string name="incomplete_member_data_str">
Mitgliedsdaten werden abgerufen
</panel.string>
+ <panel name="group_info_top">
+ <texture_picker label="" name="insignia" tool_tip="Klicken, um ein Bild auszuwählen"/>
+ <text name="prepend_founded_by">
+ Gründer:
+ </text>
+ <name_box initial_value="(wird in Datenbank gesucht)" name="founder_name"/>
+ <text name="join_cost_text">
+ Kostenlos
+ </text>
+ <button label="JETZT BEITRETEN!" name="btn_join"/>
+ </panel>
<text_editor name="charter">
Gruppencharta
</text_editor>
<name_list name="visible_members">
<name_list.columns label="Mitglied" name="name" relwidth="0.40"/>
<name_list.columns label="Titel" name="title" relwidth="0.25"/>
+ <name_list.columns label="Status" name="status"/>
</name_list>
+ <text name="my_group_settngs_label">
+ Ich
+ </text>
<text name="active_title_label">
- Mein Titel
+ Mein Titel:
</text>
<combo_box name="active_title" tool_tip="Legt fest, was im Namensschild Ihres Avatars angezeigt wird, wenn diese Gruppe aktiviert ist."/>
<check_box label="Gruppenmitteilungen erhalten" name="receive_notices" tool_tip="Festlegen, ob Sie von dieser Gruppe Mitteilungen erhalten können. Deaktivieren Sie diese Option, wenn Sie von der Gruppe Spam erhalten."/>
<check_box label="In meinem Profil anzeigen" name="list_groups_in_profile" tool_tip="Steuert, ob diese Gruppe in Ihrem Profil angezeigt wird"/>
<panel name="preferences_container">
- <check_box label="Registrierung offen" name="open_enrollement" tool_tip="Festlegen, ob der Gruppenbeitritt ohne Einladung zulässig ist."/>
- <check_box label="Beitrittsgebühr" name="check_enrollment_fee" tool_tip="Festlegen, ob Neumitglieder eine Beitrittsgebühr zahlen müssen"/>
+ <text name="group_settngs_label">
+ Gruppe
+ </text>
+ <check_box label="Jeder kann beitreten" name="open_enrollement" tool_tip="Festlegen, ob der Gruppenbeitritt ohne Einladung zulässig ist."/>
+ <check_box label="Kosten für Beitritt" name="check_enrollment_fee" tool_tip="Festlegen, ob Neumitglieder eine Beitrittsgebühr zahlen müssen"/>
<spinner label="L$" name="spin_enrollment_fee" tool_tip="Wenn Beitrittsgebühr aktiviert ist, müssen neue Mitglieder diesen Betrag zahlen."/>
- <check_box initial_value="true" label="In Suche anzeigen" name="show_in_group_list" tool_tip="Diese Gruppe in Suchergebnissen anzeigen"/>
<combo_box name="group_mature_check" tool_tip="Legt fest, ob Ihre Gruppeninformation moderate Inhalte enthält">
<combo_box.item label="Allgemeiner Inhalt" name="pg"/>
<combo_box.item label="Moderater Inhalt" name="mature"/>
</combo_box>
+ <check_box initial_value="true" label="In Suche anzeigen" name="show_in_group_list" tool_tip="Diese Gruppe in Suchergebnissen anzeigen"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml
index f70291c922..b89e4f90de 100644
--- a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Gruppeninfo" name="GroupInfo">
+<panel label="Gruppenprofil" name="GroupInfo">
<panel.string name="default_needs_apply_text">
- In der aktuellen Registerkarte befinden sich ungesicherte Änderungen
+ Diese Änderungen wurden nicht gespeichert.
</panel.string>
<panel.string name="want_apply_text">
Möchten Sie diese Änderungen speichern?
@@ -12,27 +12,24 @@
<panel.string name="group_join_free">
Kostenlos
</panel.string>
- <text name="group_name" value="(Lädt...)"/>
- <line_editor label="Geben Sie Ihren neuen Gruppennamen hier ein" name="group_name_editor"/>
- <texture_picker label="" name="insignia" tool_tip="Klicken Sie, um ein Bild auszuwählen"/>
- <text name="prepend_founded_by">
- Gründer:
- </text>
- <name_box initial_value="(empfange)" name="founder_name"/>
- <text name="join_cost_text">
- Kostenlos
- </text>
- <button label="JETZT BEITRETEN!" name="btn_join"/>
- <accordion name="groups_accordion">
- <accordion_tab name="group_general_tab" title="Allgemein"/>
- <accordion_tab name="group_roles_tab" title="Rollen"/>
- <accordion_tab name="group_notices_tab" title="Mitteilungen"/>
- <accordion_tab name="group_land_tab" title="Land/Kapital"/>
- </accordion>
- <panel name="button_row">
- <button label="Erstellen" label_selected="Neue Gruppe" name="btn_create"/>
- <button label="Gruppen-Chat" name="btn_chat"/>
- <button label="Gruppe anrufen" name="btn_call"/>
- <button label="Speichern" label_selected="Speichern" name="btn_apply"/>
+ <panel name="group_info_top">
+ <text name="group_name" value="(wird geladen...)"/>
+ <line_editor label="Neuen Gruppennamen hier eingeben" name="group_name_editor"/>
</panel>
+ <layout_stack name="layout">
+ <layout_panel name="group_accordions">
+ <accordion name="groups_accordion">
+ <accordion_tab name="group_general_tab" title="Allgemein"/>
+ <accordion_tab name="group_roles_tab" title="Rollen"/>
+ <accordion_tab name="group_notices_tab" title="Mitteilungen"/>
+ <accordion_tab name="group_land_tab" title="Land/Kapital"/>
+ </accordion>
+ </layout_panel>
+ <layout_panel name="button_row">
+ <button label="Chat" name="btn_chat"/>
+ <button label="Gruppe anrufen" name="btn_call" tool_tip="Diese Gruppe anrufen"/>
+ <button label="Speichern" label_selected="Speichern" name="btn_apply"/>
+ <button label="Gruppe erstellen" name="btn_create" tool_tip="Neue Gruppe erstellen"/>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml
index 8e1fb5e4b2..fb357093bb 100644
--- a/indra/newview/skins/default/xui/de/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml
@@ -9,18 +9,18 @@
<panel.string name="already_in_group">
Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten.
</panel.string>
- <text name="help_text">
+ <text name="help_text" top="10">
Sie können mehrere Einwohner auswählen, um diese in Ihre Gruppe einzuladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“.
</text>
- <button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/>
+ <button label="Einwohnerliste öffnen" name="add_button" tool_tip="" top_delta="62"/>
<name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/>
<button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/>
<text name="role_text">
Wählen Sie eine Rolle aus:
</text>
<combo_box name="role_name" tool_tip="Wählen Sie aus der Liste der Rollen, die Sie an Mitglieder vergeben dürfen."/>
- <button label="Einladungen versenden" name="ok_button"/>
- <button label="Abbrechen" name="cancel_button"/>
+ <button label="Einladungen versenden" name="ok_button" width="136"/>
+ <button label="Abbrechen" name="cancel_button" width="66"/>
<string name="GroupInvitation">
Gruppeneinladung
</string>
diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
index e9743c5d5d..0c89946987 100644
--- a/indra/newview/skins/default/xui/de/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
@@ -1,65 +1,62 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Land und L$" name="land_money_tab">
- <string name="help_text">
+ <panel.string name="help_text">
Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag.
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
+ </panel.string>
+ <panel.string name="cant_view_group_land_text">
Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen.
- </string>
- <string name="cant_view_group_accounting_text">
+ </panel.string>
+ <panel.string name="cant_view_group_accounting_text">
Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen.
- </string>
- <string name="loading_txt">
+ </panel.string>
+ <panel.string name="loading_txt">
Wird geladen...
- </string>
- <text name="group_land_heading">
- Land in Gruppenbesitz
- </text>
- <scroll_list name="group_parcel_list">
- <column label="Parzelle" name="name"/>
- <column label="Region" name="location"/>
- <column label="Typ" name="type"/>
- <column label="Gebiet" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="Karte" label_selected="Karte" name="map_button"/>
- <text name="total_contributed_land_label">
- Gesamtbeitrag:
- </text>
- <text name="total_contributed_land_value">
- [AREA] m².
- </text>
- <text name="total_land_in_use_label">
- Insgesamt verwendetes Land:
- </text>
- <text name="total_land_in_use_value">
- [AREA] m².
- </text>
- <text name="land_available_label">
- Land verfügbar:
- </text>
- <text name="land_available_value">
- [AREA] m².
- </text>
- <text name="your_contribution_label">
- Ihr Beitrag:
- </text>
- <string name="land_contrib_error">
+ </panel.string>
+ <panel.string name="land_contrib_error">
Ihr Landbeitrag kann nicht festgelegt werden.
- </string>
- <text name="your_contribution_units">
- m²
- </text>
- <text name="your_contribution_max_value">
- ([AMOUNT] max.)
- </text>
- <text name="group_over_limit_text">
- Um das benutzte Land zu unterstützen, sind weitere Landnutzungsrechte erforderlich.
- </text>
- <text name="group_money_heading">
- Gruppen-L$
- </text>
+ </panel.string>
+ <panel name="layout_panel_landmoney">
+ <scroll_list name="group_parcel_list">
+ <scroll_list.columns label="Parzelle" name="name"/>
+ <scroll_list.columns label="Region" name="location"/>
+ <scroll_list.columns label="Typ" name="type"/>
+ <scroll_list.columns label="Gebiet" name="area"/>
+ </scroll_list>
+ <text name="total_contributed_land_label">
+ Gesamtbeitrag:
+ </text>
+ <text name="total_contributed_land_value">
+ [AREA] m².
+ </text>
+ <button label="Karte" label_selected="Karte" name="map_button"/>
+ <text name="total_land_in_use_label">
+ Insgesamt genutztes Land:
+ </text>
+ <text name="total_land_in_use_value">
+ [AREA] m².
+ </text>
+ <text name="land_available_label">
+ Land verfügbar:
+ </text>
+ <text name="land_available_value">
+ [AREA] m².
+ </text>
+ <text name="your_contribution_label">
+ Ihr Beitrag:
+ </text>
+ <text name="your_contribution_units">
+ m²
+ </text>
+ <text name="your_contribution_max_value">
+ ([AMOUNT] max.)
+ </text>
+ <text name="group_over_limit_text">
+ Um das benutzte Land zu unterstützen, sind weitere Landnutzungsrechte erforderlich.
+ </text>
+ <text name="group_money_heading">
+ Gruppen-L$
+ </text>
+ </panel>
<tab_container name="group_money_tab_container">
<panel label="PLANUNG" name="group_money_planning_tab">
<text_editor name="group_money_planning_text">
@@ -82,89 +79,3 @@
</panel>
</tab_container>
</panel>
-<!--
-
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Land und L$" name="land_money_tab">
- <string name="help_text">
- Parzellen in Gruppenbesitz werden zusammen mit Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen.
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
- Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen.
- </string>
- <string name="cant_view_group_accounting_text">
- Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen.
- </string>
- <string name="loading_txt">
- Wird geladen...
- </string>
- <text name="group_land_heading">
- Land in Gruppenbesitz
- </text>
- <scroll_list name="group_parcel_list">
- <column label="Parzellenname" name="name"/>
- <column label="Region" name="location"/>
- <column label="Typ" name="type"/>
- <column label="Gebiet" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="Auf Karte" label_selected="Auf Karte" name="map_button"/>
- <text name="total_contributed_land_label">
- Gesamtbeitrag:
- </text>
- <text name="total_contributed_land_value">
- [AREA] qm
- </text>
- <text name="total_land_in_use_label">
- Insgesamt verwendetes Land:
- </text>
- <text name="total_land_in_use_value">
- [AREA] qm
- </text>
- <text name="land_available_label">
- Land verfügbar:
- </text>
- <text name="land_available_value">
- [AREA] qm
- </text>
- <text name="your_contribution_label">
- Ihr Beitrag:
- </text>
- <string name="land_contrib_error">
- Ihr Landbeitrag kann nicht festgelegt werden.
- </string>
- <text name="your_contribution_max_value">
- qm (max. [AMOUNT])
- </text>
- <text name="group_over_limit_text">
- Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit
-das verwendete Land gehalten werden kann.
- </text>
- <text name="group_money_heading">
- Gruppen-L$
- </text>
- <tab_container name="group_money_tab_container">
- <panel label="Planung" name="group_money_planning_tab">
- <text_editor name="group_money_planning_text">
- Wird berechnet...
- </text_editor>
- </panel>
- <panel label="Details" name="group_money_details_tab">
- <text_editor name="group_money_details_text">
- Wird berechnet...
- </text_editor>
- <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_details_button" tool_tip="Zurück in der Zeit"/>
- <button label="Später &gt;" label_selected="Später &gt;" name="later_details_button" tool_tip="Weiter in der Zeit"/>
- </panel>
- <panel label="Verkäufe" name="group_money_sales_tab">
- <text_editor name="group_money_sales_text">
- Wird berechnet...
- </text_editor>
- <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_sales_button" tool_tip="Zurück in der Zeit"/>
- <button label="Später &gt;" label_selected="Später &gt;" name="later_sales_button" tool_tip="Weiter in der Zeit"/>
- </panel>
- </tab_container>
-</panel>
-
--->
diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml
index d2ba40ae2c..cc5664bd97 100644
--- a/indra/newview/skins/default/xui/de/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml
@@ -37,9 +37,9 @@ Maximal 200 pro Gruppe täglich
Anhängen:
</text>
<text name="string">
- Das Objekt hierin ziehen und ablegen, um es anzuhängen:
+ Das Objekt hierhin ziehen und ablegen, um es anzuhängen:
</text>
- <button label="Entfernen" label_selected="Anhang entfernen" name="remove_attachment"/>
+ <button label="Entfernen" label_selected="Anhang entfernen" name="remove_attachment" tool_tip="Anhang von Ihrer Benachrichtigung entfernen"/>
<button label="Senden" label_selected="Senden" name="send_notice"/>
<group_drop_target name="drop_target" tool_tip="Ziehen Sie ein Objekt aus Ihrem Inventar auf dieses Feld, um es mit dieser Mitteilung zu versenden. Um das Objekt anhängen zu können, müssen Sie die Erlaubnis zum Kopieren und Übertragen besitzen."/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_notify.xml b/indra/newview/skins/default/xui/de/panel_group_notify.xml
index cb4c6cdb39..9c05e99786 100644
--- a/indra/newview/skins/default/xui/de/panel_group_notify.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_notify.xml
@@ -4,7 +4,7 @@
<string name="subject_font" value="SANSSERIF_BIG"/>
<string name="date_font" value="SANSSERIF"/>
<panel label="Überschrift" name="header">
- <text name="title" value="Name des Absenders / Gruppenname"/>
+ <text name="title" value="Absender/Gruppenname"/>
</panel>
<text_editor name="message" value="Nachricht"/>
<text name="attachment" value="Anhang"/>
diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml
index 3103fd65b1..db5186e081 100644
--- a/indra/newview/skins/default/xui/de/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Mitglieder und Rollen" name="roles_tab">
<panel.string name="default_needs_apply_text">
- Die Registerkarte enthält nicht gespeicherte Änderungen.
+ Diese Änderungen wurden nicht gespeichert.
</panel.string>
<panel.string name="want_apply_text">
Möchten Sie Ihre Änderungen speichern?
@@ -15,8 +15,8 @@ um mehrere Mitglieder auszuwählen.
</panel.string>
<filter_editor label="Mitglieder filtern" name="filter_input"/>
<name_list name="member_list">
- <name_list.columns label="Mitglied" name="name"/>
- <name_list.columns label="Übereignung" name="donated"/>
+ <name_list.columns label="Mitglied" name="name" relative_width="0.30"/>
+ <name_list.columns label="Übereignung" name="donated" relative_width="0.33"/>
<name_list.columns label="Status" name="online"/>
</name_list>
<button label="Einladen" name="member_invite"/>
diff --git a/indra/newview/skins/default/xui/de/panel_groups.xml b/indra/newview/skins/default/xui/de/panel_groups.xml
index 95a2ef14f9..f857a6c7ac 100644
--- a/indra/newview/skins/default/xui/de/panel_groups.xml
+++ b/indra/newview/skins/default/xui/de/panel_groups.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel name="groups">
- <text name="groupdesc">
+ <text name="groupdesc" width="300">
Die derzeit aktive Gruppe ist fett hervorgehoben.
</text>
- <text name="groupcount">
+ <text name="groupcount" width="360">
Sie sind Mitglied bei [COUNT] Gruppen (von max. [MAX]).
</text>
<button label="IM/Anruf" name="IM" tool_tip="Beginnt eine Instant Message-Sitzung" />
diff --git a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
index 8132f769cb..0dca272633 100644
--- a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
@@ -9,11 +9,14 @@
<button label="Freund hinzufügen" name="add_friend_btn"/>
</layout_panel>
<layout_panel name="teleport_btn_panel">
- <button label="Teleportieren" name="teleport_btn"/>
+ <button label="Teleportieren" name="teleport_btn" tool_tip="Dieser Person einen Teleport anbieten."/>
</layout_panel>
<layout_panel name="share_btn_panel">
<button label="Teilen" name="share_btn"/>
</layout_panel>
+ <layout_panel name="share_btn_panel">
+ <button label="Bezahlen" name="pay_btn"/>
+ </layout_panel>
<layout_panel name="call_btn_panel">
<button label="Anrufen" name="call_btn"/>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/de/panel_landmarks.xml b/indra/newview/skins/default/xui/de/panel_landmarks.xml
index 3336232782..db12462a31 100644
--- a/indra/newview/skins/default/xui/de/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/de/panel_landmarks.xml
@@ -2,7 +2,7 @@
<panel name="Landmarks">
<accordion name="landmarks_accordion">
<accordion_tab name="tab_favorites" title="Favoritenleiste"/>
- <accordion_tab name="tab_landmarks" title="Landmarken"/>
+ <accordion_tab name="tab_landmarks" title="Meine Landmarken"/>
<accordion_tab name="tab_inventory" title="Mein Inventar"/>
<accordion_tab name="tab_library" title="Bibliothek"/>
</accordion>
diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml
index bd82fc6872..2a6ea42c73 100644
--- a/indra/newview/skins/default/xui/de/panel_login.xml
+++ b/indra/newview/skins/default/xui/de/panel_login.xml
@@ -23,7 +23,7 @@
<text name="start_location_text">
Hier anfangen:
</text>
- <combo_box name="start_location_combo">
+ <combo_box name="start_location_combo" width="150">
<combo_box.item label="Mein letzter Standort" name="MyLastLocation"/>
<combo_box.item label="Mein Zuhause" name="MyHome"/>
<combo_box.item label="&lt;Region eingeben&gt;" name="Typeregionname"/>
diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml
index aa0b43b550..eed365a1bb 100644
--- a/indra/newview/skins/default/xui/de/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml
@@ -57,7 +57,7 @@
<menu label="Sortieren" name="Sort">
<menu_item_check label="Nach Name" name="By Name"/>
<menu_item_check label="Nach Datum" name="By Date"/>
- <menu_item_check label="Ordner immer nach Name" name="Folders Always By Name"/>
+ <menu_item_check label="Ordner immer nach Namen" name="Folders Always By Name"/>
<menu_item_check label="Systemordner nach oben" name="System Folders To Top"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/de/panel_me.xml b/indra/newview/skins/default/xui/de/panel_me.xml
index c61fc26f4c..26b9812212 100644
--- a/indra/newview/skins/default/xui/de/panel_me.xml
+++ b/indra/newview/skins/default/xui/de/panel_me.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Mein Profil" name="panel_me">
<tab_container name="tabs">
- <panel label="PROFIL" name="panel_profile"/>
- <panel label="AUSWAHL" name="panel_picks"/>
+ <panel label="MEIN PROFIL" name="panel_profile"/>
+ <panel label="MEINE AUSWAHL" name="panel_picks"/>
</tab_container>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
index 8ff013f66b..adc0d22ce6 100644
--- a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
@@ -2,7 +2,8 @@
<panel label="Sicherheit" name="Media Settings Security">
<check_box initial_value="false" label="Nur Zugriff auf festgelegte URL-Muster zulassen" name="whitelist_enable"/>
<text name="home_url_fails_some_items_in_whitelist">
- Einträge, die für die Startseite nicht akzeptiert werden, sind markiert:
+ Einträge, die für die Startseite nicht akzeptiert
+werden, sind markiert:
</text>
<button label="Hinzufügen" name="whitelist_add"/>
<button label="Löschen" name="whitelist_del"/>
diff --git a/indra/newview/skins/default/xui/de/panel_my_profile.xml b/indra/newview/skins/default/xui/de/panel_my_profile.xml
index 618ed88846..55eed89848 100644
--- a/indra/newview/skins/default/xui/de/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_my_profile.xml
@@ -30,11 +30,14 @@
</panel>
<text name="title_member_text" value="Einwohner seit:"/>
<text name="title_acc_status_text" value="Kontostatus:"/>
- <text name="acc_status_text">
+ <text_editor name="acc_status_text">
Einwohner. Keine Zahlungsinfo archiviert.
Linden.
- </text>
+ </text_editor>
<text name="title_partner_text" value="Partner:"/>
+ <panel name="partner_data_panel">
+ <name_box initial_value="(wird in Datenbank gesucht)" name="partner_text"/>
+ </panel>
<text name="title_groups_text" value="Gruppen:"/>
</panel>
</scroll_container>
diff --git a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
index ab59c207bf..99293edd0f 100644
--- a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
@@ -1,15 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
<panel name="navigation_panel">
- <button name="back_btn" tool_tip="Zurück zum vorherigen Standort gehen"/>
- <button name="forward_btn" tool_tip="Um einen Standort weiter gehen"/>
- <button name="home_btn" tool_tip="Zu meinem Heimatort teleportieren"/>
+ <pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort gehen"/>
+ <pull_button name="forward_btn" tool_tip="Um einen Standort weiter gehen"/>
+ <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">
+ <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/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
index 699bddc6eb..3f4f5a71b5 100644
--- a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
@@ -2,7 +2,7 @@
<!-- All our XML is utf-8 encoded. -->
<panel name="nearby_chat">
<panel name="chat_caption">
- <text name="sender_name">
+ <text name="sender_name" width="200">
CHAT IN DER NÄHE
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_media.xml b/indra/newview/skins/default/xui/de/panel_nearby_media.xml
new file mode 100644
index 0000000000..ec2ad42fa1
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_nearby_media.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_media">
+ <string name="media_item_count_format">
+ (%ls Medien-Objekte)
+ </string>
+ <string name="empty_item_text">
+ &lt;leer&gt;
+ </string>
+ <string name="parcel_media_name">
+ Streaming-Medien auf Parzelle
+ </string>
+ <string name="parcel_audio_name">
+ Streaming-Audio auf Parzelle
+ </string>
+ <string name="playing_suffix">
+ (wird abgespielt)
+ </string>
+ <panel name="minimized_controls">
+ <button label="Alle stoppen" name="all_nearby_media_disable_btn" tool_tip="Alle Medien in der Nähe ausschalten"/>
+ <button label="Alle starten" name="all_nearby_media_enable_btn" tool_tip="Alle Medien in der Nähe einschalten"/>
+ <button name="open_prefs_btn" tool_tip="Medien-Einstellungen öffnen"/>
+ <button label="Mehr &gt;&gt;" label_selected="Weniger &lt;&lt;" name="more_less_btn" tool_tip="Erweiterte Steuerung"/>
+ </panel>
+ <panel name="nearby_media_panel">
+ <combo_box name="show_combo">
+ <combo_box.item label="Alle" name="All"/>
+ <combo_box.item label="Auf dieser Parzelle" name="WithinParcel"/>
+ <combo_box.item label="Außerhalb dieser Parzelle" name="OutsideParcel"/>
+ </combo_box>
+ <scroll_list name="media_list">
+ <scroll_list.columns label="Umgebung" name="media_proximity"/>
+ <scroll_list.columns label="Sichtbar" name="media_visibility"/>
+ <scroll_list.columns label="Klasse" name="media_class"/>
+ <scroll_list.columns label="Name" name="media_name"/>
+ <scroll_list.columns label="Fehler beseitigen" name="media_debug"/>
+ </scroll_list>
+ <panel>
+ <layout_stack name="media_controls">
+ <layout_panel name="stop">
+ <button name="stop_btn" tool_tip="Ausgewählte Medien stoppen"/>
+ </layout_panel>
+ <layout_panel name="play">
+ <button name="play_btn" tool_tip="Ausgewählte Medien wiedergeben"/>
+ </layout_panel>
+ <layout_panel name="pause">
+ <button name="pause_btn" tool_tip="Ausgewählte Medien pausieren"/>
+ </layout_panel>
+ <layout_panel name="volume_slider_ctrl">
+ <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Lautstärke für ausgewählte Medien"/>
+ </layout_panel>
+ <layout_panel name="mute">
+ <button name="mute_btn" tool_tip="Audio für ausgewählte Medien stummschalten"/>
+ </layout_panel>
+ <layout_panel name="zoom">
+ <button name="zoom_btn" tool_tip="Auf ausgewählte Medien zoomen"/>
+ </layout_panel>
+ <layout_panel name="unzoom">
+ <button name="unzoom_btn" tool_tip="Von ausgewählten Medien wegzoomen"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_notes.xml b/indra/newview/skins/default/xui/de/panel_notes.xml
index e6a63fc0c8..374c117cdd 100644
--- a/indra/newview/skins/default/xui/de/panel_notes.xml
+++ b/indra/newview/skins/default/xui/de/panel_notes.xml
@@ -13,10 +13,10 @@
</scroll_container>
</layout_panel>
<layout_panel name="notes_buttons_panel">
- <button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/>
- <button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
+ <button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an" width="109"/>
+ <button label="IM" name="im" tool_tip="Instant Messenger öffnen" width="24"/>
<button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
- <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/>
+ <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen" width="40"/>
<button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/de/panel_online_status.xml b/indra/newview/skins/default/xui/de/panel_online_status.xml
new file mode 100644
index 0000000000..7c7448c061
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_online_status.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Freunde_online_Status" name="friend_online_status"/>
diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml
index 8d2dd84512..54c56992fd 100644
--- a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml
@@ -2,7 +2,7 @@
<panel label="Sonstiges" name="Outfits">
<tab_container name="appearance_tabs">
<inventory_panel label="MEINE OUTFITS" name="outfitslist_tab"/>
- <inventory_panel label="AKTUELLES OUTFIT" name="cof_accordionpanel"/>
+ <inventory_panel label="AKTUELLES OUTFIT" name="cof_tab"/>
</tab_container>
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index 91a17e127a..a119c86b47 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -5,7 +5,6 @@
<string name="no_one_near" value="Keiner in der Nähe"/>
<string name="no_friends_online" value="Keine Freunde online"/>
<string name="no_friends" value="Keine Freunde"/>
- <string name="no_groups" value="Keine Gruppen"/>
<string name="people_filter_label" value="Nach Leuten filtern"/>
<string name="groups_filter_label" value="Nach Gruppen filtern"/>
<filter_editor label="Filter" name="filter_input"/>
@@ -16,18 +15,22 @@
<button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
</panel>
</panel>
- <panel label="FREUNDE" name="friends_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>
+ <text name="no_friends_msg">
+ Verwenden Sie [secondlife:///app/search/people die globale Suche], um Freunde hinzuzufügen. Oder klicken Sie auf einen Einwohner und fügen Sie diesen als Freund hinzu.
+Wenn Sie nach Orten suchen, an denen sich Leute befinden, verwenden Sie [secondlife:///app/worldmap die Karte].
+ </text>
<panel label="bottom_panel" name="bottom_panel">
<button name="friends_viewsort_btn" tool_tip="Optionen"/>
<button name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/>
<button name="del_btn" tool_tip="Ausgewählte Person von Ihrer Freundesliste entfernen"/>
</panel>
</panel>
- <panel label="GRUPPEN" name="groups_panel">
+ <panel label="MEINE GRUPPEN" name="groups_panel">
<panel label="bottom_panel" name="bottom_panel">
<button name="groups_viewsort_btn" tool_tip="Optionen"/>
<button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/>
diff --git a/indra/newview/skins/default/xui/de/panel_picks.xml b/indra/newview/skins/default/xui/de/panel_picks.xml
index a07bc170f6..df68381082 100644
--- a/indra/newview/skins/default/xui/de/panel_picks.xml
+++ b/indra/newview/skins/default/xui/de/panel_picks.xml
@@ -11,7 +11,7 @@
</panel>
<panel name="buttons_cucks">
<button label="Info" name="info_btn" tool_tip="Auswahl-Information anzeigen"/>
- <button label="Teleportieren" name="teleport_btn" tool_tip="Zu entsprechendem Standort teleportieren"/>
+ <button label="Teleportieren" name="teleport_btn" tool_tip="Zu entsprechendem Standort teleportieren" width="100"/>
<button label="Karte" name="show_on_map_btn" tool_tip="Den entsprechenden Standort auf der Karte anzeigen"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml
index 94a43833bf..fd4da94edc 100644
--- a/indra/newview/skins/default/xui/de/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml
@@ -6,7 +6,7 @@
<string name="available" value="verfügbar"/>
<string name="allocated" value="vergeben"/>
<string name="title_place" value="Ortsprofil"/>
- <string name="title_teleport_history" value="Speicherort der Teleport-Liste"/>
+ <string name="title_teleport_history" value="Teleport-Liste"/>
<string name="not_available" value="k.A."/>
<string name="unknown" value="(unbekannt)"/>
<string name="public" value="(öffentlich)"/>
diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml
index 8ee26f4e5f..7359a4fda4 100644
--- a/indra/newview/skins/default/xui/de/panel_places.xml
+++ b/indra/newview/skins/default/xui/de/panel_places.xml
@@ -2,14 +2,14 @@
<panel label="Orte" name="places panel">
<string name="landmarks_tab_title" value="MEINE LANDMARKEN"/>
<string name="teleport_history_tab_title" value="TELEPORT-LISTE"/>
- <filter_editor label="Orte filtern" name="Filter"/>
+ <filter_editor label="Meine Orte filtern" name="Filter"/>
<panel name="button_panel">
<button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/>
- <button label="Karte" name="map_btn"/>
+ <button label="Karte" name="map_btn" width="60"/>
<button label="Bearbeiten" name="edit_btn" tool_tip="Landmarken-Info bearbeiten"/>
<button name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
<button label="Schließen" name="close_btn"/>
- <button label="Abbrechen" name="cancel_btn"/>
- <button label="Speichern" name="save_btn"/>
+ <button label="Abbrechen" name="cancel_btn" width="66"/>
+ <button label="Speichern" name="save_btn" width="66"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
index 14d4e01586..df1bbd5d52 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
@@ -1,48 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
-<panel name="advanced">
- <panel.string name="resolution_format">
- [RES_X] x [RES_Y]
- </panel.string>
+<panel label="Erweitert" name="advanced">
<panel.string name="aspect_ratio_text">
[NUM]:[DEN]
</panel.string>
- <check_box label="Blasen-Chat" name="bubble_text_chat"/>
- <color_swatch name="background" tool_tip="Farbe für Blasen-Chat auswählen"/>
- <slider label="Deckkraft" name="bubble_chat_opacity"/>
- <text name="AspectRatioLabel1" tool_tip="Breite/Höhe">
- Seitenverhältnis
- </text>
- <combo_box name="aspect_ratio" tool_tip="Breite/Höhe">
- <combo_box.item label="4:3 (Standard-CRT)" name="item1"/>
- <combo_box.item label="5:4 (1280x1024 LCD)" name="item2"/>
- <combo_box.item label="8:5 (Widescreen)" name="item3"/>
- <combo_box.item label="16:9 (Widescreen)" name="item4"/>
- </combo_box>
- <check_box label="Automatisch erkennen" name="aspect_auto_detect"/>
- <text name="heading1">
- Kamera:
- </text>
<slider label="Sichtwinkel" name="camera_fov"/>
<slider label="Abstand" name="camera_offset_scale"/>
<text name="heading2">
- Automatische Positionierung:
+ Automatische Position für:
</text>
<check_box label="Bauen/Bearbeiten" name="edit_camera_movement" tool_tip="Automatische Kamerapositionierung bei Wechsel in und aus dem Bearbeitungsmodus verwenden"/>
<check_box label="Aussehen" name="appearance_camera_movement" tool_tip="Automatische Kamerapositionierung im Bearbeitenmodus verwenden"/>
- <text name="heading3">
- Avatare:
- </text>
<check_box label="Mich im Mouselook anzeigen" name="first_person_avatar_visible"/>
<check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/>
<check_box label="2-mal-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/>
<check_box label="Avatarlippen beim Sprechen bewegen" name="enable_lip_sync"/>
- <check_box label="Skript-Fehler anzeigen" name="show_script_errors"/>
+ <check_box label="Blasen-Chat" name="bubble_text_chat"/>
+ <slider label="Deckkraft" label_width="66" name="bubble_chat_opacity"/>
+ <color_swatch name="background" tool_tip="Farbe für Blasen-Chat auswählen"/>
+ <check_box label="Skript-Fehler anzeigen:" name="show_script_errors"/>
<radio_group name="show_location">
- <radio_item label="In Chat" name="0"/>
- <radio_item label="In einem Fenster" name="1"/>
+ <radio_item label="Chat in der Nähe" name="0"/>
+ <radio_item label="Getrenntes Fenster" name="1"/>
</radio_group>
- <check_box label="Umschaltmodus für Mikrofon, wenn die Auslöste-Taste zum Sprechen gedrückt wird:" name="push_to_talk_toggle_check" tool_tip="Wenn der Umschaltmodus aktiviert ist, drücken Sie die Auslöse-Taste EINMAL, um Ihr Mikrofon an oder aus zu stellen. Wenn der Umschaltmodus nicht motiviert ist, ist das Mikro nur dann eingeschaltet, wenn Sie die Auslösetaste gedrückt halten."/>
+ <check_box label="Sprachfunktion ein-/ausschalten, wenn gedrückt wird:" name="push_to_talk_toggle_check" tool_tip="Wenn der Umschaltmodus aktiviert ist, drücken Sie die Auslöse-Taste EINMAL, um Ihr Mikrofon an oder aus zu stellen. Wenn der Umschaltmodus nicht motiviert ist, ist das Mikro nur dann eingeschaltet, wenn Sie die Auslösetaste gedrückt halten."/>
<line_editor label="Auslöser für Zum-Sprechen-drücken:" name="modifier_combo"/>
<button label="Taste festlegen" name="set_voice_hotkey_button"/>
- <button label="Mittlere Maustaste" name="set_voice_middlemouse_button"/>
+ <button label="Mittlere Maustaste" name="set_voice_middlemouse_button" tool_tip="Auf mittlere Maustaste zurücksetzen"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml
index def5fb3b1b..0a0534c739 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml
@@ -4,11 +4,11 @@
Anzeigen:
</text>
<check_box label="Wenn ich Geld ausgebe oder L$ erhalte" name="notify_money_change_checkbox"/>
- <check_box label="Wenn meinen Freund sich an- oder abmelden" name="friends_online_notify_checkbox"/>
+ <check_box label="Wenn meine Freunde sich an- oder abmelden" name="friends_online_notify_checkbox"/>
<text name="show_label">
- Diese Warnhinweise immer anzeigen:
+ Immer anzeigen:
</text>
<text name="dont_show_label">
- Diese Benachrichtungen nie anzeigen:
+ Niemals anzeigen:
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
index cc0a09c06c..f580691c0d 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -40,8 +40,8 @@
<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
<check_box label="Text-Chatverlauf aktivieren" name="plain_text_chat_history"/>
- <radio_group name="chat_window" tool_tip="Zeigen sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit viele Registerkarten an (Neustart erforderlich).">
- <radio_item label="Mehrere Fenster" name="radio" value="0"/>
- <radio_item label="Ein Fenster" name="radio2" value="1"/>
+ <radio_group name="chat_window" tool_tip="Zeigen Sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit viele Registerkarten an (Neustart erforderlich).">
+ <radio_item label="Getrennte Fenster" name="radio" value="0"/>
+ <radio_item label="Registerkarten" name="radio2" value="1"/>
</radio_group>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
index 490b0b296b..bd9e10b641 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -19,7 +19,7 @@
<text name="language_textbox2">
(Erfordert Neustart)
</text>
- <text name="maturity_desired_prompt">
+ <text name="maturity_desired_prompt" width="350">
Ich möchte auf Inhalt mit folgender Alterseinstufung zugreifen:
</text>
<text name="maturity_desired_textbox"/>
@@ -33,7 +33,7 @@
</text>
<combo_box name="start_location_combo">
<combo_box.item label="Mein letzter Standort" name="MyLastLocation" tool_tip="Als Standardeinstellung in letztem Standort anmelden."/>
- <combo_box.item label="Mein Heimatort" name="MyHome" tool_tip="Als Standardeinstellung in Zuhauseposition anmelden."/>
+ <combo_box.item label="Mein Zuhause" name="MyHome" tool_tip="Als Standardeinstellung in Zuhauseposition anmelden."/>
</combo_box>
<check_box initial_value="true" label="Beim Anmelden anzeigen" name="show_location_checkbox"/>
<text name="name_tags_textbox">
@@ -42,7 +42,7 @@
<radio_group name="Name_Tag_Preference">
<radio_item label="Aus" name="radio" value="0"/>
<radio_item label="An" name="radio2" value="1"/>
- <radio_item label="Vorübergehend anzeigen" name="radio3" value="2"/>
+ <radio_item label="Kurz anzeigen" name="radio3" value="2"/>
</radio_group>
<check_box label="Meinen Namen anzeigen" name="show_my_name_checkbox1"/>
<check_box initial_value="true" label="Kleine Avatarnamen" name="small_avatar_names_checkbox"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
index 0c0924026e..42a625fbf6 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
@@ -3,7 +3,7 @@
<panel.string name="log_in_to_change">
Anmelden, um Änderungen vorzunehmen
</panel.string>
- <button label="Verlauf leeren" name="clear_cache"/>
+ <button label="Cache leeren" name="clear_cache" tool_tip="Bild bei Anmeldung, letzter Standort, Teleport-Liste, Internet- und Texturen-Cache löschen"/>
<text name="cache_size_label_l">
(Standorte, Bilder, Web, Suchverlauf)
</text>
@@ -11,8 +11,6 @@
<check_box label="Nur Freunde und Gruppen können mich anrufen oder mir eine IM schicken" name="voice_call_friends_only_check"/>
<check_box label="Mikrofon ausschalten, wenn Anrufe beendet werden" name="auto_disengage_mic_check"/>
<check_box label="Cookies annehmen" name="cookies_enabled"/>
- <check_box label="Medien aktiviert" name="media_enabled"/>
- <check_box label="Automatische Wiedergabe zulassen" name="autoplay_enabled"/>
<text name="Logs:">
Protokolle:
</text>
@@ -20,8 +18,8 @@
<check_box label="IM Protokolle auf meinem Computer speichern" name="log_instant_messages"/>
<check_box label="Zeitstempel hinzufügen" name="show_timestamps_check_im"/>
<text name="log_path_desc">
- Speicherort für Protokolle:
+ Protokolle speichern in:
</text>
<button label="Durchsuchen" label_selected="Durchsuchen" name="log_path_button"/>
- <button label="Ignorierte Einwohner/Objekte" name="block_list"/>
+ <button label="Ignorierte Einwohner/Objekte" name="block_list" width="180"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
index 00be3920ca..2516cd3a40 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
@@ -18,29 +18,29 @@
kbit/s
</text>
<check_box label="Eigener Port" name="connection_port_enabled"/>
- <spinner label="Portnummer:" name="web_proxy_port"/>
+ <spinner label="Port-Nummer:" name="connection_port"/>
<text name="cache_size_label_l">
Cachegröße
</text>
<text name="text_box5">
MB
</text>
- <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/>
- <button label="Zurücksetzen" label_selected="Zurücksetzen" name="reset_cache"/>
<text name="Cache location">
Cache-Ordner:
</text>
+ <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/>
+ <button label="Zurücksetzen" label_selected="Zurücksetzen" name="reset_cache"/>
<text name="Web:">
Web:
</text>
<radio_group name="use_external_browser">
- <radio_item label="Integrierten Browser verwenden" name="internal" tool_tip="Integrierten Webbrowser verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Dieser Browser öffnet als neues Fenster innerhalb von [APP_NAME]."/>
- <radio_item label="Meinen Browser verwenden (IE, Firefox)" name="external" tool_tip="Standard Webbrowser des Systems verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Bei Vollbildmodus nicht empfohlen."/>
+ <radio_item label="Integrierten Browser verwenden" name="internal" tool_tip="Integrierten Webbrowser verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Dieser Browser öffnet als neues Fenster innerhalb von [APP_NAME]." value="0"/>
+ <radio_item label="Meinen Browser verwenden (IE, Firefox, Safari)" name="external" tool_tip="Standard Webbrowser des Systems verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Bei Vollbildmodus nicht empfohlen." value="1"/>
</radio_group>
- <check_box initial_value="false" label="Web Proxy" name="web_proxy_enabled"/>
- <line_editor name="web_proxy_editor" tool_tip="Name oder IP Adresse des Proxyservers, den Sie benutzen möchten"/>
- <button label="Durchsuchen" label_selected="Durchsuchen" name="set_proxy"/>
+ <check_box initial_value="false" label="Web-Proxy aktivieren" name="web_proxy_enabled"/>
<text name="Proxy location">
Proxy-Standort:
</text>
+ <line_editor name="web_proxy_editor" tool_tip="Name oder IP Adresse des Proxyservers, den Sie benutzen möchten"/>
+ <spinner label="Portnummer:" name="web_proxy_port"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
index 2398da71d0..b01db30c82 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
@@ -1,16 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Sounds" name="Preference Media panel">
<slider label="Master-Lautstärke" name="System Volume"/>
- <check_box initial_value="true" label="Stummschalten, wenn verkleinert" name="mute_when_minimized"/>
- <slider label="Umgebung" name="Wind Volume"/>
+ <check_box initial_value="true" label="Stummschalten, wenn minimiert" name="mute_when_minimized"/>
<slider label="Schaltflächen" name="UI Volume"/>
- <slider label="Medien" name="Media Volume"/>
+ <slider label="Umgebung" name="Wind Volume"/>
<slider label="Soundeffekte" name="SFX Volume"/>
<slider label="Musik wird gestreamt" name="Music Volume"/>
- <check_box label="Voice aktivieren" name="enable_voice_check"/>
- <slider label="Sprache" name="Voice Volume"/>
+ <check_box label="Aktiviert" name="music_enabled"/>
+ <slider label="Medien" name="Media Volume"/>
+ <check_box label="Aktiviert" name="enable_media"/>
+ <slider label="Voice-Chat" name="Voice Volume"/>
+ <check_box label="Aktiviert" name="enable_voice_check"/>
+ <check_box label="Automatische Wiedergabe zulassen" name="media_auto_play_btn" tool_tip="Hier aktivieren, um Medien automatisch wiederzugeben." value="wahr"/>
+ <check_box label="Medien, die an andere Avatare angehängt sind, wiedergeben." name="media_show_on_others_btn" tool_tip="Diese Option deaktivieren, um Medien für andere Avataren, die sich in der Nähe befinden, auszublenden." value="wahr"/>
<text name="Listen from">
- Zuhören von:
+ Voice-Chat-Einstellungen
</text>
<radio_group name="ear_location">
<radio_item label="Kameraposition" name="0"/>
diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml
index 82467eb570..cb598f89f6 100644
--- a/indra/newview/skins/default/xui/de/panel_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile.xml
@@ -28,21 +28,25 @@
</panel>
<text name="title_member_text" value="Einwohner seit:"/>
<text name="title_acc_status_text" value="Kontostatus:"/>
- <text name="acc_status_text">
+ <text_editor name="acc_status_text">
Einwohner. Keine Zahlungsinfo archiviert.
Linden.
- </text>
+ </text_editor>
<text name="title_partner_text" value="Partner:"/>
+ <panel name="partner_data_panel">
+ <name_box initial_value="(wird in Datenbank gesucht)" name="partner_text"/>
+ </panel>
<text name="title_groups_text" value="Gruppen:"/>
</panel>
</scroll_container>
</layout_panel>
<layout_panel name="profile_buttons_panel">
- <button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/>
- <button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
+ <button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an" width="109"/>
+ <button label="IM" name="im" tool_tip="Instant Messenger öffnen" width="24"/>
<button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
- <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/>
+ <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen" width="36"/>
<button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
+ <button label="▼" name="overflow_btn" tool_tip="Dem Einwohner Geld geben oder Inventar an den Einwohner schicken"/>
</layout_panel>
<layout_panel name="profile_me_buttons_panel">
<button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/>
diff --git a/indra/newview/skins/default/xui/de/panel_profile_view.xml b/indra/newview/skins/default/xui/de/panel_profile_view.xml
index 4d59c16e98..f02457dd80 100644
--- a/indra/newview/skins/default/xui/de/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile_view.xml
@@ -8,7 +8,7 @@
</string>
<text_editor name="user_name" value="(wird geladen...)"/>
<text name="status" value="Online"/>
- <tab_container name="tabs">
+ <tab_container name="tabs" tab_min_width="60">
<panel label="PROFIL" name="panel_profile"/>
<panel label="AUSWAHL" name="panel_picks"/>
<panel label="NOTIZEN &amp; PRIVATSPHÄRE" name="panel_notes"/>
diff --git a/indra/newview/skins/default/xui/de/panel_region_covenant.xml b/indra/newview/skins/default/xui/de/panel_region_covenant.xml
index 14be8def7e..153082909a 100644
--- a/indra/newview/skins/default/xui/de/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_covenant.xml
@@ -18,7 +18,7 @@
<text name="estate_cov_lbl">
Vertrag:
</text>
- <text name="covenant_timestamp_text">
+ <text name="covenant_timestamp_text" width="320">
Letzte Änderung am Mittwoch, den 31. Dez. 1969, 16:00:00
</text>
<button label="?" name="covenant_help"/>
@@ -28,7 +28,7 @@
<button label="Zurücksetzen" name="reset_covenant"/>
<text name="covenant_help_text">
Änderungen am Vertrag werden für alle Parzellen auf dem
- Grundstück übernommen.
+Grundstück übernommen.
</text>
<text bottom_delta="-36" name="covenant_instructions">
Ziehen Sie eine Notizkarte an diese Stelle, um den Vertrag für dieses Grundstück zu ändern.
@@ -63,7 +63,7 @@
<text name="changeable_lbl">
Unterteilen:
</text>
- <text name="changeable_clause">
+ <text name="changeable_clause" width="366">
Land in dieser Region kann nicht zusammengelegt/geteilt werden.
</text>
<string name="can_resell">
diff --git a/indra/newview/skins/default/xui/de/panel_region_debug.xml b/indra/newview/skins/default/xui/de/panel_region_debug.xml
index 40befab4dd..920a513308 100644
--- a/indra/newview/skins/default/xui/de/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_debug.xml
@@ -13,7 +13,7 @@
<check_box label="Physik deaktivieren" name="disable_physics_check" tool_tip="Physik in dieser Region deaktivieren"/>
<button label="?" name="disable_physics_help"/>
<button label="Übernehmen" name="apply_btn"/>
- <text name="objret_text_lbl" width="105">
+ <text name="objret_text_lbl" width="110">
Objekt zurückgeben
</text>
<text name="resident_text_lbl">
diff --git a/indra/newview/skins/default/xui/de/panel_region_texture.xml b/indra/newview/skins/default/xui/de/panel_region_texture.xml
index d489b5bac8..f9997f300a 100644
--- a/indra/newview/skins/default/xui/de/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_texture.xml
@@ -36,14 +36,14 @@
<text name="height_text_lbl9">
Nordost
</text>
- <spinner label="Niedrig" name="height_start_spin_0"/>
- <spinner label="Niedrig" name="height_start_spin_1"/>
- <spinner label="Niedrig" name="height_start_spin_2"/>
- <spinner label="Niedrig" name="height_start_spin_3"/>
- <spinner label="Hoch" name="height_range_spin_0"/>
- <spinner label="Hoch" name="height_range_spin_1"/>
- <spinner label="Hoch" name="height_range_spin_2"/>
- <spinner label="Hoch" name="height_range_spin_3"/>
+ <spinner label="Niedrig" name="height_start_spin_0" label_width="40"/>
+ <spinner label="Niedrig" name="height_start_spin_1" label_width="40"/>
+ <spinner label="Niedrig" name="height_start_spin_2" label_width="40"/>
+ <spinner label="Niedrig" name="height_start_spin_3" label_width="40"/>
+ <spinner label="Hoch" name="height_range_spin_0" label_width="40"/>
+ <spinner label="Hoch" name="height_range_spin_1" label_width="40"/>
+ <spinner label="Hoch" name="height_range_spin_2" label_width="40"/>
+ <spinner label="Hoch" name="height_range_spin_3" label_width="40"/>
<text name="height_text_lbl10">
Diese Werte geben den Mischungsgrad für die obigen Texturen an.
</text>
diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
index f6a1d7e9b5..c91eb98e9c 100644
--- a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
@@ -1,10 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="MEIN AVATAR" name="script_limits_my_avatar_panel">
+ <text name="script_memory">
+ Avatar-Skript-Gebrauch
+ </text>
<text name="loading_text">
Wird geladen...
</text>
<scroll_list name="scripts_list">
- <scroll_list.columns label="Größe (KB)" name="size"/>
+ <scroll_list.columns label="Größe (KB)" name="size" width="80"/>
<scroll_list.columns label="URLs" name="urls"/>
<scroll_list.columns label="Objektname" name="name"/>
<scroll_list.columns label="Ort" name="location"/>
diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
index c466c04e86..8d7cc1bf9a 100644
--- a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
@@ -3,22 +3,20 @@
<text name="script_memory">
Parzellenskript-Speicher
</text>
- <text name="parcels_listed">
- Parzelleneigentümer:
- </text>
- <text name="memory_used">
- Verwendeter Speicher:
- </text>
+ <text name="parcels_listed"/>
+ <text name="memory_used"/>
<text name="loading_text">
Wird geladen...
</text>
<scroll_list name="scripts_list">
- <scroll_list.columns label="Größe (KB)" name="size"/>
+ <scroll_list.columns label="Größe (KB)" name="size" width="80"/>
+ <scroll_list.columns label="URLs" name="urls"/>
<scroll_list.columns label="Objektname" name="name"/>
- <scroll_list.columns label="Objekteigentümer" name="owner"/>
- <scroll_list.columns label="Parzelle / Standort" name="location"/>
+ <scroll_list.columns label="Objekteigentümer" name="owner" width="130"/>
+ <scroll_list.columns label="Parzelle" name="parcel"/>
+ <scroll_list.columns label="Standort" name="location"/>
</scroll_list>
- <button label="Liste aktualisieren" name="refresh_list_btn"/>
+ <button label="Liste aktualisieren" name="refresh_list_btn" width="110"/>
<button label="Markieren" name="highlight_btn"/>
<button label="Zurückgeben" name="return_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_side_tray.xml b/indra/newview/skins/default/xui/de/panel_side_tray.xml
index 2cd11cdcef..3c81636fa0 100644
--- a/indra/newview/skins/default/xui/de/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/de/panel_side_tray.xml
@@ -2,26 +2,28 @@
<!-- Side tray cannot show background because it is always
partially on screen to hold tab buttons. -->
<side_tray name="sidebar">
- <sidetray_tab description="Seitenleiste auf-/zuklappen." name="sidebar_openclose"/>
- <sidetray_tab description="Startseite." name="sidebar_home">
+ <sidetray_tab description="Seitenleiste auf-/zuklappen." name="sidebar_openclose" tab_title="Seitenleiste auf-/zuklappen"/>
+ <sidetray_tab description="Startseite." name="sidebar_home" tab_title="Startseite">
<panel label="Startseite" name="panel_home"/>
</sidetray_tab>
- <sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me">
- <panel label="Ich" name="panel_me"/>
+ <sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me" tab_title="Mein Profil">
+ <panel_container name="panel_container">
+ <panel label="Ich" name="panel_me"/>
+ </panel_container>
</sidetray_tab>
- <sidetray_tab description="Freunde, Kontakte und Leute in Ihrer Nähe finden." name="sidebar_people">
+ <sidetray_tab description="Freunde, Kontakte und Leute in Ihrer Nähe finden." name="sidebar_people" tab_title="Leute">
<panel_container name="panel_container">
- <panel label="Gruppeninfo" name="panel_group_info_sidetray"/>
+ <panel label="Gruppenprofil" name="panel_group_info_sidetray"/>
<panel label="Ignorierte Einwohner &amp; Objekte" name="panel_block_list_sidetray"/>
</panel_container>
</sidetray_tab>
- <sidetray_tab description="Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben." label="Orte" name="sidebar_places">
+ <sidetray_tab description="Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben." label="Orte" name="sidebar_places" tab_title="Orte">
<panel label="Orte" name="panel_places"/>
</sidetray_tab>
- <sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory">
+ <sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory" tab_title="Mein Inventar">
<panel label="Inventar bearbeiten" name="sidepanel_inventory"/>
</sidetray_tab>
- <sidetray_tab description="Ändern Sie Ihr Aussehen und Ihren aktuellen Look." name="sidebar_appearance">
+ <sidetray_tab description="Ändern Sie Ihr Aussehen und Ihren aktuellen Look." name="sidebar_appearance" tab_title="Mein Aussehen">
<panel label="Aussehen bearbeiten" name="sidepanel_appearance"/>
</sidetray_tab>
</side_tray>
diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml
index 33fd0f6348..283df990ae 100644
--- a/indra/newview/skins/default/xui/de/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml
@@ -24,7 +24,8 @@
<button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand"/>
<button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">
- 12:00
+ 24:00 H PST
</text>
+ <button name="media_toggle_btn" tool_tip="Klicken, um Medien ein-/auszuschalten"/>
<button name="volume_btn" tool_tip="Steuerung der Gesamtlautstärke"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
index 9f8fdc085a..825acac79d 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
@@ -37,7 +37,7 @@
Mischverkauf
</panel.string>
<text name="title" value="Objektprofil"/>
- <text name="where" value="(Inworld)"/>
+ <text name="where" value="(inworld)"/>
<panel label="">
<text name="Name:">
Name:
@@ -122,7 +122,7 @@
</panel>
<panel name="button_panel">
<button label="Öffnen" name="open_btn"/>
- <button label="Zahlen" name="pay_btn"/>
+ <button label="Bezahlen" name="pay_btn"/>
<button label="Kaufen" name="buy_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 858bbf27b1..c9307a5d7d 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -227,9 +227,6 @@
<string name="AvatarNameMultiple">
(mehrere)
</string>
- <string name="AvatarNameHippos">
- (hippos)
- </string>
<string name="GroupNameNone">
(keiner)
</string>
@@ -593,6 +590,9 @@
<string name="hang_up">
Verbindung mit In-Welt-Voice-Chat getrennt
</string>
+ <string name="reconnect_nearby">
+ Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden
+ </string>
<string name="ScriptQuestionCautionChatGranted">
Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung erteilt: [PERMISSIONS].
</string>
@@ -825,7 +825,7 @@
ESC drücken, um zur Normalansicht zurückzukehren
</string>
<string name="InventoryNoMatchingItems">
- Im Inventar wurden keine passenden Objekte gefunden.
+ Im Inventar wurden keine passenden Objekte gefunden. Versuchen Sie es mit [secondlife:///app/search/groups „Suche&quot;].
</string>
<string name="FavoritesNoMatchingItems">
Hier eine Landmarke hin ziehen, um diese zu Ihrem Favoriten hinzuzufügen.
@@ -1324,6 +1324,9 @@
<string name="ScriptLimitsRequestError">
Fehler bei Informationsabruf
</string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ Keine Parzellen wurden ausgewählt
+ </string>
<string name="ScriptLimitsRequestWrongRegion">
Fehler: Skriptinformationen sind nur für Ihre aktuelle Region verfügbar
</string>
@@ -1501,7 +1504,7 @@
(wird nach Veröffentlichung aktualisiert)
</string>
<string name="NoPicksClassifiedsText">
- Es wurde keine Auswahl getroffen/keine Anzeigen ausgewählt
+ Sie haben keine Auswahl oder Anzeigen erstelllt. Klicken Sie auf die „Plus&quot;-Schaltfläche, um eine Auswahl oder Anzeige zu erstellen.
</string>
<string name="PicksClassifiedsLoadingText">
Wird geladen...
diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index 7236351f2e..b9bc45a10b 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -19,7 +19,7 @@
width="320">
<string name="nudge_parabuild" translate="false">Nudge 1</string>
<string name="test_the_vlt">This string CHANGE2 is extracted.</string>
- <string name="testing_eli">Just a test. change here. more change.</string>
+ <string name="testing_eli">Just a test. changes.</string>
<chat_history
allow_html="true"
bg_readonly_color="ChatHistoryBgColor"
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 61ca783d14..58ea7cec9c 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -369,7 +369,7 @@ Leyla Linden </text>
layout="topleft"
left_delta="0"
name="Sell with landowners objects in parcel."
- top_pad="-3"
+ top_pad="-2"
width="186">
Objects included in sale
</text>
@@ -1609,41 +1609,12 @@ Only large parcels can be listed in search.
name="set_media_url"
width="50"
top_delta="0"/>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="20"
- layout="topleft"
- left="10"
- name="CurrentURL:"
- width="100"
- top_pad="10">
- Current Page:
- </text>
- <button
- follows="top|right"
- height="23"
- image_overlay="Refresh_Off"
- layout="topleft"
- name="reset_media_url"
- left_pad="0"
- tool_tip="Refresh URL"
- width="23"
- top_delta="0"/>
- <text
- follows="left|top"
- height="16"
- layout="topleft"
- left_pad="10"
- name="current_url"
- width="300" />
<check_box
follows="top|left"
height="16"
label="Hide URL"
layout="topleft"
- left_delta="-36"
+ left="110"
name="hide_media_url"
tool_tip="Checking this option will hide the media url to any non-authorized viewers of this parcel information. Note this is not available for HTML types."
width="50"
@@ -1825,6 +1796,15 @@ Only large parcels can be listed in search.
top_delta="0"
right="-15"
select_on_focus="true" />
+ <check_box
+ height="16"
+ label="Hide URL"
+ layout="topleft"
+ name="hide_music_url"
+ tool_tip="Checking this option will hide the music url to any non-authorized viewers of this parcel information."
+ left_delta="10"
+ top_pad="5"
+ width="292" />
<text
type="string"
length="1"
diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
index 4f4288b654..1ffedde29b 100644
--- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
@@ -147,7 +147,11 @@ Maximum animation length is [MAX_LENGTH] seconds.
name="E_ST_NO_XLT_EMOTE">
Cannot read emote name.
</floater.string>
- <text
+ <floater.string
+ name="E_ST_BAD_ROOT">
+ Incorrect root joint name, use "hip".
+ </floater.string>
+ <text
type="string"
length="1"
bottom="42"
diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
index 703a02d995..961bd6b5e4 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
@@ -178,8 +178,8 @@
follows="top|left"
height="16"
halign="right"
- left="150"
- width="170"
+ left="140"
+ width="180"
layout="topleft"
name="buy_action">
[NAME] L$ [PRICE]
diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml
index 6e0c3dfe54..98508e5113 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml
@@ -172,6 +172,15 @@ supports [AMOUNT2] objects
name="no_parcel_selected">
(no parcel selected)
</floater.string>
+ <floater.string
+ name="icon_PG"
+ value="Parcel_PG_Dark"/>
+ <floater.string
+ name="icon_M"
+ value="Parcel_M_Dark"/>
+ <floater.string
+ name="icon_R"
+ value="Parcel_R_Dark"/>
<text
type="string"
length="1"
@@ -195,9 +204,17 @@ supports [AMOUNT2] objects
left_delta="110"
name="region_name_text"
top_delta="0"
- width="175">
+ use_ellipses="true"
+ width="155">
(unknown)
</text>
+ <icon
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ name="rating_icon"
+ top_delta="-2"
+ width="18"/>
<text
type="string"
length="1"
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index a797d54749..2bd8420925 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -82,6 +82,8 @@
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>
diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml
index 0daef29bc5..2fa112af8c 100644
--- a/indra/newview/skins/default/xui/en/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml
@@ -13,20 +13,19 @@
type="string"
length="1"
follows="left|top"
- font="SansSerif"
- height="10"
+ height="20"
layout="topleft"
- left="12"
+ left="10"
mouse_opaque="false"
name="r_val_text"
- top="35"
+ top="25"
width="413">
Red:
</text>
<spinner
decimal_digits="0"
follows="left"
- height="16"
+ height="20"
increment="1"
initial_value="128"
layout="topleft"
@@ -39,20 +38,18 @@
type="string"
length="1"
follows="left|top"
- font="SansSerif"
- height="10"
+ height="20"
layout="topleft"
- left="12"
+ left="10"
mouse_opaque="false"
name="g_val_text"
- top="56"
width="413">
Green:
</text>
<spinner
decimal_digits="0"
follows="left"
- height="16"
+ height="20"
increment="1"
initial_value="128"
layout="topleft"
@@ -65,20 +62,18 @@
type="string"
length="1"
follows="left|top"
- font="SansSerif"
- height="10"
+ height="20"
layout="topleft"
- left="12"
+ left="10"
mouse_opaque="false"
name="b_val_text"
- top="77"
width="413">
Blue:
</text>
<spinner
decimal_digits="0"
follows="left"
- height="16"
+ height="20"
increment="1"
initial_value="128"
layout="topleft"
@@ -91,20 +86,18 @@
type="string"
length="1"
follows="left|top"
- font="SansSerif"
- height="10"
+ height="20"
layout="topleft"
- left="12"
+ left="10"
mouse_opaque="false"
name="h_val_text"
- top="108"
width="413">
Hue:
</text>
<spinner
decimal_digits="0"
follows="left"
- height="16"
+ height="20"
increment="1"
initial_value="180"
layout="topleft"
@@ -117,20 +110,18 @@
type="string"
length="1"
follows="left|top"
- font="SansSerif"
- height="10"
+ height="20"
layout="topleft"
- left="12"
+ left="10"
mouse_opaque="false"
name="s_val_text"
- top="129"
width="413">
Sat:
</text>
<spinner
decimal_digits="0"
follows="left"
- height="16"
+ height="20"
increment="1"
initial_value="50"
layout="topleft"
@@ -143,20 +134,18 @@
type="string"
length="1"
follows="left|top"
- font="SansSerif"
- height="10"
+ height="20"
layout="topleft"
- left="12"
+ left="10"
mouse_opaque="false"
name="l_val_text"
- top="150"
width="413">
Lum:
</text>
<spinner
decimal_digits="0"
follows="left"
- height="16"
+ height="20"
increment="1"
initial_value="50"
layout="topleft"
@@ -170,11 +159,11 @@
height="20"
label="Apply now"
layout="topleft"
- left="12"
+ left="10"
name="apply_immediate"
top_pad="185"
width="100" />
- <button
+ <button
follows="left|bottom"
height="28"
image_selected="eye_button_active.tga"
@@ -185,7 +174,7 @@
width="28" />
<button
follows="right|bottom"
- height="20"
+ height="23"
label="OK"
label_selected="OK"
layout="topleft"
@@ -195,7 +184,7 @@
width="100" />
<button
follows="right|bottom"
- height="20"
+ height="23"
label="Cancel"
label_selected="Cancel"
layout="topleft"
@@ -209,7 +198,7 @@
follows="left|top"
height="16"
layout="topleft"
- left="12"
+ left="10"
name="Current color:"
top="172"
width="110">
@@ -221,7 +210,7 @@
follows="left|top"
height="16"
layout="topleft"
- left="12"
+ left="10"
name="(Drag below to save.)"
top_pad="66"
width="130">
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
new file mode 100644
index 0000000000..50f0f0454c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_event.xml
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="350"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ title="EVENT DETAILS"
+ width="330">
+ <floater.string
+ name="none">
+ none
+ </floater.string>
+ <floater.string
+ name="notify">
+ Notify
+ </floater.string>
+ <floater.string
+ name="dont_notify">
+ Don&apos;t Notify
+ </floater.string>
+ <layout_stack
+ name="layout"
+ orientation="vertical"
+ follows="all"
+ layout="topleft"
+ left="0"
+ top="0"
+ height="350"
+ width="330"
+ border_size="0">
+ <layout_panel
+ name="profile_stack"
+ follows="all"
+ layout="topleft"
+ top="0"
+ left="0"
+ height="305"
+ width="330">
+ <text
+ follows="top|left|right"
+ font="SansSerifLarge"
+ text_color="white"
+ height="17"
+ layout="topleft"
+ left="10"
+ name="event_name"
+ top="5"
+ use_ellipses="true"
+ width="310">
+ Nameless Event...of Doom! De doom! Doom doom.
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="top|left"
+ height="13"
+ text_color="LtGray_50"
+ layout="topleft"
+ left="25"
+ name="event_category"
+ width="300">
+ (no category)
+ </text>
+
+ <text
+ type="string"
+ length="1"
+ follows="top|left"
+ layout="topleft"
+ left="10"
+ top_pad="7"
+ name="event_runby_label"
+ width="310">
+ Run by:
+ </text>
+ <text
+ follows="left|top"
+ height="20"
+ initial_value="(retrieving)"
+ layout="topleft"
+ left="10"
+ link="true"
+ name="event_runby"
+ top_pad="2"
+ use_ellipses="true"
+ width="310" />
+ <text
+ type="string"
+ length="1"
+ left="10"
+ height="17"
+ font="SansSerifMedium"
+ text_color="EmphasisColor"
+ top_pad="5"
+ follows="top|left"
+ layout="topleft"
+ name="event_date"
+ width="310">
+ 10/10/2010
+ </text>
+ <text
+ type="string"
+ height="14"
+ length="1"
+ left="10"
+ follows="top|left"
+ layout="topleft"
+ name="event_duration"
+ width="310">
+ 1 hour
+ </text>
+ <text
+ font="SansSerifMedium"
+ text_color="EmphasisColor"
+ type="string"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="10"
+ name="event_cover"
+ visible="true"
+ width="310">
+ Free
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="top|left"
+ layout="topleft"
+ left="10"
+ top_pad="5"
+ name="event_location_label">
+ Location:
+ </text>
+ <text
+ type="string"
+ length="1"
+ height="20"
+ left="10"
+ follows="top|left"
+ layout="topleft"
+ name="event_location"
+ use_ellipses="true"
+ value="SampleParcel, Name Long (145, 228, 26)"
+ width="310" />
+ <icon
+ follows="top|left"
+ height="16"
+ image_name="Parcel_PG_Dark"
+ layout="topleft"
+ left="10"
+ name="rating_icon"
+ width="18" />
+ <text
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left_pad="12"
+ name="rating_label"
+ top_delta="3"
+ value="Rating:"
+ width="60" />
+ <text
+ follows="left|right|top"
+ height="16"
+ layout="topleft"
+ left_pad="0"
+ name="rating_value"
+ top_delta="0"
+ value="unknown"
+ width="200" />
+ <expandable_text
+ follows="left|top|right"
+ height="106"
+ layout="topleft"
+ left="6"
+ name="event_desc"
+ width="313" />
+ </layout_panel>
+ <layout_panel
+ follows="left|right"
+ height="24"
+ layout="topleft"
+ mouse_opaque="false"
+ name="button_panel"
+ top="0"
+ left="0"
+ user_resize="false">
+ <button
+ follows="left|top"
+ height="18"
+ image_selected="AddItem_Press"
+ image_unselected="AddItem_Off"
+ image_disabled="AddItem_Disabled"
+ layout="topleft"
+ left="6"
+ name="create_event_btn"
+ picture_style="true"
+ tool_tip="Create Event"
+ width="18" />
+ <button
+ follows="left|top"
+ height="18"
+ image_selected="MinusItem_Press"
+ image_unselected="MinusItem_Off"
+ image_disabled="MinusItem_Disabled"
+ layout="topleft"
+ visible="false"
+ left="6"
+ top_pad="-7"
+ name="god_delete_event_btn"
+ picture_style="true"
+ tool_tip="Delete Event"
+ width="18" />
+ <button
+ follows="left|top"
+ height="23"
+ label="Notify Me"
+ layout="topleft"
+ left_pad="3"
+ top_delta="-12"
+ name="notify_btn"
+ width="100" />
+ <button
+ follows="left|top"
+ height="23"
+ label="Teleport"
+ layout="topleft"
+ left_pad="5"
+ name="teleport_btn"
+ width="100" />
+ <button
+ follows="left|top"
+ height="23"
+ label="Map"
+ layout="topleft"
+ left_pad="5"
+ name="map_btn"
+ width="85" />
+ </layout_panel>
+ </layout_stack>
+ </floater>
+
diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml
index be32e917e5..214fb6ce54 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -2,7 +2,7 @@
<floater
legacy_header_height="18"
can_resize="true"
- height="480"
+ height="600"
layout="topleft"
min_height="150"
min_width="500"
@@ -11,7 +11,7 @@
save_rect="true"
single_instance="true"
title="HELP BROWSER"
- width="620">
+ width="650">
<floater.string
name="loading_text">
Loading...
@@ -20,20 +20,20 @@
name="done_text">
</floater.string>
<layout_stack
- bottom="480"
+ bottom="600"
follows="left|right|top|bottom"
layout="topleft"
left="5"
name="stack1"
top="20"
- width="610">
+ width="640">
<layout_panel
layout="topleft"
left_delta="0"
top_delta="0"
name="external_controls"
user_resize="false"
- width="590">
+ width="620">
<web_browser
bottom="-11"
follows="left|right|top|bottom"
@@ -41,8 +41,8 @@
left="0"
name="browser"
top="0"
- height="500"
- width="590" />
+ height="610"
+ width="620" />
<text
follows="bottom|left"
height="16"
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
index bd25288a9e..65a05f3ec5 100644
--- a/indra/newview/skins/default/xui/en/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_container.xml
@@ -19,8 +19,13 @@
left="1"
name="im_box_tab_container"
tab_position="bottom"
- tab_width="80"
+ tab_width="64"
+ tab_max_width = "134"
tab_height="16"
+ use_custom_icon_ctrl="true"
+ tab_icon_ctrl_pad="2"
+ halign="left"
+ use_ellipses="true"
top="0"
width="390" />
<icon
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 9aaa660574..d2e5473157 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -12,7 +12,7 @@
can_minimize="true"
can_close="true"
visible="false"
- width="440"
+ width="360"
can_resize="true"
min_width="250"
min_height="190">
@@ -20,7 +20,7 @@
animate="false"
follows="all"
height="320"
- width="440"
+ width="360"
layout="topleft"
orientation="horizontal"
name="im_panels"
@@ -38,7 +38,7 @@
left="0"
top="0"
height="200"
- width="325"
+ width="245"
user_resize="true">
<button
height="20"
@@ -65,7 +65,7 @@
parse_highlights="true"
allow_html="true"
left="1"
- width="320">
+ width="240">
</chat_history>
<line_editor
bottom="0"
@@ -75,7 +75,7 @@
label="To"
layout="bottomleft"
name="chat_editor"
- width="320">
+ width="240">
</line_editor>
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml
index ff9f0daee6..0d381fe5cb 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory.xml
@@ -12,19 +12,19 @@
save_rect="true"
save_visibility="true"
single_instance="false"
- title="INVENTORY"
+ title="MY INVENTORY"
width="467">
<floater.string
name="Title">
- Inventory
+ MY INVENTORY
</floater.string>
<floater.string
name="TitleFetching">
- Inventory (Fetching [ITEM_COUNT] Items...) [FILTER]
+ MY INVENTORY (Fetching [ITEM_COUNT] Items...) [FILTER]
</floater.string>
<floater.string
name="TitleCompleted">
- Inventory ([ITEM_COUNT] Items) [FILTER]
+ MY INVENTORY ([ITEM_COUNT] Items) [FILTER]
</floater.string>
<floater.string
name="Fetched">
diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
index e94717fe32..990be55847 100644
--- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
@@ -5,7 +5,7 @@
border_style="line"
can_resize="true"
follows="left|top"
- height="570"
+ height="580"
layout="topleft"
min_height="271"
min_width="290"
@@ -13,7 +13,7 @@
help_topic="script_ed_float"
save_rect="true"
title="SCRIPT: NEW SCRIPT"
- width="500">
+ width="508">
<floater.string
name="not_allowed">
You can not view or edit this script, since it has been set as &quot;no copy&quot;. You need full permissions to view or edit a script inside an object.
@@ -24,19 +24,31 @@
</floater.string>
<floater.string
name="Title">
- Script: [NAME]
+ SCRIPT: [NAME]
</floater.string>
+ <panel
+ bevel_style="none"
+
+ border_style="line"
+ follows="left|top|right|bottom"
+ height="522"
+ layout="topleft"
+ left="10"
+ name="script ed panel"
+ top="20"
+ width="497" />
<button
- follows="right|bottom"
- height="20"
+ follows="left|bottom"
+ height="23"
label="Reset"
label_selected="Reset"
layout="topleft"
- left="358"
name="Reset"
- top="545"
- width="128" />
+ left="10"
+ width="61" />
<check_box
+ left_delta="71"
+ top_delta="3"
enabled="false"
follows="left|bottom"
font="SansSerif"
@@ -44,30 +56,17 @@
initial_value="true"
label="Running"
layout="topleft"
- left_delta="-350"
name="running"
- top_delta="2"
width="100" />
<check_box
- enabled="false"
+ left_delta="75"
+ enabled="true"
follows="left|bottom"
font="SansSerif"
height="18"
initial_value="true"
label="Mono"
layout="topleft"
- left_delta="70"
name="mono"
- top_delta="0"
width="100" />
- <panel
- bevel_style="none"
- border_style="line"
- follows="left|top|right|bottom"
- height="506"
- layout="topleft"
- left="1"
- name="script ed panel"
- top="18"
- width="497" />
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 1903e7c714..5d35275e17 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -3,12 +3,10 @@
legacy_header_height="18"
can_minimize="true"
can_resize="true"
- center_horiz="true"
- center_vert="true"
follows="top|right"
height="218"
layout="topleft"
- min_height="60"
+ min_height="174"
min_width="174"
name="Map"
title="Mini Map"
@@ -16,6 +14,8 @@
save_rect="true"
save_visibility="true"
single_instance="true"
+ left="0"
+ top="0"
width="200">
<floater.string
name="mini_map_north">
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 0bdcbf30df..851a689d42 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -83,7 +83,7 @@
left="10"
name="move up btn"
scale_image="false"
- tool_tip="Fly up, press &quot;E&quot;"
+ tool_tip="Fly up, press E"
top="14"
width="25" />
<button
@@ -96,7 +96,7 @@
left_pad="45"
name="move down btn"
scale_image="false"
- tool_tip="Fly down, press &quot;C&quot;"
+ tool_tip="Fly down, press C"
top_delta="0"
width="20" />
<joystick_turn
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
index ae686d9ab7..28616d503b 100644
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
@@ -6,7 +6,7 @@
border="false"
bg_opaque_image="Window_Foreground"
bg_alpha_image="Window_Background"
- bg_alpha_color="0 0 0 0"
+ bg_alpha_image_overlay="DkGray_66"
legacy_header_height="18"
can_minimize="true"
can_tear_off="false"
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 16079b30cb..a2938e8574 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,6 +4,7 @@
can_minimize="false"
height="100"
layout="topleft"
+ title="Save Outfit"
name="modal container"
width="240">
<button
diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
index eb772cc0bd..2bafd1bdef 100644
--- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
@@ -89,18 +89,29 @@ No Answer. Please try again later.
top="27"
width="315"
word_wrap="true">
- You have been disconnected from [VOICE_CHANNEL_NAME]. You will now be reconnected to Nearby Voice Chat.
+ You have been disconnected from [VOICE_CHANNEL_NAME]. [RECONNECT_NEARBY]
</text>
<text
font="SansSerifLarge"
height="40"
layout="topleft"
left="77"
- name="nearby_P2P"
+ name="nearby_P2P_by_other"
top="27"
width="315"
word_wrap="true">
- [VOICE_CHANNEL_NAME] has ended the call. You will now be reconnected to Nearby Voice Chat.
+ [VOICE_CHANNEL_NAME] has ended the call. [RECONNECT_NEARBY]
+ </text>
+ <text
+ font="SansSerifLarge"
+ height="40"
+ layout="topleft"
+ left="77"
+ name="nearby_P2P_by_agent"
+ top="27"
+ width="315"
+ word_wrap="true">
+ You have ended the call. [RECONNECT_NEARBY]
</text>
<text
font="SansSerif"
diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml
index 455018f467..d09a0a0535 100644
--- a/indra/newview/skins/default/xui/en/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml
@@ -36,7 +36,7 @@
top_delta="3"
name="payee_name"
width="184">
- Ericacita Moostopolison
+ [FIRST] [LAST]
</text>
<text
type="string"
diff --git a/indra/newview/skins/default/xui/en/floater_postcard.xml b/indra/newview/skins/default/xui/en/floater_postcard.xml
index 3a7b6cc832..6f78363b25 100644
--- a/indra/newview/skins/default/xui/en/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/en/floater_postcard.xml
@@ -128,19 +128,9 @@
width="420">
Type your message here.
</text_editor>
- <text
- type="string"
- length="1"
- bottom_delta="37"
- follows="left|bottom"
- layout="topleft"
- left="12"
- name="fine_print">
- If your recipient joins SL, you&apos;ll get a referral bonus.
- </text>
<button
follows="right|bottom"
- height="20"
+ height="23"
label="Cancel"
layout="topleft"
name="cancel_btn"
@@ -149,7 +139,7 @@
width="100" />
<button
follows="right|bottom"
- height="20"
+ height="23"
label="Send"
layout="topleft"
left_delta="-106"
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
index 15655a920e..7aa8e23e76 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences.xml
@@ -56,7 +56,7 @@
help_topic="preferences_general_tab"
name="general" />
<panel
- class="panel_preference"
+ class="panel_preference_graphics"
filename="panel_preferences_graphics1.xml"
label="Graphics"
layout="topleft"
@@ -72,7 +72,7 @@
<panel
class="panel_preference"
filename="panel_preferences_sound.xml"
- label="Sound"
+ label="Sound &amp; Media"
layout="topleft"
help_topic="preferences_audio_tab"
name="audio" />
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 bbfb362337..6dc073728b 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
@@ -38,7 +38,7 @@
width="170" />
<button
height="20"
- label="Play in World"
+ label="Play Inworld"
label_selected="Stop"
layout="topleft"
left="10"
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 68a78d5017..f3be8c4131 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
@@ -38,8 +38,8 @@
<button
follows="left|top"
height="22"
- label="Play in World"
- label_selected="Play in World"
+ label="Play Inworld"
+ label_selected="Play Inworld"
layout="topleft"
name="Sound play btn"
sound_flags="0"
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 0d155fb01e..7fd7eab867 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
@@ -114,16 +114,16 @@
left="6"
name="Keep"
top_pad="5"
- width="100" />
+ width="110" />
<button
follows="right|bottom"
height="22"
- label="Cancel"
+ label="Discard"
layout="topleft"
left_pad="5"
name="Discard"
top_delta="0"
- width="100" />
+ width="110" />
<button
follows="right|bottom"
height="22"
@@ -132,5 +132,5 @@
left_pad="5"
name="save_tex_btn"
top_delta="0"
- width="100" />
+ width="110" />
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
index c3e974d978..663899d4b3 100644
--- a/indra/newview/skins/default/xui/en/floater_script.xml
+++ b/indra/newview/skins/default/xui/en/floater_script.xml
@@ -10,9 +10,9 @@
top="0"
can_dock="true"
can_minimize="true"
- visible="true"
+ visible="false"
width="520"
- can_resize="true"
+ can_resize="false"
min_width="350"
min_height="369">
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_script_limits.xml b/indra/newview/skins/default/xui/en/floater_script_limits.xml
index 98c44ad1b3..6b36cdfcc5 100644
--- a/indra/newview/skins/default/xui/en/floater_script_limits.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_limits.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
+ can_resize="true"
height="570"
help_topic="scriptlimits"
layout="topleft"
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 bb0702c353..d0cd00d147 100644
--- a/indra/newview/skins/default/xui/en/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml
@@ -3,26 +3,24 @@
legacy_header_height="18"
auto_tile="true"
can_resize="true"
- height="550"
+ height="570"
layout="topleft"
- left_delta="343"
min_height="271"
min_width="290"
name="preview lsl text"
help_topic="preview_lsl_text"
save_rect="true"
title="SCRIPT: ROTATION SCRIPT"
- top_delta="0"
- width="500">
+ width="508">
<floater.string
name="Title">
- Script: [NAME]
+ SCRIPT: [NAME]
</floater.string>
<panel
follows="left|top|right|bottom"
- height="508"
+ height="522"
layout="topleft"
- left="0"
+ left="10"
name="script panel"
top="42"
width="497" />
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index 775e7d66f7..9ca18d455b 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -2,16 +2,16 @@
<floater
legacy_header_height="13"
can_resize="true"
- height="546"
+ height="600"
layout="topleft"
- min_height="546"
- min_width="670"
+ min_height="400"
+ min_width="450"
name="floater_search"
help_topic="floater_search"
save_rect="true"
single_instance="true"
title="FIND"
- width="670">
+ width="650">
<floater.string
name="loading_text">
Loading...
@@ -21,20 +21,20 @@
Done
</floater.string>
<layout_stack
- bottom="541"
+ bottom="595"
follows="left|right|top|bottom"
layout="topleft"
left="10"
name="stack1"
top="20"
- width="650">
+ width="630">
<layout_panel
layout="topleft"
left_delta="0"
top_delta="0"
name="browser_layout"
user_resize="false"
- width="650">
+ width="630">
<web_browser
bottom="-10"
follows="left|right|top|bottom"
@@ -42,8 +42,8 @@
left="0"
name="browser"
top="0"
- height="500"
- width="650" />
+ height="555"
+ width="630" />
<text
follows="bottom|left"
height="16"
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index 60c9810e95..1ab3dda52c 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -46,8 +46,11 @@
<ui_ctrl
height="90"
width="90"
+ layout="topleft"
name="thumbnail_placeholder"
top_pad="6"
+ follows="left|top"
+ left="10"
/>
<text
type="string"
@@ -351,10 +354,6 @@
label="Depth"
name="Depth"
value="depth" />
- <combo_box.item
- label="Object Mattes"
- name="ObjectMattes"
- value="objects" />
</combo_box>
<check_box
label="Interface"
diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
index c828f6b284..1935edfcc1 100644
--- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
@@ -72,83 +72,4 @@
name="font_checkbox"
top_pad="14"
width="150" />
-
-<chiclet_im_p2p
- height="25"
- name="im_p2p_chiclet"
- show_speaker="false"
- width="25">
- <chiclet_im_p2p.chiclet_button
- height="25"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- name="chiclet_button"
- tab_stop="false"
- width="25"/>
- <chiclet_im_p2p.speaker
- auto_update="true"
- draw_border="false"
- height="25"
- left="25"
- name="speaker"
- visible="false"
- width="20" />
- <chiclet_im_p2p.avatar_icon
- bottom="3"
- follows="left|top|bottom"
- height="20"
- left="2"
- mouse_opaque="false"
- name="avatar_icon"
- width="21" />
- <chiclet_im_p2p.unread_notifications
- height="25"
- font_halign="center"
- left="25"
- mouse_opaque="false"
- name="unread"
- text_color="white"
- v_pad="5"
- visible="false"
- width="20"/>
- <chiclet_im_p2p.new_message_icon
- bottom="11"
- height="14"
- image_name="Unread_Chiclet"
- left="12"
- name="new_message_icon"
- visible="false"
- width="14" />
-</chiclet_im_p2p>
-
-
-<chiclet_offer
- height="25"
- name="offer_chiclet"
- width="25">
- <chiclet_offer.chiclet_button
- height="25"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- name="chiclet_button"
- tab_stop="false"
- width="25"/>
- <chiclet_offer.icon
- bottom="3"
- default_icon="Generic_Object_Small"
- follows="all"
- height="19"
- left="3"
- mouse_opaque="false"
- name="chiclet_icon"
- width="19" />
- <chiclet_offer.new_message_icon
- bottom="11"
- height="14"
- image_name="Unread_Chiclet"
- left="12"
- name="new_message_icon"
- visible="false"
- width="14" />
-</chiclet_offer>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
index 0f5c5f2be0..209285da2e 100644
--- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
@@ -116,10 +116,10 @@
follows="left|top"
font="SansSerif"
height="20"
- left="0"
+ left="10"
max_length="65536"
name="slurl"
- top_pad="4"
+ top_pad="20"
width="150">
secondlife:///app/agent/00000000-0000-0000-0000-000000000000/inspect
</text>
@@ -127,12 +127,11 @@
follows="left|top"
font="SansSerif"
height="20"
- left="0"
+ left="10"
max_length="65536"
name="slurl_group"
- top_pad="4"
+ top_pad="20"
width="150">
secondlife:///app/group/00000000-0000-0000-0000-000000000000/inspect
</text>
-
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
index dc8f00d5f3..b730f0e511 100644
--- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
@@ -28,4 +28,17 @@
width="200">
This contains long text and should scroll horizontally to the right
</text_editor>
+ <text_editor
+ height="50"
+ follows="top|left|bottom"
+ font="SansSerif"
+ left="10"
+ name="numeric_text_editor"
+ tool_tip="text editor for numeric text entry only"
+ top_pad="10"
+ text_type="int"
+ width="200">
+ This is text that is NOT a number, so shouldn't appear
+ </text_editor>
+
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
index 447bd7f599..80cb2723a0 100644
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -88,7 +88,6 @@
<!-- First column -->
<button
- height="20"
follows="top|left"
label="Button"
layout="topleft"
@@ -100,7 +99,6 @@
<!-- "flyout_button" is a button that can spawn a menu -->
<flyout_button
follows="top|left"
- height="20"
label="Flyout"
layout="topleft"
left_delta="0"
@@ -136,7 +134,6 @@
<combo_box
bottom_delta="35"
follows="top|left"
- height="16"
width="150"
label="Combobox"
layout="topleft"
@@ -343,12 +340,10 @@ line to actually fit
<tab_container
follows="all"
height="400"
- halign="center"
layout="topleft"
left="525"
name="group_tab_container"
tab_position="top"
- tab_height="20"
tool_tip="tab container"
top="80"
width="300">
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index f1aa5c27c1..d989282b9f 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -67,80 +67,75 @@
</floater.string>
<button
follows="left|top"
- height="20"
- image_disabled="Tool_Zoom"
- image_disabled_selected="Tool_Zoom"
- image_selected="Tool_Zoom"
- image_unselected="Tool_Zoom"
+ height="25"
+ image_bottom_pad="1"
+ image_overlay="Tool_Zoom"
+ image_selected="PushButton_Selected_Press"
layout="topleft"
left="10"
name="button focus"
tool_tip="Focus"
- width="20">
+ width="35">
<button.commit_callback
function="BuildTool.setTool"
parameter="Focus" />
</button>
<button
follows="left|top"
- height="20"
- image_disabled="Tool_Grab"
- image_disabled_selected="Tool_Grab"
- image_selected="Tool_Grab"
- image_unselected="Tool_Grab"
+ height="25"
+ image_bottom_pad="1"
+ image_overlay="Tool_Grab"
+ image_selected="PushButton_Selected_Press"
layout="topleft"
- left_pad="20"
+ left_pad="10"
name="button move"
tool_tip="Move"
- width="20">
+ width="35">
<button.commit_callback
function="BuildTool.setTool"
parameter="Move" />
</button>
<button
follows="left|top"
- height="20"
- image_disabled="Tool_Face"
- image_disabled_selected="Tool_Face"
- image_selected="Tool_Face"
- image_unselected="Tool_Face"
+ height="25"
+ image_bottom_pad="1"
+ image_overlay="Tool_Face"
+ image_selected="PushButton_Selected_Press"
layout="topleft"
- left_pad="20"
+ left_pad="10"
name="button edit"
tool_tip="Edit"
- width="20">
+ width="35">
<button.commit_callback
function="BuildTool.setTool"
parameter="Edit" />
</button>
<button
follows="left|top"
- height="20"
- image_disabled="Tool_Create"
- image_disabled_selected="Tool_Create"
- image_selected="Tool_Create"
- image_unselected="Tool_Create"
+ height="25"
+ image_bottom_pad="1"
+ image_overlay="Tool_Create"
+ image_selected="PushButton_Selected_Press"
layout="topleft"
- left_pad="20"
+ left_pad="10"
name="button create"
tool_tip="Create"
- width="20">
+ width="35">
<button.commit_callback
function="BuildTool.setTool"
parameter="Create" />
</button>
<button
follows="left|top"
- height="20"
- image_disabled="Tool_Dozer"
- image_disabled_selected="Tool_Dozer"
- image_selected="Tool_Dozer"
- image_unselected="Tool_Dozer"
+ height="25"
+ image_bottom_pad="1"
+ image_overlay="Tool_Dozer"
+ image_selected="PushButton_Selected_Press"
layout="topleft"
- left_pad="20"
+ left_pad="10"
name="button land"
tool_tip="Land"
- width="20">
+ width="35">
<button.commit_callback
function="BuildTool.setTool"
parameter="Land" />
@@ -344,7 +339,7 @@
height="20"
image_disabled="Object_Cube"
image_disabled_selected="Object_Cube"
- image_selected="Object_Cube"
+ image_selected="Object_Cube_Selected"
image_unselected="Object_Cube"
layout="topleft"
left="4"
@@ -357,7 +352,7 @@
height="20"
image_disabled="Object_Prism"
image_disabled_selected="Object_Prism"
- image_selected="Object_Prism"
+ image_selected="Object_Prism_Selected"
image_unselected="Object_Prism"
layout="topleft"
left_delta="26"
@@ -370,7 +365,7 @@
height="20"
image_disabled="Object_Pyramid"
image_disabled_selected="Object_Pyramid"
- image_selected="Object_Pyramid"
+ image_selected="Object_Pyramid_Selected"
image_unselected="Object_Pyramid"
layout="topleft"
left_delta="26"
@@ -383,7 +378,7 @@
height="20"
image_disabled="Object_Tetrahedron"
image_disabled_selected="Object_Tetrahedron"
- image_selected="Object_Tetrahedron"
+ image_selected="Object_Tetrahedron_Selected"
image_unselected="Object_Tetrahedron"
layout="topleft"
left_delta="26"
@@ -396,7 +391,7 @@
height="20"
image_disabled="Object_Cylinder"
image_disabled_selected="Object_Cylinder"
- image_selected="Object_Cylinder"
+ image_selected="Object_Cylinder_Selected"
image_unselected="Object_Cylinder"
layout="topleft"
left_delta="26"
@@ -409,7 +404,7 @@
height="20"
image_disabled="Object_Hemi_Cylinder"
image_disabled_selected="Object_Hemi_Cylinder"
- image_selected="Object_Hemi_Cylinder"
+ image_selected="Object_Hemi_Cylinder_Selected"
image_unselected="Object_Hemi_Cylinder"
layout="topleft"
left_delta="26"
@@ -422,7 +417,7 @@
height="20"
image_disabled="Object_Cone"
image_disabled_selected="Object_Cone"
- image_selected="Object_Cone"
+ image_selected="Object_Cone_Selected"
image_unselected="Object_Cone"
layout="topleft"
left_delta="26"
@@ -435,7 +430,7 @@
height="20"
image_disabled="Object_Hemi_Cone"
image_disabled_selected="Object_Hemi_Cone"
- image_selected="Object_Hemi_Cone"
+ image_selected="Object_Hemi_Cone_Selected"
image_unselected="Object_Hemi_Cone"
layout="topleft"
left_delta="26"
@@ -448,7 +443,7 @@
height="20"
image_disabled="Object_Sphere"
image_disabled_selected="Object_Sphere"
- image_selected="Object_Sphere"
+ image_selected="Object_Sphere_Selected"
image_unselected="Object_Sphere"
layout="topleft"
left_delta="26"
@@ -461,7 +456,7 @@
height="20"
image_disabled="Object_Hemi_Sphere"
image_disabled_selected="Object_Hemi_Sphere"
- image_selected="Object_Hemi_Sphere"
+ image_selected="Object_Hemi_Sphere_Selected"
image_unselected="Object_Hemi_Sphere"
layout="topleft"
left_delta="26"
@@ -474,7 +469,7 @@
height="20"
image_disabled="Object_Torus"
image_disabled_selected="Object_Torus"
- image_selected="Object_Torus"
+ image_selected="Object_Torus_Selected"
image_unselected="Object_Torus"
layout="topleft"
left="4"
@@ -487,7 +482,7 @@
height="20"
image_disabled="Object_Tube"
image_disabled_selected="Object_Tube"
- image_selected="Object_Tube"
+ image_selected="Object_Tube_Selected"
image_unselected="Object_Tube"
layout="topleft"
left_delta="26"
@@ -500,7 +495,7 @@
height="20"
image_disabled="Object_Ring"
image_disabled_selected="Object_Ring"
- image_selected="Object_Ring"
+ image_selected="Object_Ring_Selected"
image_unselected="Object_Ring"
layout="topleft"
left_delta="26"
@@ -513,7 +508,7 @@
height="20"
image_disabled="Object_Tree"
image_disabled_selected="Object_Tree"
- image_selected="Object_Tree"
+ image_selected="Object_Tree_Selected"
image_unselected="Object_Tree"
layout="topleft"
left_delta="26"
@@ -526,8 +521,9 @@
height="20"
image_disabled="Object_Grass"
image_disabled_selected="Object_Grass"
- image_selected="Object_Grass"
+ image_selected="Object_Grass_Selected"
image_unselected="Object_Grass"
+ image_overlay_color="Red"
layout="topleft"
left_delta="26"
name="ToolGrass"
@@ -1042,7 +1038,7 @@ even though the user gets a free copy.
<check_box
height="15"
width="110"
- top_pad="3"
+ top_pad="5"
label="Show in search"
layout="topleft"
left="100"
@@ -2789,6 +2785,9 @@ even though the user gets a free copy.
name="button permissions"
width="130" />
<panel_inventory_object
+ border="true"
+ border_visible="true"
+ bevel_style="in"
follows="left|top"
height="325"
layout="topleft"
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 65c9c2a8fa..86ac7c8e54 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -4,7 +4,7 @@
can_resize="true"
center_horiz="true"
center_vert="true"
- height="535"
+ height="600"
layout="topleft"
min_height="520"
min_width="520"
@@ -14,16 +14,16 @@
save_visibility="true"
single_instance="true"
title="WORLD MAP"
- width="800">
+ width="650">
<panel
filename="panel_world_map.xml"
follows="all"
- height="500"
+ height="555"
layout="topleft"
left="10"
name="objects_mapview"
top="25"
- width="542" />
+ width="375" />
<panel
name="layout_panel_1"
height="22"
@@ -279,12 +279,12 @@
<icon
follows="top|right"
height="16"
- image_name="map_event.tga"
+ image_name="Parcel_PG_Dark"
layout="topleft"
mouse_opaque="true"
name="event"
left_pad="0"
- width="16" />
+ width="18" />
<text
type="string"
length="1"
@@ -312,13 +312,13 @@
<icon
follows="top|right"
height="16"
- image_name="map_event_mature.tga"
+ image_name="Parcel_M_Dark"
layout="topleft"
mouse_opaque="true"
name="events_mature_icon"
top_delta="0"
left_pad="0"
- width="16" />
+ width="18" />
<text
type="string"
length="1"
@@ -345,13 +345,13 @@
<icon
follows="top|right"
height="16"
- image_name="map_event_adult.tga"
+ image_name="Parcel_R_Dark"
layout="topleft"
left_pad="0"
mouse_opaque="true"
name="events_adult_icon"
top_delta="0"
- width="16" />
+ width="18" />
<text
type="string"
length="1"
@@ -394,7 +394,7 @@
<panel
follows="right|top|bottom"
- height="270"
+ height="310"
top_pad="0"
width="238">
<icon
@@ -403,7 +403,7 @@
height="16"
image_name="map_track_16.tga"
layout="topleft"
- left="5"
+ left="3"
top="11"
mouse_opaque="true"
name="friends_icon"
@@ -415,7 +415,7 @@
label="Online Friends"
layout="topleft"
top_delta="-4"
- left_pad="5"
+ left_pad="7"
max_chars="60"
name="friend combo"
tool_tip="Show friends on map"
@@ -433,7 +433,7 @@
height="16"
image_name="map_track_16.tga"
layout="topleft"
- left="5"
+ left="3"
top_pad="8"
mouse_opaque="true"
name="landmark_icon"
@@ -445,7 +445,7 @@
label="My Landmarks"
layout="topleft"
top_delta="-3"
- left_pad="5"
+ left_pad="7"
max_chars="64"
name="landmark combo"
tool_tip="Landmark to show on map"
@@ -463,7 +463,7 @@
height="16"
image_name="map_track_16.tga"
layout="topleft"
- left="5"
+ left="3"
top_pad="7"
mouse_opaque="true"
name="region_icon"
@@ -476,7 +476,7 @@
label="Regions by Name"
layout="topleft"
top_delta="-2"
- left_pad="5"
+ left_pad="7"
name="location"
select_on_focus="true"
tool_tip="Type the name of a region"
@@ -497,15 +497,28 @@
<button.commit_callback
function="WMap.Location" />
</button>
+ <button
+ image_overlay="Refresh_Off"
+ follows="top|right"
+ height="23"
+ layout="topleft"
+ left="0"
+ name="Clear"
+ tool_tip="Clear tracking lines and reset map"
+ top_pad="5"
+ width="23">
+ <button.commit_callback
+ function="WMap.Clear" />
+ </button>
<scroll_list
draw_stripes="false"
bg_writeable_color="MouseGray"
follows="all"
- height="115"
+ height="145"
layout="topleft"
left="28"
name="search_results"
- top_pad="5"
+ top_pad="-23"
width="209"
sort_column="1">
<scroll_list.columns
@@ -545,19 +558,6 @@
<button.commit_callback
function="WMap.CopySLURL" />
</button>
- <!-- <button
- follows="right|bottom"
- height="23"
- label="Clear"
- layout="topleft"
- left="10"
- name="Clear"
- tool_tip="Stop tracking"
- top_pad="5"
- width="105">
- <button.commit_callback
- function="WMap.Clear" />
- </button>-->
<button
enabled="false"
follows="right|bottom"
diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml
index 9796f7b5b6..194ae151d2 100644
--- a/indra/newview/skins/default/xui/en/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml
@@ -123,7 +123,7 @@
<button
follows="top|left"
height="20"
- label="More"
+ label="Profile"
layout="topleft"
name="view_profile_btn"
left_delta="96"
diff --git a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
new file mode 100644
index 0000000000..39fb54d513
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
@@ -0,0 +1,9 @@
+<button
+ chrome="true"
+ image_selected="Info_Small"
+ image_unselected="Info_Small"
+ image_pressed="Info_Small"
+ height="12"
+ name="inspector_info_ctrl"
+ width="12" />
+ \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index 1d4377e339..7b6081d7be 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -162,6 +162,12 @@
mouse_opaque="false"
name="Menu Holder"
width="1024"/>
+ <panel top="0"
+ follows="all"
+ height="768"
+ mouse_opaque="false"
+ name="popup_holder"
+ width="1024"/>
<snapshot_floater_view enabled="false"
follows="all"
height="768"
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
index 9212d2d648..1e32cfd9df 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
@@ -13,11 +13,11 @@
function="Self.EnableStandUp" />
</menu_item_call>
<context_menu
- label="Take Off &gt;"
+ label="Take Off ▶"
layout="topleft"
name="Take Off &gt;">
<context_menu
- label="Clothes &gt;"
+ label="Clothes ▶"
layout="topleft"
name="Clothes &gt;">
<menu_item_call
@@ -151,7 +151,7 @@
<menu_item_call.on_enable
function="Edit.EnableTakeOff"
parameter="alpha" />
- </menu_item_call>
+ </menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_call
@@ -164,11 +164,11 @@
</menu_item_call>
</context_menu>
<context_menu
- label="HUD &gt;"
+ label="HUD ▶"
layout="topleft"
name="Object Detach HUD" />
<context_menu
- label="Detach &gt;"
+ label="Detach ▶"
layout="topleft"
name="Object Detach" />
<menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
index 85ec174829..1b002b1c32 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -116,4 +116,10 @@
<menu_item_call.on_click
function="InspectAvatar.Pay"/>
</menu_item_call>
+ <menu_item_call
+ label="Share"
+ name="share">
+ <menu_item_call.on_click
+ function="InspectAvatar.Share"/>
+ </menu_item_call>
</menu>
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index 1e10467148..2874151df5 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -370,6 +370,14 @@
layout="topleft"
name="Outfit Separator" />
<menu_item_call
+ label="Find Original"
+ layout="topleft"
+ name="Find Original">
+ <menu_item_call.on_click
+ function="Inventory.DoToSelected"
+ parameter="goto" />
+ </menu_item_call>
+ <menu_item_call
label="Purge Item"
layout="topleft"
name="Purge Item">
@@ -386,14 +394,6 @@
parameter="restore" />
</menu_item_call>
<menu_item_call
- label="Find Original"
- layout="topleft"
- name="Find Original">
- <menu_item_call.on_click
- function="Inventory.DoToSelected"
- parameter="goto" />
- </menu_item_call>
- <menu_item_call
label="Open"
layout="topleft"
name="Open">
@@ -516,7 +516,7 @@
layout="topleft"
name="Animation Separator" />
<menu_item_call
- label="Play in World"
+ label="Play Inworld"
layout="topleft"
name="Animation Play">
<menu_item_call.on_click
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index bbe6892b27..ba74104594 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -60,6 +60,7 @@
</menu_item_call>
</menu>
<menu
+ visible="false"
create_jump_keys="true"
label="Debug"
name="Debug"
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 35518cd13b..d66818e91a 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -65,7 +65,7 @@
</menu_item_call>
<menu_item_separator layout="topleft" />
<context_menu
- label="Put On &gt;"
+ label="Put On ▶"
name="Put On" >
<menu_item_call
enabled="false"
@@ -77,26 +77,16 @@
function="Object.EnableWear" />
</menu_item_call>
<context_menu
- label="Attach &gt;"
+ label="Attach ▶"
name="Object Attach" />
<context_menu
- label="Attach HUD &gt;"
+ label="Attach HUD ▶"
name="Object Attach HUD" />
</context_menu>
<context_menu
- label="Remove &gt;"
+ label="Remove ▶"
name="Remove">
<menu_item_call
- enabled="false"
- label="Take"
- name="Pie Object Take">
- <menu_item_call.on_click
- function="Tools.BuyOrTake" />
- <menu_item_call.on_enable
- function="Tools.EnableBuyOrTake"
- parameter="Buy,Take" />
- </menu_item_call>
- <menu_item_call
enabled="false"
label="Report Abuse"
name="Report Abuse...">
@@ -134,6 +124,16 @@
</menu_item_call>
</context_menu>
<menu_item_separator layout="topleft" />
+ <menu_item_call
+ enabled="false"
+ label="Take"
+ name="Pie Object Take">
+ <menu_item_call.on_click
+ function="Tools.BuyOrTake" />
+ <menu_item_call.on_enable
+ function="Tools.EnableBuyOrTake"
+ parameter="Buy,Take" />
+ </menu_item_call>
<menu_item_call
enabled="false"
label="Take Copy"
diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml
index 805ffbae66..d03a7e3d41 100644
--- a/indra/newview/skins/default/xui/en/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml
@@ -78,6 +78,9 @@
name="Pay">
<menu_item_call.on_click
function="Avatar.Pay" />
+ <menu_item_call.on_enable
+ function="ParticipantList.EnableItem"
+ parameter="can_pay" />
</menu_item_call>
<menu_item_separator
layout="topleft" />
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
index c4da1df017..014a52bb4f 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
@@ -20,6 +20,16 @@
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">
@@ -37,6 +47,16 @@
parameter="can_call" />
</menu_item_call>
<menu_item_call
+ label="Map"
+ layout="topleft"
+ name="Map">
+ <menu_item_call.on_click
+ function="Avatar.ShowOnMap" />
+ <menu_item_call.on_enable
+ function="Avatar.EnableItem"
+ parameter="can_show_on_map" />
+ </menu_item_call>
+ <menu_item_call
label="Share"
layout="topleft"
name="Share">
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
index 0d3dd3366d..588342595e 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
@@ -14,6 +14,16 @@
parameter="can_add" />
</menu_item_call>
<menu_item_call
+ label="Remove Friends"
+ 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">
diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
index 9b3948b29b..3e38503e43 100644
--- a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
+++ b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
@@ -45,6 +45,9 @@
<on_click
function="Places.LandmarksGear.CopyPaste.Action"
parameter="copy" />
+ <on_enable
+ function="Places.LandmarksGear.Enable"
+ parameter="copy" />
</menu_item_call>
<menu_item_call
label="Paste"
@@ -88,6 +91,9 @@
<on_click
function="Places.LandmarksGear.Folding.Action"
parameter="expand" />
+ <on_enable
+ function="Places.LandmarksGear.Enable"
+ parameter="expand" />
</menu_item_call>
<menu_item_call
label="Collapse"
@@ -96,6 +102,9 @@
<on_click
function="Places.LandmarksGear.Folding.Action"
parameter="collapse" />
+ <on_enable
+ function="Places.LandmarksGear.Enable"
+ parameter="collapse" />
</menu_item_call>
<menu_item_call
label="Expand all folders"
diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
index 1dc1c610cf..5162a4902f 100644
--- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
@@ -19,6 +19,22 @@
<menu_item_call.on_click
function="Profile.Share" />
</menu_item_call>
+ <menu_item_call
+ label="Block"
+ name="block">
+ <menu_item_call.on_click
+ function="Profile.BlockUnblock"/>
+ <menu_item_call.on_visible
+ function="Profile.EnableBlock" />
+ </menu_item_call>
+ <menu_item_call
+ label="Unblock"
+ name="unblock">
+ <menu_item_call.on_click
+ function="Profile.BlockUnblock"/>
+ <menu_item_call.on_visible
+ function="Profile.EnableUnblock" />
+ </menu_item_call>
<menu_item_call
label="Kick"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index a98a049c17..4c4867b862 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -55,9 +55,10 @@
</menu_item_call>
<menu_item_check
label="My Inventory"
- layout="topleft"
name="Inventory"
- shortcut="control|shift|I">
+ layout="topleft"
+ shortcut="control|shift|I"
+ visible="false">
<menu_item_check.on_check
function="Floater.Visible"
parameter="inventory" />
@@ -65,24 +66,31 @@
function="Floater.Toggle"
parameter="inventory" />
</menu_item_check>
- <menu_item_call
- label="Show Inventory in Side Tray"
+ <menu_item_check
+ label="My Inventory"
name="ShowSidetrayInventory"
+ layout="topleft"
shortcut="control|I"
- visible="false">
- <menu_item_call.on_click
+ visible="true">
+ <menu_item_check.on_check
+ function="SidetrayPanelVisible"
+ parameter="sidepanel_inventory" />
+ <menu_item_check.on_click
function="ShowSidetrayPanel"
parameter="sidepanel_inventory" />
- </menu_item_call>
- <menu_item_call
+ </menu_item_check>
+ <menu_item_check
label="My Gestures"
layout="topleft"
name="Gestures"
shortcut="control|G">
- <menu_item_call.on_click
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ parameter="gestures" />
+ <menu_item_check.on_click
function="Floater.Toggle"
parameter="gestures" />
- </menu_item_call>
+ </menu_item_check>
<menu
label="My Status"
layout="topleft"
@@ -186,18 +194,6 @@
function="SideTray.PanelPeopleTab"
parameter="nearby_panel" />
</menu_item_call>
- <menu_item_check
- label="Nearby Media"
- layout="topleft"
- name="Nearby Media"
- shortcut="control|alt|N">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="nearby_media" />
- <menu_item_check.on_click
- function="Floater.Toggle"
- parameter="nearby_media" />
- </menu_item_check>
</menu>
<menu
label="World"
@@ -303,8 +299,7 @@
function="Floater.Visible"
parameter="moveview" />
<menu_item_check.on_click
- function="Floater.Toggle"
- parameter="moveview" />
+ function="World.Toggle.MovementControls" />
</menu_item_check>
<menu_item_check
label="View Controls"
@@ -314,8 +309,7 @@
function="Floater.Visible"
parameter="camera" />
<menu_item_check.on_click
- function="Floater.Toggle"
- parameter="camera" />
+ function="World.Toggle.CameraControls" />
</menu_item_check>
<menu_item_check
label="Ban Lines"
@@ -360,6 +354,24 @@
function="ToggleControl"
parameter="ShowParcelOwners" />
</menu_item_check>
+ <menu_item_check
+ label="Coordinates"
+ name="Coordinates">
+ <menu_item_check.on_click
+ function="ToggleControl"
+ parameter="NavBarShowCoordinates" />
+ <menu_item_check.on_check
+ control="NavBarShowCoordinates" />
+ </menu_item_check>
+ <menu_item_check
+ label="Parcel Properties"
+ name="Parcel Properties">
+ <menu_item_check.on_click
+ function="ToggleControl"
+ parameter="NavBarShowParcelProperties" />
+ <menu_item_check.on_check
+ control="NavBarShowParcelProperties" />
+ </menu_item_check>
</menu>
<menu_item_separator
layout="topleft" />
@@ -662,6 +674,18 @@
<menu_item_call.on_enable
function="Tools.EnableUnlink" />
</menu_item_call>
+ <menu_item_check
+ label="Edit Linked Parts"
+ layout="topleft"
+ name="Edit Linked Parts">
+ <menu_item_check.on_check
+ control="EditLinkedParts" />
+ <menu_item_check.on_click
+ function="Tools.EditLinkedParts"
+ parameter="EditLinkedParts" />
+ <menu_item_check.on_enable
+ function="Tools.EnableToolNotPie" />
+ </menu_item_check>
<menu_item_separator
layout="topleft" />
<menu_item_call
@@ -799,18 +823,6 @@
layout="topleft"
name="Options"
tear_off="true">
- <menu_item_check
- label="Edit Linked Parts"
- layout="topleft"
- name="Edit Linked Parts">
- <menu_item_check.on_check
- control="EditLinkedParts" />
- <menu_item_check.on_click
- function="Tools.EditLinkedParts"
- parameter="EditLinkedParts" />
- <menu_item_check.on_enable
- function="Tools.EnableToolNotPie" />
- </menu_item_check>
<menu_item_call
label="Set Default Upload Permissions"
layout="topleft"
@@ -819,10 +831,10 @@
function="Floater.Toggle"
parameter="perm_prefs" />
</menu_item_call>
- <menu_item_check
- label="Show Advanced Permissions"
- layout="topleft"
- name="DebugPermissions">
+ <menu_item_check
+ label="Show Advanced Permissions"
+ layout="topleft"
+ name="DebugPermissions">
<menu_item_check.on_check
function="CheckControl"
parameter="DebugPermissions" />
@@ -832,13 +844,7 @@
</menu_item_check>
<menu_item_separator
layout="topleft" />
- <menu
- create_jump_keys="true"
- label="Selection"
- layout="topleft"
- name="Selection"
- tear_off="true">
- <menu_item_check
+ <menu_item_check
label="Select Only My Objects"
layout="topleft"
name="Select Only My Objects">
@@ -866,14 +872,9 @@
control="RectangleSelectInclusive" />
<menu_item_check.on_click
function="Tools.SelectBySurrounding" />
- </menu_item_check>
- </menu>
- <menu
- create_jump_keys="true"
- label="Show"
- layout="topleft"
- name="Show"
- tear_off="true">
+ </menu_item_check>
+ <menu_item_separator
+ layout="topleft" />
<menu_item_check
label="Show Hidden Selection"
layout="topleft"
@@ -902,13 +903,8 @@
function="ToggleControl"
parameter="ShowSelectionBeam" />
</menu_item_check>
- </menu>
- <menu
- create_jump_keys="true"
- label="Grid"
- layout="topleft"
- name="Grid"
- tear_off="true">
+ <menu_item_separator
+ layout="topleft" />
<menu_item_check
label="Snap to Grid"
layout="topleft"
@@ -953,7 +949,6 @@
<menu_item_call.on_enable
function="Tools.EnableToolNotPie" />
</menu_item_call>
- </menu>
</menu>
<menu
create_jump_keys="true"
@@ -1611,6 +1606,17 @@
name="Shortcuts"
tear_off="true"
visible="false">
+ <menu_item_call
+ label="Image (L$[COST])..."
+ layout="topleft"
+ name="Upload Image"
+ shortcut="control|U">
+ <menu_item_call.on_click
+ function="File.UploadImage"
+ parameter="" />
+ <menu_item_call.on_enable
+ function="File.EnableUpload" />
+ </menu_item_call>
<menu_item_check
label="Search"
layout="topleft"
@@ -2015,6 +2021,18 @@
function="Advanced.ToggleHUDInfo"
parameter="fov" />
</menu_item_check>
+ <menu_item_check
+ label="Badge"
+ layout="topleft"
+ name="Badge"
+ shortcut="alt|control|shift|h">
+ <menu_item_check.on_check
+ function="Advanced.CheckHUDInfo"
+ parameter="badge" />
+ <menu_item_check.on_click
+ function="Advanced.ToggleHUDInfo"
+ parameter="badge" />
+ </menu_item_check>
</menu>
<menu
create_jump_keys="true"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 636db2b59b..8f1812830f 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -19,7 +19,7 @@
<button
default="true"
index="0"
- name="OK"
+ name="OK_okbutton"
text="$yestext"/>
</form>
</template>
@@ -29,7 +29,7 @@
<button
default="true"
index="0"
- name="OK"
+ name="OK_okignore"
text="$yestext"/>
<ignore text="$ignoretext"/>
</form>
@@ -40,11 +40,11 @@
<button
default="true"
index="0"
- name="OK"
+ name="OK_okcancelbuttons"
text="$yestext"/>
<button
index="1"
- name="Cancel"
+ name="Cancel_okcancelbuttons"
text="$notext"/>
</form>
</template>
@@ -54,11 +54,11 @@
<button
default="true"
index="0"
- name="OK"
+ name="OK_okcancelignore"
text="$yestext"/>
<button
index="1"
- name="Cancel"
+ name="Cancel_okcancelignore"
text="$notext"/>
<ignore text="$ignoretext"/>
</form>
@@ -69,7 +69,7 @@
<button
default="true"
index="0"
- name="OK"
+ name="OK_okhelpbuttons"
text="$yestext"/>
<button
index="1"
@@ -91,7 +91,7 @@
text="$notext"/>
<button
index="2"
- name="Cancel"
+ name="Cancel_yesnocancelbuttons"
text="$canceltext"/>
</form>
</template>
@@ -391,19 +391,23 @@ Add this Ability to &apos;[ROLE_NAME]&apos;?
notext="No"
yestext="Yes"/>
</notification>
-
<notification
- icon="alertmodal.tga"
- name="ClickUnimplemented"
- type="alertmodal">
-Sorry, not implemented yet.
+ icon="alertmodal.tga"
+ name="JoinGroupCanAfford"
+ type="alertmodal">
+Joining this group costs L$[COST].
+Do you wish to proceed?
+ <usetemplate
+ name="okcancelbuttons"
+ notext="Cancel"
+ yestext="Join"/>
</notification>
<notification
icon="alertmodal.tga"
- name="JoinGroupCanAfford"
+ name="JoinGroupNoCost"
type="alertmodal">
-Joining this group costs L$[COST].
+You are joining group [NAME].
Do you wish to proceed?
<usetemplate
name="okcancelbuttons"
@@ -411,6 +415,7 @@ Do you wish to proceed?
yestext="Join"/>
</notification>
+
<notification
icon="alertmodal.tga"
name="JoinGroupCannotAfford"
@@ -609,7 +614,7 @@ To place the media on only one face, choose Select Face and click on the desired
notext="Cancel"
yestext="OK"/>
</notification>
-
+
<notification
icon="alertmodal.tga"
name="MustBeInParcel"
@@ -780,7 +785,7 @@ Save changes to classified [NAME]?
notext="Don&apos;t Save"
yestext="Save"/>
</notification>
-
+
<notification
icon="alertmodal.tga"
name="ClassifiedInsufficientFunds"
@@ -831,7 +836,7 @@ Please select a proposal to view.
Please select a history item to view.
</notification>
-<!--
+<!--
<notification
icon="alertmodal.tga"
name="ResetShowNextTimeDialogs"
@@ -1029,10 +1034,10 @@ Unable to write file [[FILE]]
icon="alertmodal.tga"
name="UnsupportedHardware"
type="alertmodal">
-Warning: Your system does not meet [APP_NAME]&apos;s minimum system requirements. If you continue using [APP_NAME], you may experience poor performance. Unfortunately, the [SUPPORT_SITE] cannot provide technical support for unsupported system configurations.
+Just so you know, your computer does not meet [APP_NAME]&apos;s minimum system requirements. You may experience poor performance. Unfortunately, the [SUPPORT_SITE] can't provide technical support for unsupported system configurations.
MINSPECS
-Do you wish to visit [_URL] for more information?
+Visit [_URL] for more information?
<url option="0" name="url">
http://www.secondlife.com/corporate/sysreqs.php
@@ -1048,8 +1053,8 @@ Do you wish to visit [_URL] for more information?
icon="alertmodal.tga"
name="UnknownGPU"
type="alertmodal">
-Your system contains a graphics card that is unknown to [APP_NAME] at this time.
-This is often the case with new hardware that hasn&apos;t been tested yet with [APP_NAME]. [APP_NAME] will most likely run properly, but you may need to adjust your graphics settings to something more appropriate.
+Your system contains a graphics card that [APP_NAME] doesn't recognize.
+This is often the case with new hardware that hasn&apos;t been tested yet with [APP_NAME]. It will probably be ok, but you may need to adjust your graphics settings.
(Me &gt; Preferences &gt; Graphics).
<form name="form">
<ignore name="ignore"
@@ -1527,7 +1532,7 @@ Your search terms were too short so no search was performed.
icon="alertmodal.tga"
name="CouldNotTeleportReason"
type="alertmodal">
-Could not teleport.
+Teleport failed.
[REASON]
</notification>
@@ -1728,21 +1733,6 @@ Try selecting a single parcel.
<notification
icon="alertmodal.tga"
- name="ParcelCanPlayMedia"
- type="alertmodal">
-This location can play streaming media.
-Streaming media requires a fast Internet connection.
-
-Play streaming media when available?
-(You can change this option later under Preferences &gt; Privacy.)
- <usetemplate
- name="okcancelbuttons"
- notext="Disable"
- yestext="Play Media"/>
- </notification>
-
- <notification
- icon="alertmodal.tga"
name="CannotDeedLandWaitingForServer"
type="alertmodal">
Unable to deed land:
@@ -1980,9 +1970,8 @@ This is usually a temporary failure. Please customize and save the wearable agai
icon="alertmodal.tga"
name="YouHaveBeenLoggedOut"
type="alertmodal">
-You have been logged out of [SECOND_LIFE]:
+Darn. You have been logged out of [SECOND_LIFE]
[MESSAGE]
-You can still look at existing IM and chat by clicking &apos;View IM &amp; Chat&apos;. Otherwise, click &apos;Quit&apos; to exit [APP_NAME] immediately.
<usetemplate
name="okcancelbuttons"
notext="Quit"
@@ -2308,6 +2297,9 @@ Display settings have been set to recommended levels based on your system config
name="ErrorMessage"
type="alertmodal">
[ERROR_MESSAGE]
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
</notification>
<notification
@@ -3847,7 +3839,7 @@ Are you sure you want to quit?
<notification
icon="alertmodal.tga"
name="HelpReportAbuseEmailLL"
- type="alertmodal">
+ type="alert">
Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards].
All reported abuses are investigated and resolved.
@@ -4643,7 +4635,7 @@ Please select at least one type of content to search (General, Moderate, or Adul
type="notify">
[MESSAGE]
</notification>
-
+
<notification
icon="notify.tga"
name="EventNotification"
@@ -4759,7 +4751,7 @@ The objects on the selected parcel that are NOT owned by you have been returned
name="ServerObjectMessage"
type="notify">
Message from [NAME]:
-[MSG]
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
</notification>
<notification
@@ -5173,7 +5165,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
text="Decline"/>
</form>
</notification>
-
+
<notification
icon="notify.tga"
name="FriendshipOffered"
@@ -5213,9 +5205,23 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
type="notify">
[NAME] declined your friendship offer.
</notification>
+
+ <notification
+ icon="notify.tga"
+ name="FriendshipAcceptedByMe"
+ type="offer">
+Friendship offer accepted.
+ </notification>
<notification
icon="notify.tga"
+ name="FriendshipDeclinedByMe"
+ type="offer">
+Friendship offer declined.
+ </notification>
+
+ <notification
+ icon="notify.tga"
name="OfferCallingCard"
type="notify">
[FIRST] [LAST] is offering their calling card.
@@ -5423,8 +5429,8 @@ Your L$ balance will be updated when processing completes. If processing takes m
The status of your payment can be checked on your Transaction History page on your [http://secondlife.com/account/ Dashboard]
</notification>
-
-<!--
+
+<!--
<notification
icon="notify.tga"
name="FirstSit"
@@ -5451,7 +5457,7 @@ You have opened the Build Tools. Every object you see around you was created usi
</notification>
-->
-<!--
+<!--
<notification
icon="notify.tga"
name="FirstLeftClickNoHit"
@@ -5537,7 +5543,7 @@ To toggle this menu,
type="notify">
You are editing a Sculpted prim. Sculpties require a special texture to define their shape.
</notification>
--->
+-->
<!--
<notification
@@ -5826,7 +5832,7 @@ A SLurl was received from an untrusted browser and has been blocked for your sec
priority="high"
type="notifytip">
Multiple SLurls were received from an untrusted browser within a short period.
-They will be blocked for a few seconds for your security.
+They will be blocked for a few seconds for your security.
</notification>
<notification name="IMToast" type="notifytoast">
diff --git a/indra/newview/skins/default/xui/en/panel_active_object_row.xml b/indra/newview/skins/default/xui/en/panel_active_object_row.xml
index 7657fb8055..bef5f8dafd 100644
--- a/indra/newview/skins/default/xui/en/panel_active_object_row.xml
+++ b/indra/newview/skins/default/xui/en/panel_active_object_row.xml
@@ -10,10 +10,6 @@
background_opaque="false"
background_visible="true"
bg_alpha_color="0.0 0.0 0.0 0.0" >
- <string
- name="unknown_obj">
- Unknown Object
- </string>
<chiclet_script
name="object_chiclet"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
index c605975c8e..1e2e74f882 100644
--- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
@@ -75,6 +75,7 @@
height="16"
image_pressed="Info_Press"
image_unselected="Info_Over"
+ layout="topleft"
left_pad="3"
right="-53"
name="info_btn"
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index aad55685d2..4c5d5a1b96 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -47,7 +47,7 @@
min_height="23"
width="310"
top="4"
- min_width="188"
+ min_width="216"
name="chat_bar"
user_resize="false"
filename="panel_nearby_chat_bar.xml" />
@@ -60,7 +60,7 @@
min_height="28"
width="100"
top_delta="0"
- min_width="54"
+ min_width="100"
name="speak_panel"
user_resize="false">
<talk_button
@@ -73,6 +73,11 @@
name="talk"
top="5"
width="100">
+ <speak_button
+ name="speak_btn"
+ label="Speak"
+ label_selected="Speak"
+ />
<show_button>
<show_button.init_callback
function="Button.SetDockableFloaterToggle"
@@ -100,7 +105,7 @@
min_height="28"
width="82"
top_delta="0"
- min_width="52"
+ min_width="62"
name="gesture_panel"
user_resize="false">
<gesture_combo_list
@@ -247,12 +252,12 @@
<layout_panel
mouse_opaque="false"
follows="left|right"
- height="29"
+ height="30"
layout="topleft"
top="0"
name="chiclet_list_panel"
width="189"
- min_width="110"
+ min_width="60"
user_resize="false"
auto_resize="true">
<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
@@ -260,12 +265,12 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
<chiclet_panel
mouse_opaque="false"
follows="left|right"
- height="23"
+ height="24"
layout="topleft"
left="1"
- min_width="110"
+ min_width="60"
name="chiclet_list"
- top="8"
+ top="7"
chiclet_padding="4"
scrolling_offset="40"
width="189">
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index 39c4923f12..250dadd390 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -2,7 +2,8 @@
<panel
background_visible="true"
bevel_style="in"
- bg_alpha_color="black"
+ bg_opaque_color="Black"
+ bg_alpha_color="DkGray_66"
follows="top|left|right"
height="24"
label="im_header"
@@ -19,21 +20,22 @@
name="avatar_icon"
top="3"
width="18" />
- <text_editor
+ <text
allow_scroll="false"
- v_pad = "0"
+ v_pad = "7"
read_only = "true"
follows="left|right"
font.style="BOLD"
- height="12"
+ height="24"
layout="topleft"
left_pad="5"
right="-120"
name="user_name"
text_color="white"
bg_readonly_color="black"
- top="8"
+ top="0"
use_ellipses="true"
+ valign="bottom"
value="Ericag Vader" />
<text
font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
index 677bdbc3d2..34c1923582 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -18,6 +18,10 @@
name="type_pg">
General Content
</panel.string>
+ <panel.string
+ name="l$_price">
+ L$[PRICE]
+ </panel.string>
<button
follows="top|right"
height="23"
@@ -25,7 +29,7 @@
layout="topleft"
name="back_btn"
picture_style="true"
- left="10"
+ left="11"
tab_stop="false"
top="2"
width="23" />
@@ -36,7 +40,7 @@
layout="topleft"
left_pad="10"
name="title"
- text_color="white"
+ text_color="LtGray"
top="0"
value="Classified Info"
use_ellipses="true"
@@ -45,13 +49,13 @@
color="DkGray2"
opaque="true"
follows="all"
- height="500"
+ height="502"
layout="topleft"
- left="10"
+ left="9"
top_pad="10"
name="profile_scroll"
reserve_scroll_corner="false"
- width="313">
+ width="310">
<panel
name="scroll_content_panel"
follows="left|top"
@@ -61,18 +65,21 @@
background_visible="false"
height="500"
left="0"
- width="295">
+ width="285">
<texture_picker
enabled="false"
- follows="left|top"
+ follows="left|top|right"
height="197"
layout="topleft"
- left="10"
+ left="11"
name="classified_snapshot"
- top="20"
- width="290" />
- <text
+ top="10"
+ width="286" />
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top|right"
+ h_pad="0"
height="35"
width="290"
layout="topleft"
@@ -81,35 +88,53 @@
left="10"
top_pad="10"
name="classified_name"
+ read_only="true"
text_color="white"
+ v_pad="0"
value="[name]"
use_ellipses="true" />
- <text
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top"
+ h_pad="0"
height="25"
layout="topleft"
left="10"
name="classified_location"
+ read_only="true"
width="290"
word_wrap="true"
+ v_pad="0"
value="[loading...]" />
- <text
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top|right"
+ h_pad="0"
height="18"
layout="topleft"
left="10"
name="content_type"
+ read_only="true"
width="290"
top_pad="5"
+ v_pad="0"
value="[content type]" />
- <text
+ <text_editor
+ allow_html="true"
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top|right"
+ h_pad="0"
height="18"
layout="topleft"
left="10"
name="category"
+ read_only="true"
width="290"
top_pad="5"
+ v_pad="0"
value="[category]" />
<check_box
enabled="false"
@@ -119,63 +144,72 @@
left="10"
name="auto_renew"
top_pad="5"
+ v_pad="0"
width="290" />
- <text
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top"
+ h_pad="0"
halign="left"
height="16"
layout="topleft"
left="10"
name="price_for_listing"
+ read_only="true"
top_pad="5"
tool_tip="Price for listing."
- width="105">
- L$[PRICE]
- </text>
- <text
+ v_pad="0"
+ width="105" />
+ <text_editor
+ allow_html="true"
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top|right"
+ h_pad="0"
height="200"
layout="topleft"
left="10"
+ max_length="1023"
name="classified_desc"
+ read_only="true"
width="290"
+ v_pad="0"
value="[description]"
word_wrap="true" />
</panel>
</scroll_container>
<panel
follows="left|right|bottom"
- height="20"
+ height="35"
layout="topleft"
- top_pad="8"
- left="10"
+ top_pad="5"
+ left="9"
name="buttons">
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Teleport"
layout="topleft"
left="0"
name="teleport_btn"
top="0"
- width="90" />
+ width="101" />
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Map"
layout="topleft"
- left_pad="10"
+ left_pad="3"
name="show_on_map_btn"
- top="0"
- width="90" />
+ width="100" />
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Edit"
layout="topleft"
- right="-1"
name="edit_btn"
- top="0"
- width="90" />
+ left_pad="3"
+ width="101" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
index b881719e3a..1375eb87d9 100644
--- a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
@@ -64,6 +64,7 @@
layout="topleft"
left="103"
name="description"
+ textbox.show_context_menu="false"
top_pad="0"
width="178"
word_wrap="true" />
@@ -75,6 +76,6 @@
left_pad="5"
right="-8"
name="info_chevron"
- top_delta="15"
+ top_delta="24"
width="20" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index 188ded3dab..d31e7d2ed8 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -3,7 +3,7 @@
background_visible="true"
bevel_style="in"
follows="left|top|right|bottom"
- height="570"
+ height="569"
label="Edit Classified"
layout="topleft"
left="0"
@@ -23,7 +23,7 @@
layout="topleft"
name="back_btn"
picture_style="true"
- left="10"
+ left="12"
tab_stop="false"
top="2"
width="23" />
@@ -31,27 +31,27 @@
type="string"
length="1"
follows="top"
- font="SansSerifHuge"
- height="15"
+ font="SansSerifHugeBold"
+ height="26"
layout="topleft"
left_pad="10"
name="title"
- text_color="white"
- top="5"
+ text_color="LtGray"
+ top="0"
width="250">
Edit Classified
</text>
<scroll_container
color="DkGray2"
follows="all"
- height="510"
+ height="502"
layout="topleft"
- left="10"
+ left="8"
top_pad="10"
name="profile_scroll"
reserve_scroll_corner="false"
opaque="true"
- width="313">
+ width="312">
<panel
name="scroll_content_panel"
follows="left|top"
@@ -61,25 +61,25 @@
background_visible="false"
height="600"
left="0"
- width="295">
+ width="285">
<texture_picker
follows="left|top|right"
height="197"
- width="290"
+ width="272"
layout="topleft"
- top="20"
- left="10"
+ top="10"
+ left="11"
name="classified_snapshot" />
<icon
- height="18"
- image_name="AddItem_Off"
+ height="197"
+ image_name="spacer24.tga"
layout="topleft"
- right="-5"
name="edit_icon"
label=""
tool_tip="Click to select an image"
- top="27"
- width="18" />
+ top="10"
+ left="11"
+ width="286" />
<text
type="string"
length="1"
@@ -92,7 +92,7 @@
top="215"
name="Name:"
text_color="white"
- width="290">
+ width="280">
Title:
</text>
<line_editor
@@ -106,7 +106,7 @@
name="classified_name"
prevalidate_callback="ascii"
text_color="black"
- width="290" />
+ width="273" />
<text
type="string"
length="1"
@@ -119,13 +119,13 @@
top_pad="20"
name="description_label"
text_color="white"
- width="290">
+ width="280">
Description:
</text>
<text_editor
follows="left|top|right"
height="100"
- width="290"
+ width="273"
hide_scrollbar="false"
layout="topleft"
left="10"
@@ -146,7 +146,7 @@
name="location_label"
text_color="white"
top_pad="20"
- width="290">
+ width="280">
Location:
</text>
<text
@@ -159,35 +159,35 @@
name="classified_location"
right="-10"
top_pad="2"
- width="290"
+ width="280"
word_wrap="true">
loading...
</text>
<button
follows="left|top"
- height="20"
+ height="23"
label="Set to Current Location"
layout="topleft"
- left="8"
+ left="10"
top_pad="5"
name="set_to_curr_location_btn"
- width="200" />
+ width="156" />
<combo_box
follows="left|top"
- height="18"
+ height="23"
label=""
left="10"
name="category"
top_pad="5"
- width="200" />
+ width="156" />
<combo_box
allow_text_entry="false"
follows="left|top"
- height="18"
+ height="23"
left="10"
name="content_type"
top_pad="5"
- width="200">
+ width="156">
<combo_item
name="mature_ci"
value="Mature">
@@ -203,10 +203,11 @@
decimal_digits="0"
follows="left|top"
halign="left"
- height="16"
+ height="23"
increment="1"
label_width="20"
label="L$"
+ v_pad="10"
layout="topleft"
left="10"
value="50"
@@ -228,30 +229,29 @@
</scroll_container>
<panel
follows="left|right|bottom"
- height="20"
+ height="23"
label="bottom_panel"
layout="topleft"
- left="10"
+ left="8"
name="bottom_panel"
top_pad="5"
width="303">
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Save"
layout="topleft"
name="save_changes_btn"
left="0"
top="0"
- width="130" />
+ width="152" />
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Cancel"
layout="topleft"
name="cancel_btn"
- left_pad="5"
- right="-1"
- width="130" />
+ left_pad="3"
+ width="153" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index 8e39697a16..657e369beb 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -3,7 +3,7 @@
background_visible="true"
bevel_style="in"
follows="left|top|right|bottom"
- height="570"
+ height="569"
label="Edit Pick"
layout="topleft"
left="0"
@@ -18,7 +18,7 @@
image_overlay="BackArrow_Off"
layout="topleft"
name="back_btn"
- left="10"
+ left="12"
tab_stop="false"
top="2"
width="23" />
@@ -26,26 +26,26 @@
type="string"
length="1"
follows="top"
- font="SansSerifHuge"
- height="15"
+ font="SansSerifHugeBold"
+ height="26"
layout="topleft"
left_pad="10"
name="title"
- text_color="white"
- top="5"
+ text_color="LtGray"
+ top="0"
width="250">
Edit Pick
</text>
<scroll_container
color="DkGray2"
follows="all"
- height="500"
+ height="502"
layout="topleft"
- left="10"
+ left="8"
top_pad="10"
name="profile_scroll"
opaque="true"
- width="313">
+ width="312">
<panel
name="scroll_content_panel"
follows="left|top|right"
@@ -59,22 +59,22 @@
<texture_picker
follows="left|top|right"
height="197"
- width="280"
+ width="272"
layout="topleft"
no_commit_on_selection="true"
- top="20"
- left="10"
+ top="10"
+ left="11"
name="pick_snapshot" />
<icon
- height="18"
- image_name="AddItem_Off"
+ height="197"
+ image_name="spacer24.tga"
layout="topleft"
- right="-5"
name="edit_icon"
label=""
tool_tip="Click to select an image"
- top="27"
- width="18" />
+ top="10"
+ left="11"
+ width="286" />
<text
type="string"
length="1"
@@ -100,7 +100,7 @@
max_length="63"
name="pick_name"
text_color="black"
- width="280" />
+ width="273" />
<text
type="string"
length="1"
@@ -119,7 +119,7 @@
<text_editor
follows="left|top|right"
height="100"
- width="280"
+ width="273"
hide_scrollbar="false"
layout="topleft"
left="10"
@@ -158,41 +158,40 @@
</text>
<button
follows="left|top"
- height="20"
+ height="23"
label="Set to Current Location"
layout="topleft"
left="8"
top_pad="0"
name="set_to_curr_location_btn"
- width="200" />
+ width="156" />
</panel>
</scroll_container>
<panel
follows="left|right|bottom"
- height="20"
+ height="23"
label="bottom_panel"
layout="topleft"
- left="10"
+ left="8"
name="bottom_panel"
top_pad="5"
width="303">
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Save [WHAT]"
layout="topleft"
name="save_changes_btn"
left="0"
top="0"
- width="130" />
+ width="152" />
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Cancel"
layout="topleft"
name="cancel_btn"
- left_pad="5"
- right="-1"
- width="130" />
+ left_pad="3"
+ width="153" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 8268937e7f..26be8440e7 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -60,32 +60,33 @@
<scroll_container
color="DkGray2"
follows="all"
- height="505"
+ height="494"
min_height="300"
layout="topleft"
- left="0"
+ left="8"
+ width="292"
name="profile_scroll"
reserve_scroll_corner="true"
opaque="true"
- top="0">
+ top="10">
<panel
name="scroll_content_panel"
follows="left|top|right"
layout="topleft"
top="0"
- height="505"
+ height="494"
min_height="300"
left="0"
- width="313">
+ width="292">
<panel
name="data_panel"
follows="left|top|right"
layout="topleft"
top="0"
- height="505"
+ height="494"
min_height="300"
left="0"
- width="313">
+ width="292">
<panel
name="lifes_images_panel"
follows="left|top|right"
@@ -93,7 +94,7 @@
layout="topleft"
top="0"
left="0"
- width="285">
+ width="292">
<panel
follows="left|top"
height="117"
@@ -101,52 +102,53 @@
left="10"
name="second_life_image_panel"
top="0"
- width="285">
+ width="282">
<text
follows="left|top|right"
font.style="BOLD"
height="15"
layout="topleft"
left="0"
+ top="10"
name="second_life_photo_title_text"
text_color="white"
value="[SECOND_LIFE]:"
- width="170" />
+ width="100" />
<texture_picker
allow_no_texture="true"
default_image_name="None"
enabled="false"
follows="top|left"
- height="117"
+ height="124"
layout="topleft"
- left="0"
+ left="1"
name="2nd_life_pic"
top_pad="0"
width="102" />
</panel>
<icon
- height="18"
- image_name="AddItem_Off"
+ height="102"
+ image_name="spacer24.tga"
layout="topleft"
name="2nd_life_edit_icon"
label=""
- left="87"
+ left="11"
+ top_pad="-92"
tool_tip="Click to select an image"
- top="25"
- width="18" />
+ width="102" />
</panel>
<text_editor
type="string"
length="1"
follows="left|top|right"
font="SansSerifSmall"
- height="100"
+ height="102"
layout="topleft"
- left="120"
- top="18"
+ left="123"
+ top="25"
max_length="512"
name="sl_description_edit"
- width="173"
+ width="157"
word_wrap="true">
</text_editor>
<panel
@@ -163,44 +165,45 @@
height="15"
layout="topleft"
left="0"
+ top_pad="10"
name="real_world_photo_title_text"
text_color="white"
value="Real World:"
- width="173" />
+ width="100" />
<texture_picker
allow_no_texture="true"
default_image_name="None"
enabled="false"
follows="top|left"
- height="117"
+ height="124"
layout="topleft"
- left="0"
+ left="1"
name="real_world_pic"
top_pad="0"
width="102" />
</panel>
<icon
- height="18"
- image_name="AddItem_Off"
+ height="102"
+ image_name="spacer24.tga"
layout="topleft"
name="real_world_edit_icon"
label=""
- left="87"
+ left="11"
+ top_pad="-92"
tool_tip="Click to select an image"
- top="148"
- width="18" />
+ width="102" />
<text_editor
type="string"
length="1"
follows="left|top|right"
font="SansSerifSmall"
- height="100"
+ height="102"
layout="topleft"
- left="120"
+ left="123"
max_length="512"
- top="142"
+ top="157"
name="fl_description_edit"
- width="173"
+ width="157"
word_wrap="true">
</text_editor>
<text
@@ -215,7 +218,7 @@
name="title_homepage_text"
text_color="white"
top_pad="10"
- width="285">
+ width="100">
Homepage:
</text>
<line_editor
@@ -227,19 +230,19 @@
top_pad="0"
value="http://"
name="homepage_edit"
- width="285">
+ width="272">
</line_editor>
<check_box
follows="left|top"
font="SansSerifSmall"
label="Show me in Search results"
layout="topleft"
- left="10"
+ left="8"
name="show_in_search_checkbox"
height="15"
text_enabled_color="white"
- top_pad="10"
- width="240" />
+ top_pad="12"
+ width="100" />
<text
follows="left|top"
font="SansSerifSmall"
@@ -249,9 +252,24 @@
left="10"
name="title_acc_status_text"
text_color="white"
- top_pad="5"
+ top_pad="10"
value="My Account:"
- width="285" />
+ width="100" />
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
+ follows="left|top|right"
+ h_pad="0"
+ height="28"
+ layout="topleft"
+ left="10"
+ name="acc_status_text"
+ read_only="true"
+ top_pad="5"
+ v_pad="0"
+ value="Resident. No payment info on file."
+ width="200"
+ word_wrap="true" />
<text
type="string"
follows="left|top"
@@ -261,17 +279,7 @@
left="10"
name="my_account_link"
value="[[URL] Go to My Dashboard]"
- width="285" />
- <text
- follows="left|top|right"
- height="20"
- layout="topleft"
- left="10"
- name="acc_status_text"
- top_pad="5"
- value="Resident. No payment info on file."
- width="285"
- word_wrap="true" />
+ width="200" />
<text
follows="left|top"
font="SansSerifSmall"
@@ -281,26 +289,16 @@
left="10"
name="title_partner_text"
text_color="white"
- top_pad="0"
+ top_pad="10"
value="My Partner:"
width="150" />
- <text
- follows="left|top"
- height="15"
- halign="right"
- layout="topleft"
- left_pad="10"
- right="-10"
- name="partner_edit_link"
- value="[[URL] Edit]"
- width="50" />
<panel
follows="left|top|right"
height="15"
layout="topleft"
left="10"
name="partner_data_panel"
- width="285">
+ width="200">
<name_box
follows="left|top|right"
height="30"
@@ -310,36 +308,43 @@
link="true"
name="partner_text"
top="0"
- width="285"
+ width="200"
word_wrap="true" />
</panel>
+ <text
+ follows="left|top"
+ height="15"
+ layout="topleft"
+ left="10"
+ name="partner_edit_link"
+ value="[[URL] Edit]"
+ width="50" />
</panel>
</panel>
</scroll_container>
<panel
follows="bottom|left"
- height="20"
- left="10"
+ height="28"
+ left="0"
name="profile_me_buttons_panel"
- top_pad="5"
- width="303">
+ top_pad="0"
+ width="313">
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Save Changes"
layout="topleft"
- left="0"
+ left="8"
name="save_btn"
- top="0"
- width="130" />
+ top="5"
+ width="152" />
<button
follows="bottom|left"
- height="19"
+ height="23"
label="Cancel"
layout="topleft"
- left_pad="10"
+ left_pad="3"
name="cancel_btn"
- right="-1"
- width="130" />
+ width="153" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml
index b903032ed5..f913c58cc9 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -1,12 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
- follows="all"
- height="395"
label="General"
+ height="604"
+ width="304"
class="panel_group_general"
- layout="topleft"
- name="general_tab"
- width="323">
+ name="general_tab">
<panel.string
name="help_text">
The General tab contains general information about this group, a list of members, general Group Preferences and member options.
@@ -21,16 +19,87 @@ Hover your mouse over the options for more help.
name="incomplete_member_data_str">
Retrieving member data
</panel.string>
+ <panel
+ name="group_info_top"
+ follows="top|left"
+ top="0"
+ left="0"
+ height="129"
+ width="304"
+ layout="topleft">
+ <texture_picker
+ follows="left|top"
+ height="110"
+ label=""
+ layout="topleft"
+ left="10"
+ name="insignia"
+ no_commit_on_selection="true"
+ tool_tip="Click to choose a picture"
+ top="5"
+ width="100" />
+ <text
+ font="SansSerifSmall"
+ text_color="White_50"
+ width="190"
+ follows="top|left"
+ layout="topleft"
+ mouse_opaque="false"
+ type="string"
+ height="16"
+ length="1"
+ left_pad="10"
+ name="prepend_founded_by"
+ top_delta="0">
+ Founder:
+ </text>
+ <name_box
+ follows="left|top"
+ height="16"
+ initial_value="(retrieving)"
+ layout="topleft"
+ left_delta="0"
+ link="true"
+ name="founder_name"
+ top_pad="2"
+ use_ellipses="true"
+ width="190" />
+ <text
+ font="SansSerifMedium"
+ text_color="EmphasisColor"
+ type="string"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="join_cost_text"
+ top_pad="10"
+ visible="true"
+ width="190">
+ Free
+ </text>
+ <button
+ follows="left|top"
+ left_delta="0"
+ top_pad="6"
+ height="23"
+ label="JOIN NOW!"
+ name="btn_join"
+ visible="true"
+ width="120" />
+ </panel>
<text_editor
type="string"
follows="left|top|right"
left="5"
- height="60"
+ height="80"
layout="topleft"
max_length="511"
name="charter"
- top="5"
+ top="105"
right="-1"
+ bg_readonly_color="DkGray2"
+ text_readonly_color="White"
word_wrap="true">
Group Charter
</text_editor>
@@ -38,8 +107,8 @@ Hover your mouse over the options for more help.
column_padding="0"
draw_heading="true"
follows="left|top|right"
- heading_height="20"
- height="156"
+ heading_height="23"
+ height="160"
layout="topleft"
left="0"
name="visible_members"
@@ -63,17 +132,29 @@ Hover your mouse over the options for more help.
height="12"
layout="left|top|right"
left="5"
+ text_color="EmphasisColor"
+ name="my_group_settngs_label"
+ top_pad="10"
+ width="300">
+ Me
+ </text>
+ <text
+ follows="left|top|right"
+ type="string"
+ height="12"
+ layout="left|top|right"
+ left="10"
name="active_title_label"
top_pad="5"
width="300">
- My Title
+ My title:
</text>
<combo_box
follows="left|top|right"
- height="20"
+ height="23"
layout="topleft"
- left="5"
- right="-5"
+ left="10"
+ right="-5"
name="active_title"
tool_tip="Sets the title that appears in your avatar&apos;s name tag when this group is active."
top_pad="2" />
@@ -82,7 +163,7 @@ Hover your mouse over the options for more help.
font="SansSerifSmall"
label="Receive group notices"
layout="topleft"
- left="5"
+ left="10"
name="receive_notices"
tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you."
top_pad="5"
@@ -91,36 +172,46 @@ Hover your mouse over the options for more help.
height="16"
label="Show in my profile"
layout="topleft"
- left="5"
+ left="10"
name="list_groups_in_profile"
tool_tip="Sets whether you want to show this group in your profile"
top_pad="5"
width="295" />
- <panel
- background_visible="true"
- bevel_style="in"
- border="true"
+ <panel
+ background_visible="false"
+ bevel_style="none"
+ border="false"
bg_alpha_color="FloaterUnfocusBorderColor"
follows="left|top|right"
- height="88"
+ height="140"
+ width="313"
layout="topleft"
- left="2"
- right="-1"
+ left="0"
name="preferences_container"
- top_pad="2">
+ top_pad="5">
+ <text
+ follows="left|top|right"
+ type="string"
+ height="12"
+ layout="left|top|right"
+ left="5"
+ text_color="EmphasisColor"
+ name="group_settngs_label"
+ width="300">
+ Group
+ </text>
<check_box
follows="right|top|left"
height="16"
- label="Open enrollment"
+ label="Anyone can join"
layout="topleft"
left="10"
name="open_enrollement"
tool_tip="Sets whether this group allows new members to join without being invited."
- top_pad="5"
width="90" />
<check_box
height="16"
- label="Enrollment fee"
+ label="Cost to join"
layout="topleft"
left_delta="0"
name="check_enrollment_fee"
@@ -129,27 +220,26 @@ Hover your mouse over the options for more help.
width="300" />
<spinner
decimal_digits="0"
- follows="left|top|right"
+ follows="left|top"
halign="left"
- height="16"
+ height="23"
increment="1"
label_width="15"
label="L$"
layout="topleft"
- right="-30"
max_val="99999"
- left_pad="0"
+ left="30"
name="spin_enrollment_fee"
tool_tip="New members must pay this fee to join the group when Enrollment Fee is checked."
- width="80" />
- <combo_box
- follows="left|top|right"
- height="20"
+ width="170" />
+ <combo_box
+ follows="left|top"
+ height="23"
layout="topleft"
left="10"
name="group_mature_check"
tool_tip="Sets whether your group contains information rated as Moderate"
- top_pad="0"
+ top_pad="4"
width="190">
<combo_box.item
label="General Content"
@@ -161,7 +251,7 @@ Hover your mouse over the options for more help.
value="Mature" />
</combo_box>
<check_box
- follows="left|top|right"
+ follows="left|top"
height="16"
initial_value="true"
label="Show in search"
@@ -171,5 +261,6 @@ Hover your mouse over the options for more help.
tool_tip="Let people see this group in search results"
top_pad="4"
width="300" />
+
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index 1968d96205..4e57b428bd 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -2,17 +2,17 @@
<panel
background_visible="true"
follows="all"
- height="635"
- label="Group Info"
+ height="570"
+ label="Group Profile"
layout="topleft"
- min_height="460"
+ min_height="350"
left="0"
top="20"
name="GroupInfo"
- width="323">
+ width="313">
<panel.string
name="default_needs_apply_text">
- There are unsaved changes to the current tab
+ There are unsaved changes
</panel.string>
<panel.string
name="want_apply_text">
@@ -26,29 +26,38 @@ background_visible="true"
name="group_join_free">
Free
</panel.string>
+ <panel
+ name="group_info_top"
+ follows="top|left"
+ top="0"
+ left="0"
+ height="29"
+ width="313"
+ layout="topleft">
<button
follows="top|right"
height="23"
image_overlay="BackArrow_Off"
layout="topleft"
name="back"
- left="10"
+ left="8"
tab_stop="false"
top="2"
width="23" />
<text
- allow_html="false"
- follows="top|left|right"
- font="SansSerifHugeBold"
- height="26"
layout="topleft"
- left_pad="10"
name="group_name"
- text_color="white"
- top="0"
value="(Loading...)"
+ font="SansSerifHugeBold"
+ height="26"
+ left_pad="10"
+ text_color="LtGray"
+ top="0"
use_ellipses="true"
- width="300" />
+ width="275"
+ follows="top|left|right"
+ word_wrap="false"
+ mouse_opaque="false"/>
<line_editor
follows="left|top"
font="SansSerif"
@@ -58,187 +67,206 @@ background_visible="true"
max_length="35"
name="group_name_editor"
top_delta="5"
- width="250"
+ width="270"
height="20"
visible="false" />
- <texture_picker
- follows="left|top"
- height="113"
- label=""
- layout="topleft"
- left="20"
- name="insignia"
- no_commit_on_selection="true"
- tool_tip="Click to choose a picture"
- top_pad="5"
- width="100" />
- <text
- type="string"
- follows="left|top"
- height="16"
- length="1"
- layout="topleft"
- left_pad="10"
- name="prepend_founded_by"
- top_delta="0"
- width="140">
- Founder:
- </text>
- <name_box
- follows="left|top"
- height="16"
- initial_value="(retrieving)"
- layout="topleft"
- left_delta="0"
- link="true"
- name="founder_name"
- top_pad="2"
- use_ellipses="true"
- width="140" />
- <text
- font="SansSerifBig"
- text_color="EmphasisColor"
- type="string"
- follows="left|top"
- height="16"
- layout="topleft"
- left_delta="0"
- name="join_cost_text"
- top_pad="10"
- visible="true"
- width="140">
- Free
- </text>
- <button
- follows="left|top"
- left_delta="0"
- top_pad="6"
- height="23"
- label="JOIN NOW!"
- name="btn_join"
- visible="true"
- width="120" />
+ </panel>
+ <layout_stack
+ name="layout"
+ orientation="vertical"
+ follows="all"
+ left="8"
+ top_pad="0"
+ height="536"
+ width="292"
+ border_size="0">
+ <layout_panel
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ name="group_accordions"
+ follows="all"
+ layout="topleft"
+ auto_resize="true">
<accordion
- single_expansion="true"
- follows="all"
- height="478"
- layout="topleft"
- left="0"
- name="groups_accordion"
- top_pad="10"
- width="323">
- <accordion_tab
- expanded="false"
+ left="0"
+ top="0"
+ single_expansion="true"
+ follows="all"
+ layout="topleft"
+ name="groups_accordion">
+ <accordion_tab
+ expanded="true"
layout="topleft"
name="group_general_tab"
title="General">
- <panel
- border="false"
- class="panel_group_general"
- filename="panel_group_general.xml"
- layout="topleft"
- left="0"
- help_topic="group_general_tab"
- name="group_general_tab_panel"
- top="0" />
+ <scroll_container
+ color="DkGray2"
+ follows="all"
+ layout="topleft"
+ left="0"
+ name="profile_scroll"
+ opaque="true"
+ height="604"
+ width="304"
+ top="0">
+ <panel
+ border="false"
+ class="panel_group_general"
+ filename="panel_group_general.xml"
+ layout="topleft"
+ left="0"
+ follows="left|top|right"
+ help_topic="group_general_tab"
+ name="group_general_tab_panel"
+ top="0" />
+ </scroll_container>
</accordion_tab>
<accordion_tab
- expanded="true"
+ expanded="false"
layout="topleft"
name="group_roles_tab"
title="Roles">
- <panel
- border="false"
- class="panel_group_roles"
- filename="panel_group_roles.xml"
- layout="topleft"
- left="0"
- name="group_roles_tab_panel"
- top="0" />
+ <scroll_container
+ color="DkGray2"
+ follows="all"
+ layout="topleft"
+ left="0"
+ name="profile_scroll"
+ opaque="true"
+ height="680"
+ width="304"
+ top="0">
+
+ <panel
+ border="false"
+ class="panel_group_roles"
+ filename="panel_group_roles.xml"
+ follows="left|top|right"
+ layout="topleft"
+ left="0"
+ name="group_roles_tab_panel"
+ top="0" />
+ </scroll_container>
</accordion_tab>
<accordion_tab
- expanded="false"
+ expanded="false"
+ layout="topleft"
+ name="group_notices_tab"
+ title="Notices">
+ <scroll_container
+ color="DkGray2"
+ follows="all"
layout="topleft"
- name="group_notices_tab"
- title="Notices">
- <panel
- border="false"
- class="panel_group_notices"
- filename="panel_group_notices.xml"
- layout="topleft"
- left="0"
- help_topic="group_notices_tab"
- name="group_notices_tab_panel"
- top="0" />
+ left="0"
+ name="profile_scroll"
+ opaque="true"
+ height="530"
+ width="304"
+ top="0">
+
+ <panel
+ border="false"
+ class="panel_group_notices"
+ filename="panel_group_notices.xml"
+ follows="left|top|right"
+ layout="topleft"
+ left="0"
+ help_topic="group_notices_tab"
+ name="group_notices_tab_panel"
+ top="0" />
+ </scroll_container>
</accordion_tab>
- <accordion_tab
- expanded="false"
+ <accordion_tab
+ expanded="false"
+ layout="topleft"
+ name="group_land_tab"
+ title="Land/Assets">
+ <scroll_container
+ color="DkGray2"
+ follows="all"
layout="topleft"
- name="group_land_tab"
- title="Land/Assets">
- <panel
- border="false"
- class="panel_group_land_money"
- filename="panel_group_land_money.xml"
- layout="topleft"
- left="0"
- name="group_land_tab_panel"
- top="0" />
+ left="0"
+ name="profile_scroll"
+ opaque="true"
+ height="500"
+ width="304"
+ top="0">
+
+ <panel
+ border="false"
+ class="panel_group_land_money"
+ filename="panel_group_land_money.xml"
+ follows="left|top|right"
+ layout="topleft"
+ left="0"
+ name="group_land_tab_panel"
+ top="0" />
+ </scroll_container>
</accordion_tab>
</accordion>
- <panel
+ </layout_panel>
+ <layout_panel
+ height="30"
+ layout="topleft"
+ auto_resize="false"
+ left="0"
+ top_pad="0"
name="button_row"
- height="23"
follows="bottom|left"
- top_pad="-1"
- width="323">
+ width="313">
<button
- follows="top|left"
- height="22"
+ follows="bottom|left"
+ height="23"
image_overlay="Refresh_Off"
layout="topleft"
- left="10"
+ left="0"
+ top="5"
name="btn_refresh"
width="23" />
- <button
- height="22"
- label="Create"
- label_selected="New group"
- name="btn_create"
- left_pad="10"
- visible="false"
- width="100" />
- <!-- <button
- left_pad="10"
- height="20"
- label="Cancel"
- label_selected="Cancel"
- name="btn_cancel"
- visible="false"
- width="65" />-->
<button
- follows="bottom|right"
- label="Group Chat"
+ follows="bottom|left"
+ label="Chat"
name="btn_chat"
- right="-184"
- left_pad="2"
- height="22"
- width="85" />
+ left_pad="3"
+ height="23"
+ width="82" />
<button
- follows="bottom|right"
- label="Group Call"
+ follows="bottom|left"
+ left_pad="3"
+ height="23"
name="btn_call"
- right="-97"
- left_pad="2"
- height="22"
- width="85" />
+ label="Group Call"
+ layout="topleft"
+ tool_tip="Call this group"
+ width="112" />
<button
- height="22"
+ follows="bottom|left"
+ height="23"
label="Save"
label_selected="Save"
name="btn_apply"
- left_pad="10"
- right="-10"
- width="85" />
- </panel>
+ left_pad="3"
+ width="82" />
+ <button
+ follows="bottom|left"
+ height="23"
+ layout="topleft"
+ left="0"
+ label="Create Group"
+ name="btn_create"
+ visible="true"
+ tool_tip="Create a new Group"
+ width="103" />
+ <!--<button
+ left_pad="3"
+ height="23"
+ label="Cancel"
+ label_selected="Cancel"
+ name="btn_cancel"
+ visible="false"
+ width="65" />-->
+ </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 db156f7877..7996a89e72 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
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
border="false"
- follows="all"
- height="420"
+ height="500"
label="Land &amp; L$"
layout="topleft"
left="0"
name="land_money_tab"
top="0"
- width="310">
+ width="304">
<panel.string
name="help_text">
A warning appears until the Total Land in Use is less than or = to the Total Contribution.
@@ -41,16 +40,24 @@
width="260">
Group Owned Land
</text> -->
+ <panel
+ name="layout_panel_landmoney"
+ follows="top|left|right"
+ left="0"
+ right="-1"
+ height="250"
+ width="313"
+ >
<scroll_list
draw_heading="true"
follows="top|left|right"
- heading_height="20"
height="130"
layout="topleft"
left="0"
+ right="-1"
top="0"
name="group_parcel_list"
- width="310">
+ width="313">
<scroll_list.columns
label="Parcel"
name="name"
@@ -67,16 +74,12 @@
label="Area"
name="area"
width="50" />
- <scroll_list.columns
- label=""
- name="hidden"
- width="-1" />
</scroll_list>
<text
type="string"
follows="left|top"
halign="right"
- height="15"
+ height="16"
layout="topleft"
left="0"
name="total_contributed_land_label"
@@ -87,30 +90,30 @@
text_color="EmphasisColor"
type="string"
follows="left|top"
- height="15"
+ height="16"
layout="topleft"
left_pad="5"
name="total_contributed_land_value"
top_delta="0"
- width="120">
+ width="90">
[AREA] m²
</text>
<button
follows="top"
- height="20"
+ height="23"
label="Map"
label_selected="Map"
layout="topleft"
name="map_button"
- right="-5"
+ top_delta="-4"
left_pad="0"
- width="95"
+ width="60"
enabled="false" />
<text
type="string"
follows="left|top"
halign="right"
- height="15"
+ height="16"
layout="topleft"
left="0"
name="total_land_in_use_label"
@@ -122,7 +125,7 @@
text_color="EmphasisColor"
type="string"
follows="left|top"
- height="15"
+ height="16"
layout="topleft"
left_pad="5"
name="total_land_in_use_value"
@@ -134,7 +137,7 @@
type="string"
follows="left|top"
halign="right"
- height="15"
+ height="16"
layout="topleft"
left="0"
name="land_available_label"
@@ -146,7 +149,7 @@
text_color="EmphasisColor"
type="string"
follows="left|top"
- height="15"
+ height="16"
layout="topleft"
left_pad="5"
name="land_available_value"
@@ -158,7 +161,7 @@
type="string"
follows="left|top"
halign="right"
- height="15"
+ height="16"
layout="topleft"
left="0"
name="your_contribution_label"
@@ -190,21 +193,22 @@
<text
type="string"
follows="left|top"
- halign="right"
- height="12"
+ halign="left"
+ height="16"
layout="topleft"
left="140"
name="your_contribution_max_value"
top_pad="2"
- width="95">
+ width="170">
([AMOUNT] max)
</text>
<icon
- height="18"
- image_name="BuyArrow_Over"
+ height="16"
+ image_name="Parcel_Exp_Color"
layout="topleft"
left="75"
name="group_over_limit_icon"
+ color="Green"
top_pad="0"
visible="true"
width="18" />
@@ -212,12 +216,11 @@
follows="left|top"
type="string"
word_wrap="true"
- font="SansSerifSmall"
height="20"
layout="topleft"
left_pad="2"
name="group_over_limit_text"
- text_color="EmphasisColor"
+ text_color="ColorPaletteEntry29"
top_delta="0"
width="213">
More land credits are needed to support land in use
@@ -235,39 +238,39 @@
width="100">
Group L$
</text>
+ </panel>
<tab_container
follows="all"
- height="180"
+ height="230"
halign="center"
layout="topleft"
left="0"
+ right="-1"
name="group_money_tab_container"
tab_position="top"
- tab_height="20"
top_pad="2"
- tab_min_width="75"
- width="310">
+ tab_min_width="90"
+ width="313">
<panel
border="false"
follows="all"
- height="180"
label="PLANNING"
layout="topleft"
left="0"
help_topic="group_money_planning_tab"
name="group_money_planning_tab"
- top="5"
- width="300">
+ top="0"
+ width="313">
<text_editor
type="string"
follows="all"
- height="140"
+ height="200"
layout="topleft"
left="0"
max_length="4096"
name="group_money_planning_text"
top="2"
- width="300"
+ width="313"
word_wrap="true">
Loading...
</text_editor>
@@ -275,92 +278,88 @@
<panel
border="false"
follows="all"
- height="180"
label="DETAILS"
layout="topleft"
left="0"
help_topic="group_money_details_tab"
name="group_money_details_tab"
top="0"
- width="300">
+ width="313">
<text_editor
type="string"
follows="all"
- height="140"
+ height="185"
layout="topleft"
left="0"
max_length="4096"
name="group_money_details_text"
top="2"
- width="300"
+ width="313"
word_wrap="true">
Loading...
</text_editor>
-
- <button
- height="20"
- image_overlay="Arrow_Left_Off"
- layout="topleft"
- left="5"
- name="earlier_details_button"
- tool_tip="Go back in time"
- top_pad="10"
- width="25" />
<button
- height="20"
- image_overlay="Arrow_Right_Off"
- layout="topleft"
- left_pad="5"
- name="later_details_button"
- tool_tip="Go forward in time"
- top_delta="0"
- width="25" />
-
-
- </panel>
+ follows="left|top"
+ height="18"
+ image_overlay="Arrow_Left_Off"
+ layout="topleft"
+ name="earlier_details_button"
+ tool_tip="Back"
+ left="200"
+ top_pad="0"
+ width="25" />
+ <button
+ follows="left|top"
+ height="18"
+ image_overlay="Arrow_Right_Off"
+ layout="topleft"
+ name="later_details_button"
+ tool_tip="Next"
+ left_pad="15"
+ width="25" />
+ </panel>
<panel
border="false"
follows="all"
- height="180"
label="SALES"
layout="topleft"
- left_delta="0"
+ left="0"
help_topic="group_money_sales_tab"
- mouse_opaque="false"
name="group_money_sales_tab"
top="0"
- width="300">
+ width="313">
<text_editor
type="string"
follows="all"
- height="130"
+ height="185"
layout="topleft"
left="0"
max_length="4096"
name="group_money_sales_text"
top="2"
- width="300"
+ width="313"
word_wrap="true">
Loading...
</text_editor>
- <button
- height="20"
- image_overlay="Arrow_Left_Off"
- layout="topleft"
- left="5"
- name="earlier_sales_button"
- tool_tip="Go back in time"
- top_pad="10"
- width="25" />
- <button
- height="20"
- image_overlay="Arrow_Right_Off"
- layout="topleft"
- left_pad="5"
- name="later_sales_button"
- tool_tip="Go forward in time"
- top_delta="0"
- width="25" />
+ <button
+ follows="left|top"
+ height="18"
+ image_overlay="Arrow_Left_Off"
+ layout="topleft"
+ name="earlier_sales_button"
+ tool_tip="Back"
+ left="200"
+ top_pad="0"
+ width="25" />
+ <button
+ follows="left|top"
+ height="18"
+ image_overlay="Arrow_Right_Off"
+ layout="topleft"
+ left_pad="15"
+ name="later_sales_button"
+ tool_tip="Next"
+ width="25" />
</panel>
</tab_container>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml
index 0d9c2c2162..731b3c119c 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -1,13 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
- follows="all"
- height="463"
+ height="530"
label="Notices"
layout="topleft"
left="0"
name="notices_tab"
top="0"
- width="310">
+ width="304">
<panel.string
name="help_text">
Notices let you send a message and an optionally attached item.
@@ -23,26 +22,28 @@ You can turn off Notices on the General tab.
type="string"
word_wrap="true"
height="24"
- halign="right"
+ halign="left"
layout="topleft"
+ text_color="White_50"
left="5"
name="lbl2"
+ right="-1"
top="5"
width="300">
Notices are kept for 14 days.
Maximum 200 per group daily
</text>
<scroll_list
- follows="left|top"
+ follows="left|top|right"
column_padding="0"
draw_heading="true"
- heading_height="16"
- height="125"
+ height="175"
layout="topleft"
- left="2"
+ left="0"
+ right="-1"
name="notice_list"
top_pad="0"
- width="300">
+ width="304">
<scroll_list.columns
label=""
name="icon"
@@ -71,8 +72,8 @@ Maximum 200 per group daily
visible="false">
None found
</text>
- <button
- follows="bottom|left"
+ <button
+ follows="top|left"
height="18"
image_selected="AddItem_Press"
image_unselected="AddItem_Off"
@@ -85,24 +86,25 @@ Maximum 200 per group daily
width="18" />
<button
follows="top|left"
- height="22"
+ height="23"
image_overlay="Refresh_Off"
layout="topleft"
name="refresh_notices"
- right="-5"
+ left_pad="230"
tool_tip="Refresh list of notices"
top_delta="0"
width="23" />
<panel
- follows="left|top"
+ follows="left|top|right"
height="280"
label="Create New Notice"
layout="topleft"
left="0"
+ right="-1"
top_pad="0"
visible="true"
name="panel_create_new_notice"
- width="300">
+ width="313">
<text
follows="left|top"
type="string"
@@ -204,13 +206,16 @@ Maximum 200 per group daily
width="72" />
<button
follows="left|top"
- height="23"
- label="Remove"
layout="topleft"
- left="70"
+ left="140"
name="remove_attachment"
- top_delta="45"
- width="90" />
+ top_delta="50"
+ height="18"
+ image_selected="TrashItem_Press"
+ image_unselected="TrashItem_Off"
+ image_disabled="TrashItem_Disabled"
+ tool_tip="Remove attachment from your notification"
+ width="18" />
<button
follows="left|top"
height="23"
@@ -231,18 +236,19 @@ Maximum 200 per group daily
width="280" />
</panel>
<panel
- follows="left|top"
+ follows="left|top|right"
height="280"
label="View Past Notice"
layout="topleft"
left="0"
+ right="-1"
visible="false"
name="panel_view_past_notice"
- top="180"
- width="300">
+ top="230"
+ width="313">
<text
type="string"
- font="SansSerifBig"
+ font="SansSerifMedium"
height="16"
layout="topleft"
left="10"
@@ -280,7 +286,7 @@ Maximum 200 per group daily
border_style="line"
border_thickness="1"
enabled="false"
- height="16"
+ height="20"
layout="topleft"
left_pad="3"
max_length="63"
@@ -301,40 +307,35 @@ Maximum 200 per group daily
Message:
</text>
<text_editor
+ follows="top|left|right"
enabled="false"
height="160"
layout="topleft"
- left="10"
+ left="0"
+ right="-1"
max_length="511"
name="view_message"
- top_delta="-35"
- width="285"
+ top_delta="-40"
+ width="313"
word_wrap="true" />
<line_editor
enabled="false"
- height="16"
+ height="20"
layout="topleft"
- left_delta="0"
+ left="5"
max_length="63"
mouse_opaque="false"
name="view_inventory_name"
top_pad="8"
- width="285" />
- <icon
- height="16"
- layout="topleft"
- left_delta="0"
- name="view_inv_icon"
- top_delta="0"
- width="16" />
+ width="250"/>
<button
follows="left|top"
height="23"
- label="Open attachment"
+ label="Open Attachment"
layout="topleft"
- right="-10"
+ left="5"
name="open_attachment"
top_pad="5"
- width="135" />
+ width="180" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
index 5f6b670cd2..19c0da4f08 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -1,16 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
- follows="all"
- height="552"
+ height="680"
label="Members &amp; Roles"
layout="topleft"
left="0"
top="0"
name="roles_tab"
- width="310">
+ width="304">
<panel.string
name="default_needs_apply_text">
- There are unsaved changes to the current tab
+ There are unsaved changes
</panel.string>
<panel.string
name="want_apply_text">
@@ -20,17 +19,18 @@
name="help_text" />
<tab_container
border="false"
- follows="left|top"
+ follows="left|top|right"
height="552"
halign="center"
layout="topleft"
left="0"
+ right="-1"
name="roles_tab_container"
tab_position="top"
- tab_height="20"
- tab_min_width="75"
+ tab_height="22"
+ tab_min_width="90"
top="0"
- width="310">
+ width="304">
<panel
border="false"
follows="all"
@@ -38,11 +38,11 @@
label="MEMBERS"
layout="topleft"
left="0"
+ right="-1"
help_topic="roles_members_tab"
name="members_sub_tab"
tool_tip="Members"
- class="panel_group_members_subtab"
- width="310">
+ class="panel_group_members_subtab">
<panel.string
name="help_text">
You can add or remove Roles assigned to Members.
@@ -65,24 +65,23 @@ clicking on their names.
layout="topleft"
top="5"
left="5"
- width="280"
- height="20"
- follows="top"
- max_length="250"
+ right="-5"
+ height="22"
+ search_button_visible="false"
+ follows="left|top|right"
label="Filter Members"
name="filter_input" />
<name_list
- column_padding="0"
+ column_padding="2"
draw_heading="true"
- heading_height="20"
height="240"
- follows="left|top"
+ follows="left|top|right"
layout="topleft"
left="0"
+ right="-1"
multi_select="true"
name="member_list"
- top_pad="2"
- width="300">
+ top_pad="5">
<name_list.columns
label="Member"
name="name"
@@ -94,33 +93,33 @@ clicking on their names.
<name_list.columns
label="Status"
name="online"
- relative_width="0.15" />
+ relative_width="0.14" />
</name_list>
<button
- height="20"
- follows="bottom|left"
+ height="23"
+ follows="top|left"
label="Invite"
- left="5"
+ left="0"
name="member_invite"
width="100" />
<button
- height="20"
+ height="23"
label="Eject"
- left_pad="5"
- right="-5"
+ follows="top|left"
+ left_pad="10"
name="member_eject"
width="100" />
</panel>
<panel
border="false"
- height="230"
+ height="303"
label="ROLES"
layout="topleft"
left="0"
+ right="-1"
help_topic="roles_roles_tab"
name="roles_sub_tab"
- class="panel_group_roles_subtab"
- width="310">
+ class="panel_group_roles_subtab">
<!-- <button
enabled="false"
height="20"
@@ -157,22 +156,23 @@ including the Everyone and Owner Roles.
layout="topleft"
top="5"
left="5"
- width="280"
- height="20"
+ right="-5"
+ height="22"
+ search_button_visible="false"
follows="left|top|right"
- max_length="250"
label="Filter Roles"
name="filter_input" />
<scroll_list
column_padding="0"
draw_heading="true"
draw_stripes="false"
- follows="left|top"
- heading_height="20"
- height="170"
+ heading_height="23"
+ height="130"
layout="topleft"
search_column="1"
left="0"
+ follows="left|top|right"
+ right="-1"
name="role_list"
top_pad="2"
width="310">
@@ -190,28 +190,29 @@ including the Everyone and Owner Roles.
relative_width="0.15" />
</scroll_list>
<button
- follows="bottom|left"
- height="20"
+ follows="top|left"
+ height="23"
label="New Role"
layout="topleft"
- left="5"
+ left="0"
name="role_create"
- width="100" />
+ width="120" />
<button
- height="20"
+ height="23"
+ follows="top|left"
label="Delete Role"
layout="topleft"
- left_pad="5"
- right="-5"
+ left_pad="10"
name="role_delete"
- width="100" />
+ width="120" />
</panel>
<panel
border="false"
- height="220"
+ height="303"
label="ABILITIES"
layout="topleft"
left="0"
+ right="-1"
help_topic="roles_actions_tab"
name="actions_sub_tab"
class="panel_group_actions_subtab"
@@ -238,13 +239,12 @@ things in this group. There&apos;s a broad variety of Abilities.
layout="topleft"
top="5"
left="5"
- width="280"
- height="20"
+ right="-5"
+ height="22"
+ search_button_visible="false"
follows="left|top|right"
- max_length="250"
label="Filter Abilities"
name="filter_input" />
-
<scroll_list
column_padding="0"
draw_stripes="true"
@@ -252,6 +252,7 @@ things in this group. There&apos;s a broad variety of Abilities.
follows="left|top"
layout="topleft"
left="0"
+ right="-1"
name="action_list"
search_column="2"
tool_tip="Select an Ability to view more details"
@@ -273,35 +274,39 @@ things in this group. There&apos;s a broad variety of Abilities.
</panel>
</tab_container>
<panel
- height="252"
+ height="350"
+ background_visible="false"
+ bg_alpha_color="FloaterUnfocusBorderColor"
layout="topleft"
- follows="left|top"
+ follows="top|left|right"
left="0"
- mouse_opaque="false"
+ right="-1"
+ width="313"
+ mouse_opaque="false"
name="members_footer"
- top="300"
- visible="false"
- width="310">
+ top="325"
+ visible="false">
<text
type="string"
- height="14"
+ height="16"
layout="topleft"
follows="left|top"
- left="0"
+ left="5"
+ top="8"
+ text_color="EmphasisColor"
name="static"
- top_pad="5"
width="300">
Assigned Roles
</text>
<scroll_list
draw_stripes="true"
- follows="left|top"
- height="90"
+ follows="left|top|right"
+ height="150"
layout="topleft"
left="0"
+ right="-1"
name="member_assigned_roles"
- top_pad="0"
- width="300">
+ top_pad="0">
<scroll_list.columns
label=""
name="checkbox"
@@ -311,27 +316,29 @@ things in this group. There&apos;s a broad variety of Abilities.
name="role"
width="270" />
</scroll_list>
- <text
+ <text
type="string"
- height="14"
+ height="16"
layout="topleft"
follows="left|top"
- left="0"
- name="static2"
+ left="5"
top_pad="5"
+ text_color="EmphasisColor"
+ name="static2"
width="285">
Allowed Abilities
</text>
<scroll_list
draw_stripes="true"
- height="90"
+ follows="left|top|right"
+ height="150"
layout="topleft"
left="0"
+ right="-1"
name="member_allowed_actions"
search_column="2"
tool_tip="For details of each allowed ability see the abilities tab"
- top_pad="0"
- width="300">
+ top_pad="0">
<scroll_list.columns
label=""
name="icon"
@@ -347,30 +354,37 @@ things in this group. There&apos;s a broad variety of Abilities.
</scroll_list>
</panel>
<panel
- height="297"
+ height="550"
+ background_visible="false"
+ bg_alpha_color="FloaterUnfocusBorderColor"
layout="topleft"
+ follows="top|left|right"
left="0"
+ right="-1"
+ width="313"
+ mouse_opaque="false"
name="roles_footer"
top_delta="0"
- top="220"
- visible="false"
- width="310">
+ top="209"
+ visible="false">
<text
type="string"
- height="14"
+ height="16"
layout="topleft"
- left="0"
+ follows="left|top"
+ left="5"
+ top="5"
name="static"
- top="0"
width="300">
Role Name
</text>
<line_editor
type="string"
- follows="left|top"
height="20"
layout="topleft"
left="0"
+ follows="left|top|right"
+ right="-1"
max_length="295"
name="role_name"
top_pad="0"
@@ -378,8 +392,10 @@ things in this group. There&apos;s a broad variety of Abilities.
</line_editor>
<text
type="string"
- height="14"
+ height="16"
layout="topleft"
+ follows="left|top"
+ left="5"
name="static3"
top_pad="5"
width="300">
@@ -387,19 +403,22 @@ things in this group. There&apos;s a broad variety of Abilities.
</text>
<line_editor
type="string"
- follows="left|top"
height="20"
layout="topleft"
+ left="0"
+ follows="left|top|right"
+ right="-1"
max_length="295"
name="role_title"
top_pad="0"
width="300">
</line_editor>
- <text
+ <text
type="string"
- height="14"
+ height="16"
layout="topleft"
- left="0"
+ follows="left|top"
+ left="5"
name="static2"
top_pad="5"
width="200">
@@ -407,11 +426,12 @@ things in this group. There&apos;s a broad variety of Abilities.
</text>
<text_editor
type="string"
- halign="left"
- height="35"
layout="topleft"
left="0"
+ follows="left|top|right"
+ right="-1"
max_length="295"
+ height="35"
name="role_description"
top_pad="0"
width="300"
@@ -419,10 +439,11 @@ things in this group. There&apos;s a broad variety of Abilities.
</text_editor>
<text
type="string"
- height="14"
+ height="16"
layout="topleft"
follows="left|top"
- left="0"
+ left="5"
+ text_color="EmphasisColor"
name="static4"
top_pad="5"
width="300">
@@ -430,15 +451,18 @@ things in this group. There&apos;s a broad variety of Abilities.
</text>
<name_list
draw_stripes="true"
- height="60"
+ height="128"
layout="topleft"
left="0"
+ follows="left|top|right"
+ right="-1"
name="role_assigned_members"
top_pad="0"
width="300" />
<check_box
height="15"
label="Reveal members"
+ left="5"
layout="topleft"
name="role_visible_in_list"
tool_tip="Sets whether members of this role are visible in the General tab to people outside of the group."
@@ -446,20 +470,23 @@ things in this group. There&apos;s a broad variety of Abilities.
width="300" />
<text
type="string"
- height="13"
+ height="16"
layout="topleft"
follows="left|top"
- left="0"
+ left="5"
+ text_color="EmphasisColor"
name="static5"
- top_pad="5"
+ top_pad="2"
width="300">
Allowed Abilities
</text>
<scroll_list
draw_stripes="true"
- height="60"
+ height="140"
layout="topleft"
left="0"
+ follows="left|top|right"
+ right="-1"
name="role_allowed_actions"
search_column="2"
tool_tip="For details of each allowed ability see the abilities tab"
@@ -480,14 +507,19 @@ things in this group. There&apos;s a broad variety of Abilities.
</scroll_list>
</panel>
<panel
- height="303"
+ height="424"
+ background_visible="false"
+ bg_alpha_color="FloaterUnfocusBorderColor"
layout="topleft"
+ follows="top|left|right"
left="0"
+ right="-1"
+ width="313"
+ mouse_opaque="false"
name="actions_footer"
top_delta="0"
top="255"
- visible="false"
- width="310">
+ visible="false">
<text_editor
bg_readonly_color="Transparent"
text_readonly_color="EmphasisColor"
@@ -495,44 +527,54 @@ things in this group. There&apos;s a broad variety of Abilities.
type="string"
enabled="false"
halign="left"
- height="90"
layout="topleft"
+ follows="left|top|right"
+ left="0"
+ right="-1"
+ height="90"
max_length="512"
name="action_description"
- top_pad="0"
- width="295"
+ top="0"
word_wrap="true">
This Ability is &apos;Eject Members from this Group&apos;. Only an Owner can eject another Owner.
</text_editor>
<text
type="string"
- height="14"
+ height="16"
layout="topleft"
+ follows="left|top"
left="5"
name="static2"
- top_pad="5"
+ top_pad="1"
width="300">
Roles with this ability
</text>
<scroll_list
- height="65"
+ height="172"
layout="topleft"
+ follows="left|top|right"
left="5"
+ right="-1"
name="action_roles"
top_pad="0"
width="300" />
<text
type="string"
- height="14"
+ height="16"
layout="topleft"
+ follows="left|top"
+ left="5"
name="static3"
top_pad="5"
width="300">
Members with this ability
</text>
<name_list
- height="100"
+ height="122"
+ follows="left|top|right"
layout="topleft"
+ left="5"
+ right="-1"
name="action_members"
top_pad="0"
width="300" />
diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 2e3d5a7320..28c4adf67c 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -11,15 +11,6 @@
name="avatar_icon"
top="-5"
width="105"/>
- <text
- follows="top|left|right"
- font="SansSerifLarge"
- height="19"
- layout="topleft"
- name="avatar_name"
- use_ellipses="true"
- value="Unknown"
- width="110" />
<layout_stack
mouse_opaque="false"
border_size="0"
@@ -30,7 +21,7 @@
left="5"
name="button_stack"
orientation="vertical"
- top_pad="0"
+ top_pad="5"
width="105">
<layout_panel
mouse_opaque="false"
@@ -55,7 +46,7 @@
user_resize="false">
<button
follows="left|top|right"
- height="20"
+ height="23"
label="Profile"
name="view_profile_btn"
top="0"
@@ -72,7 +63,7 @@
user_resize="false">
<button
follows="left|top|right"
- height="20"
+ height="23"
label="Add Friend"
name="add_friend_btn"
top="5"
@@ -90,9 +81,10 @@
<button
auto_resize="false"
follows="left|top|right"
- height="20"
+ height="23"
label="Teleport"
name="teleport_btn"
+ tool_tip = "Offer to teleport this person"
width="100" />
</layout_panel>
<layout_panel
@@ -107,7 +99,7 @@
<button
auto_resize="true"
follows="left|top|right"
- height="20"
+ height="23"
label="Share"
name="share_btn"
width="100" />
@@ -119,11 +111,28 @@
layout="topleft"
min_height="25"
width="100"
+ name="share_btn_panel"
+ user_resize="false">
+ <button
+ auto_resize="true"
+ follows="left|top|right"
+ height="23"
+ label="Pay"
+ name="pay_btn"
+ width="100" />
+ </layout_panel>
+ <layout_panel
+ auto_resize="false"
+ follows="top|left|right"
+ height="25"
+ layout="topleft"
+ min_height="25"
+ width="100"
name="call_btn_panel"
user_resize="false">
<button
follows="left|top|right"
- height="20"
+ height="23"
label="Call"
name="call_btn"
width="100" />
@@ -140,7 +149,7 @@
visible="false">
<button
follows="left|top|right"
- height="20"
+ height="23"
label="Leave Call"
name="end_call_btn"
width="100" />
@@ -157,7 +166,7 @@
visible="false">
<button
follows="left|top|right"
- height="20"
+ height="23"
label="Voice Controls"
name="voice_ctrls_btn"
width="100" />
diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml
index 5a1bc32db0..34fd3352a3 100644
--- a/indra/newview/skins/default/xui/en/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml
@@ -45,16 +45,17 @@
name="group_icon"
top="3"
width="18" />
- <!--<icon
+ <avatar_icon
+ color="Green"
follows="right"
- height="20"
- image_name=""
+ height="18"
+ image_name="Generic_Person"
layout="topleft"
left="3"
- mouse_opaque="true"
- name="sys_msg_icon"
- top="0"
- width="20" />-->
+ mouse_opaque="false"
+ name="adhoc_icon"
+ top="3"
+ width="18" />
<text
follows="left|right"
font.style="BOLD"
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index 396699ad6c..66070c028d 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -8,7 +8,7 @@
min_height="350"
name="landmark_info"
top="20"
- width="330">
+ width="333">
<string
name="title_create_landmark"
value="Create Landmark" />
@@ -58,11 +58,11 @@
height="23"
image_overlay="BackArrow_Off"
layout="topleft"
- left="10"
+ left="11"
name="back_btn"
tool_tip="Back"
tab_stop="false"
- top="0"
+ top="4"
width="23" />
<text
follows="top|left|right"
@@ -71,37 +71,37 @@
layout="topleft"
left_pad="10"
name="title"
- text_color="white"
- top="0"
+ text_color="LtGray"
+ top="2"
use_ellipses="true"
value="Place Profile"
- width="275" />
+ width="280" />
<scroll_container
color="DkGray2"
follows="all"
- height="533"
+ height="532"
layout="topleft"
- left="10"
+ left="9"
name="place_scroll"
opaque="true"
- top_pad="5"
- width="313">
+ top_pad="10"
+ width="310">
<panel
bg_alpha_color="DkGray2"
follows="left|top|right"
- height="610"
+ height="700"
layout="topleft"
left="0"
min_height="300"
name="scrolling_panel"
top="0"
- width="313">
+ width="285">
<texture_picker
enabled="false"
- follows="top|left"
- height="190"
+ follows="left|top|right"
+ height="197"
layout="topleft"
- left="10"
+ left="11"
name="logo"
top="10"
width="290" />
@@ -113,29 +113,29 @@
left="10"
name="region_title"
text_color="white"
- top_pad="5"
+ top_pad="10"
use_ellipses="true"
value="SampleRegion"
- width="290" />
+ width="280" />
<text
follows="left|top|right"
height="14"
layout="topleft"
left="10"
name="parcel_title"
- top_pad="4"
+ top_pad="10"
use_ellipses="true"
value="SampleParcel, Name Long (145, 228, 26)"
- width="285" />
+ width="280" />
<expandable_text
follows="left|top|right"
height="50"
layout="topleft"
- left="5"
+ left="10"
name="description"
top_pad="10"
value="Du waltz die spritz"
- width="300" />
+ width="280" />
<icon
follows="top|left"
height="16"
@@ -149,9 +149,9 @@
follows="left|top|right"
height="16"
layout="topleft"
- left_pad="8"
+ left_pad="5"
name="maturity_value"
- top_delta="0"
+ top_pad="-13"
value="unknown"
width="268" />
<panel
@@ -269,6 +269,7 @@
name="notes_editor"
read_only="true"
text_readonly_color="white"
+ text_type="ascii"
top_pad="5"
width="290"
wrap="true" />
@@ -283,7 +284,7 @@
width="290" />
<combo_box
follows="bottom|left|right"
- height="20"
+ height="23"
layout="topleft"
left="0"
name="folder_combo"
diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml
index 039e1ae086..fdc26b5c46 100644
--- a/indra/newview/skins/default/xui/en/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml
@@ -7,7 +7,7 @@
left="0"
width="380"
help_topic="panel_landmarks"
- border="true"
+ border="false"
background_visible="true"
bg_alpha_color="DkGray2"
follows="left|top|right|bottom">
@@ -17,7 +17,7 @@
layout="topleft"
left="0"
name="landmarks_accordion"
- top="2"
+ top="0"
width="380">
<accordion_tab
layout="topleft"
@@ -38,7 +38,7 @@
<accordion_tab
layout="topleft"
name="tab_landmarks"
- title="Landmarks">
+ title="My Landmarks">
<places_inventory_panel
allow_multi_select="true"
border="false"
@@ -85,11 +85,14 @@
</accordion_tab>
</accordion>
<panel
- background_visible="true"
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
bevel_style="none"
bottom="0"
follows="left|right|bottom"
- height="30"
+ height="38"
layout="bottomleft"
left="0"
name="bottom_panel"
@@ -104,7 +107,7 @@
layout="topleft"
left="10"
name="options_gear_btn"
- top="6"
+ top="14"
width="18" />
<button
follows="bottom|left"
@@ -113,7 +116,7 @@
image_unselected="AddItem_Off"
image_disabled="AddItem_Disabled"
layout="topleft"
- left_pad="5"
+ left_pad="10"
name="add_btn"
tool_tip="Add new landmark"
width="18" />
@@ -123,10 +126,10 @@
image_selected="TrashItem_Press"
image_unselected="TrashItem_Off"
layout="topleft"
- right="-5"
+ right="-8"
name="trash_btn"
tool_tip="Remove selected landmark"
- top="6"
+ top="14"
width="18" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 4657d39a0f..627e616af5 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -118,15 +118,27 @@ control_name="RememberPassword"
follows="left|bottom"
font="SansSerifSmall"
height="16"
-label="Remember"
+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="8"
+ left_pad="18"
name="start_location_text"
top="20"
width="130">
@@ -163,18 +175,6 @@ top_pad="2"
name="server_combo"
width="135"
visible="false" />
-<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="15"
- name="connect_btn"
- top="35"
- width="90" />
</layout_panel>
<layout_panel
follows="right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index 4030c7184a..e6f67078d1 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -2,7 +2,7 @@
<panel
background_visible="true"
follows="all"
- height="400"
+ height="408"
label="Things"
layout="topleft"
min_height="350"
@@ -13,102 +13,6 @@
name="Title">
Things
</panel.string>
- <filter_editor
- text_pad_left="14"
- follows="left|top|right"
- height="23"
- label="Filter Inventory"
- layout="topleft"
- left="15"
-max_length="300"
- name="inventory search editor"
- top="26"
- width="303" />
- <tab_container
-follows="all"
-halign="center"
- height="300"
- layout="topleft"
- left_delta="-4"
- name="inventory filter tabs"
- tab_height="30"
- tab_position="top"
- tab_min_width="100"
- top_pad="4"
- width="305">
- <inventory_panel
- border="false"
- follows="all"
- height="295"
- label="MY INVENTORY"
- help_topic="my_inventory_tab"
- layout="topleft"
- left="0"
- name="All Items"
- top="16"
- width="290" />
- <inventory_panel
- border="false"
- follows="all"
- height="295"
- label="RECENT"
- help_topic="recent_inventory_tab"
- layout="topleft"
- left_delta="0"
- name="Recent Items"
- width="290" />
- </tab_container>
-
- <panel
- background_visible="true"
- bevel_style="none"
- bottom="0"
- follows="left|right|bottom"
- height="30"
- layout="bottomleft"
- left="0"
- visible="true"
- name="bottom_panel"
- width="330">
- <button
- follows="bottom|left"
- tool_tip="Show additional options"
- height="18"
- image_disabled="OptionsMenu_Disabled"
- image_selected="OptionsMenu_Press"
- image_unselected="OptionsMenu_Off"
- layout="topleft"
- left="10"
- name="options_gear_btn"
- picture_style="true"
- top="6"
- width="18" />
- <button
- follows="bottom|left"
- height="18"
- image_selected="AddItem_Press"
- image_unselected="AddItem_Off"
- image_disabled="AddItem_Disabled"
- layout="topleft"
- left_pad="5"
- name="add_btn"
- picture_style="true"
- tool_tip="Add new item"
- width="18" />
- <dnd_button
- follows="bottom|right"
- height="18"
- image_selected="TrashItem_Press"
- image_unselected="TrashItem_Off"
- layout="topleft"
- right="-5"
- name="trash_btn"
- picture_style="true"
- tool_tip="Remove selected item"
- top="6"
- width="18" />
- </panel>
-
<menu_bar
bg_visible="false"
follows="left|top|right"
@@ -118,7 +22,7 @@ halign="center"
mouse_opaque="false"
name="Inventory Menu"
top="0"
- visible="true"
+ visible="true"
width="290">
<menu
height="101"
@@ -470,4 +374,114 @@ halign="center"
</menu_item_check>
</menu>
</menu_bar>
+ <filter_editor
+ text_pad_left="10"
+ follows="left|top|right"
+ height="23"
+ label="Filter Inventory"
+ layout="topleft"
+ left="10"
+max_length="300"
+ name="inventory search editor"
+ top="26"
+ width="303" />
+ <tab_container
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+follows="all"
+halign="center"
+ height="305"
+ layout="topleft"
+ left="6"
+ name="inventory filter tabs"
+ tab_height="30"
+ tab_position="top"
+ tab_min_width="100"
+ top_pad="10"
+ width="315">
+ <inventory_panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ border="false"
+ bevel_style="none"
+ follows="all"
+ height="295"
+ label="MY INVENTORY"
+ help_topic="my_inventory_tab"
+ layout="topleft"
+ left="0"
+ name="All Items"
+ top="16"
+ width="290" />
+ <inventory_panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ border="false"
+ bevel_style="none"
+ follows="all"
+ height="295"
+ label="RECENT"
+ help_topic="recent_inventory_tab"
+ layout="topleft"
+ left_delta="0"
+ name="Recent Items"
+ width="290" />
+ </tab_container>
+
+ <panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ bevel_style="none"
+ follows="left|right|bottom"
+ height="38"
+ layout="topleft"
+ top_pad="-1"
+ left="9"
+ name="bottom_panel"
+ width="310">
+ <button
+ follows="bottom|left"
+ tool_tip="Show additional options"
+ height="18"
+ image_disabled="OptionsMenu_Disabled"
+ image_selected="OptionsMenu_Press"
+ image_unselected="OptionsMenu_Off"
+ layout="topleft"
+ left="8"
+ name="options_gear_btn"
+ top="14"
+ width="18" />
+ <button
+ follows="bottom|left"
+ height="18"
+ image_selected="AddItem_Press"
+ image_unselected="AddItem_Off"
+ image_disabled="AddItem_Disabled"
+ layout="topleft"
+ left_pad="10"
+ name="add_btn"
+ tool_tip="Add new item"
+ width="18" />
+ <dnd_button
+ follows="bottom|right"
+ height="18"
+ image_selected="TrashItem_Press"
+ image_unselected="TrashItem_Off"
+ layout="topleft"
+ right="-7"
+ name="trash_btn"
+ tool_tip="Remove selected item"
+ top="14"
+ width="18" />
+ </panel>
+
+
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
index e779e37419..63c522ac69 100644
--- a/indra/newview/skins/default/xui/en/panel_me.xml
+++ b/indra/newview/skins/default/xui/en/panel_me.xml
@@ -26,26 +26,26 @@
</text> -->
<tab_container
follows="all"
- height="570"
+ height="575"
halign="center"
layout="topleft"
- left="10"
+ left="5"
name="tabs"
tab_min_width="95"
tab_height="30"
tab_position="top"
top_pad="10"
- width="313">
+ width="317">
<panel
class="panel_my_profile"
filename="panel_my_profile.xml"
- label="PROFILE"
+ label="MY PROFILE"
help_topic="panel_my_profile_tab"
name="panel_profile" />
<panel
class="panel_picks"
filename="panel_picks.xml"
- label="PICKS"
+ label="MY PICKS"
help_topic="panel_my_picks_tab"
name="panel_picks" />
</tab_container>
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
index 4164ce73dd..4112b65635 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
follows="all"
- height="500"
+ height="535"
label="Profile"
layout="topleft"
left="0"
name="panel_profile"
top="0"
- width="313">
+ width="315">
<string
name="CaptionTextAcctInfo">
[ACCTTYPE]
@@ -41,8 +41,8 @@
layout="topleft"
left="0"
top="0"
- height="480"
- width="313"
+ height="522"
+ width="315"
border_size="0">
<layout_panel
name="profile_stack"
@@ -50,9 +50,9 @@
layout="topleft"
top="0"
left="0"
- height="480"
+ height="492"
user_resize="false"
- width="313">
+ width="315">
<scroll_container
color="DkGray2"
follows="all"
@@ -60,13 +60,13 @@
left="0"
name="profile_scroll"
opaque="true"
- height="480"
- width="313"
+ height="488"
+ width="315"
top="0">
<panel
layout="topleft"
follows="left|top|right"
- height="505"
+ height="488"
name="scroll_content_panel"
top="0"
left="0"
@@ -84,9 +84,9 @@
default_image_name="None"
enabled="false"
follows="top|left"
- height="117"
+ height="124"
layout="topleft"
- left="0"
+ left="3"
name="2nd_life_pic"
top="10"
width="102" />
@@ -96,7 +96,7 @@
layout="topleft"
name="2nd_life_edit_icon"
label=""
- left="0"
+ left="3"
tool_tip="Click the Edit Profile button below to change image"
top="10"
width="102" />
@@ -130,7 +130,7 @@
follows="left|top|right"
height="117"
layout="topleft"
- top_pad="10"
+ top_pad="0"
left="10"
name="first_life_image_panel"
width="297">
@@ -139,9 +139,9 @@
default_image_name="None"
enabled="false"
follows="top|left"
- height="117"
+ height="124"
layout="topleft"
- left="0"
+ left="3"
name="real_world_pic"
width="102" />
<icon
@@ -150,7 +150,7 @@
layout="topleft"
name="real_world_edit_icon"
label=""
- left="0"
+ left="3"
tool_tip="Click the Edit Profile button below to change image"
top="4"
width="102" />
@@ -206,13 +206,18 @@
top_pad="10"
value="Resident Since:"
width="300" />
- <text
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top"
+ h_pad="0"
height="15"
layout="topleft"
left="10"
name="register_date"
+ read_only="true"
translate="false"
+ v_pad="0"
value="05/31/2376"
width="300"
word_wrap="true" />
@@ -238,19 +243,24 @@
top_delta="0"
value="Go to Dashboard"
width="100"/> -->
- <text
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top"
+ h_pad="0"
height="28"
layout="topleft"
left="10"
name="acc_status_text"
+ read_only="true"
top_pad="0"
translate="false"
+ v_pad="0"
width="300"
word_wrap="true">
Resident. No payment info on file.
Linden.
- </text>
+ </text_editor>
<text
follows="left|top"
font.style="BOLD"
@@ -299,7 +309,7 @@
layout="topleft"
left="7"
name="sl_groups"
- top_pad="0"
+ top_pad="0"
translate="false"
width="298"
expanded_bg_visible="true"
@@ -375,27 +385,24 @@
user_resize="false"
auto_resize="false"
height="28"
- width="313">
+ width="315">
<button
follows="bottom|right"
height="23"
- left="20"
- top="5"
+ left="6"
+ top="1"
label="Edit Profile"
- layout="topleft"
name="edit_profile_btn"
tool_tip="Edit your personal information"
- width="130" />
+ width="152" />
<button
follows="bottom|right"
height="23"
label="Edit Appearance"
- left_pad="10"
- layout="topleft"
+ left_pad="3"
name="edit_appearance_btn"
- top="5"
tool_tip="Create/edit your appearance: physical data, clothes and etc."
- width="130" />
+ width="153" />
</layout_panel>
</layout_stack>
</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 baa6c2e51f..a314cedc21 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -39,20 +39,24 @@
layout="topleft"
name="navigation_panel"
width="600">
- <button
+ <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" />
- <button
+ <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"
@@ -143,7 +147,20 @@
name="favorite"
image_drag_indication="Accordion_ArrowOpened_Off"
bottom="55"
- width="590">
+ tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
+ width="590">
+ <label
+ follows="left|top"
+ height="15"
+ layout="topleft"
+ left="10"
+ name="favorites_bar_label"
+ text_color="LtGray"
+ tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
+ top="12"
+ width="102">
+ Favorites Bar
+ </label>
<chevron_button name=">>"
image_unselected="TabIcon_Close_Off"
image_selected="TabIcon_Close_Off"
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index 2b361c0628..088f098f85 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -9,7 +9,7 @@
top="21"
width="310">
<string name="min_width">
- 188
+ 216
</string>
<string name="max_width">
320
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
new file mode 100644
index 0000000000..0f911f789e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -0,0 +1,410 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ can_resize="true"
+ can_close="false"
+ bg_opaque_image="Volume_Background"
+ bg_alpha_image="Volume_Background"
+ background_opaque="true"
+ background_visible="true"
+ layout="topleft"
+ width="270"
+ height="235"
+ name="nearby_media"
+ help_topic="nearby_media">
+ <string name="media_item_count_format">(%ld media items)</string>
+ <string name="empty_item_text">&lt;empty&gt;</string>
+ <string name="parcel_media_name">Parcel Streaming Media</string>
+ <string name="parcel_audio_name">Parcel Streaming Audio</string>
+ <string name="playing_suffix">(playing)</string>
+ <panel
+ bevel_style="in"
+ background_visible="false"
+ follows="left|right|top"
+ top="0"
+ height="30"
+ name="minimized_controls"
+ left="0">
+ <button
+ name="all_nearby_media_disable_btn"
+ follows="left"
+ tool_tip="Turn all nearby media off"
+ left="15"
+ width="60"
+ height="22"
+ label="Stop All">
+ <button.commit_callback
+ function="MediaListCtrl.DisableAll" />
+ </button>
+ <button
+ name="all_nearby_media_enable_btn"
+ follows="left"
+ tool_tip="Turn all nearby media on"
+ left_pad="4"
+ width="60"
+ height="22"
+ label="Start All">
+ <button.commit_callback
+ function="MediaListCtrl.EnableAll" />
+ </button>
+ <button
+ name="open_prefs_btn"
+ image_overlay="Icon_Gear_Foreground"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ tool_tip = "Bring up media prefs"
+ top_delta="0"
+ left_pad="4"
+ height="22"
+ min_width="28"
+ width="28">
+ <button.commit_callback
+ function="MediaListCtrl.GoMediaPrefs" />
+ </button>
+ <button
+ name="more_less_btn"
+ follows="right"
+ tool_tip="Advanced Controls"
+ top_delta="0"
+ right="-10"
+ width="60"
+ height="22"
+ toggle="true"
+ label="More &gt;&gt;"
+ label_selected="Less &lt;&lt;">
+ <button.commit_callback
+ function="MediaListCtrl.MoreLess" />
+ </button>
+ </panel>
+ <panel
+ name="nearby_media_panel"
+ bevel_style="in"
+ border_style="line"
+ bg_alpha_color="0 0 0 0"
+ bg_opaque_color="0 0 0 0.3"
+ follows="left|right|top|bottom"
+ top_delta="30"
+ right="-1"
+ left="0"
+ height="200">
+ <text
+ type="string"
+ length="1"
+ follows="top|left"
+ font="SansSerif"
+ left="10"
+ width="100">
+ Nearby Media
+ </text>
+ <!-- nix for now
+ <text
+ bottom_delta="1"
+ type="string"
+ follows="top|left|right"
+ font="SansSerif"
+ font.style="ITALIC"
+ font.size="Small"
+ name="media_item_count"
+ left="115"
+ right="-10">
+ (?? media items)
+ </text>
+ -->
+ <text
+ type="string"
+ length="1"
+ follows="top|left"
+ font="SansSerif"
+ top_pad="15"
+ left="10"
+ width="40">
+ Show:
+ </text>
+ <combo_box
+ height="23"
+ left="50"
+ width="140"
+ top_delta="-5"
+ follows="left|top"
+ name="show_combo">
+ <combo_box.item
+ label="All"
+ value="0"
+ name="All" />
+ <combo_box.item
+ label="In this Parcel"
+ value="2"
+ name="WithinParcel" />
+ <combo_box.item
+ label="Outside this Parcel"
+ value="3"
+ name="OutsideParcel" />
+ <combo_box.item
+ label="On other Avatars"
+ value="4"
+ ame="OnOthers" />
+ </combo_box>
+ <scroll_list
+ follows="left|top|bottom|right"
+ column_padding="0"
+ height="105"
+ draw_heading="false"
+ draw_stripes="true"
+ bg_stripe_color="0.25 0.25 0.25 0.25"
+ top_pad="8"
+ left="10"
+ right="-10"
+ name="media_list">
+ <scroll_list.columns
+ type="checkbox"
+ width="-1"
+ label=""
+ name="media_checkbox_ctrl" />
+ <scroll_list.columns
+ sort_column="media_proximity"
+ width="-1"
+ label="Proximity"
+ name="media_proximity" />
+ <scroll_list.columns
+ sort_column="media_visibility"
+ width="-1"
+ label="Visible"
+ name="media_visibility" />
+ <scroll_list.columns
+ sort_column="media_class"
+ width="-1"
+ label="Class"
+ name="media_class" />
+ <scroll_list.columns
+ label="Name"
+ name="media_name" />
+ <scroll_list.columns
+ sort_column="media_debug"
+ width="-1"
+ label="Debug"
+ name="media_debug" />
+ </scroll_list>
+ <panel
+ bevel_style="in"
+ background_visible="false"
+ follows="left|right|bottom"
+ top_pad="5"
+ height="30"
+ left="10"
+ right="-10">
+ <layout_stack
+ name="media_controls"
+ follows="left|right|top"
+ animate="false"
+ height="26"
+ layout="topleft"
+ top="4"
+ left="10"
+ right="-10"
+ border_size="0"
+ mouse_opaque="false"
+ orientation="horizontal">
+ <layout_panel
+ name="stop"
+ mouse_opaque="false"
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ top="0"
+ height="22"
+ min_width="22"
+ width="22">
+ <button
+ name="stop_btn"
+ follows="top"
+ image_overlay="Stop_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ layout="topleft"
+ tool_tip="Stop selected media"
+ top="0"
+ height="22"
+ width="22">
+ <button.commit_callback
+ function="SelectedMediaCtrl.Stop" />
+ </button>
+ </layout_panel>
+ <layout_panel
+ name="play"
+ mouse_opaque="false"
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ top="0"
+ height="22"
+ min_width="22"
+ width="22">
+ <button
+ name="play_btn"
+ follows="top"
+ image_overlay="Play_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ layout="topleft"
+ tool_tip = "Play selected media"
+ top="0"
+ height="22"
+ width="22">
+ <button.commit_callback
+ function="SelectedMediaCtrl.Play" />
+ </button>
+ </layout_panel>
+ <layout_panel
+ name="pause"
+ mouse_opaque="false"
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ top="0"
+ min_width="22"
+ width="22">
+ <button
+ name="pause_btn"
+ follows="top"
+ image_overlay="Pause_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ layout="topleft"
+ top="0"
+ height="22"
+ width="22"
+ tool_tip = "Pause selected media">
+ <button.commit_callback
+ function="SelectedMediaCtrl.Pause" />
+ </button>
+ </layout_panel>
+ <layout_panel
+ name="volume_slider_ctrl"
+ mouse_opaque="false"
+ auto_resize="true"
+ user_resize="false"
+ follows="left|right"
+ layout="topleft"
+ top="0"
+ height="22"
+ min_width="100"
+ width="200">
+ <slider_bar
+ name="volume_slider"
+ follows="left|right|top"
+ top="0"
+ height="22"
+ increment="0.01"
+ initial_value="0.5"
+ layout="topleft"
+ tool_tip="Audio volume for selected media"
+ width="200">
+ <slider_bar.commit_callback
+ function="SelectedMediaCtrl.Volume" />
+ </slider_bar>
+ </layout_panel>
+ <layout_panel
+ name="mute"
+ mouse_opaque="false"
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ top="0"
+ height="72"
+ min_width="22"
+ width="22">
+ <button
+ name="mute_btn"
+ follows="top"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
+ hover_glow_amount="0.15"
+ is_toggle="true"
+ layout="topleft"
+ scale_image="false"
+ tool_tip="Mute audio on selected media"
+ top="0"
+ height="20"
+ width="22" >
+ <button.commit_callback
+ function="SelectedMediaCtrl.Mute" />
+ </button>
+ </layout_panel>
+ <layout_panel
+ name="zoom"
+ mouse_opaque="false"
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ top="0"
+ height="28"
+ min_width="22"
+ width="22">
+ <button
+ name="zoom_btn"
+ follows="top"
+ image_overlay="Zoom_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ top="0"
+ height="22"
+ layout="topleft"
+ tool_tip="Zoom into selected media"
+ width="22">
+ <button.commit_callback
+ function="SelectedMediaCtrl.Zoom" />
+ </button>
+ </layout_panel>
+ <layout_panel
+ name="unzoom"
+ mouse_opaque="false"
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ top="0"
+ min_width="21"
+ width="21" >
+ <button
+ name="unzoom_btn"
+ follows="top"
+ image_overlay="UnZoom_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ top="0"
+ height="22"
+ layout="topleft"
+ tool_tip ="Zoom back from selected media"
+ top_delta="-4"
+ width="21" >
+ <button.commit_callback
+ function="SelectedMediaCtrl.Unzoom" />
+ </button>
+ </layout_panel>
+ <layout_panel
+ name="right_bookend"
+ width="0"
+ mouse_opaque="false"
+ user_resize="false" />
+ </layout_stack>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml
index ac100a2c06..cff7b51ce8 100644
--- a/indra/newview/skins/default/xui/en/panel_notes.xml
+++ b/indra/newview/skins/default/xui/en/panel_notes.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
follows="all"
- height="540"
+ height="533"
label="Notes &amp; Privacy"
layout="topleft"
left="0"
@@ -25,7 +25,7 @@
layout="topleft"
top="0"
left="0"
- height="475"
+ height="450"
width="313">
<scroll_container
color="DkGray2"
@@ -34,7 +34,7 @@
left="0"
name="profile_scroll"
opaque="true"
- height="475"
+ height="450"
width="313"
top="0">
<panel
@@ -46,35 +46,35 @@
width="303">
<text
follows="left|top"
- font="SansSerifBold"
+ font.style="BOLD"
height="16"
layout="topleft"
- left="10"
+ left="11"
name="status_message"
text_color="white"
- top="20"
+ top="10"
value="My private notes:"
width="293" />
<text_editor
follows="left|top"
height="120"
layout="topleft"
- left="10"
+ left="12"
max_length="1000"
name="notes_edit"
text_color="DkGray"
- top_pad="10"
- width="280"
+ top_pad="3"
+ width="288"
word_wrap="true" />
<text
follows="left|top"
- font="SansSerifBold"
+ font.style="BOLD"
height="16"
layout="topleft"
- left="10"
+ left="11"
name="status_message2"
text_color="white"
- top_pad="30"
+ top_pad="20"
value="Allow this person to:"
width="293" />
<check_box
@@ -82,7 +82,7 @@
height="16"
label="See my online status"
layout="topleft"
- left="20"
+ left="10"
name="status_check"
width="293" />
<check_box
@@ -90,7 +90,7 @@
height="16"
label="See me on the map"
layout="topleft"
- left="20"
+ left="10"
name="map_check"
width="293" />
<check_box
@@ -98,7 +98,7 @@
height="16"
label="Edit, delete or take my objects"
layout="topleft"
- left="20"
+ left="10"
name="objects_check"
width="293" />
</panel>
@@ -117,7 +117,7 @@
height="23"
label="Add Friend"
layout="topleft"
- left="0"
+ left="2"
mouse_opaque="false"
name="add_friend"
tool_tip="Offer friendship to the Resident"
@@ -142,7 +142,7 @@
tool_tip="Call this Resident"
left_pad="3"
top="5"
- width="45" />
+ width="46" />
<button
enabled="false"
follows="bottom|left"
diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml
index 145a24b642..34738745eb 100644
--- a/indra/newview/skins/default/xui/en/panel_notification.xml
+++ b/indra/newview/skins/default/xui/en/panel_notification.xml
@@ -3,8 +3,8 @@
background_opaque="false"
border_visible="false"
background_visible="true"
- bg_alpha_color="0.3 0.3 0.3 0"
- bg_opaque_color="0.3 0.3 0.3 0"
+ bg_alpha_color="1 0.3 0.3 0"
+ bg_opaque_color="1 0.3 0.3 0"
label="notification_panel"
layout="topleft"
left="0"
@@ -83,12 +83,16 @@
<panel
background_visible="false"
follows="left|right|bottom"
- height="40"
+ height="30"
+ width="290"
label="control_panel"
layout="topleft"
- left="0"
- left_delta="-38"
+ left="10"
name="control_panel"
- top_pad="0">
+ top_pad="5">
+ <!--
+ Notes:
+ This panel holds buttons of notification. Change of its size can affect the layout of buttons.
+ -->
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_online_status.xml b/indra/newview/skins/default/xui/en/panel_online_status.xml
new file mode 100644
index 0000000000..14cb5fffee
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_online_status.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="false"
+ height="152"
+ label="friend_online_status"
+ layout="topleft"
+ left="0"
+ name="friend_online_status"
+ top="0"
+ width="305">
+ <avatar_icon
+ follows="top|left"
+ height="18"
+ image_name="Generic_Person"
+ layout="topleft"
+ left="3"
+ mouse_opaque="false"
+ name="avatar_icon"
+ top="10"
+ width="18" />
+ <text
+ font="SansSerifSmall"
+ follows="all"
+ height="137"
+ layout="topleft"
+ left_pad="5"
+ name="message"
+ text_color="white"
+ top="15"
+ use_ellipses="true"
+ value=""
+ width="285"
+ word_wrap="true"
+ max_length="350" />
+</panel> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
new file mode 100644
index 0000000000..14cb5fffee
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="false"
+ height="152"
+ label="friend_online_status"
+ layout="topleft"
+ left="0"
+ name="friend_online_status"
+ top="0"
+ width="305">
+ <avatar_icon
+ follows="top|left"
+ height="18"
+ image_name="Generic_Person"
+ layout="topleft"
+ left="3"
+ mouse_opaque="false"
+ name="avatar_icon"
+ top="10"
+ width="18" />
+ <text
+ font="SansSerifSmall"
+ follows="all"
+ height="137"
+ layout="topleft"
+ left_pad="5"
+ name="message"
+ text_color="white"
+ top="15"
+ use_ellipses="true"
+ value=""
+ width="285"
+ word_wrap="true"
+ max_length="350" />
+</panel> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index 710ca733e0..cc60b97f92 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -11,15 +11,15 @@
border="false">
<tab_container
follows="all"
- height="500"
+ height="490"
layout="topleft"
- left="10"
+ left="6"
name="appearance_tabs"
tab_min_width="140"
tab_height="30"
tab_position="top"
halign="center"
- width="313">
+ width="315">
<inventory_panel
background_visible="true"
background_opaque="true"
@@ -49,39 +49,51 @@
start_folder="Current Outfit"
width="313" />
</tab_container>
+ <panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="left|right|bottom"
+ height="38"
+ layout="topleft"
+ left="9"
+ visible="true"
+ top_pad="-1"
+ width="310" />
<panel
- background_visible="true"
+ background_visible="false"
follows="bottom|left"
- height="50"
+ height="73"
layout="topleft"
- left="0"
+ left="9"
visible="true"
name="bottom_panel"
- top_pad="10"
- width="313">
- <button
- follows="bottom|left"
- tool_tip="Show additional options"
- height="18"
- image_disabled="OptionsMenu_Disabled"
- image_selected="OptionsMenu_Press"
- image_unselected="OptionsMenu_Off"
- layout="topleft"
- left="10"
- name="options_gear_btn"
- top="6"
- width="18" />
- <dnd_button
- follows="bottom|left"
- height="18"
- image_selected="TrashItem_Press"
- image_unselected="TrashItem_Off"
- layout="topleft"
- right="-5"
- name="trash_btn"
- tool_tip="Remove selected item"
- top="6"
- width="18" />
+ top_pad="-38"
+ width="310">
+ <button
+ follows="bottom|left"
+ tool_tip="Show additional options"
+ height="18"
+ image_disabled="OptionsMenu_Disabled"
+ image_selected="OptionsMenu_Press"
+ image_unselected="OptionsMenu_Off"
+ layout="topleft"
+ left="8"
+ name="options_gear_btn"
+ top="14"
+ width="18" />
+ <dnd_button
+ follows="bottom|right"
+ height="18"
+ image_selected="TrashItem_Press"
+ image_unselected="TrashItem_Off"
+ layout="topleft"
+ right="-9"
+ name="trash_btn"
+ tool_tip="Remove selected item"
+ top="14"
+ width="18" />
<button
follows="bottom|left"
height="23"
@@ -89,20 +101,19 @@
layout="topleft"
name="make_outfit_btn"
tool_tip="Save appearance as an outfit"
- top="26"
- left='10'
- width="120" />
+ top="43"
+ left="0"
+ width="153" />
<button
follows="bottom|right"
height="23"
label="Wear"
layout="topleft"
name="wear_btn"
- right="-10"
- left_pad="10"
- top="26"
+ left_pad="3"
+ top="43"
tool_tip="Wear selected outfit"
- width="120" />
+ width="152" />
<button
follows="bottom|left"
height="23"
@@ -114,4 +125,5 @@
visible="false"
width="20" />
</panel>
+
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index da3a2274c9..daab52f06a 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- Side tray panel -->
<panel
-background_visible="true"
follows="all"
- height="575"
label="People"
layout="topleft"
+ height="449"
min_height="350"
name="people_panel"
top="0"
@@ -24,19 +23,17 @@ background_visible="true"
name="no_friends"
value="No friends" />
<string
- name="no_groups"
- value="No groups" />
- <string
name="people_filter_label"
value="Filter People" />
<string
name="groups_filter_label"
value="Filter Groups" />
<filter_editor
+ text_pad_left="10"
follows="left|top|right"
height="23"
layout="topleft"
- left="15"
+ left="10"
label="Filter"
max_length="300"
name="filter_input"
@@ -45,19 +42,23 @@ background_visible="true"
width="303" />
<tab_container
follows="all"
- height="500"
+ height="383"
layout="topleft"
- left="10"
+ left="5"
name="tabs"
tab_min_width="70"
tab_height="30"
tab_position="top"
top_pad="10"
halign="center"
- width="313">
- <panel
+ width="317">
+ <panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
follows="all"
- height="500"
+ height="383"
label="NEARBY"
layout="topleft"
left="0"
@@ -68,7 +69,7 @@ background_visible="true"
<avatar_list
allow_select="true"
follows="all"
- height="470"
+ height="345"
ignore_online_status="true"
layout="topleft"
left="0"
@@ -78,7 +79,7 @@ background_visible="true"
width="313" />
<panel
follows="left|right|bottom"
- height="30"
+ height="38"
label="bottom_panel"
layout="topleft"
left="0"
@@ -94,7 +95,7 @@ background_visible="true"
layout="topleft"
left="10"
name="nearby_view_sort_btn"
- top="5"
+ top="10"
width="18" />
<button
follows="bottom|left"
@@ -103,9 +104,8 @@ background_visible="true"
image_unselected="AddItem_Off"
image_disabled="AddItem_Disabled"
layout="topleft"
- left_pad="5"
+ left_pad="10"
name="add_friend_btn"
- top_delta="0"
tool_tip="Add selected Resident to your friends List"
width="18">
<commit_callback
@@ -114,9 +114,13 @@ background_visible="true"
</panel>
</panel>
<panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
follows="all"
- height="500"
- label="FRIENDS"
+ height="383"
+ label="MY FRIENDS"
layout="topleft"
left="0"
help_topic="people_friends_tab"
@@ -125,7 +129,7 @@ background_visible="true"
width="313">
<accordion
follows="all"
- height="470"
+ height="345"
layout="topleft"
left="0"
name="friends_accordion"
@@ -133,13 +137,14 @@ background_visible="true"
width="313">
<accordion_tab
layout="topleft"
- height="235"
+ 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"
@@ -149,12 +154,13 @@ background_visible="true"
</accordion_tab>
<accordion_tab
layout="topleft"
- height="235"
+ height="173"
name="tab_all"
title="All">
<avatar_list
allow_select="true"
follows="all"
+ height="173"
layout="topleft"
left="0"
multi_select="true"
@@ -165,7 +171,7 @@ background_visible="true"
</accordion>
<panel
follows="left|right|bottom"
- height="30"
+ height="38"
label="bottom_panel"
layout="topleft"
left="0"
@@ -181,7 +187,7 @@ background_visible="true"
layout="topleft"
left="10"
name="friends_viewsort_btn"
- top="5"
+ top="10"
width="18" />
<button
follows="bottom|left"
@@ -190,10 +196,9 @@ background_visible="true"
image_unselected="AddItem_Off"
image_disabled="AddItem_Disabled"
layout="topleft"
- left_pad="5"
+ left_pad="10"
name="add_btn"
tool_tip="Offer friendship to a Resident"
- top_delta="0"
width="18" />
<button
follows="bottom|left"
@@ -209,11 +214,26 @@ background_visible="true"
top_delta="0"
width="18" />
</panel>
+ <text
+ follows="all"
+ height="450"
+ left="10"
+ name="no_friends_msg"
+ top="10"
+ width="293"
+ wrap="true">
+ To add friends try [secondlife:///app/search/people global search] or click on a user to add them as a friend.
+If you're looking for people to hang out with, [secondlife:///app/worldmap try the Map].
+ </text>
</panel>
<panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
follows="all"
- height="500"
- label="GROUPS"
+ height="383"
+ label="MY GROUPS"
layout="topleft"
left="0"
help_topic="people_groups_tab"
@@ -222,16 +242,17 @@ background_visible="true"
width="313">
<group_list
follows="all"
- height="470"
+ height="345"
layout="topleft"
left="0"
name="group_list"
+ no_filtered_groups_msg="[secondlife:///app/search/groups Try fine the group in search?]"
+ no_groups_msg="[secondlife:///app/search/groups Try searching for some groups to join.]"
top="0"
width="313" />
<panel
- top_pad="0"
follows="left|right|bottom"
- height="30"
+ height="38"
label="bottom_panel"
layout="topleft"
left="0"
@@ -247,7 +268,7 @@ background_visible="true"
layout="topleft"
left="10"
name="groups_viewsort_btn"
- top="7"
+ top="10"
width="18" />
<button
follows="bottom|left"
@@ -256,10 +277,9 @@ background_visible="true"
image_unselected="AddItem_Off"
image_disabled="AddItem_Disabled"
layout="topleft"
- left_pad="5"
+ left_pad="10"
name="plus_btn"
tool_tip="Join group/Create new group"
- top_delta="0"
width="18" />
<button
follows="bottom|left"
@@ -268,16 +288,20 @@ background_visible="true"
image_selected="Activate_Checkmark"
image_unselected="Activate_Checkmark"
layout="topleft"
- left_pad="24"
+ left_pad="10"
name="activate_btn"
tool_tip="Activate selected group"
- top_delta="5"
+ top_delta="4"
width="10" />
</panel>
</panel>
<panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
follows="all"
- height="500"
+ height="383"
label="RECENT"
layout="topleft"
left="0"
@@ -288,7 +312,7 @@ background_visible="true"
<avatar_list
allow_select="true"
follows="all"
- height="470"
+ height="345"
layout="topleft"
left="0"
multi_select="true"
@@ -297,9 +321,8 @@ background_visible="true"
top="0"
width="313" />
<panel
- top_pad="0"
follows="left|right|bottom"
- height="30"
+ height="38"
label="bottom_panel"
layout="topleft"
left="0"
@@ -315,7 +338,7 @@ background_visible="true"
layout="topleft"
left="10"
name="recent_viewsort_btn"
- top="7"
+ top="10"
width="18" />
<button
follows="bottom|left"
@@ -324,7 +347,7 @@ background_visible="true"
image_unselected="AddItem_Off"
image_disabled="AddItem_Disabled"
layout="topleft"
- left_pad="5"
+ left_pad="10"
name="add_friend_btn"
top_delta="0"
tool_tip="Add selected Resident to your friends List"
@@ -337,89 +360,82 @@ background_visible="true"
</tab_container>
<panel
follows="bottom|left"
- height="35"
+ height="23"
layout="topleft"
- left="10"
+ left="8"
+ top_pad="0"
name="button_bar"
width="313">
<button
follows="bottom|left"
- top="4"
- left="0"
height="23"
label="Profile"
layout="topleft"
name="view_profile_btn"
tool_tip="Show picture, groups, and other Residents information"
- width="70" />
+ width="64" />
<button
follows="bottom|left"
- top="4"
- left_pad="2"
+ left_pad="3"
height="23"
label="IM"
layout="topleft"
name="im_btn"
tool_tip="Open instant message session"
- width="45" />
+ width="43" />
<button
follows="bottom|left"
- top="4"
- left_pad="2"
+ left_pad="3"
height="23"
label="Call"
layout="topleft"
name="call_btn"
tool_tip="Call this Resident"
- width="50" />
+ width="51" />
<button
- follows="left|top"
- top="4"
- left_pad="2"
+ follows="bottom|left"
+ left_pad="3"
height="23"
label="Share"
layout="topleft"
name="share_btn"
- width="60" />
+ width="62" />
<button
follows="bottom|left"
- top="4"
- left_pad="2"
+ left_pad="3"
height="23"
label="Teleport"
layout="topleft"
name="teleport_btn"
tool_tip="Offer teleport"
- width="75" />
+ width="76" />
<button
follows="bottom|left"
- top="4"
left="0"
+ top_delta="0"
height="23"
label="Group Profile"
layout="topleft"
name="group_info_btn"
tool_tip="Show group information"
- width="102" />
+ width="107" />
<button
follows="bottom|left"
- top="4"
- left_pad="2"
+ left_pad="3"
height="23"
label="Group Chat"
layout="topleft"
name="chat_btn"
tool_tip="Open chat session"
- width="102" />
+ width="100" />
<button
follows="bottom|left"
- top="4"
- left_pad="2"
+ left_pad="3"
height="23"
label="Group Call"
layout="topleft"
name="group_call_btn"
tool_tip="Call this group"
- width="102" />
+ width="95" />
</panel>
</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 7489988722..ecf5516390 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -16,7 +16,7 @@
image_overlay="BackArrow_Off"
layout="topleft"
name="back_btn"
- left="10"
+ left="12"
tab_stop="false"
top="2"
width="23" />
@@ -27,7 +27,7 @@
layout="topleft"
left_pad="10"
name="title"
- text_color="white"
+ text_color="LtGray"
top="0"
value="Pick Info"
use_ellipses="true"
@@ -36,12 +36,12 @@
color="DkGray2"
opaque="true"
follows="all"
- height="500"
+ height="503"
layout="topleft"
- left="10"
- top_pad="5"
+ left="8"
+ top_pad="10"
name="profile_scroll"
- width="313">
+ width="312">
<panel
name="scroll_content_panel"
follows="left|top|right"
@@ -57,12 +57,15 @@
follows="left|top|right"
height="197"
layout="topleft"
- left="10"
+ left="11"
name="pick_snapshot"
- top="20"
- width="280" />
- <text
+ top="10"
+ width="272" />
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top|right"
+ h_pad="0"
height="35"
width="280"
layout="topleft"
@@ -71,17 +74,24 @@
left="10"
top_pad="10"
name="pick_name"
+ read_only="true"
text_color="white"
+ v_pad="0"
value="[name]"
use_ellipses="true" />
- <text
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top|right"
+ h_pad="0"
height="25"
layout="topleft"
left="10"
name="pick_location"
+ read_only="true"
width="280"
word_wrap="true"
+ v_pad="0"
value="[loading...]" />
<text_editor
bg_readonly_color="DkGray2"
@@ -105,8 +115,8 @@
follows="left|right|bottom"
height="35"
layout="topleft"
- top_pad="8"
- left="10"
+ top_pad="5"
+ left="8"
name="buttons">
<button
follows="bottom|left"
@@ -116,24 +126,22 @@
left="0"
name="teleport_btn"
top="0"
- width="90" />
+ width="101" />
<button
follows="bottom|left"
height="23"
label="Map"
layout="topleft"
- left_pad="10"
+ left_pad="3"
name="show_on_map_btn"
- top="0"
- width="90" />
+ width="100" />
<button
follows="bottom|left"
height="23"
label="Edit"
layout="topleft"
- right="-1"
name="edit_btn"
- top="0"
- width="90" />
+ left_pad="3"
+ width="101" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
index 023b1fc81d..8b25fb5d2a 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
@@ -64,6 +64,7 @@
layout="topleft"
left="103"
name="picture_descr"
+ textbox.show_context_menu="false"
top_pad="0"
width="178"
word_wrap="true" />
@@ -75,6 +76,6 @@
left_pad="5"
right="-8"
name="info_chevron"
- top_delta="15"
+ top_delta="24"
width="20" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index d31f4d039f..0093a08e15 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
follows="all"
- height="540"
+ height="548"
label="Picks"
layout="topleft"
left="0"
@@ -21,12 +24,13 @@
layout="topleft"
left="6"
name="picks_panel_text"
+ wrap="true"
top="10"
width="313"/>
<accordion
fit_parent="true"
follows="all"
- height="465"
+ height="470"
layout="topleft"
left="0"
name="accordion"
@@ -70,17 +74,19 @@
</accordion_tab>
</accordion>
<panel
- background_visible="true"
+bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
bevel_style="none"
enabled="false"
auto_resize="false"
follows="bottom"
- left="0"
- height="18"
+ left="1"
+ height="27"
label="bottom_panel"
layout="topleft"
name="edit_panel"
- top_pad="0"
+ top_pad="-2"
width="313">
<button
enabled="false"
@@ -90,9 +96,9 @@
image_unselected="OptionsMenu_Off"
image_disabled="OptionsMenu_Disabled"
layout="topleft"
- left="0"
+ left="10"
name="gear_menu_btn"
- top="5"
+ top="9"
width="18" />
<button
follows="bottom|left"
@@ -104,7 +110,7 @@
left_pad="15"
name="new_btn"
tool_tip="Create a new pick or classified at the current location"
- top="5"
+ top="9"
width="18" />
<button
follows="bottom|right"
@@ -115,14 +121,17 @@
layout="topleft"
name="trash_btn"
right="-10"
- top="5"
+ top="9"
width="18" />
</panel>
<panel
+ bg_opaque_color="DkGray"
+ background_visible="true"
+ background_opaque="true"
layout="topleft"
left="0"
- height="30"
- top_pad="10"
+ height="40"
+ top="502"
name="buttons_cucks"
width="313">
<button
@@ -131,35 +140,33 @@
height="23"
label="Info"
layout="topleft"
- left="5"
+ left="2"
name="info_btn"
tab_stop="false"
tool_tip="Show pick information"
- top="0"
- width="55" />
+ top="5"
+ width="95" />
<button
enabled="false"
follows="bottom|left"
height="23"
label="Teleport"
layout="topleft"
- left_pad="5"
+ left_pad="3"
name="teleport_btn"
tab_stop="false"
tool_tip="Teleport to the corresponding area"
- top="0"
- width="77" />
+ width="117" />
<button
enabled="false"
follows="bottom|left"
height="23"
label="Map"
layout="topleft"
- left_pad="5"
+ left_pad="3"
name="show_on_map_btn"
tab_stop="false"
tool_tip="Show the corresponding area on the World Map"
- top="0"
- width="50" />
+ width="90" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 7ac771de27..b22dad5841 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -8,7 +8,7 @@
min_height="350"
name="place_profile"
top="20"
- width="330">
+ width="333">
<string
name="on"
value="On" />
@@ -29,7 +29,7 @@
value="Place Profile" />
<string
name="title_teleport_history"
- value="Teleport History Location" />
+ value="Teleport History" />
<string
name="not_available"
value="(N\A)" />
@@ -143,11 +143,11 @@
height="23"
image_overlay="BackArrow_Off"
layout="topleft"
- left="10"
+ left="11"
name="back_btn"
tool_tip="Back"
tab_stop="false"
- top="0"
+ top="4"
width="23" />
<text
follows="top|left|right"
@@ -156,37 +156,37 @@
layout="topleft"
left_pad="10"
name="title"
- text_color="white"
- top="0"
+ text_color="LtGray"
+ top="2"
use_ellipses="true"
value="Place Profile"
- width="275" />
+ width="280" />
<scroll_container
color="DkGray2"
follows="all"
- height="533"
+ height="532"
layout="topleft"
- left="10"
+ left="9"
name="place_scroll"
opaque="true"
- top_pad="5"
- width="313">
+ top_pad="10"
+ width="310">
<panel
bg_alpha_color="DkGray2"
follows="left|top|right"
- height="533"
+ height="700"
layout="topleft"
left="0"
min_height="300"
name="scrolling_panel"
top="0"
- width="313">
+ width="285">
<texture_picker
enabled="false"
- follows="top|left"
- height="190"
+ follows="left|top|right"
+ height="197"
layout="topleft"
- left="10"
+ left="11"
name="logo"
top="10"
width="290" />
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 9bfd8b91d8..ff5d89470c 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -17,12 +17,13 @@ background_visible="true"
name="teleport_history_tab_title"
value="TELEPORT HISTORY" />
<filter_editor
+ text_pad_left="10"
follows="left|top|right"
- font="SansSerif"
+ font="SansSerifSmall"
height="23"
layout="topleft"
- left="15"
- label="Filter Places"
+ left="10"
+ label="Filter My Places"
max_length="300"
name="Filter"
top="3"
@@ -30,15 +31,15 @@ background_visible="true"
<tab_container
follows="all"
halign="center"
- height="500"
+ height="503"
layout="topleft"
- left="10"
+ left="6"
name="Places Tabs"
tab_min_width="80"
tab_height="30"
tab_position="top"
top_pad="10"
- width="313" />
+ width="315" />
<panel
class="panel_place_profile"
filename="panel_place_profile.xml"
@@ -50,7 +51,7 @@ background_visible="true"
name="panel_place_profile"
top="5"
visible="false"
- width="313" />
+ width="315" />
<panel
class="panel_landmark_info"
filename="panel_landmark_info.xml"
@@ -62,13 +63,13 @@ background_visible="true"
name="panel_landmark_info"
top="5"
visible="false"
- width="313" />
+ width="315" />
<panel
height="19"
layout="topleft"
- left="0"
+ left="4"
name="button_panel"
- width="313">
+ width="315">
<button
follows="bottom|left"
height="23"
@@ -77,65 +78,59 @@ background_visible="true"
left="5"
name="teleport_btn"
tool_tip="Teleport to the selected area"
- top="0"
- width="100" />
+ top="1"
+ width="108" />
<button
follows="bottom|left"
height="23"
label="Map"
layout="topleft"
- left_pad="5"
+ left_pad="3"
name="map_btn"
- top="0"
- width="70" />
+ width="85" />
<button
follows="bottom|left"
height="23"
label="Edit"
layout="topleft"
- left_pad="5"
+ left_pad="3"
name="edit_btn"
tool_tip="Edit landmark information"
- top="0"
- width="70" />
+ width="83" />
<button
follows="bottom|right"
height="23"
- image_disabled="ForwardArrow_Off"
- image_selected="ForwardArrow_Press"
- image_unselected="ForwardArrow_Off"
+ label="▼"
layout="topleft"
name="overflow_btn"
tool_tip="Show additional options"
- right="-10"
- top="0"
- width="18" />
+ left_pad="3"
+ width="23" />
<button
- follows="bottom|right"
+ follows="bottom|left"
height="23"
- label="Close"
+ label="Save"
layout="topleft"
- name="close_btn"
- right="-10"
- top="0"
- width="60" />
+ name="save_btn"
+ left="5"
+ top_pad="-23"
+ width="152" />
<button
follows="bottom|right"
height="23"
label="Cancel"
layout="topleft"
name="cancel_btn"
- right="-10"
- top="0"
- width="60" />
+ left_pad="3"
+ width="153" />
<button
follows="bottom|right"
height="23"
- label="Save"
+ label="Close"
layout="topleft"
- name="save_btn"
- right="-75"
- top="0"
+ name="close_btn"
+ right="-10"
+ top="1"
width="60" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
index 141678f7eb..05a3771edf 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
-
<panel
border="true"
- follows="left|top|right|bottom"
+ follows="all"
height="408"
+ label="Advanced"
layout="topleft"
left="102"
name="advanced"
@@ -13,130 +13,29 @@
name="aspect_ratio_text">
[NUM]:[DEN]
</panel.string>
- <check_box
- control_name="UseChatBubbles"
- follows="left|top"
- height="16"
- label="Bubble chat"
- layout="topleft"
- left="30"
- top="10"
- name="bubble_text_chat"
- width="150" />
- <color_swatch
- can_apply_immediately="true"
- color="0 0 0 1"
- control_name="BackgroundChatColor"
- follows="left|top"
- height="47"
- layout="topleft"
- left_delta="280"
- name="background"
- tool_tip="Choose color for bubble chat"
- top_delta="1"
- width="44">
- <color_swatch.init_callback
- function="Pref.getUIColor"
- parameter="BackgroundChatColor" />
- <color_swatch.commit_callback
- function="Pref.applyUIColor"
- parameter="BackgroundChatColor" />
- </color_swatch>
- <slider
- control_name="ChatBubbleOpacity"
- follows="left|top"
- height="16"
- increment="0.05"
- initial_value="1"
- label="Opacity"
- layout="topleft"
- left_delta="-230"
- top_pad="-28"
- label_width="50"
- name="bubble_chat_opacity"
- width="200" />
- <text
- follows="left|top"
- type="string"
- length="1"
- height="25"
- layout="topleft"
- left="30"
- top_pad="5"
- name="AspectRatioLabel1"
- tool_tip="width / height"
- label_width="50"
- width="120">
- Aspect ratio
- </text>
- <combo_box
- allow_text_entry="true"
- height="23"
- follows="left|top"
- layout="topleft"
- left_pad="0"
- max_chars="100"
- name="aspect_ratio"
- tool_tip="width / height"
- top_delta="0"
- width="150">
- <combo_box.item
- enabled="true"
- label=" 4:3 (Standard CRT)"
- name="item1"
- value="1.333333" />
- <combo_box.item
- enabled="true"
- label=" 5:4 (1280x1024 LCD)"
- name="item2"
- value="1.25" />
- <combo_box.item
- enabled="true"
- label=" 8:5 (Widescreen)"
- name="item3"
- value="1.6" />
- <combo_box.item
- enabled="true"
- label=" 16:9 (Widescreen)"
- name="item4"
- value="1.7777777" />
- </combo_box>
- <check_box
- control_name="FullScreenAutoDetectAspectRatio"
- follows="left|top"
- height="25"
- label="Auto-detect"
- layout="topleft"
- left_pad="10"
- name="aspect_auto_detect"
- width="256">
- <check_box.commit_callback
- function="Pref.AutoDetectAspect" />
- </check_box>
- <text
- follows="left|top"
- type="string"
- length="1"
- height="10"
- left="30"
- name="heading1"
- top_pad="5"
- width="270">
-Camera:
- </text>
+ <icon
+ follows="left|top"
+ height="18"
+ image_name="Cam_FreeCam_Off"
+ layout="topleft"
+ name="camera_icon"
+ mouse_opaque="false"
+ visible="true"
+ width="18"
+ left="30"
+ top="10"/>
<slider
can_edit_text="true"
- control_name="CameraAngle"
+ control_name="CameraAngle"
decimal_digits="2"
- top_pad="5"
follows="left|top"
height="16"
increment="0.025"
initial_value="1.57"
layout="topleft"
label_width="100"
- label="View Angle"
- left_delta="50"
+ label="View angle"
+ left_pad="30"
max_val="2.97"
min_val="0.17"
name="camera_fov"
@@ -165,11 +64,11 @@ Camera:
type="string"
length="1"
height="10"
- left="30"
+ left="80"
name="heading2"
width="270"
top_pad="5">
-Automatic positioning for:
+Automatic position for:
</text>
<check_box
control_name="EditCameraMovement"
@@ -177,7 +76,7 @@ Automatic positioning for:
follows="left|top"
label="Build/Edit"
layout="topleft"
- left_delta="50"
+ left_delta="30"
name="edit_camera_movement"
tool_tip="Use automatic camera positioning when entering and exiting edit mode"
width="280"
@@ -191,27 +90,27 @@ Automatic positioning for:
name="appearance_camera_movement"
tool_tip="Use automatic camera positioning while in edit mode"
width="242" />
- <text
- follows="left|top"
- type="string"
- length="1"
- height="10"
- left="30"
- name="heading3"
- top_pad="5"
- width="270">
-Avatars:
- </text>
+ <icon
+ follows="left|top"
+ height="18"
+ image_name="Move_Walk_Off"
+ layout="topleft"
+ name="avatar_icon"
+ mouse_opaque="false"
+ visible="true"
+ width="18"
+ top_pad="2"
+ left="30"
+ />
<check_box
control_name="FirstPersonAvatarVisible"
follows="left|top"
height="20"
label="Show me in Mouselook"
layout="topleft"
- left_delta="50"
+ left_pad="30"
name="first_person_avatar_visible"
- width="256"
- top_pad="0"/>
+ width="256" />
<check_box
control_name="ArrowKeysAlwaysMove"
follows="left|top"
@@ -242,22 +141,61 @@ Avatars:
name="enable_lip_sync"
width="237"
top_pad="0" />
+ <check_box
+ control_name="UseChatBubbles"
+ follows="left|top"
+ height="16"
+ label="Bubble chat"
+ layout="topleft"
+ left="78"
+ top_pad="6"
+ name="bubble_text_chat"
+ width="150" />
+ <slider
+ control_name="ChatBubbleOpacity"
+ follows="left|top"
+ height="16"
+ increment="0.05"
+ initial_value="1"
+ label="Opacity"
+ layout="topleft"
+ left="80"
+ label_width="50"
+ name="bubble_chat_opacity"
+ width="200" />
+ <color_swatch
+ can_apply_immediately="true"
+ color="0 0 0 1"
+ control_name="BackgroundChatColor"
+ follows="left|top"
+ height="50"
+ layout="topleft"
+ left_pad="10"
+ name="background"
+ tool_tip="Choose color for bubble chat"
+ width="38">
+ <color_swatch.init_callback
+ function="Pref.getUIColor"
+ parameter="BackgroundChatColor" />
+ <color_swatch.commit_callback
+ function="Pref.applyUIColor"
+ parameter="BackgroundChatColor" />
+ </color_swatch>
<check_box
control_name="ShowScriptErrors"
follows="left|top"
height="20"
- label="Show script errors"
+ label="Show script errors in:"
layout="topleft"
left="30"
name="show_script_errors"
- width="256"
- top_pad="5"/>
+ width="256" />
<radio_group
enabled_control="ShowScriptErrors"
control_name="ShowScriptErrorsLocation"
follows="top|left"
draw_border="false"
- height="40"
+ height="16"
layout="topleft"
left_delta="50"
name="show_location"
@@ -265,7 +203,7 @@ Avatars:
width="364">
<radio_item
height="16"
- label="In chat"
+ label="Nearby chat"
layout="topleft"
left="3"
name="0"
@@ -273,7 +211,7 @@ Avatars:
width="315" />
<radio_item
height="16"
- label="In a window"
+ label="Separate window"
layout="topleft"
left_delta="175"
name="1"
@@ -284,49 +222,47 @@ Avatars:
follows="top|left"
enabled_control="EnableVoiceChat"
control_name="PushToTalkToggle"
- height="20"
- label="Toggle mode for microphone when I press the Speak trigger key:"
+ height="15"
+ label="Toggle speak on/off when I press:"
layout="topleft"
left="30"
name="push_to_talk_toggle_check"
width="237"
- top_pad="-25"
tool_tip="When in toggle mode, press and release the trigger key ONCE to switch your microphone on or off. When not in toggle mode, the microphone broadcasts your voice only while the trigger is being held down."/>
<line_editor
follows="top|left"
control_name="PushToTalkButton"
- enabled="false"
+ enabled="false"
enabled_control="EnableVoiceChat"
- height="19"
- left_delta="50"
- max_length="254"
+ height="23"
+ left="80"
+ max_length="200"
name="modifier_combo"
label="Push-to-Speak trigger"
- top_pad="0"
- width="280" />
+ top_pad="5"
+ width="200" />
<button
follows="top|left"
enabled_control="EnableVoiceChat"
height="23"
label="Set Key"
- left_delta="0"
+ left_pad="5"
name="set_voice_hotkey_button"
- width="115"
- top_pad="5">
+ width="100">
<button.commit_callback
function="Pref.VoiceSetKey" />
</button>
<button
- bottom_delta="0"
enabled_control="EnableVoiceChat"
- follows="left"
+ follows="top|left"
halign="center"
height="23"
- label="Middle Mouse Button"
- left_delta="120"
+ image_overlay="Refresh_Off"
+ tool_tip="Reset to Middle Mouse Button"
mouse_opaque="true"
name="set_voice_middlemouse_button"
- width="160">
+ left_pad="5"
+ width="25">
<button.commit_callback
function="Pref.VoiceSetMiddleMouse" />
</button>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
index ace8281b4e..188fd3b7bc 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
border="true"
- height="500"
+ height="408"
label="Popups"
layout="topleft"
left="0"
@@ -14,7 +14,7 @@
follows="top|left"
height="12"
layout="topleft"
- left="30"
+ left="10"
name="tell_me_label"
top="10"
width="300">
@@ -32,7 +32,7 @@
<check_box
control_name="ChatOnlineNotification"
height="16"
- label="When my friends log out or in"
+ label="When my friends log in or out"
layout="topleft"
left_delta="0"
name="friends_online_notify_checkbox"
@@ -42,38 +42,33 @@
type="string"
length="1"
follows="top|left"
- font="SansSerifBold"
height="12"
layout="topleft"
- left="30"
+ left="10"
name="show_label"
- top_pad="14"
+ top_pad="8"
width="450">
- Always show these notifications:
+ Always show:
</text>
<scroll_list
follows="top|left"
- height="92"
+ height="140"
layout="topleft"
left="10"
- multi_select="true"
+ multi_select="true"
name="enabled_popups"
width="475" />
<button
enabled_control="FirstSelectedDisabledPopups"
follows="top|left"
height="23"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
image_overlay="Arrow_Up"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
hover_glow_amount="0.15"
layout="topleft"
- left_delta="137"
+ left="180"
name="enable_this_popup"
- top_pad="10"
- width="43">
+ top_pad="5"
+ width="40">
<button.commit_callback
function="Pref.ClickEnablePopup" />
</button>
@@ -81,17 +76,13 @@
enabled_control="FirstSelectedEnabledPopups"
follows="top|left"
height="23"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
image_overlay="Arrow_Down"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
hover_glow_amount="0.15"
layout="topleft"
- left_pad="50"
+ left_pad="40"
name="disable_this_popup"
top_delta="0"
- width="43">
+ width="40">
<button.commit_callback
function="Pref.ClickDisablePopup" />
</button>
@@ -99,21 +90,20 @@
type="string"
length="1"
follows="top|left"
- font="SansSerifBold"
height="12"
layout="topleft"
- left="30"
+ left="10"
name="dont_show_label"
- top_pad="10"
+ top_pad="-10"
width="450">
- Never show these notifications:
+ Never show:
</text>
<scroll_list
follows="top|left"
- height="92"
+ height="140"
layout="topleft"
left="10"
- multi_select="true"
+ multi_select="true"
name="disabled_popups"
width="475" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index 6e0b94ac2b..2e81139ef2 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -9,13 +9,22 @@
name="chat"
top="1"
width="517">
- <radio_group
+ <text
+ follows="left|top"
+ layout="topleft"
+ left="30"
+ height="12"
+ width="120"
+ top="10">
+ Font size:
+ </text>
+ <radio_group
height="30"
layout="topleft"
- left="30"
- control_name="ChatFontSize"
+ left="40"
+ control_name="ChatFontSize"
name="chat_font_size"
- top="10"
+ top_pad="0"
width="440">
<radio_item
height="16"
@@ -23,7 +32,7 @@
layout="topleft"
left="0"
name="radio"
- value="0"
+ value="0"
top="10"
width="125" />
<radio_item
@@ -32,7 +41,7 @@
layout="topleft"
left_delta="145"
name="radio2"
- value="1"
+ value="1"
top_delta="0"
width="125" />
<radio_item
@@ -41,16 +50,28 @@
layout="topleft"
left_delta="170"
name="radio3"
- value="2"
+ value="2"
top_delta="0"
width="125" />
</radio_group>
+
+ <text
+ follows="left|top"
+ layout="topleft"
+ left="30"
+ height="12"
+ top_pad="10"
+ width="120"
+ >
+ Font colors:
+ </text>
+
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="47"
layout="topleft"
- left="30"
+ left="40"
name="user"
top_pad="10"
width="44" >
@@ -79,7 +100,7 @@
follows="left|top"
height="47"
layout="topleft"
- left="180"
+ left="190"
name="agent"
top_pad="-17"
width="44" >
@@ -105,12 +126,12 @@
</text>
<color_swatch
can_apply_immediately="true"
- color="0.6 0.6 1 1"
+ color="LtGray"
follows="left|top"
height="47"
label_width="60"
layout="topleft"
- left="350"
+ left="360"
name="im"
top_pad="-17"
width="44">
@@ -136,12 +157,12 @@
</text>
<color_swatch
can_apply_immediately="true"
- color="0.8 1 1 1"
+ color="LtGray"
follows="left|top"
height="47"
label_width="44"
layout="topleft"
- left="30"
+ left="40"
name="system"
top_pad="40"
width="44" >
@@ -167,11 +188,11 @@
</text>
<color_swatch
can_apply_immediately="true"
- color="0.82 0.82 0.99 1"
+ color="Red"
follows="left|top"
height="47"
layout="topleft"
- left="180"
+ left="190"
name="script_error"
top_pad="-17"
width="44">
@@ -197,11 +218,11 @@
</text>
<color_swatch
can_apply_immediately="true"
- color="0.7 0.9 0.7 1"
+ color="EmphasisColor_35"
follows="left|top"
height="47"
layout="topleft"
- left="350"
+ left="360"
name="objects"
top_pad="-17"
width="44" >
@@ -227,11 +248,11 @@
</text>
<color_swatch
can_apply_immediately="true"
- color="0.7 0.9 0.7 1"
+ color="LtYellow"
follows="left|top"
height="47"
layout="topleft"
- left="30"
+ left="40"
name="owner"
top_pad="40"
width="44" >
@@ -257,11 +278,11 @@
</text>
<color_swatch
can_apply_immediately="true"
- color="0.6 0.6 1 1"
+ color="EmphasisColor"
follows="left|top"
height="47"
layout="topleft"
- left="180"
+ left="190"
name="links"
top_pad="-17"
width="44" >
@@ -314,24 +335,37 @@
top_pad="5"
width="400" />
<text
+ follows="left|top"
+ layout="topleft"
left="30"
height="20"
- width="300"
+ width="120"
top_pad="20">
- Show IMs in: (Requires restart)
+ Show IMs in:
</text>
+ <text
+ follows="left|top"
+ layout="topleft"
+ top_delta="0"
+ left="120"
+ height="20"
+ width="100"
+ text_color="White_25"
+ >
+ (requires restart)
+ </text>
<radio_group
height="30"
layout="topleft"
- left_delta="30"
+ left="40"
control_name="ChatWindow"
name="chat_window"
top_pad="0"
- tool_tip="Show your Instant Messages in separate windows, or in one window with many tabs (Requires restart)"
+ tool_tip="Show your Instant Messages in separate floaters, or in one floater with many tabs (Requires restart)"
width="331">
<radio_item
height="16"
- label="Multiple windows"
+ label="Separate windows"
layout="topleft"
left="0"
name="radio"
@@ -340,7 +374,7 @@
width="150" />
<radio_item
height="16"
- label="One window"
+ label="Tabs"
layout="topleft"
left_delta="0"
name="radio2"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index 22c75a595e..099c789e4b 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -89,11 +89,12 @@
<text
font="SansSerifSmall"
type="string"
+ text_color="White_50"
length="1"
follows="left|top"
height="18"
layout="topleft"
- left_pad="5"
+ left_pad="10"
name="language_textbox2"
width="200">
(Requires restart)
@@ -179,7 +180,7 @@
left_pad="5"
name="show_location_checkbox"
top_delta="5"
- width="256" />
+ width="256" />
<text
type="string"
length="1"
@@ -203,21 +204,21 @@
layout="topleft"
name="radio"
value="0"
- width="100" />
+ width="75" />
<radio_item
label="On"
layout="topleft"
left_pad="12"
name="radio2"
value="1"
- width="100" />
+ width="75" />
<radio_item
label="Show briefly"
layout="topleft"
left_pad="12"
name="radio3"
- value="2"
- width="100" />
+ value="2"
+ width="160" />
</radio_group>
<check_box
enabled_control="AvatarNameTagMode"
@@ -323,11 +324,10 @@
follows="left|top"
height="13"
layout="topleft"
- text_color="white"
left="30"
mouse_opaque="false"
name="text_box3"
- top_pad="15"
+ top_pad="10"
width="240">
Busy mode response:
</text>
@@ -336,18 +336,16 @@
text_readonly_color="LabelDisabledColor"
bg_writeable_color="LtGray"
use_ellipses="false"
- bg_visible="true"
- border_visible="true"
hover="false"
commit_on_focus_lost = "true"
follows="left|top"
- height="50"
+ height="60"
layout="topleft"
left="50"
name="busy_response"
- width="400"
+ width="440"
word_wrap="true">
log_in_to_change
</text_editor>
-
+
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 82821a1dfe..f20526b491 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -366,10 +366,7 @@
min_val="64"
name="DrawDistance"
top="3"
- width="255">
- <slider.commit_callback
- function="Pref.UpdateMeterText" />
- </slider>
+ width="255" />
<text
type="string"
length="1"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index f7e3ede93c..f232a69482 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -17,6 +17,7 @@
follows="left|bottom"
height="23"
label="Clear History"
+ tool_tip="Clear login image, last location, teleport history, web, and texture cache"
layout="topleft"
left="30"
name="clear_cache"
@@ -77,43 +78,6 @@
name="cookies_enabled"
top_pad="10"
width="350" />
- <check_box
- name="media_enabled"
- control_name="AudioStreamingMedia"
- height="16"
- label="Media Enabled"
- layout="topleft"
- left="30"
- top_pad="10"
- width="350">
- <check_box.commit_callback
- function="Pref.MediaEnabled" />
- </check_box>
- <check_box
- enabled_control="AudioStreamingMedia"
- control_name="ParcelMediaAutoPlayEnable"
- height="16"
- label="Allow Media to auto-play"
- layout="topleft"
- left="30"
- name="autoplay_enabled"
- top_pad="10"
- width="350">
- <check_box.commit_callback
- function="Pref.ParcelMediaAutoPlayEnable" />
- </check_box>
- <check_box
- control_name="AudioStreamingMusic"
- height="16"
- label="Music Enabled"
- layout="topleft"
- left="30"
- name="music_enabled"
- top_pad="10"
- width="350">
- <check_box.commit_callback
- function="Pref.MusicEnabled" />
- </check_box>
<text
type="string"
length="1"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index d8e3f4ccfb..a7cdd241c5 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -17,7 +17,7 @@
increment="0.05"
initial_value="0.5"
label="Master volume"
- label_width="160"
+ label_width="120"
layout="topleft"
left="0"
name="System Volume"
@@ -25,34 +25,67 @@
slider_label.halign="right"
top="10"
volume="true"
- width="350">
+ width="300">
<slider.commit_callback
function="Pref.setControlFalse"
parameter="MuteAudio" />
</slider>
<button
control_name="MuteAudio"
- follows="top|right"
- height="18"
- image_selected="Parcel_VoiceNo_Dark"
- image_unselected="Parcel_Voice_Dark"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
is_toggle="true"
layout="topleft"
- left_pad="16"
+ left_pad="5"
name="mute_audio"
tab_stop="false"
- top_delta="-2"
- width="22" />
+ width="16" />
<check_box
control_name="MuteWhenMinimized"
height="15"
initial_value="true"
- label="Mute if minimized"
+ label="Mute when minimized"
layout="topleft"
- left="167"
name="mute_when_minimized"
- top_pad="5"
+ top_delta="3"
+ left_pad="5"
width="215" />
+ <slider
+ control_name="AudioLevelUI"
+ disabled_control="MuteAudio"
+ follows="left|top"
+ height="15"
+ increment="0.05"
+ initial_value="0.5"
+ label="Buttons"
+ label_width="120"
+ layout="topleft"
+ left="0"
+ name="UI Volume"
+ show_text="false"
+ slider_label.halign="right"
+ top_pad="7"
+ volume="true"
+ width="300">
+ <slider.commit_callback
+ function="Pref.setControlFalse"
+ parameter="MuteUI" />
+ </slider>
+ <button
+ control_name="MuteUI"
+ disabled_control="MuteAudio"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
+ is_toggle="true"
+ layout="topleft"
+ left_pad="5"
+ name="mute_audio"
+ tab_stop="false"
+ width="16" />
<slider
control_name="AudioLevelAmbient"
disabled_control="MuteAudio"
@@ -61,7 +94,7 @@
increment="0.05"
initial_value="0.5"
label="Ambient"
- label_width="160"
+ label_width="120"
layout="topleft"
left="0"
name="Wind Volume"
@@ -69,95 +102,24 @@
slider_label.halign="right"
top_pad="7"
volume="true"
- width="350">
+ width="300">
<slider.commit_callback
function="Pref.setControlFalse"
parameter="MuteAmbient" />
</slider>
- <button
- control_name="MuteAmbient"
- disabled_control="MuteAudio"
- follows="top|right"
- height="18"
- image_selected="Parcel_VoiceNo_Dark"
- image_unselected="Parcel_Voice_Dark"
- is_toggle="true"
- layout="topleft"
- left_pad="16"
- name="mute_wind"
- tab_stop="false"
- top_delta="-2"
- width="22" />
- <slider
- control_name="AudioLevelUI"
- disabled_control="MuteAudio"
- follows="left|top"
- height="15"
- increment="0.05"
- initial_value="0.5"
- label="Buttons"
- label_width="160"
- layout="topleft"
- left="0"
- name="UI Volume"
- show_text="false"
- slider_label.halign="right"
- top_pad="7"
- volume="true"
- width="350">
- <slider.commit_callback
- function="Pref.setControlFalse"
- parameter="MuteUI" />
- </slider>
- <button
- control_name="MuteUI"
- disabled_control="MuteAudio"
- follows="top|right"
- height="18"
- image_selected="Parcel_VoiceNo_Dark"
- image_unselected="Parcel_Voice_Dark"
- is_toggle="true"
- layout="topleft"
- left_pad="16"
- name="mute_ui"
- tab_stop="false"
- top_delta="-2"
- width="22" />
- <slider
- control_name="AudioLevelMedia"
- disabled_control="MuteAudio"
- follows="left|top"
- height="15"
- increment="0.05"
- initial_value="0.5"
- label="Media"
- label_width="160"
- layout="topleft"
- left="0"
- name="Media Volume"
- show_text="false"
- slider_label.halign="right"
- top_pad="7"
- volume="true"
- width="350">
- <slider.commit_callback
- function="Pref.setControlFalse"
- parameter="MuteMedia" />
- </slider>
- <button
- control_name="MuteMedia"
+ <button
+ control_name="MuteAmbient"
disabled_control="MuteAudio"
- follows="top|right"
- height="18"
- image_selected="Parcel_VoiceNo_Dark"
- image_unselected="Parcel_Voice_Dark"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
is_toggle="true"
layout="topleft"
- left_pad="16"
- name="mute_media"
+ left_pad="5"
+ name="mute_audio"
tab_stop="false"
- top_delta="-2"
- width="22" />
+ width="16" />
<slider
control_name="AudioLevelSFX"
disabled_control="MuteAudio"
@@ -165,8 +127,8 @@
height="15"
increment="0.05"
initial_value="0.5"
- label="Sound effects"
- label_width="160"
+ label="Sound Effects"
+ label_width="120"
slider_label.halign="right"
layout="topleft"
left="0"
@@ -174,25 +136,24 @@
show_text="false"
top_pad="7"
volume="true"
- width="350">
+ width="300">
<slider.commit_callback
function="Pref.setControlFalse"
parameter="MuteSounds" />
</slider>
- <button
+ <button
control_name="MuteSounds"
disabled_control="MuteAudio"
- follows="top|right"
- height="18"
- image_selected="Parcel_VoiceNo_Dark"
- image_unselected="Parcel_Voice_Dark"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
is_toggle="true"
layout="topleft"
- left_pad="16"
- name="mute_sfx"
+ left_pad="5"
+ name="mute_audio"
tab_stop="false"
- top_delta="-2"
- width="22" />
+ width="16" />
<slider
control_name="AudioLevelMusic"
disabled_control="MuteAudio"
@@ -201,7 +162,7 @@
increment="0.05"
initial_value="0.5"
label="Streaming music"
- label_width="160"
+ label_width="120"
layout="topleft"
left="0"
name="Music Volume"
@@ -209,122 +170,199 @@
show_text="false"
top_pad="7"
volume="true"
- width="350">
+ width="300">
<slider.commit_callback
function="Pref.setControlFalse"
parameter="MuteMusic" />
- </slider>
+ </slider>
<button
control_name="MuteMusic"
- disabled_control="MuteAudio"
- follows="top|right"
- height="18"
- image_selected="Parcel_VoiceNo_Dark"
- image_unselected="Parcel_Voice_Dark"
+ disabled_control="MuteAudio"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
is_toggle="true"
layout="topleft"
- left_pad="16"
- name="mute_music"
+ left_pad="5"
+ name="mute_audio"
tab_stop="false"
- top_delta="-2"
- width="22" />
- <check_box
- label_text.halign="left"
- follows="left|top"
- height="16"
- control_name ="EnableVoiceChat"
- disabled_control="CmdLineDisableVoice"
- label="Enable voice"
- layout="topleft"
- left="28"
- name="enable_voice_check"
- top_pad="5"
- width="110"
- >
- </check_box>
- <slider
- control_name="AudioLevelVoice"
- enabled_control="EnableVoiceChat"
- disabled_control="MuteAudio"
+ width="16" />
+ <check_box
+ control_name="AudioStreamingMusic"
+ height="16"
+ label="Enabled"
+ layout="topleft"
+ left_pad="5"
+ name="music_enabled"
+ top_delta="2"
+ width="350"/>
+ <slider
+ control_name="AudioLevelMedia"
+ disabled_control="MuteAudio"
+ follows="left|top"
+ height="16"
+ increment="0.05"
+ initial_value="0.5"
+ label="Media"
+ label_width="120"
+ layout="topleft"
+ left="0"
+ name="Media Volume"
+ show_text="false"
+ slider_label.halign="right"
+ top_pad="7"
+ volume="true"
+ width="300">
+ <slider.commit_callback
+ function="Pref.setControlFalse"
+ parameter="MuteMedia" />
+ </slider>
+ <button
+ control_name="MuteMedia"
+ disabled_control="MuteAudio"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
+ is_toggle="true"
+ layout="topleft"
+ left_pad="5"
+ name="mute_audio"
+ tab_stop="false"
+ width="16" />
+ <check_box
+ label_text.halign="left"
+ follows="left|top"
+ height="16"
+ control_name ="AudioStreamingMedia"
+ label="Enabled"
+ layout="topleft"
+ top_delta="2"
+ left_pad="5"
+ name="enable_media"
+ width="110"/>
+ <slider
+ control_name="AudioLevelVoice"
+ disabled_control="MuteAudio"
+ follows="left|top"
+ height="16"
+ increment="0.05"
+ initial_value="0.5"
+ label="Voice Chat"
+ label_width="120"
+ layout="topleft"
+ left="0"
+ top_delta="20"
+ name="Voice Volume"
+ show_text="false"
+ slider_label.halign="right"
+ volume="true"
+ width="300">
+ <slider.commit_callback
+ function="Pref.setControlFalse"
+ parameter="MuteVoice" />
+ </slider>
+ <button
+ control_name="MuteVoice"
+ disabled_control="MuteAudio"
+ follows="top|left"
+ height="16"
+ image_selected="AudioMute_Off"
+ image_unselected="Audio_Off"
+ is_toggle="true"
+ layout="topleft"
+ left_pad="5"
+ name="mute_audio"
+ tab_stop="false"
+ width="16" />
+ <check_box
+ label_text.halign="left"
+ follows="left|top"
+ height="16"
+ control_name ="EnableVoiceChat"
+ disabled_control="CmdLineDisableVoice"
+ label="Enabled"
+ layout="topleft"
+ top_delta="2"
+ left_pad="5"
+ name="enable_voice_check"
+ width="110"/>
+ <!-- -->
+ <check_box
+ name="media_auto_play_btn"
+ control_name="ParcelMediaAutoPlayEnable"
+ value="true"
+ follows="left|bottom|right"
+ height="15"
+ tool_tip="Check this to let media auto-play if it wants"
+ label="Allow Media to auto-play"
+ top_pad="5"
+ left="25"/>
+ <check_box
+ name="media_show_on_others_btn"
+ control_name="MediaShowOnOthers"
+ value="true"
+ follows="left|bottom|right"
+ height="15"
+ tool_tip="Uncheck this to hide media attached to other avatars nearby"
+ label="Play media attached to other avatars"
+ left="25"/>
+
+ <text
+ type="string"
+ length="1"
follows="left|top"
- height="15"
- increment="0.05"
- initial_value="0.5"
- label="Voice"
- label_width="160"
- layout="topleft"
- left="0"
- top_delta="20"
- name="Voice Volume"
- show_text="false"
- slider_label.halign="right"
- volume="true"
- width="350">
- <slider.commit_callback
- function="Pref.setControlFalse"
- parameter="MuteVoice" />
- </slider>
- <button
- control_name="MuteVoice"
- enabled_control="EnableVoiceChat"
- disabled_control="MuteAudio"
- follows="top|right"
- height="18"
- image_selected="Parcel_VoiceNo_Dark"
- image_unselected="Parcel_Voice_Dark"
- is_toggle="true"
+ height="20"
layout="topleft"
- left_pad="16"
- name="mute_voice"
- tab_stop="false"
- top_delta="-2"
- width="22" />
+ left="25"
+ name="voice_chat_settings"
+ width="200"
+ top="210">
+ Voice Chat Settings
+ </text>
<text
type="string"
length="1"
follows="left|top"
- height="13"
layout="topleft"
- left="30"
+ left="80"
+ top_delta="16"
name="Listen from"
- width="200"
- top="205">
+ width="80">
Listen from:
</text>
- <icon
- follows="left|top"
- height="18"
- image_name="Cam_FreeCam_Off"
- layout="topleft"
- name="camera_icon"
- mouse_opaque="false"
- visible="true"
- width="18"
- left="80"
- top="219"/>
<icon
- follows="left|top"
- height="18"
- image_name="Move_Walk_Off"
- layout="topleft"
- name="avatar_icon"
- mouse_opaque="false"
- visible="true"
- width="18"
- top="239"
- left="80"
- />
+ follows="left|top"
+ height="18"
+ image_name="Cam_FreeCam_Off"
+ layout="topleft"
+ name="camera_icon"
+ mouse_opaque="false"
+ visible="true"
+ width="18"
+ left_pad="0"
+ top_delta="-5"/>
+ <icon
+ follows="left|top"
+ height="18"
+ image_name="Move_Walk_Off"
+ layout="topleft"
+ name="avatar_icon"
+ mouse_opaque="false"
+ visible="true"
+ width="18"
+ top_delta="20" />
<radio_group
enabled_control="EnableVoiceChat"
control_name="VoiceEarLocation"
draw_border="false"
follows="left|top"
layout="topleft"
- left="100"
+ left_pad="2"
width="221"
height="38"
- name="ear_location"
- top="218">
+ name="ear_location">
<radio_item
height="16"
label="Camera position"
@@ -347,8 +385,8 @@
is_toggle="true"
label="Input/Output devices"
layout="topleft"
- left="30"
- top="262"
+ left="80"
+ top_pad="5"
name="device_settings_btn"
width="190">
</button>
@@ -448,28 +486,28 @@
<locate
height="20"
layout="topleft"
- left_pad="2"
+ left_pad="5"
name="bar1"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
- left_pad="2"
+ left_pad="5"
name="bar2"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
- left_pad="2"
+ left_pad="5"
name="bar3"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
- left_pad="2"
+ left_pad="5"
name="bar4"
top_delta="0"
width="20" />
@@ -483,7 +521,7 @@
visible="true"
width="22" />
<text
- font.style="BOLD"
+ font.style="BOLD"
type="string"
length="1"
follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
index e1d8ee241d..6b5f0c3896 100644
--- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
@@ -71,7 +71,7 @@
layout="topleft"
top="0"
left="0"
- border_size="1"
+ border_size="0"
mouse_opaque="false"
orientation="horizontal">
<!-- outer layout_panels center the inner one -->
@@ -260,7 +260,7 @@
top="0"
height="22"
min_width="22"
- width="24">
+ width="22">
<button
name="play_btn"
follows="top"
@@ -272,7 +272,6 @@
hover_glow_amount="0.15"
layout="topleft"
tool_tip = "Play media"
- left_delta="2"
top="0"
height="22"
width="22">
@@ -288,7 +287,7 @@
layout="topleft"
top="0"
min_width="22"
- width="24">
+ width="22">
<button
name="pause_btn"
follows="top"
@@ -302,7 +301,6 @@
top="0"
height="22"
width="22"
- left_delta="-1"
tool_tip = "Pause media">
<button.commit_callback
function="MediaCtrl.Pause" />
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 1f0ace5843..412485e03f 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -7,7 +7,7 @@
left="0"
name="panel_profile"
top="0"
- width="313">
+ width="317">
<string
name="CaptionTextAcctInfo">
[ACCTTYPE]
@@ -41,8 +41,8 @@
layout="topleft"
left="0"
top="0"
- height="517"
- width="313"
+ height="524"
+ width="317"
border_size="0">
<layout_panel
name="profile_stack"
@@ -50,8 +50,8 @@
layout="topleft"
top="0"
left="0"
- height="505"
- width="313">
+ height="524"
+ width="317">
<scroll_container
color="DkGray2"
follows="all"
@@ -59,8 +59,8 @@
left="0"
name="profile_scroll"
opaque="true"
- height="505"
- width="313"
+ height="527"
+ width="317"
top="0">
<panel
layout="topleft"
@@ -73,9 +73,9 @@
width="297">
<panel
follows="left|top|right"
- height="117"
+ height="124"
layout="topleft"
- left="10"
+ left="13"
name="second_life_image_panel"
top="0"
width="297">
@@ -84,7 +84,7 @@
default_image_name="None"
enabled="false"
follows="top|left"
- height="117"
+ height="124"
layout="topleft"
left="0"
name="2nd_life_pic"
@@ -103,7 +103,7 @@
width="180" />
<expandable_text
follows="left|top|right"
- height="95"
+ height="97"
layout="topleft"
left="107"
textbox.max_length="512"
@@ -118,10 +118,10 @@
</panel>
<panel
follows="left|top|right"
- height="117"
+ height="124"
layout="topleft"
- top_pad="10"
- left="10"
+ top_pad="0"
+ left="13"
name="first_life_image_panel"
width="297">
<texture_picker
@@ -129,7 +129,7 @@
default_image_name="None"
enabled="false"
follows="top|left"
- height="117"
+ height="124"
layout="topleft"
left="0"
name="real_world_pic"
@@ -147,7 +147,7 @@
width="180" />
<expandable_text
follows="left|top|right"
- height="95"
+ height="97"
layout="topleft"
left="107"
textbox.max_length="512"
@@ -173,8 +173,7 @@
value="http://librarianavengers.org"
width="300"
word_wrap="false"
- use_ellipses="true"
- />
+ use_ellipses="true" />
<text
follows="left|top"
font.style="BOLD"
@@ -186,13 +185,18 @@
top_pad="10"
value="Resident Since:"
width="300" />
- <text
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top"
+ h_pad="0"
height="15"
layout="topleft"
left="10"
name="register_date"
+ read_only="true"
translate="false"
+ v_pad="0"
value="05/31/2376"
width="300"
word_wrap="true" />
@@ -218,19 +222,24 @@
top_delta="0"
value="Go to Dashboard"
width="100"/> -->
- <text
+ <text_editor
+ allow_scroll="false"
+ bg_visible="false"
follows="left|top"
+ h_pad="0"
height="28"
layout="topleft"
left="10"
name="acc_status_text"
+ read_only="true"
top_pad="0"
translate="false"
+ v_pad="0"
width="300"
word_wrap="true">
Resident. No payment info on file.
Linden.
- </text>
+ </text_editor>
<text
follows="left|top"
font.style="BOLD"
@@ -275,10 +284,11 @@
width="300" />
<expandable_text
follows="all"
- height="113"
+ height="103"
layout="topleft"
left="7"
name="sl_groups"
+ textbox.max_length="512"
top_pad="0"
translate="false"
width="290"
@@ -295,13 +305,13 @@
layout="topleft"
name="profile_buttons_panel"
auto_resize="false"
- width="313">
+ width="317">
<button
follows="bottom|left"
height="23"
label="Add Friend"
layout="topleft"
- left="0"
+ left="2"
mouse_opaque="false"
name="add_friend"
tool_tip="Offer friendship to the Resident"
@@ -316,7 +326,7 @@
tool_tip="Open instant message session"
top="5"
left_pad="3"
- width="45" />
+ width="39" />
<button
follows="bottom|left"
height="23"
@@ -326,7 +336,7 @@
tool_tip="Call this Resident"
left_pad="3"
top="5"
- width="45" />
+ width="43" />
<button
enabled="false"
follows="bottom|left"
@@ -337,7 +347,7 @@
tool_tip="Show the Resident on the map"
top="5"
left_pad="3"
- width="45" />
+ width="41" />
<button
follows="bottom|left"
height="23"
@@ -347,8 +357,8 @@
tool_tip="Offer teleport"
left_pad="3"
top="5"
- width="85" />
- <!-- <button
+ width="69" />
+ <button
follows="bottom|right"
height="23"
label="▼"
@@ -357,8 +367,8 @@
tool_tip="Pay money to or share inventory with the Resident"
right="-1"
top="5"
- left_pad="3"
- width="23" />-->
+ left_pad="3"
+ width="23" />
</layout_panel>
<layout_panel
follows="bottom|left"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index d46e1f9852..5a96ba2dd2 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -6,6 +6,7 @@
layout="topleft"
min_height="350"
name="panel_target_profile"
+ left="0"
width="333">
<string
name="status_online">
@@ -21,21 +22,23 @@
image_overlay="BackArrow_Off"
layout="topleft"
name="back"
- left="10"
+ left="12"
tab_stop="false"
top="2"
width="23" />
<text_editor
+ h_pad="0"
+ v_pad="0"
allow_scroll="false"
bg_visible="false"
read_only = "true"
follows="top|left|right"
font="SansSerifHugeBold"
- height="29"
+ height="26"
layout="topleft"
left_pad="10"
name="user_name"
- text_color="white"
+ text_color="LtGray"
top="0"
value="(Loading...)"
use_ellipses="true"
@@ -51,17 +54,17 @@
width="150" />
<tab_container
follows="all"
- height="535"
+ height="538"
halign="center"
layout="topleft"
- left="10"
+ left="5"
min_width="333"
name="tabs"
tab_min_width="80"
tab_height="30"
tab_position="top"
top_pad="5"
- width="313">
+ width="317">
<panel
class="panel_profile"
filename="panel_profile.xml"
diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml
index 26568c2a28..c06e67a4bb 100644
--- a/indra/newview/skins/default/xui/en/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_general.xml
@@ -134,6 +134,7 @@
top="200"
width="80" />
<spinner
+ decimal_digits="0"
follows="left|top"
height="20"
increment="1"
diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml
index 765e2ae623..d14355b9f4 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -2,13 +2,12 @@
<panel
bevel_style="none"
border_style="line"
- bottom="550"
follows="left|top|right|bottom"
- height="508"
+ height="522"
layout="topleft"
left="0"
name="script panel"
- width="500">
+ width="497">
<panel.string
name="loading">
Loading...
@@ -29,71 +28,17 @@
name="Title">
Script: [NAME]
</panel.string>
- <text_editor
- type="string"
- length="1"
- bottom="393"
- follows="left|top|right|bottom"
- font="Monospace"
- height="376"
- ignore_tab="false"
- layout="topleft"
- left="4"
- max_length="65536"
- name="Script Editor"
- width="492"
- show_line_numbers="true"
- handle_edit_keys_directly="true"
- word_wrap="true">
- Loading...
- </text_editor>
- <button
- bottom="499"
- follows="right|bottom"
- height="20"
- label="Save"
- label_selected="Save"
- layout="topleft"
- left="360"
- name="Save_btn"
- width="128" />
- <scroll_list
- bottom="457"
- follows="left|right|bottom"
- height="60"
- layout="topleft"
- left="4"
- name="lsl errors"
- width="492" />
- <combo_box
- bottom="499"
- follows="left|bottom"
- height="20"
- label="Insert..."
- layout="topleft"
- left="12"
- name="Insert..."
- width="128" />
- <text
- bottom="473"
- follows="left|bottom"
- height="12"
- layout="topleft"
- left="12"
- name="line_col"
- width="128" />
<menu_bar
bg_visible="false"
- bottom="18"
- follows="left|top|right"
+ follows="left|top"
height="18"
layout="topleft"
- left="8"
+ left="0"
mouse_opaque="false"
name="script_menu"
width="476">
<menu
- bottom="18"
+ top="0"
height="62"
label="File"
layout="topleft"
@@ -113,11 +58,10 @@
name="Revert All Changes" />
</menu>
<menu
- bottom="-647"
+ top="0"
height="198"
label="Edit"
layout="topleft"
- left="222"
mouse_opaque="false"
name="Edit"
width="139">
@@ -169,11 +113,10 @@
name="Search / Replace..." />
</menu>
<menu
- bottom="18"
+ top="0"
height="34"
label="Help"
layout="topleft"
- left="0"
mouse_opaque="false"
name="Help"
width="112">
@@ -187,4 +130,53 @@
name="Keyword Help..." />
</menu>
</menu_bar>
+ <text_editor
+ left="0"
+ type="string"
+ length="1"
+ follows="left|top|right|bottom"
+ font="Monospace"
+ height="376"
+ ignore_tab="false"
+ layout="topleft"
+ max_length="65536"
+ name="Script Editor"
+ width="487"
+ show_line_numbers="true"
+ handle_edit_keys_directly="true"
+ word_wrap="true">
+ Loading...
+ </text_editor>
+ <scroll_list
+ top_pad="10"
+ left="0"
+ follows="left|right|bottom"
+ height="60"
+ layout="topleft"
+ name="lsl errors"
+ width="487" />
+ <text
+ follows="left|bottom"
+ height="12"
+ layout="topleft"
+ left="0"
+ name="line_col"
+ width="128" />
+ <combo_box
+ follows="left|bottom"
+ height="23"
+ label="Insert..."
+ layout="topleft"
+ name="Insert..."
+ width="128" />
+ <button
+ follows="right|bottom"
+ height="23"
+ label="Save"
+ label_selected="Save"
+ layout="topleft"
+ top_pad="-35"
+ right="487"
+ name="Save_btn"
+ width="61" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
index d98f690339..629d8567d1 100644
--- a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
@@ -9,7 +9,44 @@
name="script_limits_my_avatar_panel"
top="0"
width="480">
- <text
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="10"
+ name="script_memory"
+ top_pad="24"
+ text_color="White"
+ width="480">
+ Avatar Script Usage
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="30"
+ name="memory_used"
+ top_delta="18"
+ width="480">
+
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="30"
+ name="urls_used"
+ top_delta="18"
+ width="480">
+
+ </text>
+ <text
type="string"
length="1"
follows="left|top"
@@ -17,7 +54,7 @@
layout="topleft"
left="10"
name="loading_text"
- top="10"
+ top="80"
text_color="EmphasisColor"
width="480">
Loading...
@@ -25,12 +62,12 @@
<scroll_list
draw_heading="true"
follows="all"
- height="500"
+ height="415"
layout="topleft"
left_delta="0"
multi_select="true"
name="scripts_list"
- top_delta="17"
+ top="100"
width="460">
<scroll_list.columns
label="Size (kb)"
diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
index 0fa3c1cf2e..9dff00fa0b 100644
--- a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
@@ -33,7 +33,7 @@
top_delta="18"
visible="true"
width="480">
- Parcels Owned:
+
</text>
<text
type="string"
@@ -45,7 +45,19 @@
name="memory_used"
top_delta="18"
width="480">
- Memory used:
+ </text>
+
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="30"
+ name="urls_used"
+ top_delta="18"
+ width="480">
+
</text>
<text
type="string"
@@ -55,7 +67,7 @@
layout="topleft"
left="10"
name="loading_text"
- top_delta="32"
+ top_delta="12"
text_color="EmphasisColor"
width="480">
Loading...
@@ -73,7 +85,11 @@
<scroll_list.columns
label="Size (kb)"
name="size"
- width="70" />
+ width="72" />
+ <scroll_list.columns
+ label="URLs"
+ name="urls"
+ width="48" />
<scroll_list.columns
label="Object Name"
name="name"
@@ -83,11 +99,13 @@
name="owner"
width="100" />
<scroll_list.columns
- label="Parcel / Location"
- name="location"
+ label="Parcel"
+ name="parcel"
width="130" />
-<!-- <scroll_list.commit_callback
- function="TopObjects.CommitObjectsList" />-->
+ <scroll_list.columns
+ label="Location"
+ name="location"
+ width="80" />
</scroll_list>
<button
follows="bottom|left"
@@ -102,8 +120,8 @@
<button
follows="bottom|right"
height="19"
- visible="false"
label="Highlight"
+ visible="false"
layout="bottomright"
left="370"
name="highlight_btn"
@@ -112,8 +130,8 @@
<button
follows="bottom|right"
height="19"
- visible="false"
label="Return"
+ visible="false"
layout="bottomright"
name="return_btn"
top="34"
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index 3f836a661d..6ef93406ec 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -54,12 +54,19 @@
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
@@ -91,7 +98,7 @@
class="panel_group_info_sidetray"
name="panel_group_info_sidetray"
filename="panel_group_info_sidetray.xml"
- label="Group Info"
+ label="Group Profile"
font="SansSerifBold"
/>
<panel
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 7a6089c74e..4167401338 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -3,6 +3,7 @@
background_opaque="true"
background_visible="true"
bg_opaque_color="MouseGray"
+ chrome="true"
follows="top|right"
height="19"
layout="topleft"
@@ -10,6 +11,7 @@
mouse_opaque="false"
name="status"
top="19"
+ tab_stop="false"
width="1000">
<panel.string
name="StatBarDaysOfWeek">
@@ -49,7 +51,7 @@
image_unselected="spacer35.tga"
image_pressed="spacer35.tga"
height="16"
- right="-228"
+ right="-204"
label_shadow="false"
name="buycurrency"
tool_tip="My Balance"
@@ -69,15 +71,16 @@
left_pad="0"
label_shadow="false"
name="buyL"
- pad_right="20px"
+ pad_right="20"
+ pad_bottom="2"
tool_tip="Click to buy more L$"
top="2"
- width="100" />
+ width="45" />
<text
type="string"
font="SansSerifSmall"
text_readonly_color="TimeTextColor"
- follows="right|bottom"
+ follows="right|top"
halign="right"
height="16"
top="5"
@@ -85,23 +88,37 @@
left_pad="0"
name="TimeText"
tool_tip="Current time (Pacific)"
- width="85">
- 12:00 AM
+ width="80">
+ 24:00 AM PST
</text>
<button
- follows="right|bottom"
+ follows="right|top"
+ height="15"
+ image_selected="Pause_Off"
+ image_unselected="Play_Off"
+ image_pressed="Play_Press"
+ image_pressed_selected="Pause_Press"
+ is_toggle="true"
+ left_pad="15"
+ top="2"
+ name="media_toggle_btn"
+ tool_tip="Start/Stop All Media (Music, Video, Web pages)"
+ width="16" >
+ </button>
+ <button
+ follows="right|top"
height="15"
image_selected="AudioMute_Off"
image_pressed="Audio_Press"
image_unselected="Audio_Off"
is_toggle="true"
- left_pad="18"
+ left_pad="5"
top="2"
name="volume_btn"
tool_tip="Global Volume Control"
width="16" />
<text
- follows="right|bottom"
+ follows="right|top"
halign="center"
height="12"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
index 06da64533b..ecf7252a11 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
@@ -1,14 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="Teleport History" bottom="0" height="326" left="0" width="380"
+<panel name="Teleport History" bottom="0" height="400" left="0" width="380"
help_topic="panel_teleport_history"
- border="true" follows="left|top|right|bottom">
+ border="false" follows="left|top|right|bottom">
<accordion
follows="left|top|right|bottom"
- height="300"
+ height="368"
layout="topleft"
left="0"
top="0"
name="history_accordion"
+ background_visible="true"
+ bg_alpha_color="DkGray2"
width="380">
<accordion_tab
layout="topleft"
@@ -51,7 +53,7 @@
top="0"
width="380">
</flat_list_view>
- </accordion_tab>
+ </accordion_tab>5
<accordion_tab
layout="topleft"
name="3_days_ago"
@@ -138,19 +140,20 @@
</accordion_tab>
</accordion>
<panel
- background_visible="true"
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
bevel_style="none"
- top_pad="0"
+ bottom="0"
follows="left|right|bottom"
- height="30"
- label="bottom_panel"
- layout="topleft"
+ height="38"
+ layout="bottomleft"
left="0"
name="bottom_panel"
width="380">
<button
follows="bottom|left"
- font="SansSerifBigBold"
tool_tip="Show additional optioins"
height="18"
image_disabled="OptionsMenu_Disabled"
@@ -159,7 +162,7 @@
layout="topleft"
left="10"
name="gear_btn"
- top="5"
+ top="14"
width="18" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index bfe3cce7d0..11069b3ac3 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -3,17 +3,25 @@
<!-- Don't remove floater's height! It is needed for Overflow and Start-Up toasts!-->
+<!--
+ This floater is invisible. To make toast look like a floater we render wrapper_panel
+ like a floater(draw shadows and so on). This is done with one purpose - make close button
+ look like it is positioned out of floater and able to accept mouse clicks (see EXT-4246)
+-->
+
<floater
- legacy_header_height="18"
+ legacy_header_height="0"
+ header_height="0"
name="toast"
title=""
visible="false"
layout="topleft"
- height="40"
- width="305"
+ height="47"
+ width="310"
left="0"
top="0"
follows="right|bottom"
+ background_visible="false"
bg_opaque_image="Toast_Over"
bg_alpha_image="Toast_Background"
can_minimize="false"
@@ -27,6 +35,21 @@
drop_shadow_visible = "false"
border = "false"
>
+ <panel
+ background_opaque="false"
+ border_visible="false"
+ background_visible="true"
+ bg_opaque_image="Toast_Over"
+ bg_alpha_image="Toast_Background"
+ label="wrapper_panel"
+ layout="topleft"
+ left="0"
+ name="wrapper_panel"
+ top="7"
+ height="40"
+ follows="all"
+ translate="false"
+ width="305">
<!-- Don't remove this wiget! It is needed for Overflow and Start-Up toasts!-->
<text
clip_partial="true"
@@ -46,10 +69,11 @@
width="260">
Toast text;
</text>
+ </panel>
<button
layout="topleft"
- top="-14"
- left="293"
+ top="0"
+ right="310"
width="17"
height="17"
follows="top|right"
diff --git a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
index 60d4a7e00b..cd66c56ca1 100644
--- a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
+++ b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
@@ -1,24 +1,17 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_opaque="true"
- background_visible="false"
+ background_visible="true"
+ bg_opaque_image="Volume_Background"
+ bg_alpha_image="Volume_Background"
border_visible="false"
border="false"
- chrome="true"
+ chrome="true"
follows="bottom"
height="150"
layout="topleft"
name="volumepulldown_floater"
width="32">
- <!-- floater background image -->
- <icon
- height="150"
- image_name="Inspector_Background"
- layout="topleft"
- left="0"
- name="normal_background"
- top="0"
- width="32" />
<slider
control_name="AudioLevelMaster"
follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index fab1f11273..b3d55fec65 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -37,20 +37,20 @@ width="333">
name="openoutfit_btn" />
<icon
follows="top|left"
- height="30"
+ height="24"
image_name="TabIcon_Appearance_Off"
name="outfit_icon"
mouse_opaque="false"
visible="true"
- left="5"
+ left="9"
top="0"
- width="30" />
+ width="24" />
<text
- font="SansSerifHuge"
+ font="SansSerifHugeBold"
height="20"
left_pad="5"
- text_color="white"
- top="3"
+ text_color="LtGray"
+ top="0"
use_ellipses="true"
width="305"
follows="top|left"
@@ -76,7 +76,7 @@ width="333">
height="23"
follows="left|top|right"
layout="topleft"
- left="15"
+ left="10"
label="Filter Outfits"
max_length="300"
name="Filter"
@@ -90,7 +90,7 @@ width="333">
min_height="410"
width="320"
left="0"
- top_pad="0"
+ top_pad="6"
follows="all" />
<!-- <button
follows="bottom|left"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index fb5f9d2ec8..a233d42568 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -32,10 +32,10 @@
width="330" />
<panel
height="25"
- layout="bottomright"
+ layout="topleft"
name="button_panel"
- left="5"
- bottom="5"
+ left="9"
+ top_pad="-2"
width="313">
<button
enabled="true"
@@ -46,17 +46,17 @@
left="0"
name="info_btn"
top="0"
- width="100" />
+ width="153" />
<button
enabled="false"
follows="bottom|left"
height="23"
label="Wear"
layout="topleft"
- left="130"
+ left="156"
name="wear_btn"
top="0"
- width="100" />
+ width="152" />
<button
enabled="false"
follows="bottom|left"
@@ -64,19 +64,19 @@
label="Play"
layout="topleft"
name="play_btn"
- left="130"
+ left="156"
top="0"
- width="80" />
+ width="152" />
<button
enabled="false"
follows="bottom|left"
height="23"
label="Teleport"
layout="topleft"
- left="130"
+ left="156"
name="teleport_btn"
top="0"
- width="100" />
+ width="152" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index e18f59ab64..12c06504ca 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -43,14 +43,14 @@
height="23"
image_overlay="BackArrow_Off"
layout="topleft"
- left="10"
+ left="14"
name="back_btn"
tab_stop="false"
- top="0"
+ top="2"
width="23" />
<text
follows="top|left|right"
- font="SansSerifHuge"
+ font="SansSerifHugeBold"
height="26"
layout="topleft"
left_pad="10"
@@ -71,10 +71,10 @@
width="150" />
<panel
follows="all"
- height="490"
+ height="493"
label=""
layout="topleft"
- left="10"
+ left="9"
help_topic=""
top="45"
width="313"
@@ -161,13 +161,14 @@
</text>
<button
follows="top|right"
- height="23"
- label="Profile"
+ height="16"
+ image_selected="Inspector_I"
+ image_unselected="Inspector_I"
layout="topleft"
- right="-1"
+ right="-5"
name="BtnCreator"
top_delta="-6"
- width="78" />
+ width="16" />
<text
type="string"
length="1"
@@ -203,13 +204,14 @@
</text>
<button
follows="top|right"
- height="23"
- label="Profile"
+ height="16"
+ image_selected="Inspector_I"
+ image_unselected="Inspector_I"
layout="topleft"
- right="-1"
+ right="-5"
name="BtnOwner"
top_delta="-3"
- width="78" />
+ width="16" />
<text
type="string"
length="1"
@@ -239,8 +241,6 @@ top_pad="10"
follows="left|top"
layout="topleft"
mouse_opaque="false"
- background_visible="true"
- bg_alpha_color="DkGray"
name="perms_inv"
left="0"
top_pad="25"
@@ -400,7 +400,7 @@ top_pad="10"
</panel>
<panel
height="30"
- layout="bottomright"
+ layout="topleft"
name="button_panel"
left="5"
bottom="2"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index 74f97dca4e..d2c9e56bc3 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -85,7 +85,7 @@
left="45"
name="where"
text_color="LtGray_50"
- value="(In World)"
+ value="(inworld)"
width="150" />
<panel
follows="all"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b378944e48..455b4be264 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -115,9 +115,6 @@
<!-- Avatar name: More than one avatar is selected/used here -->
<string name="AvatarNameMultiple">(multiple)</string>
- <!-- Avatar name: text shown as an alternative to AvatarNameFetching, easter egg. -->
- <string name="AvatarNameHippos">(hippos)</string>
-
<!-- Group name: text shown for LLUUID::null -->
<string name="GroupNameNone">(none)</string>
@@ -254,6 +251,7 @@
<string name="connected">Connected</string>
<string name="unavailable">Voice not available at your current location</string>
<string name="hang_up">Disconnected from in-world Voice Chat</string>
+ <string name="reconnect_nearby">You will now be reconnected to Nearby Voice Chat</string>
<string name="ScriptQuestionCautionChatGranted">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been granted permission to: [PERMISSIONS].</string>
<string name="ScriptQuestionCautionChatDenied">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS].</string>
<string name="ScriptTakeMoney">Take Linden dollars (L$) from you</string>
@@ -1807,12 +1805,9 @@ Clears (deletes) the media and all params from the given face.
<string name="LeaveMouselook">Press ESC to return to World View</string>
<!-- inventory -->
- <string name="InventoryNoMatchingItems">No matching items found in inventory.</string>
- <string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>
- <string name="InventoryNoTexture">
- You do not have a copy of
-this texture in your inventory
- </string>
+ <string name="InventoryNoMatchingItems">No matching items found in inventory. Try [secondlife:///app/search/groups "Search"].</string>
+ <string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>
+ <string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string>
<!-- use value="" because they have preceding spaces -->
<string name="no_transfer" value=" (no transfer)" />
<string name="no_modify" value=" (no modify)" />
@@ -2051,6 +2046,7 @@ this texture in your inventory
<string name="ScriptLimitsURLsUsed">URLs used: [COUNT] out of [MAX]; [AVAILABLE] available</string>
<string name="ScriptLimitsURLsUsedSimple">URLs used: [COUNT]</string>
<string name="ScriptLimitsRequestError">Error requesting information</string>
+ <string name="ScriptLimitsRequestNoParcelSelected">No Parcel Selected</string>
<string name="ScriptLimitsRequestWrongRegion">Error: script information is only available in your current region</string>
<string name="ScriptLimitsRequestWaiting">Retrieving information...</string>
<string name="ScriptLimitsRequestDontOwnParcel">You do not have permission to examine this parcel</string>
@@ -2130,7 +2126,8 @@ this texture in your inventory
<string name="ClassifiedUpdateAfterPublish">(will update after publish)</string>
<!-- panel picks -->
- <string name="NoPicksClassifiedsText">There are no picks/classifieds here</string>
+ <string name="NoPicksClassifiedsText">You haven't created any Picks or Classifieds. Click the Plus button below to create a Pick or Classified.</string>
+ <string name="NoAvatarPicksClassifiedsText">User has no picks or classfields</string>
<string name="PicksClassifiedsLoadingText">Loading...</string>
<!-- Multi Preview Floater -->
diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml
new file mode 100644
index 0000000000..ed8df69bf4
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<avatar_list_item
+ height="0"
+ layout="topleft"
+ left="0"
+ name="avatar_list_item"
+ top="0"
+ width="0">
+ <!-- DEFAULT styles for avatar item -->
+ <default_style
+ font="SansSerifSmall"
+ font.style="NORMAL"
+ color="DkGray"/>
+
+ <!-- styles for avatar item INVITED to voice call -->
+ <voice_call_invited_style
+ font="SansSerifSmall"
+ font.style="NORMAL"
+ color="0.5 0.5 0.5 0.5"/>
+
+ <!-- styles for avatar item JOINED to voice call -->
+ <voice_call_joined_style
+ font="SansSerifSmall"
+ font.style="NORMAL"
+ color="white"/>
+
+ <!-- styles for avatar item which HAS LEFT voice call -->
+ <voice_call_left_style
+ font="SansSerifSmall"
+ font.style="ITALIC"
+ color="LtGray_50"/>
+
+ <!-- styles for ONLINE avatar item -->
+ <online_style
+ font="SansSerifSmall"
+ font.style="NORMAL"
+ color="white"/>
+
+ <!-- styles for OFFLINE avatar item -->
+ <offline_style
+ font="SansSerifSmall"
+ font.style="NORMAL"
+ color="0.5 0.5 0.5 1.0"/>
+</avatar_list_item>
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 74d8478551..c4f0fe5208 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -7,10 +7,9 @@
image_selected="PushButton_Selected"
image_disabled_selected="PushButton_Selected_Disabled"
image_disabled="PushButton_Disabled"
- image_left_pad="0"
- image_right_pad="0"
image_top_pad="0"
image_bottom_pad="0"
+ imgoverlay_label_space="1"
label_color="ButtonLabelColor"
label_color_selected="ButtonLabelSelectedColor"
label_color_disabled="ButtonLabelDisabledColor"
@@ -23,5 +22,6 @@
hover_glow_amount="0.15"
halign="center"
pad_bottom="3"
+ height="23"
scale_image="true">
</button>
diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
index 132bd24bca..d1f68a9ef9 100644
--- a/indra/newview/skins/default/xui/en/widgets/combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
@@ -2,6 +2,7 @@
<combo_box font="SansSerifSmall"
list_position="below"
max_chars="20"
+ height="23"
follows="right|top">
<combo_box.combo_button name="Combobox Button"
hover_glow_amount="0.15"
@@ -20,7 +21,7 @@
image_pressed="DropDown_Press"
image_pressed_selected="DropDown_Press"
image_disabled="DropDown_Disabled" />
- <combo_box.combo_list bg_writeable_color="MenuDefaultBgColor"
+ <combo_box.combo_list bg_writeable_color="ComboListBgColor"
background_visible="true"
/>
<!-- Text is "tentative" if you have typed in a string that does not match
diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
index f59c46b2f5..d9b6387f0d 100644
--- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
@@ -2,10 +2,13 @@
<expandable_text
max_height="300" >
<textbox
- more_label="More"
+ allow_html="true"
+ allow_scroll="true"
+ bg_visible="false"
+ more_label="More"
follows="left|top|right"
name="text"
- allow_scroll="true"
+ read_only="true"
use_ellipses="true"
word_wrap="true"
tab_stop="true"
@@ -16,4 +19,4 @@
name="scroll"
follows="all"
/>
-</expandable_text> \ No newline at end of file
+</expandable_text>
diff --git a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
index 48baa2812d..0720621f0b 100644
--- a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<filter_editor
clear_button_visible="true"
- search_button_visible="true"
+ search_button_visible="false"
text_pad_left="7"
select_on_focus="true"
text_tentative_color="TextFgTentativeColor"
@@ -16,6 +16,6 @@
image_unselected="Search"
image_selected="Search" />
<clear_button label=""
- image_unselected="Icon_Close_Foreground"
- image_selected="Icon_Close_Press" />
+ image_unselected="Icon_Close_Toast"
+ image_selected="Icon_Close_Toast" />
</filter_editor>
diff --git a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
index 888b4eaf7c..a71b293f31 100644
--- a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
+++ b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
@@ -5,4 +5,12 @@
item_pad="0"
keep_one_selected="true"
multi_select="false"
- opaque="true" /> \ No newline at end of file
+ opaque="true">
+ <flat_list_view.no_items_text
+ follows="all"
+ name="no_items_msg"
+ v_pad="10"
+ h_pad="10"
+ value="There are no any items in the list"
+ wrap="true" />
+</flat_list_view> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
index a5043c5c14..83df10e417 100644
--- a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<flyout_button list_position="below">
+<flyout_button list_position="below" height="23">
<action_button scale_image="true"
image_selected="SegmentedBtn_Left_Selected"
image_unselected="SegmentedBtn_Left_Off"
diff --git a/indra/newview/skins/default/xui/en/widgets/inspector.xml b/indra/newview/skins/default/xui/en/widgets/inspector.xml
index 8ec206023e..428b2ce03b 100644
--- a/indra/newview/skins/default/xui/en/widgets/inspector.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inspector.xml
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- See also settings.xml UIFloater* settings for configuration -->
<inspector name="inspector"
- bg_opaque_color="DkGray_66"
- background_visible="true"
- bg_opaque_image="none"
- background_opaque="true"
- bg_alpha_image="none"
- text_color="InspectorTipTextColor"
- />
+ bg_opaque_color="DkGray_66"
+ background_visible="true"
+ bg_opaque_image="Inspector_Hover"
+ background_opaque="true"
+ bg_alpha_image="none"
+ mouse_opaque="true"
+ text_color="InspectorTipTextColor"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 70a58b8e03..1d61447e31 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -4,6 +4,8 @@
Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images.
-->
<location_input font="SansSerifSmall"
+ icon_maturity_general="Parcel_PG_Light"
+ icon_maturity_adult="Parcel_R_Light"
add_landmark_image_enabled="Favorite_Star_Active"
add_landmark_image_disabled="Favorite_Star_Off"
add_landmark_image_hover="Favorite_Star_Over"
@@ -41,6 +43,13 @@
scale_image="false"
top="19"
left="-3" />
+ <maturity_icon
+ name="maturity_icon"
+ width="18"
+ height="16"
+ top="20"
+ follows="left|top"
+ />
<for_sale_button
name="for_sale_btn"
image_unselected="Parcel_ForSale_Light"
@@ -96,17 +105,17 @@
name="damage_icon"
width="14"
height="13"
- top="21"
+ top="19"
left="2"
follows="right|top"
- image_name="Parcel_Damage_Dark"
+ image_name="Parcel_Health_Dark"
/>
<!-- Default text color is invisible on top of nav bar background -->
<damage_text
name="damage_text"
width="35"
height="18"
- top="16"
+ top="17"
follows="right|top"
halign="right"
font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item.xml b/indra/newview/skins/default/xui/en/widgets/menu_item.xml
index c65244ae22..563f3dc5c2 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu_item.xml
@@ -1,3 +1,3 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- Use this for the top-level menu styling -->
-<menu_item font="SansSerif" />
+<menu_item font="SansSerifSmall" />
diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml
index 7262c0dc5c..9bf99fa363 100644
--- a/indra/newview/skins/default/xui/en/widgets/panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/panel.xml
@@ -6,6 +6,8 @@
-->
<panel bg_opaque_color="PanelFocusBackgroundColor"
bg_alpha_color="PanelDefaultBackgroundColor"
+ bg_opaque_image_overlay="White"
+ bg_alpha_image_overlay="White"
background_visible="false"
background_opaque="false"
chrome="false"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/search_editor.xml b/indra/newview/skins/default/xui/en/widgets/search_editor.xml
index 1616e4c3f7..a9a760b3a4 100644
--- a/indra/newview/skins/default/xui/en/widgets/search_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/search_editor.xml
@@ -15,7 +15,11 @@
height="13"
image_unselected="Search"
image_selected="Search" />
- <clear_button
+ <clear_button
+ bottom="4"
+ height="16"
image_unselected="Icon_Close_Foreground"
- image_selected="Icon_Close_Press" />
+ image_selected="Icon_Close_Press"
+ pad_right="4"
+ width="16" />
</search_editor>
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 3f5a4b8379..8d6b0c1cfe 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -5,6 +5,7 @@ label_pad_left - padding to the left of tab button labels
-->
<tab_container tab_min_width="60"
tab_max_width="150"
+ use_custom_icon_ctrl="false"
halign="center"
font="SansSerifSmall"
tab_height="21"
@@ -14,18 +15,18 @@ label_pad_left - padding to the left of tab button labels
tab_top_image_selected="TabTop_Left_Selected"
tab_bottom_image_unselected="Toolbar_Left_Off"
tab_bottom_image_selected="Toolbar_Left_Selected"
- tab_left_image_unselected="TabTop_Middle_Off"
- tab_left_image_selected="TabTop_Middle_Selected"/>
+ tab_left_image_unselected="SegmentedBtn_Left_Disabled"
+ tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>
<middle_tab tab_top_image_unselected="TabTop_Middle_Off"
tab_top_image_selected="TabTop_Middle_Selected"
tab_bottom_image_unselected="Toolbar_Middle_Off"
tab_bottom_image_selected="Toolbar_Middle_Selected"
tab_left_image_unselected="SegmentedBtn_Left_Disabled"
- tab_left_image_selected="SegmentedBtn_Left_Off"/>
+ tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>
<last_tab tab_top_image_unselected="TabTop_Right_Off"
tab_top_image_selected="TabTop_Right_Selected"
tab_bottom_image_unselected="Toolbar_Right_Off"
tab_bottom_image_selected="Toolbar_Right_Selected"
tab_left_image_unselected="SegmentedBtn_Left_Disabled"
- tab_left_image_selected="SegmentedBtn_Left_Off"/>
+ tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>
</tab_container>
diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
index 68cf082c35..a7e271a1ff 100644
--- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
@@ -11,9 +11,6 @@
image_unselected="SegmentedBtn_Left_Off"
image_pressed="SegmentedBtn_Left_Selected_Press"
image_pressed_selected="SegmentedBtn_Left_Selected_Press"
- name="speak_btn"
- label="Speak"
- label_selected="Speak"
tab_stop="false"
/>
<show_button
diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
index 23ca8ea338..2ced8b1b4b 100644
--- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- Core parameters are in simple_text_editor.xml -->
<text_editor
- allow_html="false"/>
+ allow_html="false"
+ show_context_menu="true"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
index a19201f7c3..9ca15ae50d 100644
--- a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- See also settings.xml UIFloater* settings for configuration -->
<tool_tip name="tooltip"
max_width="200"
padding="4"
wrap="true"
font="SansSerif"
+ mouse_opaque="false"
bg_opaque_image="Tooltip"
background_opaque="true"
background_visible="true"
- text_color="ToolTipTextColor"
- />
+ text_color="ToolTipTextColor"/>
diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml
index e8e38316f9..0ba8fdad18 100644
--- a/indra/newview/skins/default/xui/es/floater_about.xml
+++ b/indra/newview/skins/default/xui/es/floater_about.xml
@@ -1,20 +1,60 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_about" title="ACERCA DE [CAPITALIZED_APP_NAME]">
-<tab_container name="about_tab">
- <panel name="credits_panel">
- <text_editor name="credits_editor">
- Le ofrecen Second Life Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, y otros muchos.
+ <floater.string name="AboutHeader">
+ [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </floater.string>
+ <floater.string name="AboutCompiler">
+ Compilado con [COMPILER], versión [COMPILER_VERSION]
+ </floater.string>
+ <floater.string name="AboutPosition">
+ Estás en [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] en la región de [REGION], alojada en [HOSTNAME] ([HOSTIP])
+[SERVER_VERSION]
+[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </floater.string>
+ <floater.string name="AboutSystem">
+ CPU: [CPU]
+Memoria: [MEMORY_MB] MB
+Versión del Sistema Operativo: [OS_VERSION]
+Fabricante de la tarjeta gráfica: [GRAPHICS_CARD_VENDOR]
+Tarjeta gráfica: [GRAPHICS_CARD]
+ </floater.string>
+ <floater.string name="AboutDriver">
+ Versión de Windows Graphics Driver: [GRAPHICS_DRIVER_VERSION]
+ </floater.string>
+ <floater.string name="AboutLibs">
+ Versión de OpenGL: [OPENGL_VERSION]
+
+Versión de libcurl: [LIBCURL_VERSION]
+Versión de J2C Decoder: [J2C_VERSION]
+Versión de Audio Driver: [AUDIO_DRIVER_VERSION]
+Versión de Qt Webkit: [QT_WEBKIT_VERSION]
+Versión de Vivox: [VIVOX_VERSION]
+ </floater.string>
+ <floater.string name="none">
+ (no hay)
+ </floater.string>
+ <floater.string name="AboutTraffic">
+ Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </floater.string>
+ <tab_container name="about_tab">
+ <panel label="Información" name="support_panel">
+ <button label="Copiar al portapapeles" name="copy_btn"/>
+ </panel>
+ <panel label="Créditos" name="credits_panel">
+ <text_editor name="credits_editor">
+ Le ofrecen Second Life Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, y otros muchos.
Gracias a todos estos residentes por contribuir a garantizar que esta es la mejor versión: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
Para tener éxito en los negocios, se atrevido, se el primero, se diferente. (Henry Marchant)
- </text_editor>
- </panel>
- <panel name="licenses_panel">
- <text_editor name="credits_editor">
- 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+ </text_editor>
+ </panel>
+ <panel label="Licencias" name="licenses_panel">
+ <text_editor name="credits_editor">
+ 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
APR Copyright (C) 2000-2004 The Apache Software Foundation
cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
@@ -35,10 +75,7 @@
All rights reserved. See licenses.txt for details.
Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
- </text_editor>
- </panel>
-</tab_container>
- <string name="you_are_at">
- Está en [POSITION]
- </string>
+ </text_editor>
+ </panel>
+ </tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index 7575df4b98..f215348b00 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -1,7 +1,59 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floaterland" title="ACERCA DEL TERRENO">
+ <floater.string name="Minutes">
+ [MINUTES] minutos
+ </floater.string>
+ <floater.string name="Minute">
+ minuto
+ </floater.string>
+ <floater.string name="Seconds">
+ [SECONDS] segundos
+ </floater.string>
+ <floater.string name="Remaining">
+ restantes
+ </floater.string>
<tab_container name="landtab">
- <panel label="General" name="land_general_panel">
+ <panel label="GENERAL" name="land_general_panel">
+ <panel.string name="new users only">
+ Sólo usuarios nuevos
+ </panel.string>
+ <panel.string name="anyone">
+ Cualquiera
+ </panel.string>
+ <panel.string name="area_text">
+ Superficie
+ </panel.string>
+ <panel.string name="area_size_text">
+ [AREA] m²
+ </panel.string>
+ <panel.string name="auction_id_text">
+ ID de la subasta: [ID]
+ </panel.string>
+ <panel.string name="need_tier_to_modify">
+ Debe aprobar su compra para modificar este terreno.
+ </panel.string>
+ <panel.string name="group_owned_text">
+ (Propiedad del grupo)
+ </panel.string>
+ <panel.string name="profile_text">
+ Perfil...
+ </panel.string>
+ <panel.string name="info_text">
+ Información...
+ </panel.string>
+ <panel.string name="public_text">
+ (público)
+ </panel.string>
+ <panel.string name="none_text">
+ (ninguno)
+ </panel.string>
+ <panel.string name="sale_pending_text">
+ (Venta pendiente)
+ </panel.string>
+ <panel.string name="no_selection_text">
+ No se ha seleccionado una parcela.
+Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver sus características.
+ </panel.string>
<text name="Name:">
Nombre:
</text>
@@ -26,7 +78,6 @@
<text name="OwnerText">
Leyla Linden
</text>
- <button label="Perfil..." label_selected="Perfil..." name="Profile..."/>
<text name="Group:">
Grupo:
</text>
@@ -47,13 +98,13 @@
<text name="For sale to">
En venta a: [BUYER]
</text>
- <text width="216" name="Sell with landowners objects in parcel.">
+ <text name="Sell with landowners objects in parcel." width="216">
Los objetos se incluyen en la venta.
</text>
- <text width="216" name="Selling with no objects in parcel.">
+ <text name="Selling with no objects in parcel." width="216">
Los objetos no se incluyen en la venta.
</text>
- <button font="SansSerifSmall" bottom="-245" left="275" width="165" label="Cancelar la venta del terreno" label_selected="Cancelar la venta del terreno" name="Cancel Land Sale"/>
+ <button bottom="-245" font="SansSerifSmall" label="Cancelar la venta del terreno" label_selected="Cancelar la venta del terreno" left="275" name="Cancel Land Sale" width="165"/>
<text name="Claimed:">
Reclamada:
</text>
@@ -74,58 +125,27 @@
</text>
<button label="Comprar terreno..." label_selected="Comprar terreno..." left="130" name="Buy Land..." width="125"/>
<button label="Comprar para el grupo..." label_selected="Comprar para el grupo..." name="Buy For Group..."/>
- <button label="Comprar un pase..." label_selected="Comprar un pase..." left="130" width="125" name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno."/>
+ <button label="Comprar un pase..." label_selected="Comprar un pase..." left="130" name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno." width="125"/>
<button label="Abandonar el terreno..." label_selected="Abandonar el terreno..." name="Abandon Land..."/>
<button label="Reclamar el terreno..." label_selected="Reclamar el terreno..." name="Reclaim Land..."/>
<button label="Venta Linden..." label_selected="Venta Linden..." name="Linden Sale..." tool_tip="El terreno debe estar en propiedad, con contenido, y no estar en subasta."/>
- <panel.string name="new users only">
- Sólo usuarios nuevos
- </panel.string>
- <panel.string name="anyone">
- Cualquiera
- </panel.string>
- <panel.string name="area_text">
- Superficie
- </panel.string>
- <panel.string name="area_size_text">
- [AREA] m²
- </panel.string>
- <panel.string name="auction_id_text">
- ID de la subasta: [ID]
- </panel.string>
- <panel.string name="need_tier_to_modify">
- Debe aprobar su compra para modificar este terreno.
- </panel.string>
- <panel.string name="group_owned_text">
- (Propiedad del grupo)
- </panel.string>
- <panel.string name="profile_text">
- Perfil...
- </panel.string>
- <panel.string name="info_text">
- Información...
- </panel.string>
- <panel.string name="public_text">
- (público)
+ </panel>
+ <panel label="CONTRATO" name="land_covenant_panel">
+ <panel.string name="can_resell">
+ El terreno comprado en esta región se podrá revender.
</panel.string>
- <panel.string name="none_text">
- (ninguno)
+ <panel.string name="can_not_resell">
+ El terreno comprado en esta región no se podrá revender.
</panel.string>
- <panel.string name="sale_pending_text">
- (Venta pendiente)
+ <panel.string name="can_change">
+ El terreno comprado en esta región se podrá unir o dividir.
</panel.string>
- <panel.string name="no_selection_text">
- No se ha seleccionado una parcela.
-Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver sus características.
+ <panel.string name="can_not_change">
+ El terreno comprado en esta región no se podrá unir o dividir.
</panel.string>
- </panel>
- <panel label="Contrato" name="land_covenant_panel">
<text name="estate_section_lbl">
Estado:
</text>
- <text name="estate_name_lbl">
- Nombre:
- </text>
<text name="estate_name_text">
mainland
</text>
@@ -144,9 +164,6 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
<text name="region_section_lbl">
Región:
</text>
- <text name="region_name_lbl">
- Nombre:
- </text>
<text name="region_name_text">
leyla
</text>
@@ -174,121 +191,82 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
<text name="changeable_clause">
El terreno de esta región no se podrá unir/dividir.
</text>
- <panel.string name="can_resell">
- El terreno comprado en esta región se podrá revender.
- </panel.string>
- <panel.string name="can_not_resell">
- El terreno comprado en esta región no se podrá revender.
- </panel.string>
- <panel.string name="can_change">
- El terreno comprado en esta región se podrá unir o dividir.
+ </panel>
+ <panel label="OBJETOS" name="land_objects_panel">
+ <panel.string name="objects_available_text">
+ [COUNT] de un máximo de [MAX] ([AVAILABLE] disponibles)
</panel.string>
- <panel.string name="can_not_change">
- El terreno comprado en esta región no se podrá unir o dividir.
+ <panel.string name="objects_deleted_text">
+ [COUNT] de un máximo de [MAX] ([DELETED] se borrarán)
</panel.string>
- </panel>
- <panel label="Objetos" name="land_objects_panel">
<text name="parcel_object_bonus">
Plus de objetos en la región: [BONUS]
</text>
<text name="Simulator primitive usage:">
- Simulador de uso de prims:
+ Uso de primitivas:
</text>
- <text name="objects_available" left="204" width="250" >
+ <text left="204" name="objects_available" width="250">
[COUNT] de un máximo de [MAX] ([AVAILABLE] disponibles)
</text>
- <panel.string name="objects_available_text">
- [COUNT] de un máximo de [MAX] ([AVAILABLE] disponibles)
- </panel.string>
- <panel.string name="objects_deleted_text">
- [COUNT] de un máximo de [MAX] ([DELETED] se borrarán)
- </panel.string>
<text name="Primitives parcel supports:" width="200">
Prims que admite la parcela:
</text>
- <text name="object_contrib_text" left="204" width="152">
+ <text left="204" name="object_contrib_text" width="152">
[COUNT]
</text>
<text name="Primitives on parcel:">
Prims en la parcela:
</text>
- <text name="total_objects_text" left="204" width="48">
+ <text left="204" name="total_objects_text" width="48">
[COUNT]
</text>
- <text name="Owned by parcel owner:" left="14" width="180" >
+ <text left="14" name="Owned by parcel owner:" width="180">
Del propietario de la parcela:
</text>
- <text name="owner_objects_text" left="204" width="48">
+ <text left="204" name="owner_objects_text" width="48">
[COUNT]
</text>
<button label="Mostrar" label_selected="Mostrar" name="ShowOwner" right="-135" width="60"/>
- <button label="Devolver..." label_selected="Devolver..." name="ReturnOwner..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/>
- <text name="Set to group:" left="14" width="180">
+ <button label="Devolver..." label_selected="Devolver..." name="ReturnOwner..." right="-10" tool_tip="Devolver los objetos a sus propietarios." width="119"/>
+ <text left="14" name="Set to group:" width="180">
Del grupo:
</text>
- <text name="group_objects_text" left="204" width="48">
+ <text left="204" name="group_objects_text" width="48">
[COUNT]
</text>
<button label="Mostrar" label_selected="Mostrar" name="ShowGroup" right="-135" width="60"/>
- <button label="Devolver..." label_selected="Devolver..." name="ReturnGroup..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/>
- <text name="Owned by others:" left="14" width="128">
+ <button label="Devolver..." label_selected="Devolver..." name="ReturnGroup..." right="-10" tool_tip="Devolver los objetos a sus propietarios." width="119"/>
+ <text left="14" name="Owned by others:" width="128">
Propiedad de otros:
</text>
- <text name="other_objects_text" left="204" width="48">
+ <text left="204" name="other_objects_text" width="48">
[COUNT]
</text>
<button label="Mostrar" label_selected="Mostrar" name="ShowOther" right="-135" width="60"/>
- <button label="Devolver..." label_selected="Devolver..." name="ReturnOther..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/>
- <text name="Selected / sat upon:" left="14" width="193" >
+ <button label="Devolver..." label_selected="Devolver..." name="ReturnOther..." right="-10" tool_tip="Devolver los objetos a sus propietarios." width="119"/>
+ <text left="14" name="Selected / sat upon:" width="193">
Seleccionados / con gente sentada:
</text>
- <text name="selected_objects_text" left="204" width="48">
+ <text left="204" name="selected_objects_text" width="48">
[COUNT]
</text>
- <text name="Autoreturn" left="4" width="412" >
+ <text left="4" name="Autoreturn" width="412">
Autodevolución de objetos a otros residentes (minutos; 0 la desactiva):
</text>
- <line_editor name="clean other time" right="-20" />
+ <line_editor name="clean other time" right="-20"/>
<text name="Object Owners:" width="150">
Propietarios de los objetos:
</text>
- <button label="Actualizar la lista" label_selected="Actualizar la lista" name="Refresh List" left="158"/>
- <button label="Devolver los objetos..." label_selected="Devolver los objetos..." name="Return objects..." left="270" width="164"/>
+ <button label="Actualizar la lista" label_selected="Actualizar la lista" left="158" name="Refresh List" tool_tip="Refresh Object List"/>
+ <button label="Devolver los objetos..." label_selected="Devolver los objetos..." left="270" name="Return objects..." width="164"/>
<name_list name="owner list">
- <column label="Tipo" name="type"/>
- <column label="Nombre" name="name"/>
- <column label="Número" name="count"/>
- <column label="Más recientes" name="mostrecent"/>
+ <name_list.columns label="Tipo" name="type"/>
+ <name_list.columns label="Nombre" name="name"/>
+ <name_list.columns label="Número" name="count"/>
+ <name_list.columns label="Más recientes" name="mostrecent"/>
</name_list>
</panel>
- <panel label="Opciones" name="land_options_panel">
- <text name="allow_label">
- Permitir a otros residentes:
- </text>
- <check_box label="Editar el terreno" name="edit land check" tool_tip="Si se marca, cualquiera podrá modificar su terreno. Mejor dejarlo desmarcado, pues usted siempre puede modificar su terreno."/>
- <check_box label="Crear hitos" name="check landmark"/>
- <check_box label="Volar" name="check fly" tool_tip="Si se marca, los residentes podrán volar en su terreno. Si no, sólo podrán volar al cruzarlo o hasta que aterricen en él."/>
- <text name="allow_label2" left="162" >
- Crear objetos:
- </text>
- <check_box label="Todos los residentes" name="edit objects check" left="255" />
- <check_box label="El grupo" name="edit group objects check" left="385" />
- <text name="allow_label3" left="162">
- Dejar objetos:
- </text>
- <check_box label="Todos los residentes" name="all object entry check" left="255"/>
- <check_box label="El grupo" name="group object entry check" left="385"/>
- <text name="allow_label4" left="162">
- Ejecutar scripts:
- </text>
- <check_box label="Todos los residentes" name="check other scripts" left="255"/>
- <check_box label="El grupo" name="check group scripts" left="385"/>
- <text name="land_options_label">
- Opciones del terreno:
- </text>
- <check_box label="Seguro (sin daño)" name="check safe" tool_tip="Si se marca, convierte el terreno en &apos;seguro&apos;, desactivando el daño en combate. Si no, se activa el daño en combate."/>
- <check_box label="Sin &apos;empujones&apos;" name="PushRestrictCheck" tool_tip="Previene scripts que empujen. Marcando esta opción prevendrá que en su terreno haya comportamientos destructivos."/>
- <check_box label="Mostrar la parcela en Buscar (30 L$/semana) en" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/>
+ <panel label="OPCIONES" name="land_options_panel">
<panel.string name="search_enabled_tooltip">
Permitir que aparezca esta parcela en los resultados de la búsqueda
</panel.string>
@@ -299,62 +277,6 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
<panel.string name="search_disabled_permissions_tooltip">
Esta opción no esta activada porque usted no puede modificar las opciones de la parcela.
</panel.string>
- <combo_box name="land category with adult" left="282" width="140">
- <combo_box.item name="item0" label="Cualquier categoría"
- />
- <combo_box.item name="item1" label="Localización Linden"
- />
- <combo_box.item name="item2" label="&apos;Adult&apos;"
- />
- <combo_box.item name="item3" label="Arte y Cultura"
- />
- <combo_box.item name="item4" label="Negocios"
- />
- <combo_box.item name="item5" label="Educativo"
- />
- <combo_box.item name="item6" label="Juegos de azar"
- />
- <combo_box.item name="item7" label="Entretenimiento"
- />
- <combo_box.item name="item8" label="Para recién llegados"
- />
- <combo_box.item name="item9" label="Parques y Naturaleza"
- />
- <combo_box.item name="item10" label="Residencial"
- />
- <combo_box.item name="item11" label="Compras"
- />
- <combo_box.item name="item12" label="Otra"
- />
- </combo_box>
- <combo_box name="land category" left="282" width="140">
- <combo_box.item name="item0" label="Cualquier categoría"
- />
- <combo_box.item name="item1" label="Localización Linden"
- />
- <combo_box.item name="item3" label="Arte y Cultura"
- />
- <combo_box.item name="item4" label="Negocios"
- />
- <combo_box.item name="item5" label="Educativo"
- />
- <combo_box.item name="item6" label="Juegos de azar"
- />
- <combo_box.item name="item7" label="Entretenimiento"
- />
- <combo_box.item name="item8" label="Para recién llegados"
- />
- <combo_box.item name="item9" label="Parques y Naturaleza"
- />
- <combo_box.item name="item10" label="Residencial"
- />
- <combo_box.item name="item11" label="Compras"
- />
- <combo_box.item name="item12" label="Otra"
- />
- </combo_box>
- <button label="?" label_selected="?" name="?" left="427"/>
- <check_box label="Contenido &apos;Mature&apos;" name="MatureCheck" tool_tip=""/>
<panel.string name="mature_check_mature">
Contenido &apos;Mature&apos;
</panel.string>
@@ -367,6 +289,71 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
<panel.string name="mature_check_adult_tooltip">
La información o el contenido de su parcela se considera &apos;Adult&apos;.
</panel.string>
+ <panel.string name="landing_point_none">
+ (ninguno)
+ </panel.string>
+ <panel.string name="push_restrict_text">
+ Sin &apos;empujones&apos;
+ </panel.string>
+ <panel.string name="push_restrict_region_text">
+ Sin &apos;empujones&apos; (prevalece lo marcado en la región)
+ </panel.string>
+ <text name="allow_label">
+ Permitir a otros residentes:
+ </text>
+ <check_box label="Editar el terreno" name="edit land check" tool_tip="Si se marca, cualquiera podrá modificar su terreno. Mejor dejarlo desmarcado, pues usted siempre puede modificar su terreno."/>
+ <check_box label="Volar" name="check fly" tool_tip="Si se marca, los residentes podrán volar en su terreno. Si no, sólo podrán volar al cruzarlo o hasta que aterricen en él."/>
+ <text left="162" name="allow_label2">
+ Crear objetos:
+ </text>
+ <check_box label="Todos los residentes" left="255" name="edit objects check"/>
+ <check_box label="El grupo" left="385" name="edit group objects check"/>
+ <text left="162" name="allow_label3">
+ Dejar objetos:
+ </text>
+ <check_box label="Todos los residentes" left="255" name="all object entry check"/>
+ <check_box label="El grupo" left="385" name="group object entry check"/>
+ <text left="162" name="allow_label4">
+ Ejecutar scripts:
+ </text>
+ <check_box label="Todos los residentes" left="255" name="check other scripts"/>
+ <check_box label="El grupo" left="385" name="check group scripts"/>
+ <text name="land_options_label">
+ Opciones del terreno:
+ </text>
+ <check_box label="Seguro (sin daño)" name="check safe" tool_tip="Si se marca, convierte el terreno en &apos;seguro&apos;, desactivando el daño en combate. Si no, se activa el daño en combate."/>
+ <check_box label="Sin &apos;empujones&apos;" name="PushRestrictCheck" tool_tip="Previene scripts que empujen. Marcando esta opción prevendrá que en su terreno haya comportamientos destructivos."/>
+ <check_box label="Mostrar el sitio en la búsqueda (30 L$/semana)" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/>
+ <combo_box left="282" name="land category with adult" width="140">
+ <combo_box.item label="Cualquier categoría" name="item0"/>
+ <combo_box.item label="Localización Linden" name="item1"/>
+ <combo_box.item label="&apos;Adult&apos;" name="item2"/>
+ <combo_box.item label="Arte y Cultura" name="item3"/>
+ <combo_box.item label="Negocios" name="item4"/>
+ <combo_box.item label="Educativo" name="item5"/>
+ <combo_box.item label="Juegos de azar" name="item6"/>
+ <combo_box.item label="Entretenimiento" name="item7"/>
+ <combo_box.item label="Para recién llegados" name="item8"/>
+ <combo_box.item label="Parques y Naturaleza" name="item9"/>
+ <combo_box.item label="Residencial" name="item10"/>
+ <combo_box.item label="Compras" name="item11"/>
+ <combo_box.item label="Otra" name="item12"/>
+ </combo_box>
+ <combo_box left="282" name="land category" width="140">
+ <combo_box.item label="Cualquier categoría" name="item0"/>
+ <combo_box.item label="Localización Linden" name="item1"/>
+ <combo_box.item label="Arte y Cultura" name="item3"/>
+ <combo_box.item label="Negocios" name="item4"/>
+ <combo_box.item label="Educativo" name="item5"/>
+ <combo_box.item label="Juegos de azar" name="item6"/>
+ <combo_box.item label="Entretenimiento" name="item7"/>
+ <combo_box.item label="Para recién llegados" name="item8"/>
+ <combo_box.item label="Parques y Naturaleza" name="item9"/>
+ <combo_box.item label="Residencial" name="item10"/>
+ <combo_box.item label="Compras" name="item11"/>
+ <combo_box.item label="Otra" name="item12"/>
+ </combo_box>
+ <check_box label="Contenido &apos;Mature&apos;" name="MatureCheck" tool_tip=""/>
<text name="Snapshot:">
Foto:
</text>
@@ -374,61 +361,46 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
<text name="landing_point">
Punto de llegada: [LANDING]
</text>
- <panel.string name="landing_point_none">
- (ninguno)
- </panel.string>
<button label="Definir" label_selected="Definir" name="Set" tool_tip="Configura el punto de llegada donde aparecerán los visitantes. Configúrelo a la posición de su avatar dentro de esta parcela."/>
<button label="Borrar" label_selected="Borrar" name="Clear" tool_tip="Borrar el punto de llegada."/>
<text name="Teleport Routing: ">
Punto de teleporte:
</text>
<combo_box name="landing type" tool_tip="Punto de teleporte: defina cómo manejar en su terreno los teleportes.">
- <combo_box.item name="Blocked" label="Bloqueado"
- />
- <combo_box.item name="LandingPoint" label="Punto de llegada"
- />
- <combo_box.item name="Anywhere" label="Cualquiera"
- />
+ <combo_box.item label="Bloqueado" name="Blocked"/>
+ <combo_box.item label="Punto de llegada" name="LandingPoint"/>
+ <combo_box.item label="Cualquiera" name="Anywhere"/>
</combo_box>
- <panel.string name="push_restrict_text">
- Sin &apos;empujones&apos;
- </panel.string>
- <panel.string name="push_restrict_region_text">
- Sin &apos;empujones&apos; (prevalece lo marcado en la región)
- </panel.string>
</panel>
- <panel label="Media" name="land_media_panel">
+ <panel label="MEDIA" name="land_media_panel">
<text name="with media:" width="85">
Tipo de media:
</text>
- <combo_box name="media type" tool_tip="Especifique si la URL es una película, una web, u otro media" left="97" />
+ <combo_box left="97" name="media type" tool_tip="Especifique si la URL es una película, una web, u otro media"/>
<text name="at URL:" width="85">
- URL del media:
+ Página inicial:
</text>
<line_editor left="97" name="media_url"/>
<button label="Definir..." label_selected="Definir..." name="set_media_url"/>
+ <text name="CurrentURL:">
+ Página actual:
+ </text>
+ <check_box label="Ocultar la URL del media" left="97" name="hide_media_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL del media. Note que esto no está disponible para HTML."/>
<text name="Description:">
Descripción:
</text>
- <line_editor name="url_description" tool_tip="Texto a mostrar cerca del botón play/cargar" left="97" />
+ <line_editor left="97" name="url_description" tool_tip="Texto a mostrar cerca del botón play/cargar"/>
<text name="Media texture:">
Cambiar
la textura:
</text>
- <texture_picker label="" name="media texture" tool_tip="Pulse para elegir una imagen" left="97" />
+ <texture_picker label="" left="97" name="media texture" tool_tip="Pulse para elegir una imagen"/>
<text name="replace_texture_help" width="285">
(Los objetos que usen esta textura mostrarán la
película o la web cuando pulse la flecha de play.)
</text>
- <text name="Options:">
- Opciones de
-los media:
- </text>
- <check_box left="97" label="Escala automática" name="media_auto_scale" tool_tip="Marcando esta opción, se ajustará el tamaño del contenido automáticamente. Puede ser ligeramente más lento y con menor calidad visual, pero no tendrá que ajustar ni alinear ninguna textura."/>
- <check_box label="Media en bucle" name="media_loop" tool_tip="Ejecuta el media en bucle: cuando acaba su ejecución, vuelve a empezar."/>
- <check_box left="97" label="Ocultar la URL del media" name="hide_media_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL del media. Note que esto no está disponible para HTML."/>
- <check_box label="Ocultar la URL de la música" name="hide_music_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL de la música"/>
- <text name="media_size" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)." left="102" width="120">
+ <check_box label="Escala automática" left="97" name="media_auto_scale" tool_tip="Marcando esta opción, se ajustará el tamaño del contenido automáticamente. Puede ser ligeramente más lento y con menor calidad visual, pero no tendrá que ajustar ni alinear ninguna textura."/>
+ <text left="102" name="media_size" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)." width="120">
Tamaño del media:
</text>
<spinner left_delta="104" name="media_size_width" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)."/>
@@ -436,58 +408,43 @@ los media:
<text name="pixels">
píxeles
</text>
- <text name="MusicURL:" bottom_delta="-28" >
- URL de la
-música:
- </text>
- <line_editor bottom_delta="-12" left="97" name="music_url"/>
- <text name="Sound:">
- Sonido:
- </text>
- <check_box left="97" label="Limitar los gestos y los sonidos de objetos a esta parcela" name="check sound local"/>
- <button label="?" label_selected="?" name="?" left="424"/>
- <text name="Voice settings:">
- Voz:
+ <text name="Options:">
+ Opciones de
+los media:
</text>
- <check_box left="97" label="Activar la voz" name="parcel_enable_voice_channel"/>
- <check_box left="97" label="Activar la voz (establecido por el Estado)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box left="117" label="Limitar la voz a esta parcela" name="parcel_enable_voice_channel_parcel"/>
+ <check_box label="Media en bucle" name="media_loop" tool_tip="Ejecuta el media en bucle: cuando acaba su ejecución, vuelve a empezar."/>
</panel>
- <panel label="Acceso" name="land_access_panel">
+ <panel label="SONIDO" name="land_audio_panel">
+ <check_box label="Activar la voz" name="parcel_enable_voice_channel"/>
+ <check_box label="Autorizar la voz (establecido por el Estado)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+ </panel>
+ <panel label="ACCESO" name="land_access_panel">
+ <panel.string name="access_estate_defined">
+ (Definido por el Estado)
+ </panel.string>
+ <panel.string name="estate_override">
+ Una o más de esta opciones está configurada a nivel del estado
+ </panel.string>
<text name="Limit access to this parcel to:">
Acceso a esta parcela
</text>
- <check_box label="Permitir el acceso público" name="public_access"/>
+ <check_box label="Permitir el acceso público [MATURITY]" name="public_access"/>
<text name="Only Allow">
- Impedir el acceso a:
+ Restringir el acceso a residentes verificados con:
</text>
- <check_box label="Residentes que no hayan dado a Linden Lab información de su forma de pago" name="limit_payment" tool_tip="Impedir el acceso a los residentes no identificados."/>
- <check_box label="Residentes de los que no se ha verificado si son adultos" name="limit_age_verified" tool_tip="Residentes que no hayan verificado su edad. Para más información, vea support.secondlife.com"/>
- <panel.string name="estate_override">
- Una o más de esta opciones está configurada a nivel del estado
- </panel.string>
+ <check_box label="Información de pago aportada [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Impedir el acceso a los residentes no identificados."/>
+ <check_box label="Verificación de edad [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Prohibir el acceso a residentes que no hayan verificado su edad. Para más información, ver [SUPPORT_SITE]."/>
<check_box label="Acceso permitido al grupo: [GROUP]" name="GroupCheck" tool_tip="Elija el grupo en la pestaña General."/>
<check_box label="Vender pases a:" name="PassCheck" tool_tip="Permitir acceso temporal a esta parcela"/>
<combo_box name="pass_combo">
- <combo_box.item name="Anyone" label="Cualquiera"
- />
- <combo_box.item name="Group" label="Grupo"
- />
+ <combo_box.item label="Cualquiera" name="Anyone"/>
+ <combo_box.item label="Grupo" name="Group"/>
</combo_box>
<spinner label="Precio en L$:" name="PriceSpin"/>
<spinner label="Horas de acceso:" name="HoursSpin"/>
- <text label="Permitir siempre" name="AllowedText">
- Residentes autorizados
- </text>
- <name_list name="AccessList" tool_tip="([LISTED] listados, el máx. es de [MAX])"/>
- <button label="Añadir..." label_selected="Añadir..." name="add_allowed"/>
- <button label="Quitar" label_selected="Quitar" name="remove_allowed"/>
- <text label="Prohibir el acceso" name="BanCheck">
- Residentes con el acceso prohibido
- </text>
- <name_list name="BannedList" tool_tip="([LISTED] listados, el máx. es de [MAX])"/>
- <button label="Añadir..." label_selected="Añadir..." name="add_banned"/>
- <button label="Quitar" label_selected="Quitar" name="remove_banned"/>
+ <panel name="Allowed_layout_panel">
+ <name_list name="AccessList" tool_tip="([LISTED] listados de un máx. de [MAX])"/>
+ </panel>
</panel>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_activeim.xml b/indra/newview/skins/default/xui/es/floater_activeim.xml
new file mode 100644
index 0000000000..988786c1ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_activeim.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_activeim" title="MI activo"/>
diff --git a/indra/newview/skins/default/xui/es/floater_animation_preview.xml b/indra/newview/skins/default/xui/es/floater_animation_preview.xml
index 5a03aa6370..39835968ae 100644
--- a/indra/newview/skins/default/xui/es/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/es/floater_animation_preview.xml
@@ -1,70 +1,177 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Animation Preview" title="">
+ <floater.string name="failed_to_initialize">
+ Fallo al iniciar el movimiento
+ </floater.string>
+ <floater.string name="anim_too_long">
+ El archivo de la animación dura [LENGTH] segundos.
+
+La duración máxima de una animación es de [MAX_LENGTH] segundos.
+ </floater.string>
+ <floater.string name="failed_file_read">
+ No se ha podido leer el archivo de la animación.
+
+[STATUS]
+ </floater.string>
+ <floater.string name="E_ST_OK">
+ OK
+ </floater.string>
+ <floater.string name="E_ST_EOF">
+ Fin prematuro del archivo.
+ </floater.string>
+ <floater.string name="E_ST_NO_CONSTRAINT">
+ No se puede leer la definición de la restricción.
+ </floater.string>
+ <floater.string name="E_ST_NO_FILE">
+ No se puede abrir el archivo BVH.
+ </floater.string>
+ <floater.string name="E_ST_NO_HIER">
+ &apos;HIERARCHY header&apos; inválido.
+ </floater.string>
+ <floater.string name="E_ST_NO_JOINT">
+ No se pueden encontrar &apos;ROOT&apos; o &apos;JOINT&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_NAME">
+ No se puede obtener el nombre &apos;JOINT&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_OFFSET">
+ No se puede encontrar &apos;OFFSET&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_CHANNELS">
+ No se puede encontrar &apos;CHANNELS&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROTATION">
+ No se puede conseguir el orden de la rotación.
+ </floater.string>
+ <floater.string name="E_ST_NO_AXIS">
+ No se puede encontrar el eje de rotación.
+ </floater.string>
+ <floater.string name="E_ST_NO_MOTION">
+ No se puede encontrar &apos;MOTION&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAMES">
+ No se puede conseguir el número de frames.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAME_TIME">
+ No se puede conseguir el tiempo del frame.
+ </floater.string>
+ <floater.string name="E_ST_NO_POS">
+ No se pueden conseguir los valores de la posición.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROT">
+ No se pueden conseguir los valores de la rotación.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_FILE">
+ No se puede abrir el archivo de traducción.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HEADER">
+ No se puede leer el encabezamiento de la traducción.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_NAME">
+ No se puede leer la traducción de los nombres.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_IGNORE">
+ No se puede leer la traducción de los valores ignorados.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_RELATIVE">
+ No se puede leer el valor relativo de la traducción.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_OUTNAME">
+ No se puede leer la traducción del valor &apos;outname&apos;
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MATRIX">
+ No se puede leer la matriz de traducciones.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGECHILD">
+ No se puede conseguir el nombre &apos;mergechild&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGEPARENT">
+ No se puede conseguir el nombre &apos;mergeparent&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_PRIORITY">
+ No se puede obtener el valor prioritario.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_LOOP">
+ No se puede conseguir el valor del bucle.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEIN">
+ No se pueden conseguir los valores &apos;easeIn&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEOUT">
+ No se pueden conseguir los valores &apos;easeOut&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HAND">
+ No se puede conseguir el valor de &apos;hand morph&apos;.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EMOTE">
+ No se puede leer el nombre del gesto.
+ </floater.string>
<text name="name_label">
Nombre:
</text>
<text name="description_label">
Descripción:
</text>
- <spinner label_width="72" width="110" label="Prioridad:" name="priority" tool_tip="Controle qué otras animaciones pueden ser anuladas por ésta."/>
- <check_box left="8" label="Bucle:" name="loop_check" tool_tip="Haga esta animación en bucle."/>
- <spinner label_width="65" left="65" width="116" label="Empieza(%)" name="loop_in_point" tool_tip="Indique el punto en el que la animación empieza el bucle."/>
- <spinner label_width="50" left="185" label="Acaba(%)" name="loop_out_point" tool_tip="Indique el punto en el que la animación acaba el bucle."/>
+ <spinner label="Prioridad:" label_width="72" name="priority" tool_tip="Controla qué otras animaciones pueden ser anuladas por ésta" width="110"/>
+ <check_box label="Bucle:" left="8" name="loop_check" tool_tip="Hace esta animación en bucle"/>
+ <spinner label="Empieza(%)" label_width="65" left="65" name="loop_in_point" tool_tip="Indica el punto en el que la animación vuelve a empezar" width="116"/>
+ <spinner label="Acaba(%)" label_width="50" left="185" name="loop_out_point" tool_tip="Indica el punto en el que la animación acaba el bucle"/>
<text name="hand_label">
Posición de las manos
</text>
- <combo_box left_delta="120" width="164" name="hand_pose_combo" tool_tip="Control de lo que hacen las manos durante la animación.">
- <combo_box.item name="Spread" label="Extendidas"/>
- <combo_box.item name="Relaxed" label="Relajadas"/>
- <combo_box.item name="PointBoth" label="Ambas señalan"/>
- <combo_box.item name="Fist" label="Puño"/>
- <combo_box.item name="RelaxedLeft" label="La izquierda relajada"/>
- <combo_box.item name="PointLeft" label="La izquierda señala"/>
- <combo_box.item name="FistLeft" label="Puño en la izquierda"/>
- <combo_box.item name="RelaxedRight" label="La derecha relajada"/>
- <combo_box.item name="PointRight" label="La derecha señala"/>
- <combo_box.item name="FistRight" label="Puño en la derecha"/>
- <combo_box.item name="SaluteRight" label="La derecha saluda"/>
- <combo_box.item name="Typing" label="Escribiendo"/>
- <combo_box.item name="PeaceRight" label="Paz en la derecha"/>
+ <combo_box left_delta="120" name="hand_pose_combo" tool_tip="Controla qué hacen las manos durante la animación" width="164">
+ <combo_box.item label="Extendidas" name="Spread"/>
+ <combo_box.item label="Relajadas" name="Relaxed"/>
+ <combo_box.item label="Ambas señalan" name="PointBoth"/>
+ <combo_box.item label="Puño" name="Fist"/>
+ <combo_box.item label="La izq. relajada" name="RelaxedLeft"/>
+ <combo_box.item label="La izq. señala" name="PointLeft"/>
+ <combo_box.item label="Puño izq." name="FistLeft"/>
+ <combo_box.item label="La der. relajada" name="RelaxedRight"/>
+ <combo_box.item label="La der. señala" name="PointRight"/>
+ <combo_box.item label="Puño der." name="FistRight"/>
+ <combo_box.item label="La derecha saluda" name="SaluteRight"/>
+ <combo_box.item label="Escribiendo" name="Typing"/>
+ <combo_box.item label="&apos;Paz&apos; en la der." name="PeaceRight"/>
</combo_box>
<text name="emote_label">
Expresión
</text>
- <combo_box left_delta="120" width="164" name="emote_combo" tool_tip="Controle qué hace la cara durante la animación.">
- <combo_box.item name="[None]" label="Nada]"/>
- <combo_box.item name="Aaaaah" label="Aaaaah"/>
- <combo_box.item name="Afraid" label="Con miedo"/>
- <combo_box.item name="Angry" label="Enfadada"/>
- <combo_box.item name="BigSmile" label="Gran sonrisa"/>
- <combo_box.item name="Bored" label="Aburrida"/>
- <combo_box.item name="Cry" label="Llorar"/>
- <combo_box.item name="Disdain" label="Desdén"/>
- <combo_box.item name="Embarrassed" label="Avergonzada"/>
- <combo_box.item name="Frown" label="Fruncir el ceño"/>
- <combo_box.item name="Kiss" label="Besar"/>
- <combo_box.item name="Laugh" label="Reír"/>
- <combo_box.item name="Plllppt" label="Sacar la lengua"/>
- <combo_box.item name="Repulsed" label="Rechazo"/>
- <combo_box.item name="Sad" label="Triste"/>
- <combo_box.item name="Shrug" label="Encogerse de hombros"/>
- <combo_box.item name="Smile" label="Sonrisa"/>
- <combo_box.item name="Surprise" label="Sorpresa"/>
- <combo_box.item name="Wink" label="Guiño"/>
- <combo_box.item name="Worry" label="Preocupación"/>
+ <combo_box left_delta="120" name="emote_combo" tool_tip="Controla qué hace la cara durante la animación" width="164">
+ <combo_box.item label="(ninguno)" name="[None]"/>
+ <combo_box.item label="Aaaaah" name="Aaaaah"/>
+ <combo_box.item label="Con miedo" name="Afraid"/>
+ <combo_box.item label="Enfado" name="Angry"/>
+ <combo_box.item label="Gran sonrisa" name="BigSmile"/>
+ <combo_box.item label="Aburrimiento" name="Bored"/>
+ <combo_box.item label="Llorar" name="Cry"/>
+ <combo_box.item label="Desdén" name="Disdain"/>
+ <combo_box.item label="Avergonzarse" name="Embarrassed"/>
+ <combo_box.item label="Fruncir el ceño" name="Frown"/>
+ <combo_box.item label="Beso" name="Kiss"/>
+ <combo_box.item label="Reír" name="Laugh"/>
+ <combo_box.item label="Sacar la lengua" name="Plllppt"/>
+ <combo_box.item label="Rechazo" name="Repulsed"/>
+ <combo_box.item label="Triste" name="Sad"/>
+ <combo_box.item label="Encogerse de hombros" name="Shrug"/>
+ <combo_box.item label="Sonrisa" name="Smile"/>
+ <combo_box.item label="Sorpresa" name="Surprise"/>
+ <combo_box.item label="Guiño" name="Wink"/>
+ <combo_box.item label="Preocupación" name="Worry"/>
</combo_box>
<text name="preview_label" width="250">
Vista previa mientras
</text>
- <combo_box left_delta="120" width="130" name="preview_base_anim" tool_tip="Compruebe cómo se comporta su animación a la vez que el avatar realiza acciones comunes.">
- <combo_box.item name="Standing" label="Estar de pie"/>
- <combo_box.item name="Walking" label="Caminar"/>
- <combo_box.item name="Sitting" label="Estar sentado"/>
- <combo_box.item name="Flying" label="Volar"/>
+ <combo_box left_delta="120" name="preview_base_anim" tool_tip="Compruebe cómo se comporta su animación a la vez que el avatar realiza acciones comunes." width="130">
+ <combo_box.item label="De pie" name="Standing"/>
+ <combo_box.item label="Caminando" name="Walking"/>
+ <combo_box.item label="Sentado/a" name="Sitting"/>
+ <combo_box.item label="Volando" name="Flying"/>
</combo_box>
- <spinner label_width="125" width="192" label="Combinar (sec)" name="ease_in_time" tool_tip="Tiempo (en segundos) en el que se combinan las animaciones."/>
- <spinner bottom_delta="-20" label_width="125" left="10" width="192" label="Dejar de combinar (sec)" name="ease_out_time" tool_tip="Tiempo (en segundos) en el que dejan de combinarse las animaciones."/>
- <button bottom_delta="-32" name="play_btn" tool_tip="Mover/Pausar su animación."/>
+ <spinner label="Combinar (sec)" label_width="125" name="ease_in_time" tool_tip="Tiempo (en segundos) en el que se combinan las animaciones" width="192"/>
+ <spinner bottom_delta="-20" label="Dejar de combinar (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Tiempo (en segundos) en el que dejan de combinarse las animaciones" width="192"/>
+ <button bottom_delta="-32" name="play_btn" tool_tip="Ejecutar tu animación"/>
+ <button name="pause_btn" tool_tip="Pausar tu animación"/>
<button label="" name="stop_btn" tool_tip="Parar la repetición de la animación"/>
<slider label="" name="playback_slider"/>
<text name="bad_animation_text">
@@ -73,19 +180,6 @@
Recomendamos usar archivos BVH exportados de
Poser 4.
</text>
- <button label="Cancelar" name="cancel_btn"/>
<button label="Subir ([AMOUNT] L$)" name="ok_btn"/>
- <string name="failed_to_initialize">
- Fallo al iniciar el movimiento
- </string>
- <string name="anim_too_long">
- El archivo de la animación dura [LENGTH] segundos.
-
-La duración máxima de una animación es de [MAX_LENGTH] segundos.
- </string>
- <string name="failed_file_read">
- No se ha podido leer el archivo de la animación.
-
-[STATUS]
- </string>
+ <button label="Cancelar" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_auction.xml b/indra/newview/skins/default/xui/es/floater_auction.xml
index 5196ac0b78..6faf19dbb5 100644
--- a/indra/newview/skins/default/xui/es/floater_auction.xml
+++ b/indra/newview/skins/default/xui/es/floater_auction.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_auction" title="EMPEZAR VENTA DE TERRENO LINDEN">
- <check_box label="Incluir la valla amarilla de selección" name="fence_check"/>
- <button label="Foto" label_selected="Foto" name="snapshot_btn"/>
- <button label="OK" label_selected="OK" name="ok_btn"/>
- <text name="already for sale">
+<floater name="floater_auction" title="COMENZAR LA VENTA DE TERRENO LINDEN">
+ <floater.string name="already for sale">
No puede subastar parcelas que ya están en venta.
- </text>
+ </floater.string>
+ <check_box initial_value="true" label="Incluir la valla amarilla de selección" name="fence_check"/>
+ <button label="Foto" label_selected="Foto" name="snapshot_btn"/>
+ <button label="Vender a cualquiera" label_selected="Vender a cualquiera" name="sell_to_anyone_btn"/>
+ <button label="Limpiar las configuraciones" label_selected="Limpiar las configuraciones" name="reset_parcel_btn"/>
+ <button label="Comenzar subasta" label_selected="Comenzar subasta" name="start_auction_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml
index df0147b191..c83dd3ef3e 100644
--- a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml
@@ -1,42 +1,47 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="avatarpicker" title="ELEGIR A UN RESIDENTE">
+ <floater.string name="not_found">
+ No se ha encontrado &apos;[TEXT]&apos;
+ </floater.string>
+ <floater.string name="no_one_near">
+ No hay nadie cerca
+ </floater.string>
+ <floater.string name="no_results">
+ Sin resultados
+ </floater.string>
+ <floater.string name="searching">
+ Buscando...
+ </floater.string>
+ <string label="Elegir" label_selected="Elegir" name="Select">
+ Seleccionar
+ </string>
+ <string name="Close">
+ Cerrar
+ </string>
<tab_container name="ResidentChooserTabs">
<panel label="Buscar" name="SearchPanel">
<text name="InstructSearchResidentName">
- Escriba parte del nombre del residente:
+ Escribe parte del nombre de la persona:
</text>
- <button label="Buscar" label_selected="Buscar" name="Find"/>
+ <button label="Ir" label_selected="Ir" name="Find"/>
</panel>
- <panel label="Tarjetas de visita" name="CallingCardsPanel">
- <text name="InstructSelectCallingCard">
- Elija una tarjeta de visita:
+ <panel label="Amigos" name="FriendsPanel">
+ <text name="InstructSelectFriend">
+ Elige a una persona:
</text>
</panel>
<panel label="Cercanos" name="NearMePanel">
<text name="InstructSelectResident">
- Seleccionar un
-residente cercano:
+ Elegir a alguien que esté cerca:
</text>
- <button font="SansSerifSmall" left_delta="1" width="115" label="Actualizar la lista" label_selected="Actualizar la lista" name="Refresh"/>
- <slider label="Alcance" name="near_me_range" bottom_delta="-36"/>
+ <slider bottom_delta="-36" label="Alcance" name="near_me_range"/>
<text name="meters">
Metros
</text>
- <scroll_list bottom_delta="-169" height="159" name="NearMe" />
+ <button font="SansSerifSmall" label="Actualizar la lista" label_selected="Actualizar la lista" left_delta="1" name="Refresh" width="115"/>
+ <scroll_list bottom_delta="-169" height="159" name="NearMe"/>
</panel>
</tab_container>
- <button label="Elegir" label_selected="Elegir" name="Select"/>
- <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
- <string name="not_found">
- No se ha encontrado &apos;[TEXT]&apos;
- </string>
- <string name="no_one_near">
- No hay nadie cerca
- </string>
- <string name="no_results">
- Sin resultados
- </string>
- <string name="searching">
- Buscando...
- </string>
+ <button label="OK" label_selected="OK" name="ok_btn"/>
+ <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml
index 8febe4b0a9..d9ad3da633 100644
--- a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml
@@ -1,30 +1,32 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="avatar_texture_debug" title="TEXTURAS DEL AVATAR">
- <text name="baked_label">
- Texturas predeterminadas
- </text>
+ <floater.string name="InvalidAvatar">
+ AVATAR NO VÁLIDO
+ </floater.string>
<text name="composite_label">
Texturas compuestas
</text>
- <texture_picker label="Cabeza" name="baked_head"/>
- <texture_picker label="Maquillaje" name="head_bodypaint"/>
- <texture_picker label="Pelo" name="hair"/>
<button label="Soltar" label_selected="Soltar" name="Dump"/>
- <texture_picker label="Ojos" name="baked_eyes"/>
- <texture_picker label="Ojo" name="eye_texture"/>
- <texture_picker label="Parte superior del cuerpo" name="baked_upper_body"/>
- <texture_picker label="Tatuaje de la parte superior del cuerpo" name="upper_bodypaint"/>
- <texture_picker label="Camiseta" name="undershirt"/>
- <texture_picker label="Guantes" name="gloves"/>
- <texture_picker label="Camisa" name="shirt"/>
+ <texture_picker label="Pelo" name="hair_grain"/>
+ <texture_picker label="Alfa del pelo" name="hair_alpha"/>
+ <texture_picker label="Maquillaje" name="head_bodypaint"/>
+ <texture_picker label="Alfa de la cabeza" name="head_alpha"/>
+ <texture_picker label="Tatuaje de la cabeza" name="head_tattoo"/>
+ <texture_picker label="Ojo" name="eyes_iris"/>
+ <texture_picker label="Alfa de los ojos" name="eyes_alpha"/>
+ <texture_picker label="Pintura corporal: parte superior del cuerpo" name="upper_bodypaint"/>
+ <texture_picker label="Camiseta" name="upper_undershirt"/>
+ <texture_picker label="Guantes" name="upper_gloves"/>
+ <texture_picker label="Camisa" name="upper_shirt"/>
<texture_picker label="Parte superior de la chaqueta" name="upper_jacket"/>
- <texture_picker label="Parte inferior del cuerpo" name="baked_lower_body"/>
- <texture_picker label="Tatuaje de la parte inferior del cuerpo" name="lower_bodypaint"/>
- <texture_picker label="Ropa interior" name="underpants"/>
- <texture_picker label="Calcetines" name="socks"/>
- <texture_picker label="Zapatos" name="shoes"/>
- <texture_picker label="Pantalones" name="pants"/>
- <texture_picker label="Chaqueta" name="jacket"/>
- <texture_picker label="Falda" name="baked_skirt"/>
- <texture_picker label="Falda" name="skirt_texture"/>
+ <texture_picker label="Alfa superior" name="upper_alpha"/>
+ <texture_picker label="Tatuaje superior" name="upper_tattoo"/>
+ <texture_picker label="Pintura corporal: parte inferior del cuerpo" name="lower_bodypaint"/>
+ <texture_picker label="Ropa interior" name="lower_underpants"/>
+ <texture_picker label="Calcetines" name="lower_socks"/>
+ <texture_picker label="Zapatos" name="lower_shoes"/>
+ <texture_picker label="Pantalones" name="lower_pants"/>
+ <texture_picker label="Chaqueta" name="lower_jacket"/>
+ <texture_picker label="Alfa inferior" name="lower_alpha"/>
+ <texture_picker label="Tatuaje inferior" name="lower_tattoo"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_beacons.xml b/indra/newview/skins/default/xui/es/floater_beacons.xml
index 2df90bc911..b86967755c 100644
--- a/indra/newview/skins/default/xui/es/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/es/floater_beacons.xml
@@ -1,15 +1,21 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="beacons" title="BALIZAS">
<panel name="beacons_panel">
- <check_box label="Objetos con script sólo al tocarlos" name="touch_only"/>
- <check_box label="Objetos con script" name="scripted"/>
- <check_box label="Objetos materiales" name="physical"/>
- <check_box label="Fuentes de sonido" name="sounds"/>
- <check_box label="Fuentes de partículas" name="particles"/>
- <check_box label="Activar los realzados" name="highlights"/>
- <check_box label="Activar las balizas" name="beacons"/>
- <text name="beacon_width_label">
- Ancho de la baliza:
+ <text name="label_show">
+ Mostrar:
</text>
+ <check_box label="Balizas" name="beacons"/>
+ <check_box label="Realzados" name="highlights"/>
+ <text name="beacon_width_label" tool_tip="Ancho de la baliza">
+ Ancho:
+ </text>
+ <text name="label_objects">
+ Para estos objetos:
+ </text>
+ <check_box label="Materiales" name="physical"/>
+ <check_box label="Con scripts" name="scripted"/>
+ <check_box label="Sólo tocar" name="touch_only"/>
+ <check_box label="Origen de sonidos" name="sounds"/>
+ <check_box label="Origen de partículas" name="particles"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_build_options.xml b/indra/newview/skins/default/xui/es/floater_build_options.xml
index 3d839bf645..de8d205ad4 100644
--- a/indra/newview/skins/default/xui/es/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/es/floater_build_options.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="build options floater" title="OPCIONES DE LA CUADRÍCULA">
- <spinner label="Unidad de la cuadrícula (metros)" name="GridResolution" width="250" label_width="192"/>
- <spinner label="Graduación de la cuadrícula (metros)" name="GridDrawSize" width="250" label_width="192"/>
+ <spinner label="Unidad de la cuadrícula (metros)" label_width="192" name="GridResolution" width="250"/>
+ <spinner label="Graduación de la cuadrícula (metros)" label_width="192" name="GridDrawSize" width="250"/>
<check_box label="Activar subunidades" name="GridSubUnit"/>
<check_box label="Ver la sección transversal" name="GridCrossSection"/>
+ <text name="grid_opacity_label" tool_tip="Opacidad de la cuadrícula">
+ Opacidad:
+ </text>
<slider label="Opacidad de la cuadrícula" name="GridOpacity" width="250"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml
index 0553f4c672..f1948220b4 100644
--- a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml
@@ -1,44 +1,54 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="CAMBIO MASIVO DE LOS PERMISOS DEL CONTENIDO">
- <text name="applyto">
- Tipos de contenido
- </text>
+<floater name="floaterbulkperms" title="EDITAR LOS PERMISOS DEL CONTENIDO">
+ <floater.string name="nothing_to_modify_text">
+ Lo seleccionado tiene contenidos no editables.
+ </floater.string>
+ <floater.string name="status_text">
+ Configurando los permisos de [NAME]
+ </floater.string>
+ <floater.string name="start_text">
+ Iniciando el cambio de permisos solicitado...
+ </floater.string>
+ <floater.string name="done_text">
+ Finalizado el cambio de permisos solicitado.
+ </floater.string>
<check_box label="Animación" name="check_animation"/>
+ <icon name="icon_animation" tool_tip="Animaciones"/>
<check_box label="Partes del cuerpo" name="check_bodypart"/>
+ <icon name="icon_bodypart" tool_tip="Partes del cuerpo"/>
<check_box label="Ropa" name="check_clothing"/>
+ <icon name="icon_clothing" tool_tip="Ropa"/>
<check_box label="Gestos" name="check_gesture"/>
- <check_box label="Hitos" name="check_landmark"/>
+ <icon name="icon_gesture" tool_tip="Gestos"/>
<check_box label="Notas" name="check_notecard"/>
+ <icon name="icon_notecard" tool_tip="Notas"/>
<check_box label="Objetos" name="check_object"/>
+ <icon name="icon_object" tool_tip="Objetos"/>
<check_box label="Scripts" name="check_script"/>
+ <icon name="icon_script" tool_tip="Scripts"/>
<check_box label="Sonidos" name="check_sound"/>
+ <icon name="icon_sound" tool_tip="Sonidos"/>
<check_box label="Texturas" name="check_texture"/>
- <button label="Marcar todo" label_selected="Todo" name="check_all"/>
- <button label="Desmarcar todo" label_selected="Ninguno" name="check_none"/>
+ <icon name="icon_texture" tool_tip="Texturas"/>
+ <button label="√ Todos" label_selected="Todo" name="check_all"/>
+ <button label="Limpiar" label_selected="Ninguno" name="check_none"/>
<text name="newperms">
- Permisos nuevos
+ Permisos nuevos del contenido
+ </text>
+ <text name="GroupLabel">
+ Grupo:
</text>
- <check_box label="Compartir con el grupo" name="share_with_group"/>
- <check_box label="Permitir a cualquiera que lo copie" name="everyone_copy"/>
+ <check_box label="Compartir" name="share_with_group"/>
+ <text name="AnyoneLabel">
+ Cualquiera:
+ </text>
+ <check_box label="Copiarlo" name="everyone_copy"/>
<text name="NextOwnerLabel">
- El próximo propietario puede:
+ Próximo propietario:
</text>
<check_box label="Modificarlo" name="next_owner_modify"/>
<check_box label="Copiarlo" name="next_owner_copy"/>
- <check_box label="Revenderlo/Darlo" name="next_owner_transfer"/>
- <button label="Ayuda" name="help"/>
- <button label="Aplicar" name="apply"/>
- <button label="Cerrar" name="close"/>
- <string name="nothing_to_modify_text">
- Lo seleccionado tiene contenidos no editables.
- </string>
- <string name="status_text">
- Configurando los permisos de [NAME]
- </string>
- <string name="start_text">
- Iniciando el cambio de permisos solicitado...
- </string>
- <string name="done_text">
- Finalizado el cambio de permisos solicitado.
- </string>
+ <check_box initial_value="true" label="Transferirlo" name="next_owner_transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/>
+ <button label="OK" name="apply"/>
+ <button label="Cancelar" name="close"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_bumps.xml b/indra/newview/skins/default/xui/es/floater_bumps.xml
index 0522f788bb..6a9c6b1f22 100644
--- a/indra/newview/skins/default/xui/es/floater_bumps.xml
+++ b/indra/newview/skins/default/xui/es/floater_bumps.xml
@@ -1,21 +1,24 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_bumps" title="CHOQUES, EMPUJONES, E IMPACTOS">
- <text name="none_detected">
+ <floater.string name="none_detected">
No se han detectado
- </text>
- <text name="bump">
+ </floater.string>
+ <floater.string name="bump">
[TIME] [FIRST] [LAST] ha chocado con usted
- </text>
- <text name="llpushobject">
+ </floater.string>
+ <floater.string name="llpushobject">
[TIME] [FIRST] [LAST] le ha empujado con un script
- </text>
- <text name="selected_object_collide">
+ </floater.string>
+ <floater.string name="selected_object_collide">
[TIME] [FIRST] [LAST] ha hecho que un objeto impacte con usted
- </text>
- <text name="scripted_object_collide">
+ </floater.string>
+ <floater.string name="scripted_object_collide">
[TIME] [FIRST] [LAST] ha hecho que un objeto con script impacte con usted
- </text>
- <text name="physical_object_collide">
+ </floater.string>
+ <floater.string name="physical_object_collide">
[TIME] [FIRST] [LAST] ha hecho que un objeto material impacte con usted
- </text>
+ </floater.string>
+ <floater.string name="timeStr">
+ [[hour,datetime,slt]:[min,datetime,slt]]
+ </floater.string>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_buy_contents.xml b/indra/newview/skins/default/xui/es/floater_buy_contents.xml
index c4d269ff39..98604ad5f4 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_contents.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_buy_contents" title="COMPRAR EL CONTENIDO">
+<floater name="floater_buy_contents" title="COMPRAR LOS CONTENIDOS">
<text name="contains_text">
[NAME] contiene:
</text>
diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml
index 1ecb813dd1..30c4ea965d 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml
@@ -1,71 +1,66 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy currency" title="COMPRAR DINERO">
- <text name="info_buying">
- Comprando dinero:
- </text>
- <text name="info_cannot_buy" left="5" right="-5">
- No puede comprar en este momento:
- </text>
- <text name="info_need_more" left="5" right="-5">
- Necesita más dinero:
- </text>
- <text name="error_message">
- Algo no va bien.
+<floater name="buy currency" title="COMPRAR L$">
+ <floater.string name="buy_currency">
+ Comprar [LINDENS] L$ por, aprox., [LOCALAMOUNT]
+ </floater.string>
+ <text left="5" name="info_need_more" right="-5">
+ Necesitas más L$
</text>
- <button label="Ir al sitio web" name="error_web"/>
<text name="contacting">
Contactando con el LindeX...
</text>
- <text name="buy_action_unknown" right="-5">
- Comprar L$ en el sistema LindeX de cambio
+ <text name="info_buying">
+ Comprar L$
</text>
- <text name="buy_action">
- [NAME] [PRICE] L$
+ <text name="balance_label">
+ Tengo
+ </text>
+ <text name="balance_amount">
+ [AMT] L$
</text>
<text name="currency_action" width="50">
- Comprar
+ Quiero comprar
+ </text>
+ <text name="currency_label">
+ L$
</text>
- <line_editor name="currency_amt" width="65" left_delta="50">
+ <line_editor label="L$" left_delta="50" name="currency_amt" width="65">
1234
</line_editor>
- <text name="currency_est" width="138" left_delta="68">
- por, aprox., [LOCALAMOUNT]
- </text>
- <text name="getting_data">
- Obteniendo los datos...
+ <text name="buying_label">
+ Al precio de
</text>
- <text name="balance_label">
- Actualmente, tiene
+ <text left_delta="68" name="currency_est" width="138">
+ aprox. [LOCALAMOUNT]
</text>
- <text name="balance_amount">
- [AMT] L$
- </text>
- <text name="buying_label">
- Está comprando
+ <text name="getting_data">
+ Calculando...
</text>
- <text name="buying_amount">
- [AMT] L$
+ <text name="buy_action">
+ [NAME] [PRICE] L$
</text>
<text name="total_label">
- Su saldo será de
+ Mi nuevo saldo será
</text>
<text name="total_amount">
[AMT] L$
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php?lang=es-ES payment method] | [http://www.secondlife.com/my/account/currency.php?lang=es-ES currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=es-ES exchange rate]
+ [http://www.secondlife.com/ método de pago] | [http://www.secondlife.com/ moneda] | [http://www.secondlife.com/my/account/exchange_rates.php tipo de cambio]
+ </text>
+ <text name="exchange_rate_note">
+ Vuelve a escribir la cantidad para ver el tipo de cambio más reciente.
</text>
<text name="purchase_warning_repurchase" right="-10">
- Confirmando esta compra sólo compra la moneda.
-Tendrá que intentar de nuevo la operación.
+ Confirmando que con esta compra sólo se compran L$, no el objeto.
</text>
<text name="purchase_warning_notenough">
- No está comprando dinero suficiente.
-Aumente la cantidad a comprar.
+ No estás comprando suficientes L$. Por favor, aumenta la cantidad.
</text>
+ <button label="Comprar ahora" name="buy_btn"/>
<button label="Cancelar" name="cancel_btn"/>
- <button label="Comprar" name="buy_btn"/>
- <string name="buy_currency">
- Compre [LINDENS] L$ por, aprox., [LOCALAMOUNT]
- </string>
+ <text left="5" name="info_cannot_buy" right="-5">
+ No se pudo hacer la compra
+ </text>
+ <button label="Ir a la web" name="error_web"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml
index 7ff45fcf79..9e5af72199 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_land.xml
@@ -3,25 +3,25 @@
<text name="region_name_label">
Región:
</text>
- <text name="region_name_text" left="565">
+ <text left="565" name="region_name_text">
(desconocida)
</text>
<text name="region_type_label">
Tipo:
</text>
- <text name="region_type_text" left="565">
+ <text left="565" name="region_type_text">
(desconocido)
</text>
<text name="estate_name_label">
Estado:
</text>
- <text name="estate_name_text" left="565">
+ <text left="565" name="estate_name_text">
(desconocido)
</text>
- <text name="estate_owner_label" width="115" right="565">
+ <text name="estate_owner_label" right="565" width="115">
Propietario del estado:
</text>
- <text name="estate_owner_text" left="565" >
+ <text left="565" name="estate_owner_text">
(desconocido)
</text>
<text name="resellable_changeable_label">
@@ -58,8 +58,8 @@
</text>
<text name="info_price">
1500 L$
-(1.1 L$/m²)
-incluyendo los objetos
+(1.1/m² L$)
+se vende con los objetos
</text>
<text name="info_action">
Al comprar este terreno:
@@ -75,16 +75,16 @@ incluyendo los objetos
Sólo pueden ser propietarios de terreno los miembros premium.
</text>
<combo_box name="account_level">
- <combo_box.item name="US$9.95/month,billedmonthly" label="9.95 US$/mes, facturados mensualmente" />
- <combo_box.item name="US$7.50/month,billedquarterly" label="7.50 US$/mes, facturados cuatrimestralmente" />
- <combo_box.item name="US$6.00/month,billedannually" label="6.00 US$/mes, facturados anualmente" />
+ <combo_box.item label="9.95 US$/mes, facturados mensualmente" name="US$9.95/month,billedmonthly"/>
+ <combo_box.item label="7.50 US$/mes, facturados trimestralmente" name="US$7.50/month,billedquarterly"/>
+ <combo_box.item label="6.00 US$/mes, facturados anualmente" name="US$6.00/month,billedannually"/>
</combo_box>
<text name="land_use_action">
Aumenta su cuota mensual por uso de terreno a 40 US$/mes.
</text>
<text name="land_use_reason">
- Usted posee 1309 m² de terreno.
-Esta parcela mide 512 m².
+ Tienes 1309 m² de terreno.
+Esta parcela es de 512 m².
</text>
<text name="purchase_action">
Pagar al residente Joe 4.000 L$ por el terreno
@@ -99,12 +99,12 @@ Esta parcela mide 512 m².
1.000
</line_editor>
<text name="currency_est">
- por, aprox., [AMOUNT2] US$
+ por, aprox., [LOCAL_AMOUNT]
</text>
<text name="currency_balance">
Tiene 2.100 L$.
</text>
- <check_box label="Quitar [AMOUNT] m² de la contribución del grupo." name="remove_contribution"/>
+ <check_box label="Quitar [AMOUNT] m² de las contribuciones de grupo." name="remove_contribution"/>
<button label="Comprar" name="buy_btn"/>
<button label="Cancelar" name="cancel_btn"/>
<string name="can_resell">
@@ -181,22 +181,22 @@ Inténtelo seleccionando un área más pequeña.
Su cuenta puede poseer terreno.
</string>
<string name="land_holdings">
- Usted tiene [BUYER] m² de terreno.
+ Tienes [BUYER] m² de terreno.
</string>
<string name="pay_to_for_land">
Pagar por este terreno [AMOUNT] L$ a [SELLER]
</string>
<string name="buy_for_US">
- Comprar [AMOUNT] L$ por, aprox., [AMOUNT2] US$,
+ Comprar [AMOUNT] L$ por, aprox., [LOCAL_AMOUNT],
</string>
<string name="parcel_meters">
- Esta parcela tiene [AMOUNT] m².
+ Este terreno tiene [AMOUNT] m²
</string>
<string name="premium_land">
- Este terreno es premium, y se contará como de [AMOUNT] m².
+ Este terreno es &apos;premium&apos;, y se considerará como de [AMOUNT] m².
</string>
<string name="discounted_land">
- Este terreno tiene descuento, y se contará como de [AMOUNT] m².
+ Este terreno es &apos;discounted&apos;, y se considerará como de [AMOUNT] m².
</string>
<string name="meters_supports_object">
[AMOUNT] m²
diff --git a/indra/newview/skins/default/xui/es/floater_buy_object.xml b/indra/newview/skins/default/xui/es/floater_buy_object.xml
index 26696bc868..117d29777f 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_object.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="contents" title="COMPRAR UNA COPIA DEL OBJETO">
<text name="contents_text">
- y sus contenidos:
+ Contenidos:
</text>
<text name="buy_text">
¿Comprarlo por [AMOUNT] L$ a [NAME]?
diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml
index 3aeb4e5771..40c5603706 100644
--- a/indra/newview/skins/default/xui/es/floater_camera.xml
+++ b/indra/newview/skins/default/xui/es/floater_camera.xml
@@ -10,7 +10,22 @@
Mover la cámara arriba y abajo, izquierda y derecha
</floater.string>
<panel name="controls">
- <joystick_track name="cam_track_stick" tool_tip="Mover la cámara arriba y abajo, izquierda y derecha"/>
- <joystick_zoom name="zoom" tool_tip="Hacer zoom con la cámara en lo enfocado"/>
+ <joystick_track name="cam_track_stick" tool_tip="Mueve la cámara arriba y abajo, a izquierda y derecha"/>
+ <panel name="zoom" tool_tip="Hacer zoom con la cámara en lo enfocado">
+ <slider_bar name="zoom_slider" tool_tip="Hacer zoom en lo enfocado"/>
+ </panel>
+ <joystick_rotate name="cam_rotate_stick" tool_tip="La cámara gira alrededor del punto de vista"/>
+ <panel name="camera_presets">
+ <button name="rear_view" tool_tip="Desde detrás"/>
+ <button name="group_view" tool_tip="Desde tu hombro"/>
+ <button name="front_view" tool_tip="De frente"/>
+ <button name="mouselook_view" tool_tip="Vista subjetiva"/>
+ </panel>
+ </panel>
+ <panel name="buttons">
+ <button label="" name="orbit_btn" tool_tip="Cámara orbital"/>
+ <button label="" name="pan_btn" tool_tip="Cámara panorámica"/>
+ <button label="" name="avatarview_btn" tool_tip="Posición de tu cámara"/>
+ <button label="" name="freecamera_btn" tool_tip="Centrar el objeto"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_color_picker.xml b/indra/newview/skins/default/xui/es/floater_color_picker.xml
index 4395ee6890..ed168c09d5 100644
--- a/indra/newview/skins/default/xui/es/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/es/floater_color_picker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="ColorPicker" title="PALETA DE COLORES">
+<floater name="ColorPicker" title="SELECTOR DE COLOR">
<text name="r_val_text">
Rojo:
</text>
@@ -18,14 +18,13 @@
<text name="l_val_text">
Lumin.:
</text>
- <check_box label="Aplicar ahora mismo" name="apply_immediate"/>
+ <check_box label="Aplicarlo ahora" name="apply_immediate"/>
<button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
- <button label="Elegir" label_selected="Elegir" name="select_btn"/>
+ <button label="OK" label_selected="OK" name="select_btn"/>
<text name="Current color:">
Color actual:
</text>
<text name="(Drag below to save.)">
- (Arrástrelo abajo
- para guardarlo)
+ (arrástralo abajo para guardarlo)
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_customize.xml b/indra/newview/skins/default/xui/es/floater_customize.xml
index 94452dae6b..672a6fbc8b 100644
--- a/indra/newview/skins/default/xui/es/floater_customize.xml
+++ b/indra/newview/skins/default/xui/es/floater_customize.xml
@@ -14,8 +14,8 @@
<button label="Torso" label_selected="Torso" name="Torso"/>
<button label="Piernas" label_selected="Piernas" name="Legs"/>
<radio_group name="sex radio">
- <radio_item name="radio" label="Mujer" />
- <radio_item name="radio2" label="Varón" />
+ <radio_item label="Mujer" name="radio"/>
+ <radio_item label="Varón" name="radio2"/>
</radio_group>
<text name="title">
[DESC]
@@ -43,8 +43,8 @@ avatar. O parta de cero creando una nueva y vistiéndola.
Forma:
</text>
<button label="Crear una forma nueva" label_selected="Crear una forma nueva" name="Create New"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
</panel>
<panel label="Piel" name="Skin">
<button label="Color de piel" label_selected="Color de piel" name="Skin Color" width="115"/>
@@ -76,12 +76,12 @@ avatar. O parta de cero creando una nueva y vistiéndola.
<text name="Item Action Label" right="107">
Piel:
</text>
- <texture_picker width="90" label="Tatuaje: cabeza" name="Head Tattoos" tool_tip="Pulse para elegir una imagen"/>
- <texture_picker width="90" label="Tatuaje: superior" name="Upper Tattoos" tool_tip="Pulse para elegir una imagen"/>
- <texture_picker width="90" label="Tatuaje: inferior" name="Lower Tattoos" tool_tip="Pulse para elegir una imagen"/>
+ <texture_picker label="Tatuaje: cabeza" name="Head Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/>
+ <texture_picker label="Tatuaje: superior" name="Upper Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/>
+ <texture_picker label="Tatuaje: inferior" name="Lower Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/>
<button label="Crear una piel nueva" label_selected="Crear una piel nueva" name="Create New"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
<panel label="Pelo" name="Hair">
@@ -116,8 +116,8 @@ avatar. O parta de cero creando uno nueva y vistiéndolo.
</text>
<texture_picker label="Textura" name="Texture" tool_tip="Pulse para elegir una imagen"/>
<button label="Crear un pelo nuevo" label_selected="Crear un pelo nuevo" name="Create New"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
<panel label="Ojos" name="Eyes">
@@ -148,18 +148,18 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos.
</text>
<texture_picker label="Iris" name="Iris" tool_tip="Pulse para elegir una imagen"/>
<button label="Crear unos ojos nuevos" label_selected="Crear unos ojos nuevos" name="Create New"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
- <panel label="Ropa" name="clothes_placeholder"/>
+ <placeholder label="Ropa" name="clothes_placeholder"/>
<panel label="Camisa" name="Shirt">
<texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/>
<button label="Quitarla" label_selected="Quitarla" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
<text name="title">
[DESC]
@@ -189,11 +189,11 @@ avatar. O parta de cero creando una nueva y vistiéndola.
</panel>
<panel label="Pantalones" name="Pants">
<texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear unos pantalones nuevos" label_selected="Crear unos pantalones nuevos" name="Create New" width="185"/>
<button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
<text name="title">
[DESC]
@@ -248,11 +248,11 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos.
Zapatos:
</text>
<texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear unos zapatos nuevos" label_selected="Crear unos zapatos nuevos" name="Create New"/>
<button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
<panel label="Calcetines" name="Socks">
@@ -282,11 +282,11 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos.
Calcetines:
</text>
<texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear unos calcetines nuevos" label_selected="Crear unos calcetines nuevos" name="Create New" width="185"/>
<button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
<panel label="Chaqueta" name="Jacket">
@@ -317,11 +317,11 @@ avatar. O parta de cero creando una nueva y vistiéndola.
</text>
<texture_picker label="Tela superior" name="Upper Fabric" tool_tip="Pulse para elegir una imagen"/>
<texture_picker label="Tela inferior" name="Lower Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear una chaqueta nueva" label_selected="Crear una chaqueta nueva" name="Create New"/>
<button label="Quitarla" label_selected="Quitarla" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
<panel label="Guantes" name="Gloves">
@@ -351,11 +351,11 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos.
Guantes:
</text>
<texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear unos guantes nuevos" label_selected="Crear unos guantes nuevos" name="Create New"/>
<button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
<panel label="Camiseta" name="Undershirt">
@@ -385,11 +385,11 @@ avatar. O parta de cero creando una nueva y vistiéndola.
Camiseta:
</text>
<texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear una camiseta nueva" label_selected="Crear una camiseta nueva" name="Create New"/>
<button label="Quitarla" label_selected="Quitarla" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
<panel label="Ropa interior" name="Underpants">
@@ -419,11 +419,11 @@ avatar. O parta de cero creando una nueva y vistiéndola.
Ropa interior:
</text>
<texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear una ropa interior nueva" label_selected="Crear una ropa interior nueva" name="Create New" width="185"/>
<button label="Quitarla" label_selected="Quitarla" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
<panel label="Falda" name="Skirt">
@@ -453,16 +453,88 @@ avatar. O parta de cero creando una nueva y vistiéndola.
Falda:
</text>
<texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
<button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/>
<button label="Quitarla" label_selected="Quitarla" name="Take Off"/>
- <button left="113" label="Guardar" label_selected="Guardar" name="Save"/>
- <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
</panel>
+ <panel label="Alfa" name="Alpha">
+ <text name="title">
+ [DESC]
+ </text>
+ <text name="title_no_modify">
+ [DESC]: no modificable
+ </text>
+ <text name="title_loading">
+ [DESC]: cargando...
+ </text>
+ <text name="title_not_worn">
+ [DESC]: no puesto
+ </text>
+ <text name="path">
+ Situado en [PATH]
+ </text>
+ <text name="not worn instructions">
+ Pon una capa Alfa nueva arrastrándola desde tu inventario a tu avatar.
+O crea una nueva y vístetela.
+ </text>
+ <text name="no modify instructions">
+ No tienes permiso para modificar este artículo.
+ </text>
+ <text name="Item Action Label">
+ Alfa:
+ </text>
+ <texture_picker label="Alfa inferior" name="Lower Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Alfa superior" name="Upper Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Alfa de la cabeza" name="Head Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Alfa de los ojos" name="Eye Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Alfa del pelo" name="Hair Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <button label="Crear una capa Alfa nueva" label_selected="Crear una capa Alfa nueva" name="Create New"/>
+ <button label="Quitarme" label_selected="Quitarme" name="Take Off"/>
+ <button label="Guardar" label_selected="Guardar" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Revertir" label_selected="Revertir" name="Revert"/>
+ </panel>
+ <panel label="Tatuaje" name="Tattoo">
+ <text name="title">
+ [DESC]
+ </text>
+ <text name="title_no_modify">
+ [DESC]: no modificable
+ </text>
+ <text name="title_loading">
+ [DESC]: cargando...
+ </text>
+ <text name="title_not_worn">
+ [DESC]: no puesto
+ </text>
+ <text name="path">
+ Situado en [PATH]
+ </text>
+ <text name="not worn instructions">
+ Pon un tatuaje nuevo arrastrándolo desde tu inventario a tu avatar.
+O crea una nueva y vístetela.
+ </text>
+ <text name="no modify instructions">
+ No tienes permiso para modificar este artículo.
+ </text>
+ <text name="Item Action Label">
+ Tatuaje:
+ </text>
+ <texture_picker label="Tatuaje de la cabeza" name="Head Tattoo" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Tatuaje superior" name="Upper Tattoo" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Tatuaje inferior" name="Lower Tattoo" tool_tip="Pulsa para elegir una imagen"/>
+ <button label="Crear un tatuaje nuevo" label_selected="Crear un tatuaje nuevo" name="Create New"/>
+ <button label="Quitarme" label_selected="Quitarme" name="Take Off"/>
+ <button label="Guardar" label_selected="Guardar" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
+ <button label="Revertir" label_selected="Revertir" name="Revert"/>
+ </panel>
</tab_container>
<scroll_container left="230" name="panel_container"/>
+ <button label="Hacer un vestuario" label_selected="Hacer un vestuario" name="make_outfit_btn"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
<button label="OK" label_selected="OK" name="Ok"/>
- <button label="Hacer un vestuario..." label_selected="Hacer un vestuario..." name="Make Outfit" width="130"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_env_settings.xml b/indra/newview/skins/default/xui/es/floater_env_settings.xml
index 5d6ba47daf..195690f546 100644
--- a/indra/newview/skins/default/xui/es/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/es/floater_env_settings.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Environment Editor Floater" title="EDITOR DEL ENTORNO">
+ <floater.string name="timeStr">
+ [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
+ </floater.string>
<text name="EnvTimeText">
Duración de
un día
@@ -14,13 +17,12 @@ un día
Color del
agua
</text>
- <color_swatch label="" name="EnvWaterColor" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="" name="EnvWaterColor" tool_tip="Pulsa para abrir el selector de color"/>
<text name="EnvWaterFogText">
Claridad del
agua
</text>
<button bottom="-144" label="Usar el horario del estado" name="EnvUseEstateTimeButton" width="155"/>
- <button label="Cielo avanzado" name="EnvAdvancedSkyButton" width="155" left="167" />
- <button label="Agua avanzada" name="EnvAdvancedWaterButton" width="155" left="326"/>
- <button label="?" name="EnvSettingsHelpButton"/>
+ <button label="Cielo avanzado" left="167" name="EnvAdvancedSkyButton" width="155"/>
+ <button label="Agua avanzada" left="326" name="EnvAdvancedWaterButton" width="155"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_gesture.xml b/indra/newview/skins/default/xui/es/floater_gesture.xml
index 496881f2d2..1dc1d54295 100644
--- a/indra/newview/skins/default/xui/es/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/es/floater_gesture.xml
@@ -1,15 +1,25 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="gestures" title="GESTOS DISPONIBLES">
- <text name="help_label">
- Pulse dos veces en un gesto para reproducir las animaciones
-y sonidos.
- </text>
- <scroll_list bottom_delta="-385" height="360" name="gesture_list">
- <column label="Botón" name="trigger"/>
- <column label="Tecla" name="shortcut"/>
- <column label="Nombre" name="name"/>
+<floater label="Lugares" name="gestures" title="GESTOS">
+ <floater.string name="loading">
+ Cargando...
+ </floater.string>
+ <floater.string name="playing">
+ (Ejecutándose)
+ </floater.string>
+ <floater.string name="copy_name">
+ Copia de [COPY_NAME]
+ </floater.string>
+ <scroll_list bottom_delta="-385" height="360" name="gesture_list">
+ <scroll_list.columns label="Nombre" name="name"/>
+ <scroll_list.columns label="Chat" name="trigger"/>
+ <scroll_list.columns label="Tecla" name="shortcut"/>
</scroll_list>
- <button label="Nuevo" name="new_gesture_btn"/>
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="gear_btn" tool_tip="Más opciones"/>
+ <button name="new_gesture_btn" tool_tip="Hacer un gesto nuevo"/>
+ <button name="activate_btn" tool_tip="Activar/Desactivar el gesto elegido"/>
+ <button name="del_btn" tool_tip="Borrar este gesto"/>
+ </panel>
<button label="Editar" name="edit_btn"/>
<button label="Reproducir" name="play_btn"/>
<button label="Parar" name="stop_btn"/>
diff --git a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
index 9418252036..f967d697c5 100644
--- a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
@@ -8,21 +8,21 @@
Antialiasing:
</text>
<combo_box label="Antialiasing" name="fsaa" width="94">
- <combo_box.item name="FSAADisabled" label="Desactivado"/>
- <combo_box.item name="2x" label="2x"/>
- <combo_box.item name="4x" label="4x"/>
- <combo_box.item name="8x" label="8x"/>
- <combo_box.item name="16x" label="16x"/>
+ <combo_box.item label="Desactivado" name="FSAADisabled"/>
+ <combo_box.item label="2x" name="2x"/>
+ <combo_box.item label="4x" name="4x"/>
+ <combo_box.item label="8x" name="8x"/>
+ <combo_box.item label="16x" name="16x"/>
</combo_box>
<spinner label="Gamma:" name="gamma"/>
<text name="(brightness, lower is brighter)">
- (brillo; menor es más brillante, 0=predeterminado)
+ (0 = brillo por defecto, más bajo = más brillo)
</text>
<text name="Enable VBO:">
Activar VBO:
</text>
- <check_box label="Activar OpenGL Vertex Buffer Objects" name="vbo" tool_tip="En hardware moderno, habilitar esta opción mejora el rendimiento. Pero en hardware antiguo, el habilitarlo hace que, frecuentemente, se obtenga una implementación pobre de VBO, lo que puede provocarle caídas."/>
- <slider label_width="150" left="10" width="300" label="Memoria para texturas (MB):" name="GrapicsCardTextureMemory" tool_tip="Cantidad de memoria asignada a las texturas. Por defecto es la memoria de la tarjeta de vídeo. Reducir esta cantidad puede mejorar el rendimiento, pero también puede hacer que las texturas se vean borrosas."/>
+ <check_box initial_value="true" label="Activar OpenGL Vertex Buffer Objects" name="vbo" tool_tip="En hardware moderno, habilitar esta opción mejora el rendimiento. Pero en hardware antiguo, el habilitarlo hace que, frecuentemente, se obtenga una implementación pobre de VBO, lo que puede provocarle caídas."/>
+ <slider label="Memoria para texturas (MB):" name="GraphicsCardTextureMemory" tool_tip="Cantidad de memoria asignada a las texturas. Por defecto es la memoria de la tarjeta de vídeo. Reducir esta cantidad puede mejorar el rendimiento, pero también hacer que las texturas se vean borrosas."/>
<spinner label="Intensidad de la niebla:" name="fog"/>
<button label="OK" label_selected="OK" name="OK"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_help_browser.xml b/indra/newview/skins/default/xui/es/floater_help_browser.xml
new file mode 100644
index 0000000000..2a26bb8453
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_help_browser.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="BUSCADOR DE AYUDA">
+ <layout_stack name="stack1">
+ <layout_panel name="external_controls">
+ <button label="Abrir en mi propio navegador" name="open_browser"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_im.xml b/indra/newview/skins/default/xui/es/floater_im.xml
index 3e92003bac..8589718b88 100644
--- a/indra/newview/skins/default/xui/es/floater_im.xml
+++ b/indra/newview/skins/default/xui/es/floater_im.xml
@@ -10,7 +10,7 @@
Pulse el botón [BUTTON NAME] para aceptar/conectar este chat de voz.
</string>
<string name="muted_message">
- Ha ignorado a este residente. Al enviarle un mensaje, automáticamente dejará de ignorarle.
+ Has ignorado a este residente. Enviándole un mensaje, automáticamente dejarás de ignorarle.
</string>
<string name="generic_request_error">
Error al hacer lo solicitado; por favor, inténtelo más tarde.
diff --git a/indra/newview/skins/default/xui/es/floater_im_container.xml b/indra/newview/skins/default/xui/es/floater_im_container.xml
new file mode 100644
index 0000000000..617097e9c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="floater_im_box" title="Mensajes instantáneos"/>
diff --git a/indra/newview/skins/default/xui/es/floater_im_session.xml b/indra/newview/skins/default/xui/es/floater_im_session.xml
new file mode 100644
index 0000000000..c7312e609b
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_im_session.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="panel_im">
+ <layout_stack name="im_panels">
+ <layout_panel label="Panel de control de MI" name="panel_im_control_panel"/>
+ <layout_panel>
+ <line_editor label="A" name="chat_editor"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_image_preview.xml b/indra/newview/skins/default/xui/es/floater_image_preview.xml
index 6d51a800b7..0ad91265c9 100644
--- a/indra/newview/skins/default/xui/es/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/es/floater_image_preview.xml
@@ -10,17 +10,17 @@
Previsualizar la
imagen como:
</text>
- <combo_box label="Tipo de ropa" name="clothing_type_combo" left="100" width="186">
- <combo_box.item name="Image" label="Imagen" />
- <combo_box.item name="Hair" label="Pelo" />
- <combo_box.item name="FemaleHead" label="Cabeza de mujer" />
- <combo_box.item name="FemaleUpperBody" label="Mujer: parte superior del cuerpo" />
- <combo_box.item name="FemaleLowerBody" label="Mujer: parte inferior del cuerpo" />
- <combo_box.item name="MaleHead" label="Cabeza de varón" />
- <combo_box.item name="MaleUpperBody" label="Varón: parte superior del cuerpo" />
- <combo_box.item name="MaleLowerBody" label="Varón: parte inferior del cuerpo" />
- <combo_box.item name="Skirt" label="Falda" />
- <combo_box.item name="SculptedPrim" label="Prim sculpted"/>
+ <combo_box label="Tipo de ropa" left="100" name="clothing_type_combo" width="186">
+ <combo_box.item label="Imagen" name="Image"/>
+ <combo_box.item label="Pelo" name="Hair"/>
+ <combo_box.item label="Mujer: cabeza" name="FemaleHead"/>
+ <combo_box.item label="Mujer: parte superior del cuerpo" name="FemaleUpperBody"/>
+ <combo_box.item label="Mujer: parte inferior del cuerpo" name="FemaleLowerBody"/>
+ <combo_box.item label="Varón: cabeza" name="MaleHead"/>
+ <combo_box.item label="Varón: parte superior del cuerpo" name="MaleUpperBody"/>
+ <combo_box.item label="Varón: parte inferior del cuerpo" name="MaleLowerBody"/>
+ <combo_box.item label="Falda" name="Skirt"/>
+ <combo_box.item label="Prim sculpted" name="SculptedPrim"/>
</combo_box>
<text name="bad_image_text">
Imposible leer la imagen.
diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
new file mode 100644
index 0000000000..f499198b31
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="ESTÁ LLAMANDO ALGUIEN DESCONOCIDO">
+ <floater.string name="localchat">
+ Chat de voz
+ </floater.string>
+ <floater.string name="anonymous">
+ anónimo
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ está llamando.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ ha entrado en un chat de voz en multiconferencia.
+ </floater.string>
+ <text name="question">
+ ¿Quieres dejar [CURRENT_CHAT] y entrar a este chat de voz?
+ </text>
+ <button label="Aceptar" label_selected="Aceptar" name="Accept"/>
+ <button label="Expulsar" label_selected="Expulsar" name="Reject"/>
+ <button label="Comenzar un MI" name="Start IM"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_inspect.xml b/indra/newview/skins/default/xui/es/floater_inspect.xml
index 3c8b38648f..d95653ddd0 100644
--- a/indra/newview/skins/default/xui/es/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/es/floater_inspect.xml
@@ -1,11 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="inspect" title="EXAMINAR OBJETOS" min_width="450">
+<floater min_width="450" name="inspect" title="EXAMINAR LOS OBJETOS">
+ <floater.string name="timeStamp">
+ [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ </floater.string>
<scroll_list name="object_list" tool_tip="Seleccione un objeto de esta lista para realzarlo en el mundo">
- <column label="Nombre del objeto" name="object_name"/>
- <column label="Propietario" name="owner_name"/>
- <column label="Creador" name="creator_name"/>
- <column label="Fecha de creación" name="creation_date"/>
+ <scroll_list.columns label="Nombre del objeto" name="object_name"/>
+ <scroll_list.columns label="Propietario" name="owner_name"/>
+ <scroll_list.columns label="Creador" name="creator_name"/>
+ <scroll_list.columns label="Fecha de creación" name="creation_date"/>
</scroll_list>
- <button width="185" label="Ver el perfil del propietario..." label_selected="" name="button owner" tool_tip="Ver el perfil del propietario del objeto realzado"/>
- <button width="165" left="205" label="Ver el perfil del creador..." label_selected="" name="button creator" tool_tip="Ver el perfil del creador original del objeto realzado"/>
+ <button label="Ver el perfil del propietario..." label_selected="" name="button owner" tool_tip="Ver el perfil del propietario del objeto realzado" width="185"/>
+ <button label="Ver el perfil del creador..." label_selected="" left="205" name="button creator" tool_tip="Ver el perfil del creador original del objeto realzado" width="165"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_inventory.xml b/indra/newview/skins/default/xui/es/floater_inventory.xml
index 8d16d6089e..c2a1e4e91d 100644
--- a/indra/newview/skins/default/xui/es/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/es/floater_inventory.xml
@@ -1,47 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Inventory" title="INVENTARIO">
- <search_editor label="Escriba aquí para buscar" name="inventory search editor"/>
- <tab_container name="inventory filter tabs">
- <inventory_panel label="Todos los ítems" name="All Items"/>
- <inventory_panel label="Ítems recientes" name="Recent Items"/>
- </tab_container>
- <menu_bar name="Inventory Menu">
- <menu label="Archivo" name="File">
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Nueva ventana" name="New Window"/>
- <menu_item_call label="Ver los filtros" name="Show Filters"/>
- <menu_item_call label="Restablecer los filtros" name="Reset Current"/>
- <menu_item_call label="Cerrar todas las carpetas" name="Close All Folders"/>
- <menu_item_call label="Vaciar la papelera" name="Empty Trash"/>
- </menu>
- <menu label="Crear" name="Create">
- <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 name="New Clothes">
- <menu_item_call label="Falda 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>
- <menu 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>
- <menu label="Ordenar" name="Sort">
- <menu_item_check label="Por el nombre" name="By Name"/>
- <menu_item_check label="Por la fecha" name="By Date"/>
- <menu_item_check label="Las carpetas, siempre por la fecha" name="Folders Always By Name"/>
- <menu_item_check label="Las carpetas del sistema, arriba" name="System Folders To Top"/>
- </menu>
- </menu_bar>
+ <floater.string name="Title">
+ Inventario
+ </floater.string>
+ <floater.string name="TitleFetching">
+ Inventario (obtenidos [ITEM_COUNT] ítems...) [FILTER]
+ </floater.string>
+ <floater.string name="TitleCompleted">
+ Inventario ([ITEM_COUNT] ítems) [FILTER]
+ </floater.string>
+ <floater.string name="Fetched">
+ Obtenido
+ </floater.string>
+ <panel label="Panel del inventario" name="Inventory Panel"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml
index 7abdfceb94..5746688962 100644
--- a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml
@@ -1,5 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="item properties" title="PROPIEDADES DEL ÍTEM DEL INVENTARIO">
+ <floater.string name="unknown">
+ (desconocido)
+ </floater.string>
+ <floater.string name="public">
+ (público)
+ </floater.string>
+ <floater.string name="you_can">
+ Usted puede:
+ </floater.string>
+ <floater.string name="owner_can">
+ El propietario puede:
+ </floater.string>
+ <floater.string name="acquiredDate">
+ [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ </floater.string>
<text name="LabelItemNameTitle">
Nombre:
</text>
@@ -27,55 +42,32 @@
May Mié 24 12:50:46 2006
</text>
<text name="OwnerLabel">
- Usted puede:
- </text>
- <check_box label="Modificarlo" name="CheckOwnerModify"/>
- <check_box left_delta="88" label="Copiarlo" name="CheckOwnerCopy"/>
- <check_box label="Venderlo/darlo" name="CheckOwnerTransfer"/>
- <text name="BaseMaskDebug">
- B:
- </text>
- <text name="OwnerMaskDebug">
- O:
+ Tú:
</text>
- <text name="GroupMaskDebug">
- G:
+ <check_box label="Editar" name="CheckOwnerModify"/>
+ <check_box label="Copiarlo" left_delta="88" name="CheckOwnerCopy"/>
+ <check_box label="Revender" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Cualquiera:
</text>
- <text name="EveryoneMaskDebug">
- E:
+ <check_box label="Copiar" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Grupo:
</text>
- <text name="NextMaskDebug">
- N:
- </text>
- <check_box label="Compartir con el grupo" name="CheckShareWithGroup"/>
- <check_box label="Permitir a cualquiera que lo copie" name="CheckEveryoneCopy"/>
+ <check_box label="Compartir" name="CheckShareWithGroup"/>
<text name="NextOwnerLabel" width="230">
- El próximo propietario puede:
- </text>
- <check_box label="Modificarlo" name="CheckNextOwnerModify"/>
- <check_box left_delta="88" label="Copiarlo" name="CheckNextOwnerCopy"/>
- <check_box label="Revenderlo/darlo" name="CheckNextOwnerTransfer"/>
- <text name="SaleLabel">
- Marcar ítem como:
+ Próximo propietario:
</text>
+ <check_box label="Editar" name="CheckNextOwnerModify"/>
+ <check_box label="Copiarlo" left_delta="88" name="CheckNextOwnerCopy"/>
+ <check_box label="Revender" name="CheckNextOwnerTransfer"/>
<check_box label="En venta" name="CheckPurchase"/>
- <radio_group name="RadioSaleType" left_delta="88" >
- <radio_item name="radio" label="Original" />
- <radio_item name="radio2" label="Copia" />
- </radio_group>
- <text name="TextPrice">
- Precio: L$
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Copia" name="Copy"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Precio:" name="Edit Cost"/>
+ <text name="CurrencySymbol">
+ L$
</text>
- <string name="unknown">
- (desconocido)
- </string>
- <string name="public">
- (público)
- </string>
- <string name="you_can">
- Usted puede:
- </string>
- <string name="owner_can">
- El propietario puede:
- </string>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_joystick.xml b/indra/newview/skins/default/xui/es/floater_joystick.xml
index 75c53dd646..283a46b60b 100644
--- a/indra/newview/skins/default/xui/es/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/es/floater_joystick.xml
@@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Joystick" title="CONFIGURACIÓN DEL JOYSTICK">
- <check_box name="enable_joystick" label="Activar el joystick:"/>
+ <check_box label="Activar el joystick:" name="enable_joystick"/>
<text left="140" name="joystick_type" width="360"/>
- <spinner label="Mapping: eje X" name="JoystickAxis1" label_width="118" width="161"/>
- <spinner label="Mapping: eje Y" name="JoystickAxis2" label_width="105" width="148"/>
- <spinner label="Mapping: eje Z" name="JoystickAxis0" label_width="95" width="138"/>
- <spinner label="Mapping: arriba/abajo" name="JoystickAxis4" label_width="118" width="161"/>
- <spinner label="Mapping: izq./der." name="JoystickAxis5" label_width="105" width="148"/>
- <spinner label="Mapping: giro" name="JoystickAxis3" label_width="95" width="138"/>
- <spinner label="Mapping: zoom" name="JoystickAxis6" label_width="118" width="161"/>
+ <spinner label="Mapping: eje X" label_width="118" name="JoystickAxis1" width="161"/>
+ <spinner label="Mapping: eje Y" label_width="105" name="JoystickAxis2" width="148"/>
+ <spinner label="Mapping: eje Z" label_width="95" name="JoystickAxis0" width="138"/>
+ <spinner label="Mapping: arriba/abajo" label_width="118" name="JoystickAxis4" width="161"/>
+ <spinner label="Mapping: izq./der." label_width="105" name="JoystickAxis5" width="148"/>
+ <spinner label="Mapping: giro" label_width="95" name="JoystickAxis3" width="138"/>
+ <spinner label="Mapping: zoom" label_width="118" name="JoystickAxis6" width="161"/>
<check_box label="Zoom directo" name="ZoomDirect"/>
<check_box label="Cursor 3D" name="Cursor3D"/>
<check_box label="Nivel automático" name="AutoLeveling"/>
<text name="Control Modes:">
Modos de control:
</text>
- <check_box name="JoystickAvatarEnabled" label="Avatar"/>
- <check_box name="JoystickBuildEnabled" left="192" label="Construir"/>
- <check_box name="JoystickFlycamEnabled" label="Flycam"/>
+ <check_box label="Avatar" name="JoystickAvatarEnabled"/>
+ <check_box label="Construir" left="192" name="JoystickBuildEnabled"/>
+ <check_box label="Flycam" name="JoystickFlycamEnabled"/>
<text name="XScale">
Escala: X
</text>
@@ -27,7 +27,7 @@
<text name="ZScale">
Escala: Z
</text>
- <text name="PitchScale" left="3" width="115">
+ <text left="3" name="PitchScale" width="115">
Escala: arriba/abajo
</text>
<text name="YawScale">
@@ -45,10 +45,10 @@
<text name="ZDeadZone">
Zona muerta Z
</text>
- <text name="PitchDeadZone" left="3" width="115">
+ <text left="3" name="PitchDeadZone" width="115">
Zona muerta arri./aba.
</text>
- <text name="YawDeadZone" left="3" width="115">
+ <text left="3" name="YawDeadZone" width="115">
Zona muerta izq./der.
</text>
<text name="RollDeadZone">
@@ -63,9 +63,9 @@
<text name="ZoomDeadZone">
Zona muerta zoom
</text>
- <button label="Predeterminados del SpaceNavigator" name="SpaceNavigatorDefaults" font="SansSerifSmall" left="330" width="210"/>
- <button label="OK" label_selected="OK" name="ok_btn" left="330"/>
- <button label="Cancelar" label_selected="Cancelar" name="cancel_btn" left_delta="120"/>
+ <button font="SansSerifSmall" label="Predeterminados del SpaceNavigator" left="330" name="SpaceNavigatorDefaults" width="210"/>
+ <button label="OK" label_selected="OK" left="330" name="ok_btn"/>
+ <button label="Cancelar" label_selected="Cancelar" left_delta="120" name="cancel_btn"/>
<stat_view label="Monitor del joystick" name="axis_view">
<stat_bar label="Eje 0" name="axis0"/>
<stat_bar label="Eje 1" name="axis1"/>
diff --git a/indra/newview/skins/default/xui/es/floater_lagmeter.xml b/indra/newview/skins/default/xui/es/floater_lagmeter.xml
index 54c4ce8c6a..227689a194 100644
--- a/indra/newview/skins/default/xui/es/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/es/floater_lagmeter.xml
@@ -1,155 +1,154 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_lagmeter" title="MEDIDOR DEL LAG">
- <button label="" label_selected="" name="client_lagmeter" tool_tip="Estado del lag del cliente"/>
- <text name="client">
- Cliente:
- </text>
- <text name="client_text" font="SansSerifSmall">
- Normal
- </text>
- <text left="30" name="client_lag_cause" right="-10" />
- <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado del lag de la red"/>
- <text name="network">
- Red:
- </text>
- <text name="network_text" font="SansSerifSmall">
- Normal
- </text>
- <text left="30" name="network_lag_cause" right="-10" />
- <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado del lag del servidor"/>
- <text name="server">
- Servidor:
- </text>
- <text name="server_text" font="SansSerifSmall">
- Normal
- </text>
- <text left="30" name="server_lag_cause" right="-32" />
- <button label="?" name="server_help"/>
- <button label="&gt;&gt;" name="minimize"/>
- <string name="max_title_msg">
+ <floater.string name="max_title_msg">
Medidor del lag
- </string>
- <string name="max_width_px">
+ </floater.string>
+ <floater.string name="max_width_px">
360
- </string>
- <string name="min_title_msg">
+ </floater.string>
+ <floater.string name="min_title_msg">
Lag
- </string>
- <string name="min_width_px">
+ </floater.string>
+ <floater.string name="min_width_px">
90
- </string>
- <string name="client_text_msg">
+ </floater.string>
+ <floater.string name="client_text_msg">
Cliente
- </string>
- <string name="client_frame_rate_critical_fps">
+ </floater.string>
+ <floater.string name="client_frame_rate_critical_fps">
10
- </string>
- <string name="client_frame_rate_warning_fps">
+ </floater.string>
+ <floater.string name="client_frame_rate_warning_fps">
15
- </string>
- <string name="client_frame_time_window_bg_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_window_bg_msg">
Normal, ventana en segundo plano
- </string>
- <string name="client_frame_time_critical_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_critical_msg">
Frames del cliente valorados por debajo de [CLIENT_FRAME_RATE_CRITICAL]
- </string>
- <string name="client_frame_time_warning_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_warning_msg">
Frames del cliente valorados entre [CLIENT_FRAME_RATE_CRITICAL] y [CLIENT_FRAME_RATE_WARNING]
- </string>
- <string name="client_frame_time_normal_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_normal_msg">
Normal
- </string>
- <string name="client_draw_distance_cause_msg">
+ </floater.string>
+ <floater.string name="client_draw_distance_cause_msg">
Posible causa: distancia de dibujo fijada muy alta
- </string>
- <string name="client_texture_loading_cause_msg">
+ </floater.string>
+ <floater.string name="client_texture_loading_cause_msg">
Posible causa: imágenes cargándose
- </string>
- <string name="client_texture_memory_cause_msg">
+ </floater.string>
+ <floater.string name="client_texture_memory_cause_msg">
Posible causa: demasiadas imágenes en la memoria
- </string>
- <string name="client_complex_objects_cause_msg">
+ </floater.string>
+ <floater.string name="client_complex_objects_cause_msg">
Posible causa: demasiados objetos complejos en la escena
- </string>
- <string name="network_text_msg">
+ </floater.string>
+ <floater.string name="network_text_msg">
Red
- </string>
- <string name="network_packet_loss_critical_pct">
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_pct">
10
- </string>
- <string name="network_packet_loss_warning_pct">
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_pct">
5
- </string>
- <string name="network_packet_loss_critical_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_msg">
La conexión deja caer más del [NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes
- </string>
- <string name="network_packet_loss_warning_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_msg">
La conexión deja caer [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes
- </string>
- <string name="network_performance_normal_msg">
+ </floater.string>
+ <floater.string name="network_performance_normal_msg">
Normal
- </string>
- <string name="network_ping_critical_ms">
+ </floater.string>
+ <floater.string name="network_ping_critical_ms">
600
- </string>
- <string name="network_ping_warning_ms">
+ </floater.string>
+ <floater.string name="network_ping_warning_ms">
300
- </string>
- <string name="network_ping_critical_msg">
+ </floater.string>
+ <floater.string name="network_ping_critical_msg">
El tiempo de conexión -ping- supera los [NETWORK_PING_CRITICAL] ms
- </string>
- <string name="network_ping_warning_msg">
+ </floater.string>
+ <floater.string name="network_ping_warning_msg">
El tiempo de conexión -ping- es de [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
- </string>
- <string name="network_packet_loss_cause_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_cause_msg">
Quizá una mala conexión o un ancho de banda fijado demasiado alto.
- </string>
- <string name="network_ping_cause_msg">
+ </floater.string>
+ <floater.string name="network_ping_cause_msg">
Quizá una mala conexión o una aplicación de archivos compartidos.
- </string>
- <string name="server_text_msg">
+ </floater.string>
+ <floater.string name="server_text_msg">
Servidor
- </string>
- <string name="server_frame_rate_critical_fps">
+ </floater.string>
+ <floater.string name="server_frame_rate_critical_fps">
20
- </string>
- <string name="server_frame_rate_warning_fps">
+ </floater.string>
+ <floater.string name="server_frame_rate_warning_fps">
30
- </string>
- <string name="server_single_process_max_time_ms">
+ </floater.string>
+ <floater.string name="server_single_process_max_time_ms">
20
- </string>
- <string name="server_frame_time_critical_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_critical_msg">
Frecuencia (framerate) por debajo de [SERVER_FRAME_RATE_CRITICAL]
- </string>
- <string name="server_frame_time_warning_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_warning_msg">
Frecuencia (framerate) entre [SERVER_FRAME_RATE_CRITICAL] y [SERVER_FRAME_RATE_WARNING]
- </string>
- <string name="server_frame_time_normal_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_normal_msg">
Normal
- </string>
- <string name="server_physics_cause_msg">
+ </floater.string>
+ <floater.string name="server_physics_cause_msg">
Posible causa: demasiados objetos físicos
- </string>
- <string name="server_scripts_cause_msg">
+ </floater.string>
+ <floater.string name="server_scripts_cause_msg">
Posible causa: demasiados objetos con script
- </string>
- <string name="server_net_cause_msg">
+ </floater.string>
+ <floater.string name="server_net_cause_msg">
Posible causa: demasiado tráfico en la red
- </string>
- <string name="server_agent_cause_msg">
+ </floater.string>
+ <floater.string name="server_agent_cause_msg">
Posible causa: demasiada gente moviéndose en la región
- </string>
- <string name="server_images_cause_msg">
+ </floater.string>
+ <floater.string name="server_images_cause_msg">
Posible causa: demasiados cálculos de imáganes
- </string>
- <string name="server_generic_cause_msg">
+ </floater.string>
+ <floater.string name="server_generic_cause_msg">
Posible causa: carga del simulador muy pesada
- </string>
- <string name="smaller_label">
+ </floater.string>
+ <floater.string name="smaller_label">
&gt;&gt;
- </string>
- <string name="bigger_label">
+ </floater.string>
+ <floater.string name="bigger_label">
&lt;&lt;
- </string>
+ </floater.string>
+ <button label="" label_selected="" name="client_lagmeter" tool_tip="Estado del lag del cliente"/>
+ <text name="client">
+ Cliente
+ </text>
+ <text font="SansSerifSmall" name="client_text">
+ Normal
+ </text>
+ <text left="30" name="client_lag_cause" right="-10"/>
+ <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado del lag de la red"/>
+ <text name="network">
+ Red
+ </text>
+ <text font="SansSerifSmall" name="network_text">
+ Normal
+ </text>
+ <text left="30" name="network_lag_cause" right="-10"/>
+ <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado del lag del servidor"/>
+ <text name="server">
+ Servidor
+ </text>
+ <text font="SansSerifSmall" name="server_text">
+ Normal
+ </text>
+ <text left="30" name="server_lag_cause" right="-32"/>
+ <button label="&gt;&gt;" name="minimize" tool_tip="Cambia el tamaño de la ventana"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_land_holdings.xml b/indra/newview/skins/default/xui/es/floater_land_holdings.xml
index bcdebf4588..36a02b7300 100644
--- a/indra/newview/skins/default/xui/es/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/es/floater_land_holdings.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="land holdings floater" title="MI TERRENO">
<scroll_list name="parcel list">
- <column label="Nombre de la parcela" name="name"/>
+ <column label="Parcela" name="name"/>
<column label="Región" name="location"/>
<column label="Tipo" name="type"/>
<column label="Superficie" name="area"/>
<column label="" name="hidden"/>
</scroll_list>
<button label="Teleportar" label_selected="Teleportar" name="Teleport" tool_tip="Teleportar al centro de este terreno."/>
- <button width="130" label="Mostrar en el mapa" label_selected="Mostrar en el mapa" name="Show on Map" tool_tip="Mostrar este terreno en el mapa del mundo."/>
+ <button label="Mapa" label_selected="Mapa" name="Show on Map" tool_tip="Mostrar este terreno en el mapa del mundo" width="130"/>
<text name="contrib_label">
Contribuciones a sus grupos:
</text>
diff --git a/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml
index 02be809319..a1ec0eba4d 100644
--- a/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml
@@ -1,12 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="script ed float" title="SCRIPT: SCRIPT NUEVO">
- <button label="Reiniciar" label_selected="Reiniciar" name="Reset"/>
- <check_box label="Ejecutándose" name="running" left="4"/>
- <check_box label="Mono" name="mono" left="106"/>
- <string name="not_allowed">
- No está autorizado para ver este script.
- </string>
- <string name="script_running">
+ <floater.string name="not_allowed">
+ No puedes ver ni editar este script. Ha sido configurado como &quot;no copiable&quot;. Necesitas todos los permisos para ver o editar un script que está dentro de un objeto.
+ </floater.string>
+ <floater.string name="script_running">
Ejecutándose
- </string>
+ </floater.string>
+ <floater.string name="Title">
+ Script: [NAME]
+ </floater.string>
+ <button label="Reiniciar" label_selected="Reiniciar" name="Reset"/>
+ <check_box initial_value="true" label="Ejecutándose" left="4" name="running"/>
+ <check_box initial_value="true" label="Mono" left="106" name="mono"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml
index 0cde2fe5bc..d4a6e52f9f 100644
--- a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="script ed float" title="WIKI DE LSL">
<check_box label="Seguir al cursor" name="lock_check"/>
- <combo_box label="Bloquear" name="history_combo" left_delta="120" width="70"/>
- <button label="Atrás" name="back_btn" left_delta="75"/>
+ <combo_box label="Bloquear" left_delta="120" name="history_combo" width="70"/>
+ <button label="Atrás" left_delta="75" name="back_btn"/>
<button label="Adelante" name="fwd_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_media_settings.xml b/indra/newview/skins/default/xui/es/floater_media_settings.xml
new file mode 100644
index 0000000000..3f7cef5785
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="CONFIGURACIÓN DE LOS MEDIA">
+ <button label="OK" label_selected="OK" name="OK"/>
+ <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
+ <button label="Aplicar" label_selected="Aplicar" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml
index 6d5e987409..da8ba780bc 100644
--- a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="MemLeak" title="PRUEBA DE LA FUGA DE MEMORIA">
+<floater name="MemLeak" title="SIMULAR UNA PÉRDIDA DE MEMORIA">
<spinner label="Velocidad de la fuga (bites por fotograma):" name="leak_speed"/>
<spinner label="Fuga de memoria máx. (MB):" name="max_leak"/>
<text name="total_leaked_label">
diff --git a/indra/newview/skins/default/xui/es/floater_moveview.xml b/indra/newview/skins/default/xui/es/floater_moveview.xml
index a61cebbf80..00a7a3fd6b 100644
--- a/indra/newview/skins/default/xui/es/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/es/floater_moveview.xml
@@ -1,13 +1,35 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="move_floater">
-<panel name="panel_actions">
- <button label="" label_selected="" name="turn left btn" tool_tip="Girar a la izquierda"/>
- <button label="" label_selected="" name="turn right btn" tool_tip="Girar a la derecha"/>
- <button label="" label_selected="" name="move up btn" tool_tip="Saltar o ascender"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Agacharse o descender"/>
- <joystick_slide name="slide left btn" tool_tip="Ir hacia la izquierda"/>
- <joystick_slide name="slide right btn" tool_tip="Ir hacia la derecha"/>
- <joystick_turn name="forward btn" tool_tip="Ir hacia adelante"/>
- <joystick_turn name="backward btn" tool_tip="Ir hacia atrás"/>
-</panel>
+ <string name="walk_forward_tooltip">
+ Caminar hacia adelante (cursor arriba o W)
+ </string>
+ <string name="walk_back_tooltip">
+ Caminar de espaldas (cursor abajo o S)
+ </string>
+ <string name="run_forward_tooltip">
+ Correr hacia adelante (cursor arriba o W)
+ </string>
+ <string name="run_back_tooltip">
+ Correr de espaldas (cursor abajo o S)
+ </string>
+ <string name="fly_forward_tooltip">
+ Volar hacia adelante (cursor arriba o W)
+ </string>
+ <string name="fly_back_tooltip">
+ Volar hacia atrás (cursor abajo o S)
+ </string>
+ <panel name="panel_actions">
+ <button label="" label_selected="" name="turn left btn" tool_tip="Girar a la izq. (cursor izq. o A)"/>
+ <button label="" label_selected="" name="turn right btn" tool_tip="Girar a la der. (cursor der. o D)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Volar subiendo, pulsa &quot;E&quot;"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Volar bajando, pulsa &quot;C&quot;"/>
+ <joystick_turn name="forward btn" tool_tip="Caminar hacia adelante (cursor arriba o W)"/>
+ <joystick_turn name="backward btn" tool_tip="Caminar de espaldas (cursor abajo o S)"/>
+ </panel>
+ <panel name="panel_modes">
+ <button label="" name="mode_walk_btn" tool_tip="Modo de caminar"/>
+ <button label="" name="mode_run_btn" tool_tip="Modo de correr"/>
+ <button label="" name="mode_fly_btn" tool_tip="Modo de volar"/>
+ <button label="Dejar de volar" name="stop_fly_btn" tool_tip="Dejar de volar"/>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_mute_object.xml b/indra/newview/skins/default/xui/es/floater_mute_object.xml
index 390333cd1d..4cd16a59ed 100644
--- a/indra/newview/skins/default/xui/es/floater_mute_object.xml
+++ b/indra/newview/skins/default/xui/es/floater_mute_object.xml
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="mute by name" title="IGNORAR UN OBJETO SEGÚN SU NOMBRE">
- <text name="message" bottom_delta="-40">
- Ignorar según el nombre sólo afecta al chat y los MI del
-objeto, no a sus sonidos.
-Debe escribir exactamente el nombre del objeto.
+<floater name="mute by name" title="IGNORAR OBJETOS SEGÚN SU NOMBRE">
+ <text bottom_delta="-40" name="message">
+ Ignorar un objeto:
</text>
- <line_editor name="object_name" bottom_delta="-58">
+ <line_editor bottom_delta="-58" name="object_name">
Nombre del objeto
</line_editor>
+ <text name="note">
+ * Sólo se ignoran los textos del objeto, no sus sonidos
+ </text>
<button label="OK" name="OK"/>
<button label="Cancelar" name="Cancel"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_nearby_chat.xml b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml
new file mode 100644
index 0000000000..d30a39f725
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="CHAT"/>
diff --git a/indra/newview/skins/default/xui/es/floater_openobject.xml b/indra/newview/skins/default/xui/es/floater_openobject.xml
index 89c79e8833..b8b688df60 100644
--- a/indra/newview/skins/default/xui/es/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/es/floater_openobject.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="objectcontents" title="CONTENIDO DEL OBJETO">
+<floater name="objectcontents" title="CONTENIDOS DEL OBJETO">
<text name="object_name">
[DESC]:
</text>
diff --git a/indra/newview/skins/default/xui/es/floater_outgoing_call.xml b/indra/newview/skins/default/xui/es/floater_outgoing_call.xml
new file mode 100644
index 0000000000..51ff71dd17
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_outgoing_call.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="LLAMANDO">
+ <floater.string name="localchat">
+ Chat de voz
+ </floater.string>
+ <floater.string name="anonymous">
+ anónimo
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ está llamando.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ ha entrado en un chat de voz en multiconferencia.
+ </floater.string>
+ <text name="connecting">
+ Conectando con [CALLEE_NAME]
+ </text>
+ <text name="calling">
+ Llamando a [CALLEE_NAME]
+ </text>
+ <text name="noanswer">
+ Sin respuesta. Vuelve a intentarlo más tarde.
+ </text>
+ <text name="leaving">
+ Saliendo de [CURRENT_CHAT].
+ </text>
+ <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_pay.xml b/indra/newview/skins/default/xui/es/floater_pay.xml
index 64156d94e3..d4a4e81310 100644
--- a/indra/newview/skins/default/xui/es/floater_pay.xml
+++ b/indra/newview/skins/default/xui/es/floater_pay.xml
@@ -1,22 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Give Money" title="">
+ <string name="payee_group">
+ Pagar al grupo
+ </string>
+ <string name="payee_resident">
+ Pagar al residente
+ </string>
+ <text left="5" name="payee_label" width="105">
+ Pagar:
+ </text>
+ <icon name="icon_person" tool_tip="Persona"/>
+ <text left="115" name="payee_name">
+ [FIRST] [LAST]
+ </text>
<button label="1 L$" label_selected="1 L$" name="fastpay 1"/>
<button label="5 L$" label_selected="5 L$" name="fastpay 5"/>
<button label="10 L$" label_selected="10 L$" name="fastpay 10"/>
<button label="20 L$" label_selected="20 L$" name="fastpay 20"/>
- <button label="Pagar" label_selected="Pagar" name="pay btn"/>
- <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/>
- <text name="payee_label" left="5" width="105">
- Pagar al residente:
- </text>
- <text name="payee_name" left="115">
- [FIRST] [LAST]
- </text>
- <text name="fastpay text" width="100" halign="left">
- Pago rápido:
- </text>
- <text name="amount text" left="4" >
- Cantidad:
+ <text left="4" name="amount text">
+ O elige cuánto:
</text>
<line_editor left="60" name="amount" width="55"/>
+ <button label="Pagar" label_selected="Pagar" name="pay btn"/>
+ <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_pay_object.xml b/indra/newview/skins/default/xui/es/floater_pay_object.xml
index b5eca53bfa..2af8c8cc13 100644
--- a/indra/newview/skins/default/xui/es/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/es/floater_pay_object.xml
@@ -1,30 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Give Money" title="">
- <text name="payee_group" left="5" width="110">
- Pagar al grupo:
- </text>
- <text name="payee_resident" left="5" width="110">
- Pagar al residente:
- </text>
- <text name="payee_name" left="120" width="180">
+ <string left="5" name="payee_group" width="110">
+ Pagar al grupo
+ </string>
+ <string left="5" name="payee_resident" width="110">
+ Pagar al residente
+ </string>
+ <icon name="icon_person" tool_tip="Persona"/>
+ <text left="120" name="payee_name" width="180">
[FIRST] [LAST]
</text>
- <text name="object_name_label" left="5" width="110">
+ <text left="5" name="object_name_label" width="110">
A través del objeto:
</text>
- <text name="object_name_text" left="120" width="180">
+ <icon name="icon_object" tool_tip="Objetos"/>
+ <text left="120" name="object_name_text" width="180">
...
</text>
- <text name="fastpay text">
- Pago rápido:
- </text>
- <text name="amount text">
- Cantidad:
- </text>
<button label="1 L$" label_selected="1 L$" name="fastpay 1"/>
<button label="5 L$" label_selected="5 L$" name="fastpay 5"/>
<button label="10 L$" label_selected="10 L$" name="fastpay 10"/>
<button label="20 L$" label_selected="20 L$" name="fastpay 20"/>
+ <text name="amount text">
+ O elige cuánto:
+ </text>
<button label="Pagar" label_selected="Pagar" name="pay btn"/>
<button label="Cancelar" label_selected="Cancelar" name="cancel btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_perm_prefs.xml b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml
index 7d3c8e62f3..93e2088aba 100644
--- a/indra/newview/skins/default/xui/es/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="perm prefs" title="PERMISOS DE SUBIDA POR DEFECTO">
+<floater name="perm prefs" title="PERMISOS POR DEFECTO DE SUBIDA">
<panel label="Permisos" name="permissions">
<button label="?" label_selected="?" name="help"/>
<check_box label="Compartir con el grupo" name="share_with_group"/>
diff --git a/indra/newview/skins/default/xui/es/floater_postcard.xml b/indra/newview/skins/default/xui/es/floater_postcard.xml
index ace3204cc7..df94486c0e 100644
--- a/indra/newview/skins/default/xui/es/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/es/floater_postcard.xml
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Postcard" title="FOTO POR CORREO ELECTRÓNICO">
+<floater name="Postcard" title="FOTO POR CORREO">
<text name="to_label">
Correo electrónico
del destinatario:
</text>
- <line_editor bottom_delta="-20" name="to_form" />
- <text name="from_label" bottom_delta="-12">
+ <line_editor bottom_delta="-20" name="to_form"/>
+ <text bottom_delta="-12" name="from_label">
Su correo
electrónico:
</text>
- <line_editor bottom_delta="-20" name="from_form" />
+ <line_editor bottom_delta="-20" name="from_form"/>
<text name="name_label">
Su nombre:
</text>
@@ -17,20 +17,20 @@
Asunto:
</text>
<line_editor label="Escriba aquí el asunto." name="subject_form"/>
- <text name="msg_label" bottom_delta="-18">
+ <text bottom_delta="-18" name="msg_label">
Mensaje:
</text>
<text_editor name="msg_form">
Escriba aquí el mensaje.
</text_editor>
- <text name="fine_print" bottom_delta="-21">
+ <text bottom_delta="-21" name="fine_print">
Si su destinatario se registra en [SECOND_LIFE],
usted conseguirá un bono de referido.
</text>
<button label="Cancelar" name="cancel_btn"/>
<button label="Enviar" name="send_btn"/>
<string name="default_subject">
- Postal desde [SECOND_LIFE]
+ Postal desde [SECOND_LIFE].
</string>
<string name="default_message">
¡Mira esto!
diff --git a/indra/newview/skins/default/xui/es/floater_preferences.xml b/indra/newview/skins/default/xui/es/floater_preferences.xml
index 5fe4ae3b64..8f71fdd035 100644
--- a/indra/newview/skins/default/xui/es/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/es/floater_preferences.xml
@@ -1,9 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Preferences" title="PREFERENCIAS" min_width="350" width="646">
+<floater min_width="350" name="Preferences" title="PREFERENCIAS" width="646">
<button label="OK" label_selected="OK" name="OK"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
- <button label="Aplicar" label_selected="Aplicar" name="Apply"/>
- <button label="Acerca de..." label_selected="Acerca de..." name="About..." />
- <button label="Ayuda" label_selected="Ayuda" name="Help"/>
- <tab_container name="pref core" tab_width="146" width="646" />
+ <tab_container name="pref core" tab_width="146" width="646">
+ <panel label="General" name="general"/>
+ <panel label="Gráficos" name="display"/>
+ <panel label="Privacidad" name="im"/>
+ <panel label="Sonido" name="audio"/>
+ <panel label="Chat" name="chat"/>
+ <panel label="Notificaciones" name="msgs"/>
+ <panel label="Configurar" name="input"/>
+ <panel label="Avanzado" name="advanced1"/>
+ </tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_animation.xml b/indra/newview/skins/default/xui/es/floater_preview_animation.xml
index 0d9cf8ec9f..c10648db73 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_animation.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview_anim">
+ <floater.string name="Title">
+ Animación: [NAME]
+ </floater.string>
<text name="desc txt">
Descripción:
</text>
- <button left="12" width="142" label="Ejecutarla en el mundo" label_selected="Parar" name="Anim play btn" tool_tip="Ejecutar esta animación de modo que puedan verla los demás."/>
- <button left="156" width="136" label="Ejecutarla para usted" label_selected="Parar" name="Anim audition btn" tool_tip="Ejecutar esta animación de modo que sólo la vea usted."/>
+ <button label="Ejecutarla en el mundo" label_selected="Parar" left="12" name="Anim play btn" tool_tip="Ejecutar esta animación de modo que puedan verla los demás" width="142"/>
+ <button label="Ejecutarla para usted" label_selected="Parar" left="156" name="Anim audition btn" tool_tip="Ejecutar esta animación de modo que sólo la vea yo" width="136"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_classified.xml b/indra/newview/skins/default/xui/es/floater_preview_classified.xml
index 8114c7f3c2..d9c9c51ba8 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_classified.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_classified.xml
@@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="classified_preview" title="INFORMACIÓN CLASIFICADA"/>
+<floater name="classified_preview" title="INFORMACIÓN DEL CLASIFICADO">
+ <floater.string name="Title">
+ Clasificado: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_event.xml b/indra/newview/skins/default/xui/es/floater_preview_event.xml
index 04cb0de4d4..7edd4f9e3f 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_event.xml
@@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="event_preview" title="INFORMACIÓN DE EVENTOS"/>
+<floater name="event_preview" title="INFORMACIÓN DEL EVENTO">
+ <floater.string name="Title">
+ Evento: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
index 0e43ce536c..febcd9d485 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
@@ -1,14 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="gesture_preview">
- <string name="stop_txt">
+ <floater.string name="step_anim">
+ Animación a ejecutar:
+ </floater.string>
+ <floater.string name="step_sound">
+ Sonido a ejecutar:
+ </floater.string>
+ <floater.string name="step_chat">
+ Decir en el chat:
+ </floater.string>
+ <floater.string name="step_wait">
+ Espera:
+ </floater.string>
+ <floater.string name="stop_txt">
Parar
- </string>
- <string name="preview_txt">
+ </floater.string>
+ <floater.string name="preview_txt">
Vista previa
- </string>
- <string name="none_text">
+ </floater.string>
+ <floater.string name="none_text">
-- Ninguno --
- </string>
+ </floater.string>
+ <floater.string name="Title">
+ Gesto: [NAME]
+ </floater.string>
<text name="desc_label">
Descripción:
</text>
@@ -22,37 +37,32 @@
<text name="key_label">
Atajo de teclado:
</text>
- <combo_box label="Ninguno" name="modifier_combo" left="116" width="76"/>
- <combo_box label="Ninguno" name="key_combo" width="76" left_delta="80"/>
+ <combo_box label="Ninguno" left="116" name="modifier_combo" width="76"/>
+ <combo_box label="Ninguno" left_delta="80" name="key_combo" width="76"/>
<text name="library_label">
Biblioteca:
</text>
+ <scroll_list name="library_list"/>
+ <button label="Añadir &gt;&gt;" name="add_btn"/>
<text name="steps_label">
Pasos:
</text>
- <scroll_list name="library_list">
- Animación
-Sonido
-Chat
-Esperar
- </scroll_list>
- <button label="Añadir &gt;&gt;" name="add_btn"/>
- <button label="Hacia arriba" name="up_btn"/>
- <button label="Hacia abajo" name="down_btn"/>
+ <button label="Arriba" name="up_btn"/>
+ <button label="Abajo" name="down_btn"/>
<button label="Quitar" name="delete_btn"/>
- <text name="help_label">
- Todos los pasos suceden a la vez,
-a menos que añada pasos de espera.
- </text>
- <text left="230" name="options_text" width="200" />
+ <text left="230" name="options_text" width="200"/>
<radio_group name="animation_trigger_type">
- <radio_item name="start" label="Empezar" />
- <radio_item name="stop" label="Parar" />
+ <radio_item label="Empezar" name="start"/>
+ <radio_item label="Parar" name="stop"/>
</radio_group>
- <check_box bottom_delta="34" label="hasta que las animaciones &#10;estén hechas" name="wait_anim_check"/>
+ <check_box bottom_delta="34" label="hasta que las animaciones
+estén hechas" name="wait_anim_check"/>
<check_box bottom_delta="-30" label="tiempo en segundos" name="wait_time_check"/>
- <line_editor left_delta="130" name="wait_time_editor" />
- <check_box left="130" label="Disponible" name="active_check" tool_tip="Los gestos disponibles pueden realizarse escribiendo en el chat su frase clave o pulsando su tecla de acceso rápido. Generalmente, los gestos pasan a no disponibles cuando hay un conflicto de teclas."/>
+ <line_editor left_delta="130" name="wait_time_editor"/>
+ <text name="help_label">
+ Todos los pasos suceden a la vez, a menos que añadas pasos de espera.
+ </text>
+ <check_box label="Disponible" left="130" name="active_check" tool_tip="Los gestos disponibles pueden realizarse escribiendo en el chat su frase clave o pulsando su tecla de acceso rápido. Generalmente, los gestos pasan a no disponibles cuando hay un conflicto de teclas."/>
<button label="Vista previa" name="preview_btn" width="85"/>
<button label="Guardar" name="save_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml
new file mode 100644
index 0000000000..f5b771c6e7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS"/>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml
new file mode 100644
index 0000000000..ea955f9727
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS">
+ <text name="trigger_label">
+ Chat :
+ </text>
+ <text name="key_label">
+ Teclado:
+ </text>
+ <combo_box label="Ninguno/a" name="modifier_combo"/>
+ <combo_box label="Ninguno/a" name="key_combo"/>
+ <text name="replace_text" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambias la palabra clave &apos;hola&apos; por &apos;qué tal&apos;, se cambiará en el chat &apos;Quería decir hola&apos; por &apos;Quería decir qué tal&apos; en cuanto realices el gesto.">
+ Reemplazar por:
+ </text>
+ <line_editor name="replace_editor" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambias la palabra clave &apos;hola&apos; por &apos;qué tal&apos;, se cambiará en el chat &apos;Quería decir hola&apos; por &apos;Quería decir qué tal&apos; en cuanto realices el gesto."/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml
new file mode 100644
index 0000000000..f5b771c6e7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS"/>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml b/indra/newview/skins/default/xui/es/floater_preview_notecard.xml
index 35f795a7ec..ee2e06a3d7 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_notecard.xml
@@ -1,16 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview notecard" title="NOTA:">
- <button label="Guardar" label_selected="Guardar" name="Save"/>
+ <floater.string name="no_object">
+ No se ha podido encontrar el objeto que contiene esta nota.
+ </floater.string>
+ <floater.string name="not_allowed">
+ no tienes permiso para ver esta nota.
+ </floater.string>
+ <floater.string name="Title">
+ Nota: [NAME]
+ </floater.string>
+ <floater.string label="Guardar" label_selected="Guardar" name="Save">
+ Guardar
+ </floater.string>
<text name="desc txt">
Descripción:
</text>
<text_editor name="Notecard Editor">
Cargando...
</text_editor>
- <string name="no_object">
- No se ha podido encontrar el objeto que contiene esta nota.
- </string>
- <string name="not_allowed">
- No está autorizado a ver esta nota.
- </string>
+ <button label="Guardar" label_selected="Guardar" name="Save"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_sound.xml b/indra/newview/skins/default/xui/es/floater_preview_sound.xml
index 060a033b08..07ec53581c 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_sound.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview_sound">
+ <floater.string name="Title">
+ Sonido : [NAME]
+ </floater.string>
<text name="desc txt">
Descripción:
</text>
- <button label="Tocar en el mundo" label_selected="Tocar en el mundo" name="Sound play btn" tool_tip="Tocar este sonido para que puedan oírlo los demás."/>
- <button label="Oír sólo uno mismo" label_selected="Oír sólo uno mismo" name="Sound audition btn" tool_tip="Tocar este sonido para que sólo pueda oírlo usted."/>
+ <button label="Tocar en el mundo" label_selected="Tocar en el mundo" name="Sound play btn" tool_tip="Ejecutar este sonido de modo que lo oigan todos"/>
+ <button label="Oír sólo uno mismo" label_selected="Oír sólo uno mismo" name="Sound audition btn" tool_tip="Ejecutar este sonido de modo que sólo tú lo oigas"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_preview_texture.xml b/indra/newview/skins/default/xui/es/floater_preview_texture.xml
index 280438fefd..412b31abb9 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_texture.xml
@@ -1,9 +1,44 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview_texture">
+ <floater.string name="Title">
+ Textura: [NAME]
+ </floater.string>
+ <floater.string name="Copy">
+ Copiar al inventario
+ </floater.string>
<text name="desc txt">
Descripción:
</text>
<text name="dimensions">
- Tamaño: [WIDTH] x [HEIGHT]
+ [WIDTH] px x [HEIGHT] px
</text>
+ <combo_box name="combo_aspect_ratio" tool_tip="Vista previa en una proporción concreta">
+ <combo_item name="Unconstrained">
+ Sin restricciones
+ </combo_item>
+ <combo_item name="1:1" tool_tip="Emblema del grupo o perfil del Mundo real">
+ 1:1
+ </combo_item>
+ <combo_item name="4:3" tool_tip="Perfil de [SECOND_LIFE]">
+ 4:3
+ </combo_item>
+ <combo_item name="10:7" tool_tip="Clasificados (también en las listas de búsqueda), hitos">
+ 10:7
+ </combo_item>
+ <combo_item name="3:2" tool_tip="Acerca del terreno">
+ 3:2
+ </combo_item>
+ <combo_item name="16:10">
+ 16:10
+ </combo_item>
+ <combo_item name="16:9" tool_tip="Destacados del perfil">
+ 16:9
+ </combo_item>
+ <combo_item name="2:1">
+ 2:1
+ </combo_item>
+ </combo_box>
+ <button label="OK" name="keep"/>
+ <button label="Cancelar" name="discard"/>
+ <button label="Guardar como" name="save_tex_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_report_abuse.xml b/indra/newview/skins/default/xui/es/floater_report_abuse.xml
index a075c51247..760429e73d 100644
--- a/indra/newview/skins/default/xui/es/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/es/floater_report_abuse.xml
@@ -1,12 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_report_abuse" title="DENUNCIA DE INFRACCIÓN">
- <texture_picker label="" name="screenshot"/>
- <check_box label="Incluir una captura de pantalla" name="screen_check"/>
+ <floater.string name="Screenshot">
+ Captura de pantalla
+ </floater.string>
+ <check_box label="Usar esta captura de pantalla" name="screen_check"/>
<text name="reporter_title">
Denunciante:
</text>
<text name="reporter_field">
- Loremipsum Dolorsitamut
+ Loremipsum Dolorsitamut Longnamez
</text>
<text name="sim_title">
Región:
@@ -21,11 +23,11 @@
{128.1, 128.1, 15.4}
</text>
<text name="select_object_label">
- Pulse el botón y luego el objeto:
+ Pulsa el botón y luego el objeto a denunciar:
</text>
<button label="" label_selected="" name="pick_btn" tool_tip="Señalar objeto - Identificar un objeto como sujeto de esta denuncia"/>
<text name="object_name_label">
- Nombre:
+ Objeto:
</text>
<text name="object_name">
Consetetur Sadipscing
@@ -34,54 +36,53 @@
Propietario:
</text>
<text name="owner_name">
- Hendrerit Vulputate
+ Hendrerit Vulputate Kamawashi Longname
</text>
<combo_box name="category_combo" tool_tip="Categoría -- Elija la categoría que describa mejor esta denuncia">
- <combo_box.item name="Select_category" label="Elegir la categoría"/>
- <combo_box.item name="Age__Age_play" label="Edad &gt; Jugar a ser niño"/>
- <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Edad &gt; Residente adulto en Teen Second Life"/>
- <combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Edad &gt; Residente menor de edad fuera de Teen Second Life"/>
- <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Ataque &gt; Sandbox de combate / Zona no segura"/>
- <combo_box.item name="Assault__Safe_area" label="Ataque &gt; Zona segura"/>
- <combo_box.item name="Assault__Weapons_testing_sandbox" label="Ataque &gt; Sandbox de prueba de armas"/>
- <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Comercio &gt; Error en la entrega de productos o servicios"/>
- <combo_box.item name="Disclosure__Real_world_information" label="Indiscreción &gt; Información del mundo real"/>
- <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Indiscreción &gt; Monitorizar a distancia el chat"/>
- <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Indiscreción &gt; Información Se Second Life, el chat o los MI"/>
- <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Perturbando la paz &gt; Abuso de los recursos de la región"/>
- <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Perturbando la paz &gt; Excesivos objetos con script"/>
- <combo_box.item name="Disturbing_the_peace__Object_littering" label="Perturbando la paz &gt; Objeto basura"/>
- <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Perturbando la paz &gt; Spam (mensajes no pedidos) repetitivo"/>
- <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Perturbando la paz &gt; Publicidad no deseada"/>
- <combo_box.item name="Fraud__L$" label="Fraude &gt; L$"/>
- <combo_box.item name="Fraud__Land" label="Fraude &gt; Terreno"/>
- <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Fraude &gt; Esquemas piramidales o cadenas de cartas"/>
- <combo_box.item name="Fraud__US$" label="Fraude &gt; US$"/>
- <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Acoso &gt; Anuncios múltiples / Spam visual"/>
- <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Acoso &gt; Difamación de individuos o grupos"/>
- <combo_box.item name="Harassment__Impeding_movement" label="Acoso &gt; Impedir el movimiento"/>
- <combo_box.item name="Harassment__Sexual_harassment" label="Acoso &gt; Acoso sexual"/>
- <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Acoso &gt; Incitar a, o pedir, que otros violen las Condiciones del Servicio"/>
- <combo_box.item name="Harassment__Verbal_abuse" label="Acoso &gt; Abuso verbal"/>
- <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecencia &gt; En general, contenido o conducta ofensivos"/>
- <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecencia &gt; Nombre inapropiado del avatar"/>
- <combo_box.item name="Indecency__Mature_content_in_PG_region" label="Indecencia &gt; Contenido o conducta inapropiada en una región &apos;PG&apos;"/>
- <combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Indecencia &gt; Contenido o conducta inapropiada en una región &apos;Mature&apos;"/>
- <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Infracción de la propiedad intelectual &gt; Eliminación de contenidos"/>
- <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Infracción de la propiedad intelectual &gt; CopyBot o Exploit (programa malicioso) de permisos"/>
- <combo_box.item name="Intolerance" label="Intolerancia"/>
- <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terreno &gt; Abuso de los recursos de un sandbox"/>
- <combo_box.item name="Land__Encroachment__Objects_textures" label="Terreno &gt; Invasión &gt; Objetos/Texturas"/>
- <combo_box.item name="Land__Encroachment__Particles" label="Terreno &gt; Invasión &gt; Partículas"/>
- <combo_box.item name="Land__Encroachment__Trees_plants" label="Terreno &gt; Invasión &gt; Árboles/Plantas"/>
- <combo_box.item name="Wagering_gambling" label="Apuestas/Juego"/>
- <combo_box.item name="Other" label="Otra"/>
+ <combo_box.item label="Elegir la categoría" name="Select_category"/>
+ <combo_box.item label="Edad &gt; Jugar a ser niño" name="Age__Age_play"/>
+ <combo_box.item label="Edad &gt; Residente adulto en Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
+ <combo_box.item label="Edad &gt; Residente menor de edad fuera de Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+ <combo_box.item label="Ataque &gt; Sandbox de combate / Zona no segura" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="Ataque &gt; Zona segura" name="Assault__Safe_area"/>
+ <combo_box.item label="Ataque &gt; Sandbox de prueba de armas" name="Assault__Weapons_testing_sandbox"/>
+ <combo_box.item label="Comercio &gt; Error en la entrega de productos o servicios" name="Commerce__Failure_to_deliver_product_or_service"/>
+ <combo_box.item label="Indiscreción &gt; Información del mundo real" name="Disclosure__Real_world_information"/>
+ <combo_box.item label="Indiscreción &gt; Monitorizar a distancia el chat" name="Disclosure__Remotely_monitoring chat"/>
+ <combo_box.item label="Indiscreción &gt; Información Se Second Life, el chat o los MI" name="Disclosure__Second_Life_information_chat_IMs"/>
+ <combo_box.item label="Perturbando la paz &gt; Abuso de los recursos de la región" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+ <combo_box.item label="Perturbando la paz &gt; Excesivos objetos con script" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+ <combo_box.item label="Perturbando la paz &gt; Objeto basura" name="Disturbing_the_peace__Object_littering"/>
+ <combo_box.item label="Perturbando la paz &gt; Spam (mensajes no pedidos) repetitivo" name="Disturbing_the_peace__Repetitive_spam"/>
+ <combo_box.item label="Perturbando la paz &gt; Publicidad no deseada" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+ <combo_box.item label="Fraude &gt; L$" name="Fraud__L$"/>
+ <combo_box.item label="Fraude &gt; Terreno" name="Fraud__Land"/>
+ <combo_box.item label="Fraude &gt; Esquemas piramidales o cadenas de cartas" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+ <combo_box.item label="Fraude &gt; US$" name="Fraud__US$"/>
+ <combo_box.item label="Acoso &gt; Anuncios múltiples / Spam visual" name="Harassment__Advert_farms___visual_spam"/>
+ <combo_box.item label="Acoso &gt; Difamación de individuos o grupos" name="Harassment__Defaming_individuals_or_groups"/>
+ <combo_box.item label="Acoso &gt; Impedir el movimiento" name="Harassment__Impeding_movement"/>
+ <combo_box.item label="Acoso &gt; Acoso sexual" name="Harassment__Sexual_harassment"/>
+ <combo_box.item label="Acoso &gt; Incitar a, o pedir, que otros violen las Condiciones del Servicio" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+ <combo_box.item label="Acoso &gt; Abuso verbal" name="Harassment__Verbal_abuse"/>
+ <combo_box.item label="Indecencia &gt; En general, contenido o conducta ofensivos" name="Indecency__Broadly_offensive_content_or_conduct"/>
+ <combo_box.item label="Indecencia &gt; Nombre inapropiado del avatar" name="Indecency__Inappropriate_avatar_name"/>
+ <combo_box.item label="Indecencia &gt; Contenido o conducta inapropiada en una región &apos;PG&apos;" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="Indecencia &gt; Contenido o conducta inapropiada en una región &apos;Mature&apos;" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="Infracción de la propiedad intelectual &gt; Eliminación de contenidos" name="Intellectual_property_infringement_Content_Removal"/>
+ <combo_box.item label="Infracción de la propiedad intelectual &gt; CopyBot o Exploit (programa malicioso) de permisos" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+ <combo_box.item label="Intolerancia" name="Intolerance"/>
+ <combo_box.item label="Terreno &gt; Abuso de los recursos de un sandbox" name="Land__Abuse_of_sandbox_resources"/>
+ <combo_box.item label="Terreno &gt; Invasión &gt; Objetos/Texturas" name="Land__Encroachment__Objects_textures"/>
+ <combo_box.item label="Terreno &gt; Invasión &gt; Partículas" name="Land__Encroachment__Particles"/>
+ <combo_box.item label="Terreno &gt; Invasión &gt; Árboles/Plantas" name="Land__Encroachment__Trees_plants"/>
+ <combo_box.item label="Apuestas/Juego" name="Wagering_gambling"/>
+ <combo_box.item label="Otra" name="Other"/>
</combo_box>
<text name="abuser_name_title">
Nombre del infractor:
</text>
- <button label="Elegir al residente" label_selected="" name="select_abuser" tool_tip="Elegir de una lista el nombre del infractor"/>
- <check_box label="No sé el nombre del infractor" name="omit_abuser_name" tool_tip="Marque esto si no puede aportar el nombre del infractor"/>
+ <button label="Elegir" label_selected="" name="select_abuser" tool_tip="Elegir de una lista el nombre del infractor"/>
<text name="abuser_name_title2">
Localización de la infracción:
</text>
@@ -92,13 +93,11 @@
Detalles:
</text>
<text name="bug_aviso">
- Por favor, sea muy concreto sobre la fecha, la localización,
-la naturaleza de la infracción, el aportar textos relevantes
-del chat o los MI, y, si es posible, seleccione el objeto.
+ Por favor, sé todo lo concreto que puedas
</text>
<text name="incomplete_title">
- Nota: las denuncias incompletas no se investigarán.
+ * Las denuncias incompletas no se investigarán
</text>
- <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
<button label="Denunciar la infracción" label_selected="Denunciar la infracción" name="send_btn"/>
+ <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml
new file mode 100644
index 0000000000..db9fd5f36e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[TODOS LOS SCRIPTS]" title="[TODOS LOS SCRIPTS]"/>
diff --git a/indra/newview/skins/default/xui/es/floater_script_preview.xml b/indra/newview/skins/default/xui/es/floater_script_preview.xml
index 79984e7bc1..36b58b608b 100644
--- a/indra/newview/skins/default/xui/es/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/es/floater_script_preview.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview lsl text" title="SCRIPT: SCRIPT DE ROTACIÓN">
+<floater name="preview lsl text" title="SCRIPT: ROTACIÓN DEL SCRIPT">
+ <floater.string name="Title">
+ Script: [NAME]
+ </floater.string>
<text name="desc txt">
Descripción:
</text>
diff --git a/indra/newview/skins/default/xui/es/floater_script_queue.xml b/indra/newview/skins/default/xui/es/floater_script_queue.xml
index ace596cd9a..39c84103c4 100644
--- a/indra/newview/skins/default/xui/es/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/es/floater_script_queue.xml
@@ -1,4 +1,19 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="queue" title="REINICIO">
+<floater name="queue" title="PROGRESO DEL REINICIO">
+ <floater.string name="Starting">
+ Empezando [START] de [COUNT] ítems.
+ </floater.string>
+ <floater.string name="Done">
+ Hecho.
+ </floater.string>
+ <floater.string name="Resetting">
+ Reiniciando
+ </floater.string>
+ <floater.string name="Running">
+ Ejecutándose
+ </floater.string>
+ <floater.string name="NotRunning">
+ Sin ejecutarse
+ </floater.string>
<button label="Cerrar" label_selected="Cerrar" name="close"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_script_search.xml b/indra/newview/skins/default/xui/es/floater_script_search.xml
index a59f258a18..1ab6682023 100644
--- a/indra/newview/skins/default/xui/es/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/es/floater_script_search.xml
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script search" title="BUSCAR EN EL SCRIPT" width="320">
- <check_box label="Indiferente mays./mins." name="case_text" left="75"/>
+<floater name="script search" title="BÚSQUEDA DE SCRIPTS" width="320">
+ <check_box label="Indiferente mays./mins." left="75" name="case_text"/>
<button label="Buscar" label_selected="Buscar" name="search_btn" width="85"/>
- <button label="Reemplazar" label_selected="Reemplazar" name="replace_btn" left="100" width="85"/>
- <button label="Reemplazar todos" label_selected="Reemplazar todos" name="replace_all_btn" left="190" width="122"/>
+ <button label="Reemplazar" label_selected="Reemplazar" left="100" name="replace_btn" width="85"/>
+ <button label="Reemplazar todos" label_selected="Reemplazar todos" left="190" name="replace_all_btn" width="122"/>
<text name="txt" width="65">
Buscar
</text>
<text name="txt2" width="65">
Reemplazar
</text>
- <line_editor left="75" name="search_text" width="240" />
- <line_editor left="75" name="replace_text" width="240" />
+ <line_editor left="75" name="search_text" width="240"/>
+ <line_editor left="75" name="replace_text" width="240"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_search.xml b/indra/newview/skins/default/xui/es/floater_search.xml
new file mode 100644
index 0000000000..377b848530
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_search.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_search" title="ENCONTRAR">
+ <floater.string name="loading_text">
+ Cargando...
+ </floater.string>
+ <floater.string name="done_text">
+ Hecho
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="browser_layout">
+ <text name="refresh_search">
+ Redo search to reflect current God level
+ </text>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_select_key.xml b/indra/newview/skins/default/xui/es/floater_select_key.xml
index 9c889df63a..6503a3d5cb 100644
--- a/indra/newview/skins/default/xui/es/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/es/floater_select_key.xml
@@ -2,6 +2,6 @@
<floater name="modal container" title="">
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
<text name="Save item as:">
- Pulse una tecla para seleccionarla
+ Pulsa una tecla para configurarla como tu botón para hablar.
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_sell_land.xml b/indra/newview/skins/default/xui/es/floater_sell_land.xml
index c6e8746250..efedb5d689 100644
--- a/indra/newview/skins/default/xui/es/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_sell_land.xml
@@ -1,64 +1,65 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="sell land" title="VENDER EL TERRENO">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="info_parcel_label">
- Parcela:
- </text>
- <text name="info_parcel">
- NOMBRE DE LA PARCELA
- </text>
- <text name="info_size_label">
- Tamaño:
- </text>
- <text name="info_size">
- [AREA] m²
- </text>
- <text name="info_action">
- Vender esta parcela:
- </text>
- <icon bottom_delta="-56" name="step_price" />
- <text name="price_label">
- Marque un precio:
- </text>
- <text name="price_text">
- Elija un precio adecuado para esta parcela.
- </text>
- <text name="price_ld">
- L$
- </text>
- <text name="price_per_m">
- ([PER_METER] L$ por metro cuadrado)
- </text>
- <text name="sell_to_label">
- Vender este terreno a:
- </text>
- <text name="sell_to_text">
- Elija si venderlo a cualquiera o a un comprador concreto.
- </text>
- <combo_box name="sell_to">
- <combo_box.item name="--selectone--" label="seleccione --" />
- <combo_box.item name="Anyone" label="Cualquiera" />
- <combo_box.item name="Specificuser:" label="Un usuario concreto:" />
- </combo_box>
- <button label="Seleccionar..." name="sell_to_select_agent"/>
- <text name="sell_objects_label">
- ¿Vender los objetos con el terreno?
- </text>
- <text name="sell_objects_text">
- Los objetos transferibles del propietario del terreno cambiarán
-de propietario.
- </text>
- <radio_group name="sell_objects" bottom_delta="-58" >
- <radio_item name="no" label="No, mantener la propiedad de los objetos" />
- <radio_item name="yes" label="Sí, vender los objetos con el terreno" />
- </radio_group>
- <button label="Mostrar los objetos" name="show_objects" width="120"/>
- <text name="nag_message_label">
- RECUERDE: todas las ventas son definitivas.
- </text>
- <button label="Poner el terreno en venta" name="sell_btn"/>
- <button label="Cancelar" name="cancel_btn"/>
- </panel>
- </scroll_container>
+<floater name="sell land" title="VENTA DE TERRENO">
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="info_parcel_label">
+ Parcela:
+ </text>
+ <text name="info_parcel">
+ NOMBRE DE LA PARCELA
+ </text>
+ <text name="info_size_label">
+ Tamaño:
+ </text>
+ <text name="info_size">
+ [AREA] m²
+ </text>
+ <text name="info_action">
+ Vender esta parcela:
+ </text>
+ <text name="price_label">
+ 1. Marcar un precio:
+ </text>
+ <text name="price_text">
+ Elegir un precio adecuado.
+ </text>
+ <text name="price_ld">
+ L$
+ </text>
+ <line_editor name="price">
+ 0
+ </line_editor>
+ <text name="price_per_m">
+ ([PER_METER] L$ por m²)
+ </text>
+ <text name="sell_to_label">
+ 2. Vender el terreno a:
+ </text>
+ <text name="sell_to_text">
+ Elige si venderlo a cualquiera o a un comprador concreto.
+ </text>
+ <combo_box name="sell_to">
+ <combo_box.item label="- Elegir a alguien -" name="--selectone--"/>
+ <combo_box.item label="Cualquiera" name="Anyone"/>
+ <combo_box.item label="Alguien concreto:" name="Specificuser:"/>
+ </combo_box>
+ <button label="Elegir" name="sell_to_select_agent"/>
+ <text name="sell_objects_label">
+ 3. ¿Vender los objetos junto con el terreno?
+ </text>
+ <text name="sell_objects_text">
+ Los objetos transferibles del propietario del terreno que estén en la parcela cambiarán de propietario.
+ </text>
+ <radio_group bottom_delta="-58" name="sell_objects">
+ <radio_item label="No, mantener la propiedad de los objetos" name="no"/>
+ <radio_item label="Sí, vender los objetos con el terreno" name="yes"/>
+ </radio_group>
+ <button label="Mostrar los objetos" name="show_objects" width="120"/>
+ <text name="nag_message_label">
+ RECUERDA: todas las ventas son definitivas.
+ </text>
+ <button label="Poner en venta el terreno" name="sell_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ </panel>
+ </scroll_container>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_settings_debug.xml b/indra/newview/skins/default/xui/es/floater_settings_debug.xml
index 0e8e6bdfd2..36234763b0 100644
--- a/indra/newview/skins/default/xui/es/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/es/floater_settings_debug.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="CONFIGURACIÓN DEL DEPURADOR">
+<floater name="settings_debug" title="CONFIGURACIONES DEL DEPURADOR">
<combo_box name="boolean_combo">
- <combo_box.item name="TRUE" label="TRUE" />
- <combo_box.item name="FALSE" label="FALSE" />
+ <combo_box.item label="VERDADERO" name="TRUE"/>
+ <combo_box.item label="FALSO" name="FALSE"/>
</combo_box>
- <color_swatch label="Color" name="color_swatch"/>
+ <color_swatch label="Color" name="val_color_swatch"/>
<spinner label="x" name="val_spinner_1"/>
<spinner label="x" name="val_spinner_2"/>
<spinner label="x" name="val_spinner_3"/>
diff --git a/indra/newview/skins/default/xui/es/floater_snapshot.xml b/indra/newview/skins/default/xui/es/floater_snapshot.xml
index afea6c09fe..9417c74d28 100644
--- a/indra/newview/skins/default/xui/es/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/es/floater_snapshot.xml
@@ -4,9 +4,9 @@
Destino de la foto
</text>
<radio_group label="Tipo de la foto" name="snapshot_type_radio">
- <radio_item name="postcard" label="Enviar por correo electrónico" />
- <radio_item name="texture" label="Guardarla en su inventario ([AMOUNT] L$)" />
- <radio_item name="local" label="Guardarla en su disco duro" />
+ <radio_item label="Enviar por correo electrónico" name="postcard"/>
+ <radio_item label="Guardarla en su inventario ([AMOUNT] L$)" name="texture"/>
+ <radio_item label="Guardarla en su disco duro" name="local"/>
</radio_group>
<text name="file_size_label">
Tamaño del archivo: [SIZE] KB
@@ -15,8 +15,8 @@
<button label="Enviar" name="send_btn"/>
<button label="Guardar ([AMOUNT] L$)" name="upload_btn"/>
<flyout_button label="Guardar" name="save_btn" tool_tip="Guardar la imagen en un archivo">
- <flyout_button_item name="save_item" label="Guardar"/>
- <flyout_button_item name="saveas_item" label="Guardar como..."/>
+ <flyout_button_item label="Guardar" name="save_item"/>
+ <flyout_button_item label="Guardar como..." name="saveas_item"/>
</flyout_button>
<button label="Cancelar" name="discard_btn"/>
<button label="Más &gt;&gt;" name="more_btn" tool_tip="Opciones avanzadas"/>
@@ -28,50 +28,51 @@
Formato
</text>
<combo_box label="Resolución" name="postcard_size_combo">
- <combo_box.item name="CurrentWindow" label="Ventana actual"/>
- <combo_box.item name="640x480" label="640x480"/>
- <combo_box.item name="800x600" label="800x600"/>
- <combo_box.item name="1024x768" label="1024x768"/>
- <combo_box.item name="Custom" label="Personalizar"/>
+ <combo_box.item label="Ventana actual" name="CurrentWindow"/>
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ <combo_box.item label="Personalizar" name="Custom"/>
</combo_box>
<combo_box label="Resolución" name="texture_size_combo">
- <combo_box.item name="CurrentWindow" label="Ventana actual"/>
- <combo_box.item name="Small(128x128)" label="Pequeño (128x128)"/>
- <combo_box.item name="Medium(256x256)" label="Medio (256x256)"/>
- <combo_box.item name="Large(512x512)" label="Grande (512x512)"/>
- <combo_box.item name="Custom" label="Personalizar"/>
+ <combo_box.item label="Ventana actual" name="CurrentWindow"/>
+ <combo_box.item label="Pequeño (128x128)" name="Small(128x128)"/>
+ <combo_box.item label="Medio (256x256)" name="Medium(256x256)"/>
+ <combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
+ <combo_box.item label="Personalizar" name="Custom"/>
</combo_box>
<combo_box label="Resolución" name="local_size_combo">
- <combo_box.item name="CurrentWindow" label="Ventana actual"/>
- <combo_box.item name="320x240" label="320x240"/>
- <combo_box.item name="640x480" label="640x480"/>
- <combo_box.item name="800x600" label="800x600"/>
- <combo_box.item name="1024x768" label="1024x768"/>
- <combo_box.item name="1280x1024" label="1280x1024"/>
- <combo_box.item name="1600x1200" label="1600x1200"/>
- <combo_box.item name="Custom" label="Personalizar"/>
+ <combo_box.item label="Ventana actual" name="CurrentWindow"/>
+ <combo_box.item label="320x240" name="320x240"/>
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ <combo_box.item label="1280x1024" name="1280x1024"/>
+ <combo_box.item label="1600x1200" name="1600x1200"/>
+ <combo_box.item label="Personalizar" name="Custom"/>
</combo_box>
<combo_box label="Formato" name="local_format_combo">
- <combo_box.item name="PNG" label="PNG"/>
- <combo_box.item name="JPEG" label="JPEG"/>
- <combo_box.item name="BMP" label="BMP"/>
+ <combo_box.item label="PNG" name="PNG"/>
+ <combo_box.item label="JPEG" name="JPEG"/>
+ <combo_box.item label="BMP" name="BMP"/>
</combo_box>
- <spinner label="Ancho" name="snapshot_width" label_width="41" width="101"/>
- <spinner label="Alto" name="snapshot_height" label_width="30" width="90" left="121"/>
+ <spinner label="Ancho" label_width="41" name="snapshot_width" width="101"/>
+ <spinner label="Alto" label_width="30" left="121" name="snapshot_height" width="90"/>
<check_box label="Mantener las proporciones" name="keep_aspect_check"/>
<slider label="Calidad de la imagen" name="image_quality_slider"/>
<text name="layer_type_label">
Captura:
</text>
<combo_box label="Capas de la imagen" name="layer_types">
- <combo_box.item name="Colors" label="Colores"/>
- <combo_box.item name="Depth" label="Profundidad"/>
- <combo_box.item name="ObjectMattes" label="Bandas negras"/>
+ <combo_box.item label="Colores" name="Colors"/>
+ <combo_box.item label="Profundidad" name="Depth"/>
+ <combo_box.item label="Bandas negras" name="ObjectMattes"/>
</combo_box>
<check_box label="Incluir la interfaz en la foto" name="ui_check"/>
<check_box bottom_delta="-17" label="Incluir los HUD en la foto" name="hud_check"/>
<check_box bottom_delta="-17" label="Mantenerla abierta tras guardarla" name="keep_open_check"/>
- <check_box bottom_delta="-17" label="Congelar la toma &#10;(vista previa en pantalla completa)" name="freeze_frame_check"/>
+ <check_box bottom_delta="-17" label="Congelar la toma
+(vista previa en pantalla completa)" name="freeze_frame_check"/>
<check_box bottom_delta="-29" label="Actualizar automáticamente" name="auto_snapshot_check"/>
<string name="unknown">
desconocido
diff --git a/indra/newview/skins/default/xui/es/floater_stats.xml b/indra/newview/skins/default/xui/es/floater_stats.xml
new file mode 100644
index 0000000000..5f4fabf375
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_stats.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="ESTADÍSTICAS">
+ <scroll_container name="statistics_scroll">
+ <container_view name="statistics_view">
+ <stat_view label="Básico" name="basic">
+ <stat_bar label="FPS" name="fps"/>
+ <stat_bar label="Ancho de banda" name="bandwidth"/>
+ <stat_bar label="Pérdida de paquetes" name="packet_loss"/>
+ <stat_bar label="Ping del Sim" name="ping"/>
+ </stat_view>
+ <stat_view label="Avanzado" name="advanced">
+ <stat_view label="Renderización" name="render">
+ <stat_bar label="KTris generados" name="ktrisframe"/>
+ <stat_bar label="KTris generados" name="ktrissec"/>
+ <stat_bar label="Objetos en total" name="objs"/>
+ <stat_bar label="Objetos nuevos" name="newobjs"/>
+ </stat_view>
+ <stat_view label="Textura" name="texture">
+ <stat_bar label="Número" name="numimagesstat"/>
+ <stat_bar label="Raw: número" name="numrawimagesstat"/>
+ <stat_bar label="GL Mem" name="gltexmemstat"/>
+ <stat_bar label="Formatted Mem" name="formattedmemstat"/>
+ <stat_bar label="Raw Mem" name="rawmemstat"/>
+ <stat_bar label="Bound Mem" name="glboundmemstat"/>
+ </stat_view>
+ <stat_view label="Red" name="network">
+ <stat_bar label="Paquetes salientes" name="packetsinstat"/>
+ <stat_bar label="Paquetes entrantes" name="packetsoutstat"/>
+ <stat_bar label="Objetos" name="objectkbitstat"/>
+ <stat_bar label="Textura" name="texturekbitstat"/>
+ <stat_bar label="Asset" name="assetkbitstat"/>
+ <stat_bar label="Capas" name="layerskbitstat"/>
+ <stat_bar label="Entrando ahora" name="actualinkbitstat"/>
+ <stat_bar label="Saliendo ahora" name="actualoutkbitstat"/>
+ <stat_bar label="Operaciones VFS pendientes" name="vfspendingoperations"/>
+ </stat_view>
+ </stat_view>
+ <stat_view label="Simulador" name="sim">
+ <stat_bar label="Tiempo de dilación" name="simtimedilation"/>
+ <stat_bar label="FPS en el Sim" name="simfps"/>
+ <stat_bar label="Physics FPS" name="simphysicsfps"/>
+ <stat_view label="Physics Details" name="physicsdetail">
+ <stat_bar label="Pin de objetos" name="physicspinnedtasks"/>
+ <stat_bar label="Objetos con bajo nivel de detalle" name="physicslodtasks"/>
+ <stat_bar label="Memoria asignada" name="physicsmemoryallocated"/>
+ <stat_bar label="Agentes: actual./seg." name="simagentups"/>
+ <stat_bar label="Agentes del grid principal" name="simmainagents"/>
+ <stat_bar label="Agentes secundarios" name="simchildagents"/>
+ <stat_bar label="Objetos" name="simobjects"/>
+ <stat_bar label="Objetos activos" name="simactiveobjects"/>
+ <stat_bar label="Scripts activos" name="simactivescripts"/>
+ <stat_bar label="Eventos de scripts" name="simscripteps"/>
+ <stat_bar label="Paquetes salientes" name="siminpps"/>
+ <stat_bar label="Paquetes entrantes" name="simoutpps"/>
+ <stat_bar label="Descargas pendientes" name="simpendingdownloads"/>
+ <stat_bar label="Subidas pendientes" name="simpendinguploads"/>
+ <stat_bar label="Total de bytes no reconocidos" name="simtotalunackedbytes"/>
+ </stat_view>
+ <stat_view label="Tiempo (ms)" name="simperf">
+ <stat_bar label="Tiempo total de los frames" name="simframemsec"/>
+ <stat_bar label="Tiempo de red" name="simnetmsec"/>
+ <stat_bar label="Physics Time" name="simsimphysicsmsec"/>
+ <stat_bar label="Tiempo de la simulación" name="simsimothermsec"/>
+ <stat_bar label="Tiempo de los agentes" name="simagentmsec"/>
+ <stat_bar label="Tiempo de las imágenes" name="simimagesmsec"/>
+ <stat_bar label="Tiempo de los scripts" name="simscriptmsec"/>
+ </stat_view>
+ </stat_view>
+ </container_view>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_sys_well.xml b/indra/newview/skins/default/xui/es/floater_sys_well.xml
new file mode 100644
index 0000000000..34c87351a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="NOTIFICACIONES">
+ <string name="title_im_well_window">
+ SESIONES DE MI
+ </string>
+ <string name="title_notification_well_window">
+ NOTIFICACIONES
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_telehub.xml b/indra/newview/skins/default/xui/es/floater_telehub.xml
index b2dddfb7f7..87cc9c1659 100644
--- a/indra/newview/skins/default/xui/es/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/es/floater_telehub.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="telehub" title="PUNTO DE TELEPORTE" min_height="310" height="310">
+<floater height="310" min_height="310" name="telehub" title="PUNTO DE TELEPORTE">
<text name="status_text_connected">
Punto de Teleporte conectado al objeto [OBJECT]
</text>
@@ -9,7 +9,7 @@
<text name="help_text_connected">
Para quitar, pulse Desconectar.
</text>
- <text name="help_text_not_connected" height="38" bottom_delta="-18">
+ <text bottom_delta="-18" height="38" name="help_text_not_connected">
Seleccione el objeto y pulse Conectar el Punto
de Teleporte.
</text>
@@ -21,12 +21,9 @@ de Teleporte.
<button label="Añadir sucursales" name="add_spawn_point_btn"/>
<button label="Quitar sucursales" name="remove_spawn_point_btn"/>
<text name="spawn_point_help">
- Seleccione el objeto y pulse Añadir para
-especificar la posición.
-Hecho eso, puede mover o borrar el objeto.
-Las posiciones son relativas al centro del
-Punto de Teleporte.
-Seleccione un ítem de la lista para mostrar su
-posición en el mundo.
+ Selecciona el objeto y pulsa &quot;Añadir sucursal&quot; para especificar una posición.
+Luego, puedes mover o borrar el objeto.
+Las posiciones son relativas al centro del Punto de Teleporte.
+Elige un ítem de la lista para realzarlo en el mundo.
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
index 09d6e7e4aa..ed2787ea60 100644
--- a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
@@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="texture picker" title="ELEGIR: TEXTURA">
+<floater name="texture picker" title="DESTACADO: TEXTURA">
<string name="choose_picture">
Pulse para elegir una imagen
</string>
<text name="Multiple">
- Múltiple
+ Texturas múltiples
</text>
<text name="unknown">
- Dimensiones: [DIMENSIONS]
+ Tamaño: [DIMENSIONS]
</text>
<button label="Por defecto" label_selected="Por defecto" name="Default" width="84"/>
- <button label="Ninguna" label_selected="Ninguna" name="None" left="90"/>
+ <button label="Ninguna" label_selected="Ninguna" left="90" name="None"/>
<button label="Blanca" label_selected="Blanca" name="Blank"/>
<check_box label="Ver las carpetas" name="show_folders_check"/>
- <search_editor label="Escriba aquí para buscar una" name="inventory search editor"/>
- <check_box label="Aplicar ahora mismo" name="apply_immediate_check"/>
+ <search_editor label="Filtrar las texturas" name="inventory search editor"/>
+ <check_box label="Aplicarlo ahora" name="apply_immediate_check"/>
<button label="" label_selected="" name="Pipette"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
- <button label="Elegir" label_selected="Elegir" name="Select"/>
+ <button label="OK" label_selected="OK" name="Select"/>
<string name="pick title">
Elegir:
</string>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index 24db352ac4..1c65567830 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -1,45 +1,81 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" title="" short_title="CONSTRUIR" width="288">
+<floater name="toolbox floater" short_title="HERRAMIENTAS DE CONSTRUCCIÓN" title="" width="288">
+ <floater.string name="status_rotate">
+ Arrastre las bandas de color para girar el objeto
+ </floater.string>
+ <floater.string name="status_scale">
+ Pulse y arrastre para estirar el lado seleccionado
+ </floater.string>
+ <floater.string name="status_move">
+ Arrastrar para mover, Mayús.+arrastrar para copiar
+ </floater.string>
+ <floater.string name="status_modifyland">
+ Mantenga pulsado para modificar el terreno
+ </floater.string>
+ <floater.string name="status_camera">
+ Pulsa y arrastra para mover la cámara
+ </floater.string>
+ <floater.string name="status_grab">
+ Arrastra para mover: Ctrl, verticalmente; Ctrl-Mayús., girando
+ </floater.string>
+ <floater.string name="status_place">
+ Pulse en el mundo para construir
+ </floater.string>
+ <floater.string name="status_selectland">
+ Pulse y arrastre para seleccionar el terreno
+ </floater.string>
+ <floater.string name="grid_screen_text">
+ Pantalla
+ </floater.string>
+ <floater.string name="grid_local_text">
+ Local
+ </floater.string>
+ <floater.string name="grid_world_text">
+ Mundo
+ </floater.string>
+ <floater.string name="grid_reference_text">
+ Referencia
+ </floater.string>
+ <floater.string name="grid_attachment_text">
+ Añadido
+ </floater.string>
<button label="" label_selected="" name="button focus" tool_tip="Visión"/>
<button label="" label_selected="" name="button move" tool_tip="Mover"/>
<button label="" label_selected="" name="button edit" tool_tip="Editar"/>
<button label="" label_selected="" name="button create" tool_tip="Crear"/>
<button label="" label_selected="" name="button land" tool_tip="Terreno"/>
+ <text name="text status" width="280">
+ Arrastrar para mover, Mayús.+arrastrar para copiar
+ </text>
<radio_group name="focus_radio_group">
<radio_item label="Zoom" name="radio zoom"/>
<radio_item label="Órbita (Ctrl)" name="radio orbit"/>
- <radio_item label="Panorámica (Ctrl-Shift)" name="radio pan"/>
+ <radio_item label="Panorámica (Ctrl+Shift)" name="radio pan"/>
</radio_group>
<radio_group name="move_radio_group">
<radio_item label="Mover" name="radio move"/>
<radio_item label="Vertical (Ctrl)" name="radio lift"/>
- <radio_item label="Horizontal (Ctrl-Shift)" name="radio spin"/>
+ <radio_item label="Horizontal (Ctrl+Shift)" name="radio spin"/>
</radio_group>
<radio_group name="edit_radio_group">
- <radio_item label="Posición" name="radio position"/>
+ <radio_item label="Moverse" name="radio position"/>
<radio_item label="Girar (Ctrl)" name="radio rotate"/>
- <radio_item label="Estirar (Ctrl-Shift)" name="radio stretch"/>
+ <radio_item label="Estirar (Ctrl+Shift)" name="radio stretch"/>
<radio_item label="Elegir la cara" name="radio select face"/>
</radio_group>
<check_box label="Editar las partes enlazadas" name="checkbox edit linked parts"/>
- <text name="text ruler mode">
- Ajuste:
+ <text name="RenderingCost" tool_tip="Muestra cuánto se calcula que cuesta renderizar este objeto">
+ þ: [COUNT]
</text>
- <combo_box name="combobox grid mode" width="82">
- <combo_box.item name="World" label="Mundo"
- />
- <combo_box.item name="Local" label="Local"
- />
- <combo_box.item name="Reference" label="Referencia"
- />
- </combo_box>
<check_box label="Estirar ambos lados" name="checkbox uniform"/>
- <check_box label="Estirar las texturas" name="checkbox stretch textures"/>
- <check_box label="Usar la cuadrícula" name="checkbox snap to grid"/>
- <button label="Opciones..." label_selected="Opciones..." name="Options..."/>
- <text name="text status" width="280">
- Arrastrar para mover, Mayús.+arrastrar para copiar
- </text>
+ <check_box initial_value="true" label="Estirar las texturas" name="checkbox stretch textures"/>
+ <check_box initial_value="true" label="Usar la cuadrícula" name="checkbox snap to grid"/>
+ <combo_box name="combobox grid mode" tool_tip="Elige qué cuadricula usar para posicionar el objeto" width="82">
+ <combo_box.item label="Mundo" name="World"/>
+ <combo_box.item label="Local" name="Local"/>
+ <combo_box.item label="Referencia" name="Reference"/>
+ </combo_box>
+ <button label="Opciones..." label_selected="Opciones..." name="Options..." tool_tip="Ver más opciones de la cuadrícula"/>
<button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/>
<button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
<button label="" label_selected="" name="ToolPyramid" tool_tip="Pirámide"/>
@@ -55,10 +91,10 @@
<button label="" label_selected="" name="ToolRing" tool_tip="Cono truncado"/>
<button label="" label_selected="" name="ToolTree" tool_tip="Árbol"/>
<button label="" label_selected="" name="ToolGrass" tool_tip="Hierba"/>
- <check_box label="Mantener seleccionado" name="checkbox sticky"/>
- <check_box label="Copia seleccionada" name="checkbox copy selection"/>
- <check_box label="Centrada" name="checkbox copy centers"/>
- <check_box label="Girada" name="checkbox copy rotates"/>
+ <check_box label="Mantener la herramienta elegida" name="checkbox sticky"/>
+ <check_box label="Copiar la selección" name="checkbox copy selection"/>
+ <check_box initial_value="true" label="Copia centrada" name="checkbox copy centers"/>
+ <check_box label="Copia girada" name="checkbox copy rotates"/>
<radio_group name="land_radio_group">
<radio_item label="Seleccionar el terreno" name="radio select land"/>
<radio_item label="Nivelar" name="radio flatten"/>
@@ -68,7 +104,6 @@
<radio_item label="Escarpar" name="radio noise"/>
<radio_item label="Restablecer" name="radio revert"/>
</radio_group>
- <button label="Aplicar" label_selected="Aplicar" name="button apply to selection" tool_tip="Modificar el terreno seleccionado" left="146"/>
<text name="Bulldozer:">
Bulldozer:
</text>
@@ -78,14 +113,51 @@
<text name="Strength:">
Fuerza
</text>
- <text name="obj_count" left="134">
- Objetos seleccionados: [COUNT]
+ <button label="Aplicar" label_selected="Aplicar" left="146" name="button apply to selection" tool_tip="Modificar el terreno seleccionado"/>
+ <text left="134" name="obj_count">
+ Objetos: [COUNT]
</text>
- <text name="prim_count" left="134">
- primitivas: [COUNT]
+ <text left="134" name="prim_count">
+ Primitivas: [COUNT]
</text>
<tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" width="288">
<panel label="General" name="General">
+ <panel.string name="text deed continued">
+ Transfeir
+ </panel.string>
+ <panel.string name="text deed">
+ Transferir
+ </panel.string>
+ <panel.string name="text modify info 1">
+ Puedes modificar este objeto
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Puedes modificar estos objetos
+ </panel.string>
+ <panel.string name="text modify info 3">
+ No puedes modificar este objeto
+ </panel.string>
+ <panel.string name="text modify info 4">
+ No puedes modificar estos objetos
+ </panel.string>
+ <panel.string name="text modify warning">
+ Para configurar los permisos, debes seleccionar el objeto completo
+ </panel.string>
+ <panel.string name="Cost Default">
+ Precio: L$
+ </panel.string>
+ <panel.string name="Cost Total">
+ Precio total: L$
+ </panel.string>
+ <panel.string name="Cost Per Unit">
+ Price Per: L$
+ </panel.string>
+ <panel.string name="Cost Mixed">
+ Precio variable
+ </panel.string>
+ <panel.string name="Sale Mixed">
+ Venta variable
+ </panel.string>
<text name="Name:">
Nombre:
</text>
@@ -98,135 +170,77 @@
<text name="Creator Name">
Thrax Linden
</text>
- <button label="Perfil..." label_selected="Perfil..." name="button creator profile"/>
<text name="Owner:">
Propietario:
</text>
<text name="Owner Name">
Thrax Linden
</text>
- <button label="Perfil..." label_selected="Perfil..." name="button owner profile"/>
<text name="Group:">
Grupo:
</text>
- <text name="Group Name Proxy">
- Los Linden
- </text>
- <button label="Configurar..." label_selected="Configurar..." name="button set group"/>
- <text name="Permissions:">
- Permisos:
- </text>
-
- <check_box label="Compartir con el grupo" name="checkbox share with group" tool_tip="Permitir que todos los miembros del grupo compartan y utilicen sus permisos sobre este objeto. Debe transferirlo para activar las restricciones según los roles."/>
- <string name="text deed continued">
- Transferir...
- </string>
- <string name="text deed">
- Transferir
- </string>
- <button label="Transferir..." label_selected="Transferir..." name="button deed" tool_tip="Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/>
- <check_box label="Permitir a cualquiera que lo mueva" name="checkbox allow everyone move"/>
- <check_box label="Permitir a cualquiera que lo copie" name="checkbox allow everyone copy"/>
- <check_box label="Mostrar en la búsqueda" name="search_check" tool_tip="Dejar que la gente vea este objeto en los resultados de la búsqueda"/>
- <check_box label="En venta" name="checkbox for sale"/>
- <text name="Cost">
- Precio: L$
+ <button label="Configurar..." label_selected="Configurar..." name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/>
+ <name_box initial_value="Cargando..." name="Group Name Proxy"/>
+ <button label="Transfeir" label_selected="Transfeir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/>
+ <check_box label="Compartir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/>
+ <text name="label click action" width="180">
+ Al tocarlo:
</text>
+ <combo_box name="clickaction" width="192">
+ <combo_box.item label="Tocarlo (por defecto)" name="Touch/grab(default)"/>
+ <combo_box.item label="Sentarse en el objeto" name="Sitonobject"/>
+ <combo_box.item label="Comprar el objeto" name="Buyobject"/>
+ <combo_box.item label="Pagar al objeto" name="Payobject"/>
+ <combo_box.item label="Abrirlo" name="Open"/>
+ <combo_box.item label="Zoom" name="Zoom"/>
+ </combo_box>
+ <check_box label="En venta:" name="checkbox for sale"/>
<combo_box name="sale type">
<combo_box.item label="Copia" name="Copy"/>
<combo_box.item label="Contenidos" name="Contents"/>
<combo_box.item label="Original" name="Original"/>
</combo_box>
-
- <text name="label click action" width="180">
- Al pulsarlo con el botón izquierdo:
- </text>
- <combo_box name="clickaction" width="192">
- <combo_box.item name="Touch/grab(default)" label="Tocar/Agarrar (por defecto)"
- />
- <combo_box.item name="Sitonobject" label="Sentarse en el objeto"
- />
- <combo_box.item name="Buyobject" label="Comprar el objeto"
- />
- <combo_box.item name="Payobject" label="Pagar al objeto"
- />
- <combo_box.item name="Open" label="Abrirlo"
- />
- <combo_box.item name="Play" label="Ejecutar los media de la parcela"
- />
- <combo_box.item name="Opemmedia" label="Abrir los media de la parcela"
- />
- </combo_box>
- <panel name="perms_build">
- <text name="perm_modify">
- Puede modificar este objeto
- </text>
- <text name="B:">
- B:
- </text>
- <text name="O:">
- O:
- </text>
- <text name="G:">
- G:
- </text>
- <text name="E:">
- E:
- </text>
- <text name="N:">
- N:
- </text>
- <text name="F:">
- F:
- </text>
- <text name="Next owner can:">
- El próximo propietario puede:
- </text>
- <check_box label="Modificarlo" name="checkbox next owner can modify"/>
- <check_box label="Copiarlo" name="checkbox next owner can copy" left_delta="80"/>
- <check_box name="checkbox next owner can transfer" left_delta="67"/>
- </panel>
- <string name="text modify info 1">
- Puede modificar este objeto
- </string>
- <string name="text modify info 2">
- Puede modificar estos objetos
- </string>
- <string name="text modify info 3">
- No puede modificar este objeto
- </string>
- <string name="text modify info 4">
- No puede modificar estos objetos
- </string>
- <string name="text modify warning">
- Debe seleccionar todo el objeto para definir los permisos
- </string>
- <string name="Cost Default">
- Precio: L$
- </string>
- <string name="Cost Total">
- Precio total: L$
- </string>
- <string name="Cost Per Unit">
- Precio por: L$
- </string>
- <string name="Cost Mixed">
- Precio variable
- </string>
- <string name="Sale Mixed">
- Venta variable
- </string>
+ <spinner label="Precio: L$" name="Edit Cost"/>
+ <check_box label="Mostrar en la búsqueda" name="search_check" tool_tip="Dejar que la gente vea este objeto en los resultados de la búsqueda"/>
+ <panel name="perms_build">
+ <text name="perm_modify">
+ Puedes modificar este objeto
+ </text>
+ <text name="Anyone can:">
+ Cualquiera:
+ </text>
+ <check_box label="Moverlo" name="checkbox allow everyone move"/>
+ <check_box label="Copiar" name="checkbox allow everyone copy"/>
+ <text name="Next owner can:">
+ Próximo propietario:
+ </text>
+ <check_box label="Modificarlo" name="checkbox next owner can modify"/>
+ <check_box label="Copiarlo" left_delta="80" name="checkbox next owner can copy"/>
+ <check_box label="Transferirlo" left_delta="67" name="checkbox next owner can transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/>
+ <text name="B:">
+ B:
+ </text>
+ <text name="O:">
+ O:
+ </text>
+ <text name="G:">
+ G:
+ </text>
+ <text name="E:">
+ E:
+ </text>
+ <text name="N:">
+ N:
+ </text>
+ <text name="F:">
+ F:
+ </text>
+ </panel>
</panel>
<panel label="Objeto" name="Object">
- <text name="select_single">
- Seleccione un sólo prim para editarlo.
- </text>
- <text name="edit_object">
- Modificar los parámetros del objeto:
- </text>
<check_box label="Bloqueado" name="checkbox locked" tool_tip="Previene que el objeto sea movido o borrado. Suele ser útil mientras se construye, para prevenir que se modifique sin querer."/>
<check_box label="Material" name="Physical Checkbox Ctrl" tool_tip="Permite que el objeto pueda ser empujado y le afecte la gravedad."/>
- <check_box label="Temporal" name="Temporary Checkbox Ctrl" tool_tip="Hace que el objeto se borre 1 minuto después de su creación."/>
+ <check_box label="Temporal" name="Temporary Checkbox Ctrl" tool_tip="Provoca que el objeto desaparezca 1 minuto después de ser creado"/>
<check_box label="Inmaterial" name="Phantom Checkbox Ctrl" tool_tip="Hace que el objeto no colisiones con otros objetos o avatares."/>
<text name="label position">
Posición (metros)
@@ -246,48 +260,27 @@
<spinner label="X" name="Rot X"/>
<spinner label="Y" name="Rot Y"/>
<spinner label="Z" name="Rot Z"/>
- <text name="label material">
- Material
- </text>
- <combo_box name="material">
- <combo_box.item name="Stone" label="Piedra"
- />
- <combo_box.item name="Metal" label="Metal"
- />
- <combo_box.item name="Glass" label="Vidrio"
- />
- <combo_box.item name="Wood" label="Madera"
- />
- <combo_box.item name="Flesh" label="Carne"
- />
- <combo_box.item name="Plastic" label="Plástico"
- />
- <combo_box.item name="Rubber" label="Goma"
- />
- </combo_box>
- <text name="label basetype">
- Tipo de objeto a construir
- </text>
<combo_box name="comboBaseType">
- <combo_box.item name="Box" label="Caja"
- />
- <combo_box.item name="Cylinder" label="Cilindro"
- />
- <combo_box.item name="Prism" label="Prisma"
- />
- <combo_box.item name="Sphere" label="Esfera"
- />
- <combo_box.item name="Torus" label="Toroide"
- />
- <combo_box.item name="Tube" label="Tubo"
- />
- <combo_box.item name="Ring" label="Cono truncado"
- />
- <combo_box.item name="Sculpted" label="Sculpted"
- />
+ <combo_box.item label="Caja" name="Box"/>
+ <combo_box.item label="Cilindro" name="Cylinder"/>
+ <combo_box.item label="Prisma" name="Prism"/>
+ <combo_box.item label="Esfera" name="Sphere"/>
+ <combo_box.item label="Toroide" name="Torus"/>
+ <combo_box.item label="Tubo" name="Tube"/>
+ <combo_box.item label="Cono truncado" name="Ring"/>
+ <combo_box.item label="Sculpted" name="Sculpted"/>
+ </combo_box>
+ <combo_box name="material">
+ <combo_box.item label="Piedra" name="Stone"/>
+ <combo_box.item label="Metal" name="Metal"/>
+ <combo_box.item label="Vidrio" name="Glass"/>
+ <combo_box.item label="Madera" name="Wood"/>
+ <combo_box.item label="Carne" name="Flesh"/>
+ <combo_box.item label="Plástico" name="Plastic"/>
+ <combo_box.item label="Goma" name="Rubber"/>
</combo_box>
<text name="text cut">
- Corte: Inicio y Fin
+ Corte (inicio/fin)
</text>
<spinner label="I" name="cut begin"/>
<spinner label="F" name="cut end"/>
@@ -301,17 +294,13 @@
Forma del hueco
</text>
<combo_box name="hole">
- <combo_box.item name="Default" label="Por defecto"
- />
- <combo_box.item name="Circle" label="Círculo"
- />
- <combo_box.item name="Square" label="Cuadrado"
- />
- <combo_box.item name="Triangle" label="Triángulo"
- />
+ <combo_box.item label="Por defecto" name="Default"/>
+ <combo_box.item label="Círculo" name="Circle"/>
+ <combo_box.item label="Cuadrado" name="Square"/>
+ <combo_box.item label="Triángulo" name="Triangle"/>
</combo_box>
<text name="text twist">
- Torsión: Inicio y Fin
+ Torsión (inicio/fin)
</text>
<spinner label="I" name="Twist Begin"/>
<spinner label="F" name="Twist End"/>
@@ -329,13 +318,13 @@
<spinner label="X" name="Shear X"/>
<spinner label="Y" name="Shear Y"/>
<text name="advanced_cut">
- Corte del perfil: Inicio y Fin
+ Corte del perfil (inicio/fin)
</text>
<text name="advanced_dimple">
- Horadar: Inicio y Fin
+ Horadar (inicio/fin)
</text>
<text name="advanced_slice">
- Cortar: Inicio y Fin
+ Cortar (inicio/fin)
</text>
<spinner label="I" name="Path Limit Begin"/>
<spinner label="F" name="Path Limit End"/>
@@ -351,22 +340,17 @@
Giros
</text>
<texture_picker label="Textura para sculpted" name="sculpt texture control" tool_tip="Pulse para elegir una imagen"/>
- <check_box label="Espejo" name="sculpt mirror control" tool_tip="Girar el prim sculpted siguiendo el eje X."/>
- <check_box label="Dentro-Fuera" name="sculpt invert control" tool_tip="Invertir los valores de los prims sculpted, haciendo aparecer fuera lo de dentro."/>
+ <check_box label="Espejo" name="sculpt mirror control" tool_tip="Girar el prim sculpted siguiendo el eje X"/>
+ <check_box label="Dentro-Fuera" name="sculpt invert control" tool_tip="Invertir los valores de los prims sculpted, haciendo aparecer fuera lo de dentro"/>
<text name="label sculpt type">
Tipo de unión
</text>
<combo_box name="sculpt type control">
- <combo_box.item name="None" label="(ninguna)"
- />
- <combo_box.item name="Sphere" label="Esfera"
- />
- <combo_box.item name="Torus" label="Toroide"
- />
- <combo_box.item name="Plane" label="Plano"
- />
- <combo_box.item name="Cylinder" label="Cilindro"
- />
+ <combo_box.item label="(ninguna)" name="None"/>
+ <combo_box.item label="Esfera" name="Sphere"/>
+ <combo_box.item label="Toroide" name="Torus"/>
+ <combo_box.item label="Plano" name="Plane"/>
+ <combo_box.item label="Cilindro" name="Cylinder"/>
</combo_box>
</panel>
<panel label="Caracter." name="Features">
@@ -376,7 +360,7 @@
<text name="edit_object">
Editar las características del objeto:
</text>
- <check_box label="Flexibilidad" name="Flexible1D Checkbox Ctrl" tool_tip="Permite que el objeto flexione en el eje Z. (Sólo del lado del cliente)"/>
+ <check_box label="Flexibilidad" name="Flexible1D Checkbox Ctrl" tool_tip="Permite que el objeto flexione en el eje Z (sólo del lado del cliente)"/>
<spinner label="Blandura" name="FlexNumSections"/>
<spinner label="Gravedad" name="FlexGravity"/>
<spinner label="Fricción" name="FlexFriction"/>
@@ -386,86 +370,70 @@
<spinner label="Fuerza en Y" name="FlexForceY"/>
<spinner label="Fuerza en Z" name="FlexForceZ"/>
<check_box label="Luz" name="Light Checkbox Ctrl" tool_tip="Hace que el objeto emita luz"/>
- <text name="label color">
- Color
- </text>
- <color_swatch label="" name="colorswatch" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="" name="colorswatch" tool_tip="Pulsa para abrir el selector de color"/>
+ <texture_picker label="" name="light texture control" tool_tip="Pulsa para elegir una proyección de imagen (sólo tiene efecto con renderización deferida activada)"/>
<spinner label="Intensidad" name="Light Intensity"/>
+ <spinner label="FOV" name="Light FOV"/>
<spinner label="Radio" name="Light Radius"/>
+ <spinner label="Visión" name="Light Focus"/>
<spinner label="Atenuación" name="Light Falloff"/>
+ <spinner label="Ambiental" name="Light Ambiance"/>
</panel>
<panel label="Textura" name="Texture">
+ <panel.string name="string repeats per meter">
+ Repeticiones por m.
+ </panel.string>
+ <panel.string name="string repeats per face">
+ Repeticiones por cara
+ </panel.string>
<texture_picker label="Textura" name="texture control" tool_tip="Pulse para elegir una imagen"/>
- <color_swatch label="Color" name="colorswatch" tool_tip="Pulse para abrir el selector de color"/>
+ <color_swatch label="Color" name="colorswatch" tool_tip="Pulsa para abrir el selector de color"/>
<text name="color trans">
Transparencia %
</text>
<text name="glow label">
Resplandor
</text>
- <check_box label="Brillo al &#10;máximo" name="checkbox fullbright" bottom_delta="-21"/>
+ <check_box bottom_delta="-21" label="Brillo al
+máximo" name="checkbox fullbright"/>
<text name="tex gen">
Detallado
</text>
<combo_box name="combobox texgen" width="86">
- <combo_box.item name="Default" label="Por defecto"
- />
- <combo_box.item name="Planar" label="Plano"
- />
+ <combo_box.item label="Por defecto" name="Default"/>
+ <combo_box.item label="Plano" name="Planar"/>
</combo_box>
<text name="label shininess">
Brillantez
</text>
<combo_box name="combobox shininess">
- <combo_box.item name="None" label="Ninguna"
- />
- <combo_box.item name="Low" label="Baja"
- />
- <combo_box.item name="Medium" label="Media"
- />
- <combo_box.item name="High" label="Alta"
- />
+ <combo_box.item label="Ninguna" name="None"/>
+ <combo_box.item label="Baja" name="Low"/>
+ <combo_box.item label="Media" name="Medium"/>
+ <combo_box.item label="Alta" name="High"/>
</combo_box>
<text name="label bumpiness">
Relieve
</text>
<combo_box name="combobox bumpiness">
- <combo_box.item name="None" label="Ninguno"
- />
- <combo_box.item name="Brightness" label="Brillo"
- />
- <combo_box.item name="Darkness" label="Oscuro"
- />
- <combo_box.item name="woodgrain" label="grano de madera"
- />
- <combo_box.item name="bark" label="corteza"
- />
- <combo_box.item name="bricks" label="ladrillos"
- />
- <combo_box.item name="checker" label="cajero"
- />
- <combo_box.item name="concrete" label="cemento"
- />
- <combo_box.item name="crustytile" label="azulejería"
- />
- <combo_box.item name="cutstone" label="piedra cortada"
- />
- <combo_box.item name="discs" label="discos"
- />
- <combo_box.item name="gravel" label="grava"
- />
- <combo_box.item name="petridish" label="placa de Petri"
- />
- <combo_box.item name="siding" label="revestimiento"
- />
- <combo_box.item name="stonetile" label="baldosa de piedra"
- />
- <combo_box.item name="stucco" label="estuco"
- />
- <combo_box.item name="suction" label="succión"
- />
- <combo_box.item name="weave" label="tejido"
- />
+ <combo_box.item label="Ninguno" name="None"/>
+ <combo_box.item label="Brillo" name="Brightness"/>
+ <combo_box.item label="Oscuro" name="Darkness"/>
+ <combo_box.item label="grano de madera" name="woodgrain"/>
+ <combo_box.item label="corteza" name="bark"/>
+ <combo_box.item label="ladrillos" name="bricks"/>
+ <combo_box.item label="cajero" name="checker"/>
+ <combo_box.item label="cemento" name="concrete"/>
+ <combo_box.item label="azulejería" name="crustytile"/>
+ <combo_box.item label="piedra cortada" name="cutstone"/>
+ <combo_box.item label="discos" name="discs"/>
+ <combo_box.item label="grava" name="gravel"/>
+ <combo_box.item label="placa de Petri" name="petridish"/>
+ <combo_box.item label="revestimiento" name="siding"/>
+ <combo_box.item label="baldosa de piedra" name="stonetile"/>
+ <combo_box.item label="estuco" name="stucco"/>
+ <combo_box.item label="succión" name="suction"/>
+ <combo_box.item label="tejido" name="weave"/>
</combo_box>
<text name="tex scale">
Repeticiones por cara
@@ -474,31 +442,23 @@
<check_box label="Voltear" name="checkbox flip s"/>
<spinner label="Vertical (V)" name="TexScaleV"/>
<check_box label="Voltear" name="checkbox flip t"/>
- <text name="tex rotate">
- Rotación (grados)
- </text>
- <string name="string repeats per meter">
- Repeticiones por m.
- </string>
- <string name="string repeats per face">
- Repeticiones por cara
- </string>
- <text name="rpt">
- Repeticiones por m.
- </text>
- <spinner left="118" name="TexRot" width="62" />
- <spinner left="118" name="rptctrl" width="62" />
- <button label="Aplicar" label_selected="Aplicar" name="button apply" left_delta="72"/>
+ <spinner label="Rotación" left="118" name="TexRot" width="62"/>
+ <spinner label="Repeticiones / Metro" left="118" name="rptctrl" width="62"/>
+ <button label="Aplicar" label_selected="Aplicar" left_delta="72" name="button apply"/>
<text name="tex offset">
Desplazar
</text>
<spinner label="Horizontal (U)" name="TexOffsetU"/>
<spinner label="Vertical (V)" name="TexOffsetV"/>
- <text name="textbox autofix" width="180">
- Centrar la textura para los media
-(primero debe subirla)
- </text>
- <button label="Alinear" label_selected="Alinear" name="button align" left="180"/>
+ <panel name="Add_Media">
+ <text name="media_tex">
+ Media
+ </text>
+ <button name="add_media" tool_tip="Añadir un media"/>
+ <button name="delete_media" tool_tip="Borrar esta textura para media"/>
+ <button name="edit_media" tool_tip="Editar este media"/>
+ <button label="Centrar" label_selected="Centrar los media" name="button align" tool_tip="Centrar esta textura para media (primero debe cargarse)"/>
+ </panel>
</panel>
<panel label="Contenido " name="Contents">
<button label="Script nuevo" label_selected="Script nuevo" name="button new script"/>
@@ -513,59 +473,26 @@
Precio: [PRICE] L$ por [AREA] m²
</text>
<text name="label_area">
- Superficie: [AREA] m²
+ Área: [AREA] m²
</text>
- <button label="Acerca del terreno..." label_selected="Acerca del terreno..." name="button about land" width="140"/>
- <check_box label="Mostrar los propietarios" name="checkbox show owners" tool_tip="El color de las parcelas es según su propietario: &#10;&#10;Verde = Su terreno &#10;Agua = Terreno de sus grupos &#10;Rojo = Propiedad de otros &#10;Amarillo = En venta &#10;Morado = Para subasta &#10;Gris = Público"/>
- <button label="?" label_selected="?" name="button show owners help" left_delta="150"/>
+ <button label="Acerca del terreno" label_selected="Acerca del terreno" name="button about land" width="140"/>
+ <check_box label="Mostrar los propietarios" name="checkbox show owners" tool_tip="El color de las parcelas es según su propietario:
+
+Verde = Su terreno
+Agua = Terreno de sus grupos
+Rojo = Propiedad de otros
+Amarillo = En venta
+Morado = Para subasta
+Gris = Público"/>
<text name="label_parcel_modify">
Modificar la parcela
</text>
- <button label="Subdividir" label_selected="Subdividir" name="button subdivide land" width="140"/>
- <button label="Unir" label_selected="Unir" name="button join land" width="140"/>
+ <button label="Dividir" label_selected="Dividir" name="button subdivide land" width="140"/>
+ <button label="Inscribirse" label_selected="Inscribirse" name="button join land" width="140"/>
<text name="label_parcel_trans">
Transacciones de terreno
</text>
<button label="Comprar terreno" label_selected="Comprar terreno" name="button buy land" width="140"/>
<button label="Abandonar el terreno" label_selected="Abandonar el terreno" name="button abandon land" width="140"/>
</panel>
- <floater.string name="status_rotate">
- Arrastre las bandas de color para girar el objeto
- </floater.string>
- <floater.string name="status_scale">
- Pulse y arrastre para estirar el lado seleccionado
- </floater.string>
- <floater.string name="status_move">
- Arrastrar para mover, Mayús.+arrastrar para copiar
- </floater.string>
- <floater.string name="status_modifyland">
- Mantenga pulsado para modificar el terreno
- </floater.string>
- <floater.string name="status_camera">
- Pulse y arrastre para cambiar el punto de vista
- </floater.string>
- <floater.string name="status_grab">
- Arrastre para mover objetos: Ctrl, verticalmente; Ctrl-Mayús., para girarlos.
- </floater.string>
- <floater.string name="status_place">
- Pulse en el mundo para construir
- </floater.string>
- <floater.string name="status_selectland">
- Pulse y arrastre para seleccionar el terreno
- </floater.string>
- <floater.string name="grid_screen_text">
- Pantalla
- </floater.string>
- <floater.string name="grid_local_text">
- Local
- </floater.string>
- <floater.string name="grid_world_text">
- Mundo
- </floater.string>
- <floater.string name="grid_reference_text">
- Referencia
- </floater.string>
- <floater.string name="grid_attachment_text">
- Añadido
- </floater.string>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_top_objects.xml b/indra/newview/skins/default/xui/es/floater_top_objects.xml
index 29ae9991af..d2311c734b 100644
--- a/indra/newview/skins/default/xui/es/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/es/floater_top_objects.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="top_objects" title="CARGANDO...">
+<floater name="top_objects" title="Objetos superiores">
<text name="title_text">
Cargando...
</text>
@@ -23,13 +23,13 @@
</text>
<button label="Filtro" name="filter_object_btn" width="115"/>
<text name="owner_name_text" width="130">
- Nombre del propietario:
+ Propietario:
</text>
<button label="Filtro" name="filter_owner_btn" width="115"/>
<button label="Devolver lo seleccionado" name="return_selected_btn" width="170"/>
- <button label="Devolver todo" name="return_all_btn" left="190"/>
+ <button label="Devolver todo" left="190" name="return_all_btn"/>
<button label="Desactivar lo seleccionado" name="disable_selected_btn" width="170"/>
- <button label="Desactivar todo" name="disable_all_btn" left="190"/>
+ <button label="Desactivar todo" left="190" name="disable_all_btn"/>
<button label="Actualizar" name="refresh_btn" width="115"/>
<string name="top_scripts_title">
Scripts según su uso
diff --git a/indra/newview/skins/default/xui/es/floater_tos.xml b/indra/newview/skins/default/xui/es/floater_tos.xml
index d46c84cb03..cbacce304c 100644
--- a/indra/newview/skins/default/xui/es/floater_tos.xml
+++ b/indra/newview/skins/default/xui/es/floater_tos.xml
@@ -4,8 +4,7 @@
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
<check_box label="Estoy de acuerdo con las Condiciones del Servicio" name="agree_chk"/>
<text name="tos_heading">
- Por favor, lea cuidadosamente las siguientes Condiciones del Servicio. Si quiere seguir
-iniciando sesión en [SECOND_LIFE], debe aceptar el acuerdo.
+ Por favor, lee detenidamente las siguientes Condiciones del Servicio. Para conectarte a [SECOND_LIFE], debes aceptar este acuerdo.
</text>
<text_editor name="tos_text">
TOS_TEXT
diff --git a/indra/newview/skins/default/xui/es/floater_voice_controls.xml b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
new file mode 100644
index 0000000000..dfd03c6f83
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_controls" title="Controles de Voz">
+ <string name="title_nearby">
+ CHAT DE VOZ
+ </string>
+ <string name="title_group">
+ Multiconferencia de voz con [GROUP]
+ </string>
+ <string name="title_adhoc">
+ Multiconferencia de voz
+ </string>
+ <string name="title_peer_2_peer">
+ Llamada: [NAME]
+ </string>
+ <string name="no_one_near">
+ No hay nadie cerca
+ </string>
+ <panel name="control_panel">
+ <layout_stack>
+ <layout_panel name="leave_btn_panel">
+ <button label="Colgar" name="leave_call_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_water.xml b/indra/newview/skins/default/xui/es/floater_water.xml
index c86e49a355..9996860137 100644
--- a/indra/newview/skins/default/xui/es/floater_water.xml
+++ b/indra/newview/skins/default/xui/es/floater_water.xml
@@ -11,20 +11,20 @@
<text name="BHText">
Color del agua
</text>
- <button label="?" name="WaterFogColorHelp" left="175" />
- <color_swatch label="" name="WaterFogColor" tool_tip="Pulse para abrir el selector de color"/>
+ <button label="?" left="175" name="WaterFogColorHelp"/>
+ <color_swatch label="" name="WaterFogColor" tool_tip="Pulsa para abrir el selector de color"/>
<text name="WaterFogDensText">
Transparencia
</text>
- <button label="?" name="WaterFogDensityHelp" left="175" />
+ <button label="?" left="175" name="WaterFogDensityHelp"/>
<text name="WaterUnderWaterFogModText">
Modificar la claridad del agua
</text>
- <button label="?" name="WaterUnderWaterFogModHelp" left="175" />
+ <button label="?" left="175" name="WaterUnderWaterFogModHelp"/>
<text name="BDensText">
Tamaño de las ondulaciones
</text>
- <button label="?" name="WaterNormalScaleHelp" left="405"/>
+ <button label="?" left="405" name="WaterNormalScaleHelp"/>
<text name="BHText2">
1
</text>
@@ -37,29 +37,29 @@
<text name="HDText">
Escala de Fresnel
</text>
- <button label="?" name="WaterFresnelScaleHelp" left="405"/>
+ <button label="?" left="405" name="WaterFresnelScaleHelp"/>
<text name="FresnelOffsetText">
Coeficiente de reflexión
</text>
- <button label="?" name="WaterFresnelOffsetHelp" left="405"/>
+ <button label="?" left="405" name="WaterFresnelOffsetHelp"/>
<text name="DensMultText">
Refracción de la superficie
</text>
- <button label="?" name="WaterScaleAboveHelp" left="640"/>
+ <button label="?" left="640" name="WaterScaleAboveHelp"/>
<text name="WaterScaleBelowText">
Refracción bajo la superficie
</text>
- <button label="?" name="WaterScaleBelowHelp" left="640"/>
+ <button label="?" left="640" name="WaterScaleBelowHelp"/>
<text name="MaxAltText">
Desenfoque
</text>
- <button label="?" name="WaterBlurMultiplierHelp" left="640"/>
+ <button label="?" left="640" name="WaterBlurMultiplierHelp"/>
</panel>
<panel label="Imagen" name="Waves">
<text name="BHText">
Sentido de la onda grande
</text>
- <button label="?" name="WaterWave1Help" left="170"/>
+ <button label="?" left="170" name="WaterWave1Help"/>
<text name="WaterWave1DirXText">
X
</text>
@@ -69,7 +69,7 @@
<text name="BHText2">
Sentido de la onda pequeña
</text>
- <button label="?" name="WaterWave2Help" left="170"/>
+ <button label="?" left="170" name="WaterWave2Help"/>
<text name="WaterWave2DirXText">
X
</text>
diff --git a/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml
new file mode 100644
index 0000000000..71b185aa0a
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry">
+ <text name="media_label">
+ Escribe una URL o un rango de URL para añadirla a lista de dominios autorizados
+ </text>
+ <line_editor name="whitelist_entry" tool_tip="Añade una URL o un rango de URL a la Lista Blanca"/>
+ <button label="OK" name="ok_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml
index 4d7337bef7..37c4e2a377 100644
--- a/indra/newview/skins/default/xui/es/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/es/floater_world_map.xml
@@ -1,57 +1,69 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="worldmap" title="MAPA DEL MUNDO">
- <tab_container name="maptab">
- <panel label="Objetos" name="objects_mapview"/>
- <panel label="Terreno" name="terrain_mapview"/>
- </tab_container>
- <text name="you_label">
- Usted
- </text>
- <text name="home_label">
- Base
- </text>
- <text name="auction_label">
- Subasta
- </text>
- <text name="land_for_sale_label">
- Terreno en venta
- </text>
- <button label="Ir a la Base" label_selected="Ir a la Base" name="Go Home" tool_tip="Teleportar a su Base"/>
- <check_box label="Residente" name="people_chk"/>
- <check_box label="Punto de Info" name="infohub_chk"/>
- <check_box label="Punto de Teleporte" name="telehubchk"/>
- <check_box label="Terreno en venta" name="land_for_sale_chk"/>
- <text name="events_label">
- Eventos:
- </text>
- <check_box label="&apos;PG&apos;" name="event_chk"/>
- <check_box label="&apos;Mature&apos;" name="event_mature_chk"/>
- <check_box label="&apos;Adult&apos;" name="event_adult_chk"/>
- <combo_box label="Amigos conectados" name="friend combo" tool_tip="Amigo a mostrar en el mapa">
- <combo_box.item name="item1" label="Amigos conectados" />
- </combo_box>
- <combo_box label="Hitos" name="landmark combo" tool_tip="Hito a mostrar en el mapa">
- <combo_box.item name="item1" label="Hitos" />
- </combo_box>
- <line_editor label="Buscar por el nombre de la región" name="location" tool_tip="Escriba el nombre de una región"/>
- <button label="Buscar" name="DoSearch" tool_tip="Buscar una región"/>
- <text name="search_label">
- Resultados de la búsqueda:
- </text>
- <scroll_list name="search_results">
- <column label="" name="icon"/>
- <column label="" name="sim_name"/>
- </scroll_list>
- <text name="location_label">
- Localización:
- </text>
- <spinner name="spin x" tool_tip="Coordenada X de la posición a mostrar en el mapa"/>
- <spinner name="spin y" tool_tip="Coordenada Y de la posición a mostrar en el mapa"/>
- <spinner name="spin z" tool_tip="Coordenada Z de la posición a mostrar en el mapa"/>
- <button label="Teleportar" label_selected="Teleportar" name="Teleport" tool_tip="Teleportarse a la localización elegida"/>
- <button label="Mostrar el destino" label_selected="Mostrar el destino" name="Show Destination" tool_tip="Centrar el mapa en la localización elegida"/>
- <button label="Limpiar" label_selected="Limpiar" name="Clear" tool_tip="Parar la búsqueda"/>
- <button label="Mostrar mi posición" label_selected="Mostrar mi posición" name="Show My Location" tool_tip="Centrar el mapa en la posición de su avatar"/>
- <button label="Copiar la SLurl al portapapeles" name="copy_slurl" tool_tip="Copiar la posición actual como una SLurl, para usarla en la web."/>
- <slider label="Zoom" name="zoom slider"/>
+ <panel name="layout_panel_1">
+ <text name="events_label">
+ Leyenda
+ </text>
+ </panel>
+ <panel>
+ <button label="Mostrar mi posición" label_selected="Mostrar mi posición" name="Show My Location" tool_tip="Centrar el mapa en la posición de mi avatar"/>
+ <text name="person_label">
+ Yo
+ </text>
+ <check_box label="Residente" name="people_chk"/>
+ <check_box label="Punto de Info" name="infohub_chk"/>
+ <text name="infohub_label">
+ Punto de Info
+ </text>
+ <check_box label="Terreno en venta" name="land_for_sale_chk"/>
+ <text name="land_sale_label">
+ Venta de terreno
+ </text>
+ <text name="auction_label">
+ por el propietario
+ </text>
+ <button label="Ir a la Base" label_selected="Ir a la Base" name="Go Home" tool_tip="Teleportar a mi Base"/>
+ <text name="Home_label">
+ Base
+ </text>
+ <text name="events_label">
+ Eventos:
+ </text>
+ <check_box label="&apos;PG&apos;" name="event_chk"/>
+ <check_box initial_value="true" label="&apos;Mature&apos;" name="event_mature_chk"/>
+ <text name="mature_label">
+ Mature
+ </text>
+ <check_box label="&apos;Adult&apos;" name="event_adult_chk"/>
+ </panel>
+ <panel>
+ <text name="find_on_map_label">
+ Encontrar en el mapa
+ </text>
+ </panel>
+ <panel>
+ <combo_box label="Amigos conectados" name="friend combo" tool_tip="Ver a los amigos en el mapa">
+ <combo_box.item label="Mis amigos conectados" name="item1"/>
+ </combo_box>
+ <combo_box label="Mis hitos" name="landmark combo" tool_tip="Hito a ver en el mapa">
+ <combo_box.item label="Mis hitos" name="item1"/>
+ </combo_box>
+ <search_editor label="Regiones alfabéticamente" name="location" tool_tip="Escriba el nombre de una región"/>
+ <button label="Encontrar" name="DoSearch" tool_tip="Buscar una región"/>
+ <scroll_list name="search_results">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="sim_name"/>
+ </scroll_list>
+ <button label="Teleportar" label_selected="Teleportar" name="Teleport" tool_tip="Teleportarse a la localización elegida"/>
+ <button label="Copiar la SLurl" name="copy_slurl" tool_tip="Copiar la SLurl de esta posición para usarla en una web."/>
+ <button label="Ver lo elegido" label_selected="Mostrar el destino" name="Show Destination" tool_tip="Centrar el mapa en la localización elegida"/>
+ </panel>
+ <panel>
+ <text name="zoom_label">
+ Zoom
+ </text>
+ </panel>
+ <panel>
+ <slider label="Zoom" name="zoom slider"/>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/es/inspect_avatar.xml b/indra/newview/skins/default/xui/es/inspect_avatar.xml
new file mode 100644
index 0000000000..dff09aaace
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/inspect_avatar.xml
@@ -0,0 +1,21 @@
+<?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>
+ <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="Más" 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/default/xui/es/inspect_group.xml b/indra/newview/skins/default/xui/es/inspect_group.xml
new file mode 100644
index 0000000000..ba10b19f41
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/inspect_group.xml
@@ -0,0 +1,22 @@
+<?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_group">
+ <string name="PrivateGroup">
+ Grupo privado
+ </string>
+ <string name="FreeToJoin">
+ Inscripción gratuita
+ </string>
+ <string name="CostToJoin">
+ Inscribirse cuesta [AMOUNT] L$
+ </string>
+ <string name="YouAreMember">
+ Eres miembro
+ </string>
+ <button label="Inscribirse" name="join_btn"/>
+ <button label="Abandonar" name="leave_btn"/>
+ <button label="Ver el perfil" name="view_profile_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/inspect_object.xml b/indra/newview/skins/default/xui/es/inspect_object.xml
new file mode 100644
index 0000000000..6a831def07
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/inspect_object.xml
@@ -0,0 +1,34 @@
+<?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>
+ <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/default/xui/es/inspect_remote_object.xml b/indra/newview/skins/default/xui/es/inspect_remote_object.xml
new file mode 100644
index 0000000000..f814e84a6f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/inspect_remote_object.xml
@@ -0,0 +1,13 @@
+<?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_remote_object">
+ <text name="object_owner_label">
+ Propietario:
+ </text>
+ <button label="Mapa" name="map_btn"/>
+ <button label="Ignorar" name="block_btn"/>
+ <button label="Cerrar" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/menu_attachment_other.xml b/indra/newview/skins/default/xui/es/menu_attachment_other.xml
new file mode 100644
index 0000000000..12acb572dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?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="Llamada" 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" 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/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
new file mode 100644
index 0000000000..c5afb99d49
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
@@ -0,0 +1,12 @@
+<?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="Soltar" name="Drop"/>
+ <menu_item_call label="Levantarse" name="Stand Up"/>
+ <menu_item_call label="Mi apariencia" name="Appearance..."/>
+ <menu_item_call label="Mis amigos" name="Friends..."/>
+ <menu_item_call label="Mis grupos" name="Groups..."/>
+ <menu_item_call label="Mi perfil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_icon.xml b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml
new file mode 100644
index 0000000000..fe7331a108
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/es/menu_avatar_other.xml b/indra/newview/skins/default/xui/es/menu_avatar_other.xml
new file mode 100644
index 0000000000..83801e872d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?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="Llamada" 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" 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/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
new file mode 100644
index 0000000000..8d3790a4d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+ <menu_item_call label="Levantarse" name="Stand Up"/>
+ <context_menu label="Quitarse &gt;" name="Take Off &gt;">
+ <context_menu label="Ropa &gt;" 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 &gt;" name="Object Detach HUD"/>
+ <context_menu label="Quitarse &gt;" name="Object Detach"/>
+ <menu_item_call label="Quitarse todo" name="Detach All"/>
+ </context_menu>
+ <menu_item_call label="Mi apariencia" name="Appearance..."/>
+ <menu_item_call label="Mis amigos" name="Friends..."/>
+ <menu_item_call label="Mis grupos" name="Groups..."/>
+ <menu_item_call label="Mi perfil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_bottomtray.xml b/indra/newview/skins/default/xui/es/menu_bottomtray.xml
new file mode 100644
index 0000000000..8169563882
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_bottomtray.xml
@@ -0,0 +1,12 @@
+<?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_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/default/xui/es/menu_favorites.xml b/indra/newview/skins/default/xui/es/menu_favorites.xml
new file mode 100644
index 0000000000..c8a7858ddb
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Teleportarse" 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/default/xui/es/menu_gesture_gear.xml b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml
new file mode 100644
index 0000000000..24706eb2c8
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml
@@ -0,0 +1,10 @@
+<?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/default/xui/es/menu_group_plus.xml b/indra/newview/skins/default/xui/es/menu_group_plus.xml
new file mode 100644
index 0000000000..6b26ba42c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_group_plus.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/es/menu_hide_navbar.xml b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
new file mode 100644
index 0000000000..7fc1af00c5
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
@@ -0,0 +1,5 @@
+<?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>
diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml
new file mode 100644
index 0000000000..e11e9bdc58
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?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/default/xui/es/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml
new file mode 100644
index 0000000000..a5e60ea40b
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/es/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml
new file mode 100644
index 0000000000..492801026c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
new file mode 100644
index 0000000000..c6728f948d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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="Llamada" name="call"/>
+ <menu_item_call label="Teleportarse" name="teleport"/>
+ <menu_item_call label="Invitar al grupo" name="invite_to_group"/>
+ <menu_item_call label="Ignorar" name="block"/>
+ <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="Depurar" name="debug"/>
+ <menu_item_call label="Encontrar en el mapa" name="find_on_map"/>
+ <menu_item_call label="Acercar el zoom" name="zoom_in"/>
+ <menu_item_call label="Pagar" name="pay"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml
new file mode 100644
index 0000000000..af85b833e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml
@@ -0,0 +1,17 @@
+<?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="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/default/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
new file mode 100644
index 0000000000..cb8fb82f0d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+ <menu_item_call label="Levantarse" name="stand_up"/>
+ <menu_item_call label="Mi apariencia" name="my_appearance"/>
+ <menu_item_call label="Mi perfil" name="my_profile"/>
+ <menu_item_call label="Mis amigos" name="my_friends"/>
+ <menu_item_call label="Mis grupos" name="my_groups"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml
index 28d47fce52..ae3eb1c845 100644
--- a/indra/newview/skins/default/xui/es/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/es/menu_inventory.xml
@@ -12,7 +12,7 @@
<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 name="New Clothes" label="Nueva ropa">
+ <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"/>
@@ -22,31 +22,47 @@
<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 name="New Body Parts" label="Nuevas partes del cuerpo">
+ <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="Eliminar el ítem" name="Purge Item"/>
<menu_item_call label="Restaurar el ítem" name="Restore Item"/>
+ <menu_item_call label="Ir al enlace" name="Goto Link"/>
<menu_item_call label="Abrir" name="Open"/>
<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="Delete"/>
<menu_item_call label="Quitarse los ítems" name="Take Off Items"/>
<menu_item_call label="Añadir al vestuario" name="Add To Outfit"/>
<menu_item_call label="Reemplazar el vestuario" name="Replace Outfit"/>
<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="Teleport To Landmark"/>
+ <menu_item_call label="Acerca del hito" name="About Landmark"/>
<menu_item_call label="Ver 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"/>
@@ -54,8 +70,8 @@
<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="Volver a la última posición" name="Restore to Last Position"/>
<menu_item_call label="Ponerse" name="Object Wear"/>
<menu label="Anexar a" name="Attach To"/>
<menu label="Anexar como HUD" name="Attach To HUD"/>
diff --git a/indra/newview/skins/default/xui/es/menu_inventory_add.xml b/indra/newview/skins/default/xui/es/menu_inventory_add.xml
new file mode 100644
index 0000000000..91cb4a08ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_inventory_add.xml
@@ -0,0 +1,32 @@
+<?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>
+ <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/default/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml
new file mode 100644
index 0000000000..80cf78c0b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+ <menu_item_call label="Nueva ventana del inventario" name="new_window"/>
+ <menu_item_call label="Ordenar alfabéticamente" name="sort_by_name"/>
+ <menu_item_call label="Ordenar por los más recientes" name="sort_by_recent"/>
+ <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 la Papelera" name="empty_trash"/>
+ <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="Encontrar el original" name="Find Original"/>
+ <menu_item_call label="Encontrar todos los enlazados" name="Find All Links"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_land.xml b/indra/newview/skins/default/xui/es/menu_land.xml
new file mode 100644
index 0000000000..c315cb2f2c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_land.xml
@@ -0,0 +1,9 @@
+<?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="Sentarse 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/default/xui/es/menu_landmark.xml b/indra/newview/skins/default/xui/es/menu_landmark.xml
new file mode 100644
index 0000000000..f69b1539b8
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_landmark.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
index 1cf6ad5ae6..7e1a537122 100644
--- a/indra/newview/skins/default/xui/es/menu_login.xml
+++ b/indra/newview/skins/default/xui/es/menu_login.xml
@@ -1,13 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
- <menu label="Archivo" name="File">
+ <menu label="Yo" name="File">
+ <menu_item_call label="Preferencias" name="Preferences..."/>
<menu_item_call label="Salir" name="Quit"/>
</menu>
- <menu label="Editar" name="Edit">
- <menu_item_call label="Preferencias..." name="Preferences..."/>
- </menu>
<menu label="Ayuda" name="Help">
<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="Acerca de [APP_NAME]..." name="About Second Life..."/>
+ </menu>
+ <menu label="Depurar" name="Debug">
+ <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>
+ <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_item_call label="Mostrar el panel lateral" name="Show Side Tray"/>
+ <menu label="Pruebas de la interfaz" name="UI Tests"/>
+ <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="Web Browser Test" name="Web Browser Test"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/es/menu_mini_map.xml b/indra/newview/skins/default/xui/es/menu_mini_map.xml
index 19061cea06..9c5a5719ee 100644
--- a/indra/newview/skins/default/xui/es/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/es/menu_mini_map.xml
@@ -3,6 +3,7 @@
<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_check label="Girar el mapa" name="Rotate Map"/>
<menu_item_call label="Parar la búsqueda" name="Stop Tracking"/>
- <menu_item_call label="Perfil..." name="Profile"/>
+ <menu_item_call label="Mapa del mundo" name="World Map"/>
</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_navbar.xml b/indra/newview/skins/default/xui/es/menu_navbar.xml
new file mode 100644
index 0000000000..63e5468020
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?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/default/xui/es/menu_nearby_chat.xml b/indra/newview/skins/default/xui/es/menu_nearby_chat.xml
new file mode 100644
index 0000000000..94b281b6c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?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/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml
new file mode 100644
index 0000000000..2d701a89c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_object.xml
@@ -0,0 +1,24 @@
+<?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 label="Editar" name="Edit..."/>
+ <menu_item_call label="Construir" name="Build"/>
+ <menu_item_call label="Abrir" name="Open"/>
+ <menu_item_call label="Sentarse aquí" name="Object Sit"/>
+ <menu_item_call label="Perfil del objeto" name="Object Inspect"/>
+ <context_menu label="Poner &gt;" name="Put On">
+ <menu_item_call label="Ponerse" name="Wear"/>
+ <context_menu label="Anexar &gt;" name="Object Attach"/>
+ <context_menu label="Anexar el HUD &gt;" name="Object Attach HUD"/>
+ </context_menu>
+ <context_menu label="Quitar &gt;" name="Remove">
+ <menu_item_call label="Tomar" name="Pie Object Take"/>
+ <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="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/default/xui/es/menu_object_icon.xml b/indra/newview/skins/default/xui/es/menu_object_icon.xml
new file mode 100644
index 0000000000..7e4578b950
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_object_icon.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/es/menu_participant_list.xml b/indra/newview/skins/default/xui/es/menu_participant_list.xml
new file mode 100644
index 0000000000..bc7e2617be
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_participant_list.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List 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="MI" name="IM"/>
+ <menu_item_call label="Llamada" name="Call"/>
+ <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_check label="Silenciar el texto" name="MuteText"/>
+ <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="Silenciar a todos los demás" name="ModerateVoiceMuteOthers"/>
+ <menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/>
+ <menu_item_call label="Quitar el silencio a todos los demás" name="ModerateVoiceUnMuteOthers"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml
new file mode 100644
index 0000000000..0e883be00e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml
@@ -0,0 +1,7 @@
+<?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_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml
new file mode 100644
index 0000000000..1bd3efb611
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
new file mode 100644
index 0000000000..310a96d740
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
@@ -0,0 +1,10 @@
+<?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="MI" name="IM"/>
+ <menu_item_call label="Llamada" name="Call"/>
+ <menu_item_call label="Compartir" name="Share"/>
+ <menu_item_call label="Pagar" name="Pay"/>
+ <menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
new file mode 100644
index 0000000000..7d6979256e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
@@ -0,0 +1,8 @@
+<?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="MI" name="IM"/>
+ <menu_item_call label="Llamada" name="Call"/>
+ <menu_item_call label="Compartir" name="Share"/>
+ <menu_item_call label="Pagar" name="Pay"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml
new file mode 100644
index 0000000000..f0fe383c0c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml
@@ -0,0 +1,8 @@
+<?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/default/xui/es/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml
new file mode 100644
index 0000000000..e4aaa89110
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/es/menu_picks.xml b/indra/newview/skins/default/xui/es/menu_picks.xml
new file mode 100644
index 0000000000..9da68d7c9b
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_picks.xml
@@ -0,0 +1,8 @@
+<?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/default/xui/es/menu_picks_plus.xml b/indra/newview/skins/default/xui/es/menu_picks_plus.xml
new file mode 100644
index 0000000000..cc59bf1d29
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_picks_plus.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/es/menu_place.xml b/indra/newview/skins/default/xui/es/menu_place.xml
new file mode 100644
index 0000000000..675f0699e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_place.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/es/menu_place_add_button.xml b/indra/newview/skins/default/xui/es/menu_place_add_button.xml
new file mode 100644
index 0000000000..4b2f908a06
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_place_add_button.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml
new file mode 100644
index 0000000000..bf46eb58e3
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml
@@ -0,0 +1,15 @@
+<?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/default/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml
new file mode 100644
index 0000000000..eac85de846
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml
@@ -0,0 +1,18 @@
+<?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/default/xui/es/menu_profile_overflow.xml b/indra/newview/skins/default/xui/es/menu_profile_overflow.xml
new file mode 100644
index 0000000000..c1e01f0554
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_profile_overflow.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+ <menu_item_call label="Pagar" name="pay"/>
+ <menu_item_call label="Compartir" name="share"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_slurl.xml b/indra/newview/skins/default/xui/es/menu_slurl.xml
index 5c5900ae56..ca19acec6e 100644
--- a/indra/newview/skins/default/xui/es/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/es/menu_slurl.xml
@@ -2,5 +2,5 @@
<menu name="Popup">
<menu_item_call label="Acerca de la URL" name="about_url"/>
<menu_item_call label="Teleportar a la URL" name="teleport_to_url"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
+ <menu_item_call label="Mapa" name="show_on_map"/>
</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml
new file mode 100644
index 0000000000..b708f3bc20
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml
new file mode 100644
index 0000000000..ed33c55aca
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+ <menu_item_call label="Teleportarse" 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/default/xui/es/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml
new file mode 100644
index 0000000000..17e90422a5
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/es/menu_text_editor.xml b/indra/newview/skins/default/xui/es/menu_text_editor.xml
new file mode 100644
index 0000000000..095e461734
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_text_editor.xml
@@ -0,0 +1,8 @@
+<?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/default/xui/es/menu_url_agent.xml b/indra/newview/skins/default/xui/es/menu_url_agent.xml
new file mode 100644
index 0000000000..a089c8f68e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_agent.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/es/menu_url_group.xml b/indra/newview/skins/default/xui/es/menu_url_group.xml
new file mode 100644
index 0000000000..79374b9739
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_group.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/es/menu_url_http.xml b/indra/newview/skins/default/xui/es/menu_url_http.xml
new file mode 100644
index 0000000000..585c059ff3
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_http.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/es/menu_url_inventory.xml b/indra/newview/skins/default/xui/es/menu_url_inventory.xml
new file mode 100644
index 0000000000..13a8711c76
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_inventory.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/es/menu_url_map.xml b/indra/newview/skins/default/xui/es/menu_url_map.xml
new file mode 100644
index 0000000000..f96a0c7170
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_map.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
new file mode 100644
index 0000000000..8791a290af
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
@@ -0,0 +1,8 @@
+<?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/default/xui/es/menu_url_parcel.xml b/indra/newview/skins/default/xui/es/menu_url_parcel.xml
new file mode 100644
index 0000000000..9e789ef8ee
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_parcel.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/es/menu_url_slapp.xml b/indra/newview/skins/default/xui/es/menu_url_slapp.xml
new file mode 100644
index 0000000000..7147dcd3cf
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_slapp.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/es/menu_url_slurl.xml b/indra/newview/skins/default/xui/es/menu_url_slurl.xml
new file mode 100644
index 0000000000..4ab47c2f61
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_slurl.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/es/menu_url_teleport.xml b/indra/newview/skins/default/xui/es/menu_url_teleport.xml
new file mode 100644
index 0000000000..8f86a91be3
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_url_teleport.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index fdb6a92084..acd7319b31 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -1,217 +1,326 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
- <menu name="Me">
+ <menu label="Yo" name="Me">
<menu_item_call label="Preferencias" name="Preferences"/>
- <menu_item_call name="Manage My Account">
- <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es" />
+ <menu_item_call label="Mi panel de control" name="Manage My Account">
+ <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/>
</menu_item_call>
+ <menu_item_call label="Comprar L$" name="Buy and Sell L$"/>
+ <menu_item_call label="Mi perfil" name="Profile"/>
+ <menu_item_call label="Mi apariencia" name="Appearance"/>
+ <menu_item_check label="Mi Inventario" name="Inventory"/>
+ <menu_item_call label="Mostrar el inventario en el panel lateral" name="ShowSidetrayInventory"/>
+ <menu_item_call label="Mis gestos" name="Gestures"/>
+ <menu label="Mi estatus" name="Status">
+ <menu_item_call label="Ausente" name="Set Away"/>
+ <menu_item_call label="Ocupado" name="Set Busy"/>
+ </menu>
+ <menu_item_call label="Solicitar estatus de Administrador" name="Request Admin Options"/>
+ <menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/>
+ <menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
</menu>
- <menu label="Archivo" name="File">
- <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
- <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="Masiva ([COST] L$ por archivo)..." name="Bulk Upload"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Definir los permisos por defecto..." name="perm prefs"/>
- </menu>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Cerrar la ventana" name="Close Window"/>
- <menu_item_call label="Cerrar todas las ventanas" name="Close All Windows"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Guardar la textura como..." name="Save Texture As..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Hacer una foto" name="Take Snapshot"/>
- <menu_item_call label="Guardar una foto" name="Snapshot to Disk"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Salir" name="Quit"/>
- </menu>
- <menu label="Editar" name="Edit">
- <menu_item_call label="Deshacer" name="Undo"/>
- <menu_item_call label="Rehacer" name="Redo"/>
- <menu_item_separator label="-----------" name="separator"/>
- <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_separator label="-----------" name="separator2"/>
- <menu_item_call label="Buscar..." name="Search..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Seleccionar todo" name="Select All"/>
- <menu_item_call label="Deseleccionar" name="Deselect"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Duplicar" name="Duplicate"/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu label="Anexar el objeto" name="Attach Object"/>
- <menu label="Quitarse el objeto" name="Detach Object"/>
- <menu label="Quitarse ropa" name="Take Off Clothing">
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Pantalones" name="Pants"/>
- <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="Menu Undershirt"/>
- <menu_item_call label="Ropa interior" name="Menu Underpants"/>
- <menu_item_call label="Falda" name="Skirt"/>
- <menu_item_call label="Toda la ropa" name="All Clothes"/>
- </menu>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Gestos..." name="Gestures..."/>
- <menu_item_call label="Perfil..." name="Profile..."/>
- <menu_item_call label="Apariencia..." name="Appearance..."/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu_item_check label="Amigos..." name="Friends..."/>
- <menu_item_call label="Grupos..." name="Groups..."/>
- <menu_item_separator label="-----------" name="separator8"/>
- <menu_item_call label="Preferencias..." name="Preferences..."/>
- </menu>
- <menu label="Ver" name="View">
- <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
- <menu_item_call label="Vista subjetiva" name="Mouselook"/>
- <menu_item_check label="Construir" name="Build"/>
- <menu_item_check label="Flycam del joystick" name="Joystick Flycam"/>
- <menu_item_call label="Volver a la vista por defecto" name="Reset View"/>
- <menu_item_call label="Mirar al último que habló" name="Look at Last Chatter"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Barra de herramientas" name="Toolbar"/>
- <menu_item_check label="Chat" name="Chat History"/>
- <menu_item_check label="Comunicarse" name="Instant Message"/>
- <menu_item_check label="Inventario" name="Inventory"/>
- <menu_item_check label="Participantes activos" name="Active Speakers"/>
- <menu_item_check label="Lista de ignorados" name="Mute List"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_check label="Controles de la cámara" name="Camera Controls"/>
- <menu_item_check label="Controles del movimiento" name="Movement Controls"/>
- <menu_item_check label="Mapa del mundo" name="World Map"/>
- <menu_item_check label="Minimapa" name="Mini-Map"/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_check label="Estadísticas" name="Statistics Bar"/>
- <menu_item_check label="Límites de las parcelas" name="Property Lines"/>
- <menu_item_check label="Líneas de prohibición" name="Banlines"/>
- <menu_item_check label="Propietarios del terreno" name="Land Owners"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu label="Información adicional" name="Hover Tips">
- <menu_item_check label="Mostrar información adicional." name="Show Tips"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Información adicional del terreno" name="Land Tips"/>
- <menu_item_check label="Información adicional en todos los objetos" name="Tips On All Objects"/>
- </menu>
- <menu_item_check label="Realzar las transparencias" name="Highlight Transparent"/>
- <menu_item_check label="Balizas" name="beacons"/>
- <menu_item_check label="Ocultar las partículas" name="Hide Particles"/>
- <menu_item_check label="Mostrar los HUD en uso" name="Show HUD Attachments"/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu_item_call label="Acercar el zoom" name="Zoom In"/>
- <menu_item_call label="Zoom predeterminado" name="Zoom Default"/>
- <menu_item_call label="Alejar el zoom" name="Zoom Out"/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Pantalla completa" name="Toggle Fullscreen"/>
- <menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/>
+ <menu label="Comunicarse" name="Communicate">
+ <menu_item_call label="Mis amigos" name="My Friends"/>
+ <menu_item_call label="Mis grupos" name="My Groups"/>
+ <menu_item_check label="Chat" name="Nearby Chat"/>
+ <menu_item_call label="Gente cerca" name="Active Speakers"/>
+ <menu_item_check label="Media cercanos" name="Nearby Media"/>
</menu>
<menu label="Mundo" name="World">
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_check label="Correr siempre" name="Always Run"/>
- <menu_item_check label="Volar" name="Fly"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Crear aquí un hito" name="Create Landmark Here"/>
- <menu_item_call label="Fijar mi Base aquí" name="Set Home to Here"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Teleportar a mi Base" name="Teleport Home"/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Pasar al estado ausente" name="Set Away"/>
- <menu_item_call label="Pasar al estado ocupado" name="Set Busy"/>
- <menu_item_call label="Parar la animación de mi avatar" name="Stop Animating My Avatar"/>
- <menu_item_call label="Recuperar las teclas" name="Release Keys"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Historial de mi cuenta..." name="Account History...">
- <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=es"/>
- </menu_item_call>
- <menu_item_call label="Administrar mi cuenta..." name="Manage My Account...">
- <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/>
- </menu_item_call>
- <menu_item_call label="Comprar L$..." name="Buy and Sell L$..."/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu_item_call label="Mi terreno..." name="My Land..."/>
- <menu_item_call label="Acerca del terreno..." name="About Land..."/>
- <menu_item_call label="Comprar terreno..." name="Buy Land..."/>
- <menu_item_call label="Region/Estado..." name="Region/Estate..."/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu label="Configuración del entorno" name="Environment Settings">
+ <menu_item_check label="Moverse" name="Movement Controls"/>
+ <menu_item_check label="Vista" name="Camera Controls"/>
+ <menu_item_call label="Acerca del terreno" name="About Land"/>
+ <menu_item_call label="Región/Estado" name="Region/Estate"/>
+ <menu_item_call label="Comprar terreno" name="Buy Land"/>
+ <menu_item_call label="Mi terreno" name="My Land"/>
+ <menu label="Mostrar" name="Land">
+ <menu_item_check label="Líneas de prohibición" name="Ban Lines"/>
+ <menu_item_check label="Balizas" name="beacons"/>
+ <menu_item_check label="Límites de las parcelas" name="Property Lines"/>
+ <menu_item_check label="Propietarios del terreno" name="Land Owners"/>
+ </menu>
+ <menu label="Hitos" name="Landmarks">
+ <menu_item_call label="Crear aquí un hito" name="Create Landmark Here"/>
+ <menu_item_call label="Fijar mi base aquí" name="Set Home to Here"/>
+ </menu>
+ <menu_item_call label="Base" name="Teleport Home"/>
+ <menu_item_check label="Minimapa" name="Mini-Map"/>
+ <menu_item_check label="Mapa del mundo" name="World Map"/>
+ <menu_item_call label="Foto" name="Take Snapshot"/>
+ <menu label="Sol" name="Environment Settings">
<menu_item_call label="Amanecer" name="Sunrise"/>
<menu_item_call label="Mediodía" name="Noon"/>
<menu_item_call label="Atardecer" name="Sunset"/>
<menu_item_call label="Medianoche" name="Midnight"/>
- <menu_item_call label="Volver a los valores por defecto de la región" name="Revert to Region Default"/>
- <menu_item_separator label="-----------" name="separator"/>
+ <menu_item_call label="Usar el horario del estado" name="Revert to Region Default"/>
<menu_item_call label="Editor del entorno" name="Environment Editor"/>
</menu>
</menu>
- <menu label="Herramientas" name="Tools">
- <menu label="Elegir una herramienta" name="Select Tool">
- <menu_item_call label="Visión" name="Focus"/>
- <menu_item_call label="Moverse" name="Move"/>
- <menu_item_call label="Modificar" name="Edit"/>
- <menu_item_call label="Crear" name="Create"/>
- <menu_item_call label="Terreno" name="Land"/>
- </menu>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Seleccionar sólo mis objetos" name="Select Only My Objects"/>
- <menu_item_check label="Seleccionar sólo objetos movibles" name="Select Only Movable Objects"/>
- <menu_item_check label="Seleccionar marcando los alrededores" name="Select By Surrounding"/>
- <menu_item_check label="Al seleccionar, mostrar los ocultos" name="Show Hidden Selection"/>
- <menu_item_check label="Al seleccionar, mostrar el radio de la luz" name="Show Light Radius for Selection"/>
- <menu_item_check label="Mostrar rayo indicador" name="Show Selection Beam"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_check label="Ajustar a la cuadrícula" name="Snap to Grid"/>
- <menu_item_call label="Ajustar a la cuadrícula los ejes X e Y" name="Snap Object XY to Grid"/>
- <menu_item_call label="Usar lo seleccionado como cuadrícula" name="Use Selection for Grid"/>
- <menu_item_call label="Opciones de la cuadrícula..." name="Grid Options..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_check label="Editar las partes enlazadas" name="Edit Linked Parts"/>
+ <menu label="Construir" name="BuildTools">
+ <menu_item_check label="Construir" name="Show Build Tools"/>
+ <menu label="Seleccionar la herramienta de construcción" name="Select Tool">
+ <menu_item_call label="Herramienta Visión" name="Focus"/>
+ <menu_item_call label="Herramienta Mover" name="Move"/>
+ <menu_item_call label="Herramienta Editar" name="Edit"/>
+ <menu_item_call label="Herramienta Crear" name="Create"/>
+ <menu_item_call label="Herramienta Terreno" name="Land"/>
+ </menu>
+ <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="Eliminar" 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>
<menu_item_call label="Enlazar" name="Link"/>
<menu_item_call label="Desenlazar" name="Unlink"/>
- <menu_item_separator label="-----------" name="separator4"/>
<menu_item_call label="Visión en lo seleccionado" name="Focus on Selection"/>
<menu_item_call label="Zoom en lo seleccionado" name="Zoom to Selection"/>
- <menu_item_call label="Comprar el objeto" name="Menu Object Take">
- <on_enable userdata="Comprar el objeto,Coger el objeto" name="EnableBuyOrTake"/>
- </menu_item_call>
- <menu_item_call label="Coger una copia" name="Take Copy"/>
- <menu_item_call label="Devolver una copia del objeto a los contenidos de donde salió" name="Save Object Back to Object Contents"/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Ver en una ventana los errores o alertas de los scripts" name="Show Script Warning/Error Window"/>
- <menu label="Recompilar los scripts en lo seleccionado" name="Recompile Scripts in Selection">
- <menu_item_call label="Mono" name="Mono"/>
- <menu_item_call label="LSL" name="LSL"/>
- </menu>
- <menu_item_call label="Reiniciar los scripts en lo seleccionado" name="Reset Scripts in Selection"/>
- <menu_item_call label="Definir los scripts a ejecutar en lo seleccionado" name="Set Scripts to Running in Selection"/>
- <menu_item_call label="Definir los scripts a no ejecutar en lo seleccionado" name="Set Scripts to Not Running in Selection"/>
+ <menu label="Objeto" name="Object">
+ <menu_item_call label="Comprar" name="Menu Object Take"/>
+ <menu_item_call label="Coger una copia" name="Take Copy"/>
+ <menu_item_call label="Guardar una copia en mi inventario" name="Save Object Back to My Inventory"/>
+ <menu_item_call label="Guardar una copia del objeto en los contenidos de donde salió" name="Save Object Back to Object Contents"/>
+ </menu>
+ <menu label="Scripts" name="Scripts">
+ <menu_item_call label="Recompilar los scripts (Mono)" name="Mono"/>
+ <menu_item_call label="Recompilar los scripts (LSL)" name="LSL"/>
+ <menu_item_call label="Reiniciar los scripts" name="Reset Scripts"/>
+ <menu_item_call label="Definir los scripts a ejecutar" name="Set Scripts to Running"/>
+ <menu_item_call label="Configurar scripts como no ejecutándose" name="Set Scripts to Not Running"/>
+ </menu>
+ <menu label="Opciones" name="Options">
+ <menu_item_check label="Editar las partes enlazadas" name="Edit Linked Parts"/>
+ <menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/>
+ <menu_item_check label="Mostrar los permisos avanzados" name="DebugPermissions"/>
+ <menu label="Selección" name="Selection">
+ <menu_item_check label="Seleccionar sólo mis objetos" name="Select Only My Objects"/>
+ <menu_item_check label="Seleccionar sólo los objetos movibles" name="Select Only Movable Objects"/>
+ <menu_item_check label="Seleccionar marcando los alrededores" name="Select By Surrounding"/>
+ </menu>
+ <menu label="Mostrar" name="Show">
+ <menu_item_check label="Al seleccionar, mostrar lo oculto" name="Show Hidden Selection"/>
+ <menu_item_check label="Al seleccionar, mostrar el radio de la luz" name="Show Light Radius for Selection"/>
+ <menu_item_check label="Mostrar el rayo indicador" name="Show Selection Beam"/>
+ </menu>
+ <menu label="Cuadrícula" name="Grid">
+ <menu_item_check label="Ajustar a la cuadrícula" name="Snap to Grid"/>
+ <menu_item_call label="Ajustar a la cuadrícula los ejes X e Y" name="Snap Object XY to Grid"/>
+ <menu_item_call label="Usar lo seleccionado como cuadrícula" name="Use Selection for Grid"/>
+ <menu_item_call label="Opciones de la cuadrícula" name="Grid Options"/>
+ </menu>
+ </menu>
+ <menu label="Seleccionar las partes enlazadas" name="Select Linked Parts">
+ <menu_item_call label="Seleccionar la parte siguiente" name="Select Next Part"/>
+ <menu_item_call label="Seleccionar la parte previa" name="Select Previous Part"/>
+ <menu_item_call label="Incluir la parte siguiente" name="Include Next Part"/>
+ <menu_item_call label="Incluir la parte previa" name="Include Previous Part"/>
+ </menu>
</menu>
<menu label="Ayuda" name="Help">
<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
<menu_item_call label="Tutorial" name="Tutorial"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Blog oficial..." name="Official Linden Blog..."/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Portal de programación..." name="Scripting Portal..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Denunciar una infracción..." name="Report Abuse..."/>
- <menu_item_call label="Choques, empujones, e impactos..." name="Bumps, Pushes &amp;amp; Hits..."/>
- <menu_item_call label="Medidor del lag" name="Lag Meter"/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu label="Informes de fallos" name="Bug Reporting">
- <menu_item_call label="Public Issue Tracker..." name="Public Issue Tracker..."/>
- <menu_item_call label="Ayuda del Public Issue Tracker..." name="Publc Issue Tracker Help..."/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu_item_call label="Informes de fallos - instrucciones..." name="Bug Reporing 101..."/>
- <menu_item_call label="Problemas de seguridad..." name="Security Issues..."/>
- <menu_item_call label="Wiki QA..." name="QA Wiki..."/>
- <menu_item_separator label="-----------" name="separator9"/>
- <menu_item_call label="Informar de un fallo..." name="Report Bug..."/>
- </menu>
- <menu_item_call label="Acerca de [APP_NAME]..." name="About Second Life..."/>
+ <menu_item_call label="Denunciar una infracción" name="Report Abuse"/>
+ <menu_item_call label="Informar de un fallo" name="Report Bug"/>
+ </menu>
+ <menu label="Avanzado" name="Advanced">
+ <menu_item_check label="Pasar al estado ausente tras 30 min." name="Go Away/AFK When Idle"/>
+ <menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/>
+ <menu_item_call label="Recargar las texturas" name="Rebake Texture"/>
+ <menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/>
+ <menu_item_check label="Limitar la distancia para Seleccionar" name="Limit Select Distance"/>
+ <menu_item_check label="Desactivar los límites de la cámara" name="Disable Camera Distance"/>
+ <menu_item_check label="Foto en Alta Resolución" name="HighResSnapshot"/>
+ <menu_item_check label="Silenciar el Guardar una foto" name="QuietSnapshotsToDisk"/>
+ <menu_item_check label="Comprimir las fotos para el disco duro" name="CompressSnapshotsToDisk"/>
+ <menu label="Herramientas de rendimiento" name="Performance Tools">
+ <menu_item_call label="Medidor de lag" name="Lag Meter"/>
+ <menu_item_check label="Estadísticas" name="Statistics Bar"/>
+ <menu_item_check label="Mostrar cuánto cuesta renderizar el avatar" name="Avatar Rendering Cost"/>
+ </menu>
+ <menu label="Realzando y Visibilidad" name="Highlighting and Visibility">
+ <menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/>
+ <menu_item_check label="Ocultar las partículas" name="Hide Particles"/>
+ <menu_item_check label="Ocultar lo seleccionado" name="Hide Selected"/>
+ <menu_item_check label="Realzar las transparencias" name="Highlight Transparent"/>
+ <menu_item_check label="Mostrar los HUD anexados" name="Show HUD Attachments"/>
+ <menu_item_check label="Mostrar el Punto de Mira en la vista subjetiva" name="ShowCrosshairs"/>
+ <menu_item_check label="Mostrar información complementaria del terreno" name="Land Tips"/>
+ </menu>
+ <menu label="Objetos representados" name="Rendering Types">
+ <menu_item_check label="Simple" name="Simple"/>
+ <menu_item_check label="Alfa" name="Alpha"/>
+ <menu_item_check label="Árbol" name="Tree"/>
+ <menu_item_check label="Avatares" name="Character"/>
+ <menu_item_check label="Superficie del terreno" name="SurfacePath"/>
+ <menu_item_check label="Cielo" name="Sky"/>
+ <menu_item_check label="Agua" name="Water"/>
+ <menu_item_check label="Terreno" name="Ground"/>
+ <menu_item_check label="volumen" name="Volume"/>
+ <menu_item_check label="Hierba" name="Grass"/>
+ <menu_item_check label="Nubes" name="Clouds"/>
+ <menu_item_check label="Partículas" name="Particles"/>
+ <menu_item_check label="Efectos de relieve" name="Bump"/>
+ </menu>
+ <menu label="Rasgos renderizados" name="Rendering Features">
+ <menu_item_check label="UI" name="UI"/>
+ <menu_item_check label="Seleccionado" name="Selected"/>
+ <menu_item_check label="Realzados" name="Highlighted"/>
+ <menu_item_check label="Texturas dinámicas" name="Dynamic Textures"/>
+ <menu_item_check label="Huellas" name="Foot Shadows"/>
+ <menu_item_check label="Niebla" name="Fog"/>
+ <menu_item_check label="Objetos flexibles" name="Flexible Objects"/>
+ </menu>
+ <menu_item_check label="Ejecutar múltiples temas" name="Run Multiple Threads"/>
+ <menu_item_call label="Vaciar la caché de grupo" name="ClearGroupCache"/>
+ <menu_item_check label="Vista subjetiva suavizada" name="Mouse Smoothing"/>
+ <menu_item_check label="Mostrar los MI en el chat" name="IMInChat"/>
+ <menu label="Atajos de teclado" name="Shortcuts">
+ <menu_item_check label="Buscar" name="Search"/>
+ <menu_item_call label="Recuperar las teclas" name="Release Keys"/>
+ <menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/>
+ <menu_item_check label="Correr siempre" name="Always Run"/>
+ <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="Guardar una foto" name="Snapshot to Disk"/>
+ <menu_item_call label="Vista subjetiva" name="Mouselook"/>
+ <menu_item_check label="Flycam del joystick" name="Joystick Flycam"/>
+ <menu_item_call label="Volver a la vista por defecto" name="Reset View"/>
+ <menu_item_call label="Mirar al último que habló" name="Look at Last Chatter"/>
+ <menu label="Seleccionar la herramienta de construcción" name="Select Tool">
+ <menu_item_call label="Herramienta Visión" name="Focus"/>
+ <menu_item_call label="Herramienta Mover" name="Move"/>
+ <menu_item_call label="Herramienta Editar" name="Edit"/>
+ <menu_item_call label="Herramienta Crear" name="Create"/>
+ <menu_item_call label="Herramienta Terreno" name="Land"/>
+ </menu>
+ <menu_item_call label="Acercar el zoom" name="Zoom In"/>
+ <menu_item_call label="Zoom por defecto" name="Zoom Default"/>
+ <menu_item_call label="Alejar el zoom" name="Zoom Out"/>
+ <menu_item_call label="Pantalla completa" name="Toggle Fullscreen"/>
+ </menu>
+ <menu_item_call label="Mostrar las configuraciones del depurador" name="Debug Settings"/>
+ <menu_item_check label="Mostrar el menú Desarrollar" name="Debug Mode"/>
+ </menu>
+ <menu label="Develop" name="Develop">
+ <menu label="Consoles" name="Consoles">
+ <menu_item_check label="Texture Console" name="Texture Console"/>
+ <menu_item_check label="Debug Console" name="Debug Console"/>
+ <menu_item_call label="Notifications Console" name="Notifications"/>
+ <menu_item_check label="Texture Size Console" name="Texture Size"/>
+ <menu_item_check label="Texture Category Console" name="Texture Category"/>
+ <menu_item_check label="Fast Timers" name="Fast Timers"/>
+ <menu_item_check label="Memory" name="Memory"/>
+ <menu_item_call label="Region Info to Debug Console" name="Region Info to Debug Console"/>
+ <menu_item_check label="Camera" name="Camera"/>
+ <menu_item_check label="Wind" name="Wind"/>
+ </menu>
+ <menu label="Show Info" name="Display Info">
+ <menu_item_check label="Show Time" name="Show Time"/>
+ <menu_item_check label="Show Render Info" name="Show Render Info"/>
+ <menu_item_check label="Show Color Under Cursor" name="Show Color Under Cursor"/>
+ <menu_item_check label="Show Updates to Objects" name="Show Updates"/>
+ </menu>
+ <menu label="Force an Error" name="Force Errors">
+ <menu_item_call label="Force Breakpoint" name="Force Breakpoint"/>
+ <menu_item_call label="FForce LLError And Crash" name="Force LLError And Crash"/>
+ <menu_item_call label="Force Bad Memory Access" name="Force Bad Memory Access"/>
+ <menu_item_call label="Force an Infinite Loop" name="Force Infinite Loop"/>
+ <menu_item_call label="Force Driver Crash" name="Force Driver Carsh"/>
+ <menu_item_call label="Force Software Exception" name="Force Software Exception"/>
+ <menu_item_call label="Force Disconnect Viewer" name="Force Disconnect Viewer"/>
+ <menu_item_call label="Simulate a Memory Leak" name="Memory Leaking Simulation"/>
+ </menu>
+ <menu label="Render Tests" name="Render Tests">
+ <menu_item_check label="Camera Offset" name="Camera Offset"/>
+ <menu_item_check label="Randomize Framerate" name="Randomize Framerate"/>
+ <menu_item_check label="Frame Test" name="Frame Test"/>
+ </menu>
+ <menu label="Rendering" name="Rendering">
+ <menu_item_check label="Ejes" name="Axes"/>
+ <menu_item_check label="Wireframe" name="Wireframe"/>
+ <menu_item_check label="Global Illumination" name="Global Illumination"/>
+ <menu_item_check label="Animation Textures" name="Animation Textures"/>
+ <menu_item_check label="Disable Textures" name="Disable Textures"/>
+ <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/>
+ <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/>
+ <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/>
+ </menu>
+ <menu label="Red" name="Network">
+ <menu_item_check label="Pause Avatar" name="AgentPause"/>
+ <menu_item_call label="Drop a Packet" name="Drop a Packet"/>
+ </menu>
+ <menu_item_call label="Bumps, Pushes &amp; Hits" name="Bumps, Pushes &amp;amp; Hits"/>
+ <menu label="World" name="World">
+ <menu_item_check label="Region Sun Override" name="Sim Sun Override"/>
+ <menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/>
+ <menu_item_check label="Fixed Weather" name="Fixed Weather"/>
+ <menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>
+ </menu>
+ <menu label="UI" name="UI">
+ <menu_item_call label="Web Browser Test" name="Web Browser Test"/>
+ <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/>
+ <menu_item_call label="Memory Stats" name="Memory Stats"/>
+ <menu_item_check label="Double-Click Auto-Pilot" name="Double-ClickAuto-Pilot"/>
+ <menu_item_check label="Debug Clicks" name="Debug Clicks"/>
+ <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/>
+ </menu>
+ <menu label="XUI" name="XUI">
+ <menu_item_call label="Reload Color Settings" name="Reload Color Settings"/>
+ <menu_item_call label="Show Font Test" name="Show Font Test"/>
+ <menu_item_call label="Load from XML" name="Load from XML"/>
+ <menu_item_call label="Save to XML" name="Save to XML"/>
+ <menu_item_check label="Show XUI Names" name="Show XUI Names"/>
+ <menu_item_call label="Send Test IMs" name="Send Test IMs"/>
+ </menu>
+ <menu label="Avatar" name="Character">
+ <menu label="Grab Baked Texture" name="Grab Baked Texture">
+ <menu_item_call label="Iris" name="Iris"/>
+ <menu_item_call label="Cabeza" name="Head"/>
+ <menu_item_call label="Upper Body" name="Upper Body"/>
+ <menu_item_call label="Lower Body" name="Lower Body"/>
+ <menu_item_call label="Falda" name="Skirt"/>
+ </menu>
+ <menu label="Character Tests" name="Character Tests">
+ <menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
+ <menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
+ </menu>
+ <menu_item_call label="Force Params to Default" name="Force Params to Default"/>
+ <menu_item_check label="Animation Info" name="Animation Info"/>
+ <menu_item_check label="Slow Motion Animations" name="Slow Motion Animations"/>
+ <menu_item_check label="Disable Level Of Detail" name="Disable LOD"/>
+ <menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/>
+ <menu_item_check label="Display Agent Target" name="Display Agent Target"/>
+ <menu_item_call label="Debug Avatar Textures" name="Debug Avatar Textures"/>
+ </menu>
+ <menu_item_check label="HTTP Textures" name="HTTP Textures"/>
+ <menu_item_check label="Console Window on next Run" name="Console Window"/>
+ <menu_item_check label="Show Admin Menu" name="View Admin Options"/>
+ <menu_item_call label="Solicitar estatus de Administrador" name="Request Admin Options"/>
+ <menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/>
+ </menu>
+ <menu label="Admin" name="Admin">
+ <menu label="Object">
+ <menu_item_call label="Coger una copia" name="Take Copy"/>
+ <menu_item_call label="Force Owner To Me" name="Force Owner To Me"/>
+ <menu_item_call label="Force Owner Permissive" name="Force Owner Permissive"/>
+ <menu_item_call label="Eliminar" name="Delete"/>
+ <menu_item_call label="Lock" name="Lock"/>
+ </menu>
+ <menu label="Parcel" name="Parcel">
+ <menu_item_call label="Force Owner To Me" name="Owner To Me"/>
+ <menu_item_call label="Set to Linden Content" name="Set to Linden Content"/>
+ <menu_item_call label="Claim Public Land" name="Claim Public Land"/>
+ </menu>
+ <menu label="Región" name="Region">
+ <menu_item_call label="Dump Temporary Asset Data" name="Dump Temp Asset Data"/>
+ <menu_item_call label="Save Region State" name="Save Region State"/>
+ </menu>
+ <menu_item_call label="God Tools" name="God Tools"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/es/mime_types_linux.xml b/indra/newview/skins/default/xui/es/mime_types_linux.xml
new file mode 100644
index 0000000000..77d05934f4
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+ <widgetset name="web">
+ <label name="web_label">
+ Contenido web
+ </label>
+ <tooltip name="web_tooltip">
+ Este sitio tiene contenido web
+ </tooltip>
+ <playtip name="web_playtip">
+ Mostrar el contenido web
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Película
+ </label>
+ <tooltip name="movie_tooltip">
+ Aquí puede verse una película
+ </tooltip>
+ <playtip name="movie_playtip">
+ Ver la película
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Imagen
+ </label>
+ <tooltip name="image_tooltip">
+ En este sitio hay una imagen
+ </tooltip>
+ <playtip name="image_playtip">
+ Ver la imagen de esta localización
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Audio
+ </label>
+ <tooltip name="audio_tooltip">
+ En este sitio hay audio
+ </tooltip>
+ <playtip name="audio_playtip">
+ Oír el audio de este sitio
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Streaming en &apos;Real Time&apos;
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Vacío -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Vacío -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Audio
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Vídeo
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Imagen
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Película (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="application/javascript">
+ <label name="application/javascript_label">
+ Javascript
+ </label>
+ </mimetype>
+ <mimetype name="application/ogg">
+ <label name="application/ogg_label">
+ Audio/Vídeo Ogg
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ Documento PDF
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Documento Postscript
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Texto enriquecido (RTF)
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Synchronized Multimedia Integration Language (SMIL)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Página web (XHTML)
+ </label>
+ </mimetype>
+ <mimetype name="application/x-director">
+ <label name="application/x-director_label">
+ Macromedia Director
+ </label>
+ </mimetype>
+ <mimetype name="audio/mid">
+ <label name="audio/mid_label">
+ Audio (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Audio (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Audio (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Audio (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Imagen (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Imagen (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Imagen (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Imagen (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Imagen (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Imagen (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Página web
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Texto
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Película (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Película (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Película (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Película (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Película (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Película (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/es/mime_types_mac.xml b/indra/newview/skins/default/xui/es/mime_types_mac.xml
new file mode 100644
index 0000000000..77d05934f4
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+ <widgetset name="web">
+ <label name="web_label">
+ Contenido web
+ </label>
+ <tooltip name="web_tooltip">
+ Este sitio tiene contenido web
+ </tooltip>
+ <playtip name="web_playtip">
+ Mostrar el contenido web
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Película
+ </label>
+ <tooltip name="movie_tooltip">
+ Aquí puede verse una película
+ </tooltip>
+ <playtip name="movie_playtip">
+ Ver la película
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Imagen
+ </label>
+ <tooltip name="image_tooltip">
+ En este sitio hay una imagen
+ </tooltip>
+ <playtip name="image_playtip">
+ Ver la imagen de esta localización
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Audio
+ </label>
+ <tooltip name="audio_tooltip">
+ En este sitio hay audio
+ </tooltip>
+ <playtip name="audio_playtip">
+ Oír el audio de este sitio
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Streaming en &apos;Real Time&apos;
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Vacío -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Vacío -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Audio
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Vídeo
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Imagen
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Película (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="application/javascript">
+ <label name="application/javascript_label">
+ Javascript
+ </label>
+ </mimetype>
+ <mimetype name="application/ogg">
+ <label name="application/ogg_label">
+ Audio/Vídeo Ogg
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ Documento PDF
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Documento Postscript
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Texto enriquecido (RTF)
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Synchronized Multimedia Integration Language (SMIL)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Página web (XHTML)
+ </label>
+ </mimetype>
+ <mimetype name="application/x-director">
+ <label name="application/x-director_label">
+ Macromedia Director
+ </label>
+ </mimetype>
+ <mimetype name="audio/mid">
+ <label name="audio/mid_label">
+ Audio (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Audio (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Audio (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Audio (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Imagen (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Imagen (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Imagen (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Imagen (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Imagen (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Imagen (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Página web
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Texto
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Película (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Película (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Película (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Película (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Película (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Película (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 6b58bbea47..08b0ab1720 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -9,74 +9,33 @@
<global name="implicitclosebutton">
Cerrar
</global>
- <template name="okbutton">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- </form>
- </template>
-
- <template name="okignore">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- <ignore text="$ignoretext"/>
- </form>
- </template>
-
- <template name="okcancelbuttons">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- <button
- name="Cancel"
- text="$notext"/>
- </form>
- </template>
-
- <template name="okcancelignore">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- <button
- name="Cancel"
- text="$notext"/>
- <ignore text="$ignoretext"/>
- </form>
- </template>
-
- <template name="okhelpbuttons">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- <button
- name="Help"
- text="$helptext"/>
- </form>
- </template>
-
- <template name="yesnocancelbuttons">
- <form>
- <button
- name="Yes"
- text="$yestext"/>
- <button
- name="No"
- text="$notext"/>
- <button
- name="Cancel"
- text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Mensaje de alerta desconocida" name="MissingAlert">
- Su versión de [APP_NAME] no sabe cómo mostrar el mensaje de alerta que acaba de recibir.
-
-Detalles del error: no se ha encontrado en notifications.xml la alerta llamada &apos;[_NAME]&apos;.
+ <template name="okbutton">
+ <form>
+ <button name="OK" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore"/>
+ <template name="okcancelbuttons">
+ <form>
+ <button name="Cancel" text="$notext"/>
+ </form>
+ </template>
+ <template name="okcancelignore"/>
+ <template name="okhelpbuttons">
+ <form>
+ <button name="Help" text="$helptext"/>
+ </form>
+ </template>
+ <template name="yesnocancelbuttons">
+ <form>
+ <button name="Yes" text="$yestext"/>
+ <button name="No" text="$notext"/>
+ </form>
+ </template>
+ <notification functor="GenericAcknowledge" label="Mensaje de notificación desconocida" name="MissingAlert">
+ Tu versión de [APP_NAME] no sabe cómo mostrar la notificación que acaba de recibir. Por favor, comprueba que tienes instalado el último Visor.
+
+Detalles del error: la notificación de nombre &apos;[_NAME]&apos; no se ha encontrado en notifications.xml.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="FloaterNotFound">
@@ -97,24 +56,18 @@ Detalles del error: no se ha encontrado en notifications.xml la alerta llamada &
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sí"/>
</notification>
<notification name="BadInstallation">
- Ha habido un error al actualizar [APP_NAME]. Por favor, descargue la última versión desde secondlife.com.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ Ha habido un error actualizando [APP_NAME]. Por favor, [http://get.secondlife.com descarga la última versión] del Visor.
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="LoginFailedNoNetwork">
- Error de red: no se ha podido conectar.
+ No se puede conectar con [SECOND_LIFE_GRID].
&apos;[DIAGNOSTIC]&apos;
-Por favor, revise su conexión a internet.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+Asegúrate de que tu conexión a internet está funcionando adecuadamente.
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MessageTemplateNotFound">
No se ha encontrado la plantilla de mensaje [PATH].
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="WearableSave">
¿Guardar los cambios en las ropas o partes del cuerpo actuales?
@@ -173,7 +126,7 @@ Por favor, revise su conexión a internet.
Va a añadir miembros al rol de [ROLE_NAME].
No podrá removérseles de ese rol, sino que deberán renunciar a él por sí mismos.
¿Está seguro de que quiere seguir?
- <usetemplate ignoretext="Cuando se añaden miembros del grupo al rol de propietario" name="okcancelignore" notext="No" yestext="Sí"/>
+ <usetemplate ignoretext="Confirma que vas a añadir un nuevo Propietario al grupo" name="okcancelignore" notext="No" yestext="Sí"/>
</notification>
<notification name="AssignDangerousActionWarning">
Va a añadir la capacidad &apos;[ACTION_NAME]&apos; al rol &apos;[ROLE_NAME]&apos;.
@@ -191,58 +144,8 @@ No podrá removérseles de ese rol, sino que deberán renunciar a él por sí mi
¿Añadir esta capacidad a &apos;[ROLE_NAME]&apos;?
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
</notification>
- <notification name="ClickPublishHelpLand">
- Seleccionar &apos;Publicar en la web&apos;
-Marcando este ítem, se mostrará:
-- esta parcela en los resultados de la búsqueda
-- los objetos públicos de esta parcela
-- esta parcela en la búsqueda de la web
- </notification>
- <notification name="ClickSoundHelpLand">
- Los media y la música sólo pueden disfrutarse dentro de la parcela. Según el nivel de calificación de los residentes, las opciones de sonido y de voz pueden ceñirse a la parcela u oírse fuera de ella. ¿Quiere ir a la Base de Conocimientos para aprender más sobre cómo configurar estas opciones?
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=5046
- </url>
- <usetemplate
- name="okcancelbuttons"
- yestext="Ir a la Base de Conocimientos"
- notext="Cerrar" />
- </notification>
- <notification name="ClickSearchHelpAll">
- Los resultados de la búsqueda se organizan según la pestaña en que esté, su nivel de calificación, la categoría elegida, y otros factores. Para más detalles, vea, por favor, la Base de Conocimientos.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=4722
- </url>
- <usetemplate
- name="okcancelbuttons"
- yestext="Ir a la Base de Conocimientos"
- notext="Cerrar" />
- </notification>
- <notification name="ClickPublishHelpLandDisabled">
- No puede hacer que esta parcela aparezca en la búsqueda, porque está situada en una región que lo prohíbe.
- </notification>
- <notification name="ClickPublishHelpAvatar">
- Al seleccionar &apos;Mostrar en la búsqueda&apos; se mostrará:
-- mi perfil en los resultados de la búsqueda
-- un enlace a mi perfil en las páginas públicas de grupo
- </notification>
- <notification name="ClickPartnerHelpAvatar">
- Puede proponérselo a otro residente o disolver su relación con un/a compañero/a en el sitio web de [SECOND_LIFE].
-
-¿Ir al sitio web de [SECOND_LIFE] para tener más información sobre este asunto?
- <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir a la página"/>
- </notification>
- <notification name="ClickUploadHelpPermissions">
- Sus permisos por defecto no funcionarán en regiones antiguas.
- </notification>
- <notification name="ClickWebProfileHelpAvatar">
- Si este residente ha indicado una URL para mostrar un perfil en la web, usted puede:
- * Pulsar &apos;Cargar&apos; para ver la página en esta pestaña web.
- * Pulsar Cargar &gt; &apos;En un navegador externo&apos; para ver la página en su navegador por defecto.
- * Pulsar Cargar &gt; &apos;URL Inicio&apos; para volver al perfil en la web de este residente si usted ha estado navegando por otros sitios.
-
-Cuando esté viendo su propio perfil, puede introducir cualquier URL como su perfil web, y pulsar OK para fijarla.
-Los demás residentes podrán visitar la URL que usted haya elegido cuando vean su perfil.
+ <notification name="ClickUnimplemented">
+ Lo sentimos, aún no está implementado.
</notification>
<notification name="JoinGroupCanAfford">
Entrar a este grupo cuesta [COST] L$.
@@ -253,6 +156,12 @@ Los demás residentes podrán visitar la URL que usted haya elegido cuando vean
Entrar a este grupo cuesta [COST] L$.
No tiene dinero suficiente para entrar.
</notification>
+ <notification name="CreateGroupCost">
+ Crear este grupo te costará 100 L$.
+Los grupos necesitan más de un miembro. Si no, son borrados permanentemente.
+Por favor, invita a miembros en las próximas 48 horas.
+ <usetemplate canceltext="Cancelar" name="okcancelbuttons" notext="Cancelar" yestext="Crear un grupo por 100 L$"/>
+ </notification>
<notification name="LandBuyPass">
Por [COST] L$ puede entrar a este terreno (&apos;[PARCEL_NAME]&apos;) durante [TIME] horas. ¿Comprar un pase?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
@@ -267,10 +176,10 @@ Su precio de venta será de [SALE_PRICE] L$, y se autorizará la compra sólo a
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="ConfirmLandSaleToAnyoneChange">
- ATENCIÓN: Al pulsar &apos;vender a cualquiera&apos;, su terreno estará disponible para toda la comunidad de [SECOND_LIFE], incluso para quienes no están en esta región.
+ ATENCIÓN: Marcando &apos;vender a cualquiera&apos; hace que tu terreno esté disponible para toda la comunidad de [SECOND_LIFE], incluso para quienes no están en esta región.
-Los [LAND_SIZE] m² de terreno seleccionados se van a poner a la venta.
-Su precio de venta será de [SALE_PRICE] L$, y se autorizará la compra a [NAME].
+Los [LAND_SIZE] m² seleccionados de terreno se van a poner a la venta.
+El precio de venta será de [SALE_PRICE] L$ y se autoriza la compra a [NAME].
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="ReturnObjectsDeededToGroup">
@@ -330,6 +239,12 @@ Objetos: [N]
Toda esta región tiene activado el &apos;daño&apos;.
Para que funcionen las armas los scripts deben estar activados.
</notification>
+ <notification name="MultipleFacesSelected">
+ Están seleccionadas varias caras.
+Si sigues con esta acción, en las diferentes caras del objeto aparecerán distintas peticiones de los media.
+Para colocar los media en una sola cara, marca la opción Elegir la cara y pulsa en la cara adecuada del objeto, y luego pulsa Añadir.
+ <usetemplate ignoretext="Los media se configurarán en las varias caras seleccionadas" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ </notification>
<notification name="MustBeInParcel">
Para configurar el Punto de llegada de la parcela,
debe estar usted dentro de ella.
@@ -366,6 +281,10 @@ La carpeta del vestuario contiene partes del cuerpo, u objetos a anexar o que no
<notification name="CannotWearTrash">
No puede vestirse ropas o partes del cuerpo que están en la Papelera
</notification>
+ <notification name="MaxAttachmentsOnOutfit">
+ No se puede anexar el objeto.
+Se ha superado el límite máximo de [MAX_ATTACHMENTS] objetos. Por favor, quítate alguno.
+ </notification>
<notification name="CannotWearInfoNotComplete">
No puede vestirse este ítem porque aún no se ha cargado. Por favor, reinténtelo en un minuto.
</notification>
@@ -380,17 +299,22 @@ Necesita una cuenta para entrar en [SECOND_LIFE]. ¿Quiere crear una ahora?
<usetemplate name="okcancelbuttons" notext="Volver a intentarlo" yestext="Crear una cuenta nueva"/>
</notification>
<notification name="AddClassified">
- Los anuncios clasificados aparecen durante una semana en la sección &apos;Clasificados&apos; del directorio Buscar y en [http://secondlife.com/community/classifieds/?lang=es-ES secondlife.com].
-Rellene su anuncio y pulse &apos;Publicar...&apos; para añadirlo al directorio.
-Cuando pulse Publicar, se le preguntará por un precio a pagar.
-El pagar más hará que su anuncio aparezca más arriba en la lista, y que también aparezca más arriba cuando la gente busque por palabras clave.
- <usetemplate ignoretext="Cuando se añade un nuevo Clasificado" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ Los anuncios clasificados aparecen durante una semana en la sección &apos;Clasificados&apos; de la búsqueda y en [http://secondlife.com/community/classifieds secondlife.com].
+Rellena tu anuncio y pulsa &apos;Publicar...&apos; para añadirlo al directorio.
+Cuando pulses Publicar, se te preguntará por un precio a pagar.
+El pagar más hará que tu anuncio aparezca más arriba en la lista, y que también aparezca más arriba en la lista cuando la gente busque por palabras clave.
+ <usetemplate ignoretext="Cómo crear un anuncio clasificado nuevo." name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="DeleteClassified">
¿Borrar el clasificado &apos;[NAME]&apos;?
No se reembolsan las cuotas pagadas.
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
+ <notification name="DeleteMedia">
+ Has elegido borrar los media asociados a esta cara.
+¿Estás seguro de que quieres continuar?
+ <usetemplate ignoretext="Confirmar antes de borrar los media de un objeto" name="okcancelignore" notext="No" yestext="Sí"/>
+ </notification>
<notification name="ClassifiedSave">
¿Guardar los cambios en el clasificado [NAME]?
<usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardar" yestext="Guardar"/>
@@ -421,17 +345,17 @@ No se reembolsan las cuotas pagadas.
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="CacheWillClear">
- La caché se limpiará cuando reinicie [APP_NAME].
+ La caché se limpiará cuando reinices [APP_NAME].
</notification>
<notification name="CacheWillBeMoved">
- La caché se moverá cuando reinicie [APP_NAME].
-Nota: esto limpiará la caché.
+ La caché se moverá cuando reinicies [APP_NAME].
+Nota: esto vaciará la caché.
</notification>
<notification name="ChangeConnectionPort">
- Las configuraciones del puerto tendrán efecto cuando reinicie [APP_NAME].
+ La configuración del puerto tendrá efecto cuando reinicies [APP_NAME].
</notification>
<notification name="ChangeSkin">
- La nueva apariencia se verá cuando reinicie [APP_NAME].
+ La nueva apariencia la verás cuando reinicies [APP_NAME].
</notification>
<notification name="GoToAuctionPage">
¿Ir a la página web de [SECOND_LIFE] para ver los detalles de la subasta
@@ -480,6 +404,11 @@ El objeto debe de haber sido borrado o estar fuera de rango (&apos;out of range&
<notification name="SaveBytecodeFailReason">
Al guardar un script compilado, hubo un problema por: [REASON]. Por favor, reintente guardarlo más tarde..
</notification>
+ <notification name="StartRegionEmpty">
+ Perdon, no está definida tu Posición inicial.
+Por favor, escribe el nombre de la región en el cajetín de Posición inicial, o elige para esa posición Mi Base o Mi última posición.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
<notification name="CouldNotStartStopScript">
No se ha podido correr o parar el script porque no se pudo encontrar el objeto que incluye.
El objeto debe de haber sido borrado o estar fuera de rango (&apos;out of range&apos;)..
@@ -498,23 +427,21 @@ Para más información, ¿quiere visitar [_URL]?
<url name="url" option="0">
http://secondlife.com/support/sysreqs.php?lang=es
</url>
- <usetemplate ignoretext="Cuando se detecte hardware no adecuado" name="okcancelignore" notext="No" yestext="Sí"/>
+ <usetemplate ignoretext="El hardware de mi ordenador no está admitido" name="okcancelignore" notext="No" yestext="Sí"/>
</notification>
<notification name="UnknownGPU">
- En este momento, desconocemos la tarjeta gráfica de su sistema.
-Con frecuencia, esto se debe a hardware nuevo que no hemos podido revisar aún.
-Es muy probable que [APP_NAME] funcione correctamente, pero deberá ajustar sus configuraciones gráficas a lo que sea más apropiado.
-(Menú Editar &gt; Preferencias &gt; Gráficos).
+ Tu sistema tiene una tarjeta gráfica desconocida, hoy por hoy, para [APP_NAME].
+Suele suceder con hardware nuevo aún no probado con [APP_NAME]. Lo más probable es que [APP_NAME] se ejecute correctamente, pero debes ajustar tus preferencias gráficas a niveles más adecuados.
+(Yo &gt; Preferencias &gt; Gráficos).
<form name="form">
- <ignore name="ignore" text="Cuando se detecte una tarjeta gráfica desconocida"/>
+ <ignore name="ignore" text="No se ha podido identificar mi tarjeta gráfica"/>
</form>
</notification>
<notification name="DisplaySettingsNoShaders">
- [APP_NAME] se cayó al inicializar los drivers gráficos.
-La calidad de los gráficos deberá establecerse en un nivel bajo para prevenir algunos errores frecuentes en los drivers.
-Esto desactivará algunas opciones gráficas.
-Le recomendamos que actualice los drivers de su tarjeta gráfica.
-La calidad gráfica puede configurarse en Preferencias &gt; Gráficos.
+ [APP_NAME] se cae al iniciar los &apos;driver&apos; gráficos.
+La calidad de los gráficos se configurará en Baja para prevenir algunos errores comunes de los gráficos. Esto desactivará algunas posibilidades gráficas.
+Te recomendamos actualizar los &apos;drivers&apos; de tu tarjeta gráfica.
+La calidad gráfica puede ajustarse en Preferencias &gt; Gráficos.
</notification>
<notification name="RegionNoTerraforming">
En la región [REGION] no se permite modificar el terreno.
@@ -569,6 +496,9 @@ Temporalmente, será incapaz de moverse, usar el chat, o interactuar con el mund
¿Expulsar a [AVATAR_NAME] de su terreno?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar"/>
</notification>
+ <notification name="EjectAvatarFromGroup">
+ Has expulsado a [AVATAR_NAME] del grupo [GROUP_NAME]
+ </notification>
<notification name="AcquireErrorTooManyObjects">
ERROR &apos;ACQUIRE&apos;: Hay demasiados objetos seleccionados.
</notification>
@@ -580,7 +510,7 @@ misma región.
<notification name="PromptGoToCurrencyPage">
[EXTRA]
-¿Ir a [_URL] para informarse sobre la compra de L$?
+¿Ir a [_URL] para informarte sobre la compra de L$?
<url name="url">
http://secondlife.com/app/currency/?lang=es-ES
</url>
@@ -671,12 +601,15 @@ Podría ser [VALIDS]
No se ha podido crear el archivo de salida: [FILE]
</notification>
<notification name="DoNotSupportBulkAnimationUpload">
- Actualmente, no ofrecemos la posibilidad de subida masiva de archivos de animación.
+ Actualmente, [APP_NAME] no admite la subida masiva de animaciones.
</notification>
<notification name="CannotUploadReason">
No se ha podido subir [FILE] por la siguiente razón: [REASON]
Por favor, inténtelo más tarde.
</notification>
+ <notification name="LandmarkCreated">
+ Se ha añadido &quot;[LANDMARK_NAME]&quot; a tu carpeta [FOLDER_NAME].
+ </notification>
<notification name="CannotCreateLandmarkNotOwner">
No puede crear un hito aquí porque el propietario del terreno no lo permite.
</notification>
@@ -699,6 +632,9 @@ Seleccione objetos con scripts.
Seleccione objetos con scripts en los que usted tenga permiso para modificarlos.
</notification>
+ <notification name="CannotOpenScriptObjectNoMod">
+ Imposible abrir el script del objeto sin modificar los permisos.
+ </notification>
<notification name="CannotSetRunningSelectObjectsNoScripts">
No se puede configurar ningún script como &apos;ejecutándose&apos;.
@@ -726,48 +662,45 @@ por lo que no se ha hecho la búsqueda.
No se ha podido teleportar.
[REASON]
</notification>
-
- <notification name="invalid_tport">
-Ha habido un problema al procesar su petición de teleporte. Debe volver a iniciar sesión para poder teleportarse. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico:
-www.secondlife.com/support
- </notification>
- <notification name="invalid_region_handoff">
-Ha habido un problema al procesar su paso a otra región. Debe volver a iniciar sesión para poder pasar de región a región. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico:
-www.secondlife.com/support
- </notification>
- <notification name="blocked_tport">
-Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema.
- </notification>
- <notification name="nolandmark_tport">
-Lo sentimos, pero el sistema no ha podido localizar el destino de este hito.
- </notification>
- <notification name="timeout_tport">
-Lo sentimos, pero el sistema no ha podido completar el teleporte.
+ <notification name="invalid_tport">
+ Ha habido un problema al procesar tu petición de teleporte. Debes volver a iniciar sesión antes de poder teleportarte de nuevo.
+Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
+ </notification>
+ <notification name="invalid_region_handoff">
+ Ha habido un problema al procesar tu paso a otra región. Debes volver a iniciar sesión para poder pasar de región a región.
+Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
+ </notification>
+ <notification name="blocked_tport">
+ Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema.
+ </notification>
+ <notification name="nolandmark_tport">
+ Lo sentimos, pero el sistema no ha podido localizar el destino de este hito.
+ </notification>
+ <notification name="timeout_tport">
+ Lo sentimos, pero el sistema no ha podido completar el teleporte.
Vuelva a intentarlo en un momento.
- </notification>
- <notification name="noaccess_tport">
-Lo sentimos, pero usted no tiene acceso al destino de este teleporte.
- </notification>
- <notification name="missing_attach_tport">
-Aún no han llegado sus objetos anexados. Espere unos segundos más o desconéctese y vuelva a iniciar sesión antes de teleportarse.
- </notification>
- <notification name="too_many_uploads_tport">
-La cola de espera en esta región está actualmente obstruida, por lo que su petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelva a intentarlo en unos minutos o vaya a una zona menos ocupada.
- </notification>
- <notification name="expired_tport">
-Lo sentimos, pero el sistema no ha podido atender a su petición de teleporte en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos.
- </notification>
- <notification name="expired_region_handoff">
-Lo sentimos, pero el sistema no ha podido completar su paso a otra región en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos.
- </notification>
- <notification name="no_host">
-Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelva a intentarlo en unos pocos minutos.
- </notification>
- <notification name="no_inventory_host">
-En estos momentos no está disponible el sistema del inventario.
- </notification>
-
-
+ </notification>
+ <notification name="noaccess_tport">
+ Lo sentimos, pero usted no tiene acceso al destino de este teleporte.
+ </notification>
+ <notification name="missing_attach_tport">
+ Aún no han llegado sus objetos anexados. Espere unos segundos más o desconéctese y vuelva a iniciar sesión antes de teleportarse.
+ </notification>
+ <notification name="too_many_uploads_tport">
+ La cola de espera en esta región está actualmente obstruida, por lo que su petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelva a intentarlo en unos minutos o vaya a una zona menos ocupada.
+ </notification>
+ <notification name="expired_tport">
+ Lo sentimos, pero el sistema no ha podido atender a su petición de teleporte en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos.
+ </notification>
+ <notification name="expired_region_handoff">
+ Lo sentimos, pero el sistema no ha podido completar su paso a otra región en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos.
+ </notification>
+ <notification name="no_host">
+ Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelva a intentarlo en unos pocos minutos.
+ </notification>
+ <notification name="no_inventory_host">
+ En estos momentos no está disponible el sistema del inventario.
+ </notification>
<notification name="CannotSetLandOwnerNothingSelected">
No se ha podido configurar el propietario del terreno:
no se ha seleccionado una parcela.
@@ -804,7 +737,7 @@ no se ha seleccionado una parcela.
no se ha podido encontrar en qué región está.
</notification>
<notification name="CannotCloseFloaterBuyLand">
- No puede cerrar la ventana de Comprar terreno hasta que [APP_NAME] calcule el precio de esta transacción.
+ No puedes cerrar la ventana de Comprar terreno hasta que [APP_NAME] calcule el precio de esta transacción.
</notification>
<notification name="CannotDeedLandNothingSelected">
No se ha podido transferir el terreno:
@@ -825,11 +758,11 @@ ha seleccionado varias parcelas.
Inténtelo seleccionando sólo una.
</notification>
<notification name="ParcelCanPlayMedia">
- Esta localización puede mostrar media en streaming.
+ Esta localización puede ejecutar media en streaming.
Los media en streaming necesitan una conexión a internet rápida.
Si hay media, ¿reproducirlos en streaming?
-(Puede cambiar más adelante esta opción en Preferencias &gt; Audio y Vídeo).
+(Puedes cambiar más adelante esta opción en Preferencias &gt; Privacidad).
<usetemplate name="okcancelbuttons" notext="Desactivar" yestext="Ejecutar los media"/>
</notification>
<notification name="CannotDeedLandWaitingForServer">
@@ -928,17 +861,6 @@ Deberá reconfigurar el nombre y las opciones de la nueva parcela.
¿Unir el terreno?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
- <notification name="ShowOwnersHelp">
- Mostrar los propietarios:
-El color de las parcelas indica el tipo de propietario.
-
-Verde = Su terreno
-Agua = Terreno de sus grupos
-Rojo = Propiedad de otros
-Amarillo = En venta
-Morado = Para subasta
-Gris = Público
- </notification>
<notification name="ConfirmNotecardSave">
Esta nota debe guardarse antes de que se la pueda copiar o ver. ¿Guardar la nota?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
@@ -961,12 +883,12 @@ Gris = Público
</notification>
<notification name="CannotSaveToAssetStore">
No se ha podido guardar [NAME] en la base central de almacenamiento.
-Esto es, generalmente, un fallo temporal. Por favor, reinténtelo en unos pocos minutos.
+Generalmente, esto es un fallo pasajero. Por favor, personaliza y guarda el ítem de aquí a unos minutos.
</notification>
<notification name="YouHaveBeenLoggedOut">
- Se ha cerrado su sesión en [SECOND_LIFE]:
+ Se te ha cerrado la sesión en [SECOND_LIFE]:
[MESSAGE]
-Aún puede ver el chat y los MI existentes pulsando &apos;Ver MI y Chat&apos;. Si no, pulse &apos;Salir&apos; para dejar inmediatemente [APP_NAME].
+Aún puedes ver el chat y los MI existentes pulsando &apos;Ver MI y Chat&apos;. Si no, pulsa &apos;Salir&apos; para dejar ahora [SECOND_LIFE].
<usetemplate name="okcancelbuttons" notext="Salir" yestext="Ver MI y Chat"/>
</notification>
<notification name="OnlyOfficerCanBuyLand">
@@ -1126,36 +1048,37 @@ Si se vende una parcela transferida, el precio de venta se dividirá a partes ig
<notification name="ErrorMessage">
[ERROR_MESSAGE]
</notification>
- <notification name="AvatarMoved">
- Su localización [TYPE] no está disponible en estos momentos. [HELP]
-Ha sido llevado a una región cercana.
- </notification>
<notification name="AvatarMovedDesired">
- La localización que ha elegido no está disponible en estos momentos.
-Ha sido llevado a una región cercana.
+ La localización que querías no está disponible en estos momentos.
+Se te ha llevado a una región cercana.
</notification>
<notification name="AvatarMovedLast">
- Su última posición no está disponible en estos momentos.
-Ha sido llevado a una región cercana.
+ En estos momentos no está disponible tu última posición.
+Se te ha llevado a una región cercana.
+ </notification>
+ <notification name="AvatarMovedHome">
+ En estos momentos no está disponible tu Base.
+Se te ha llevado a una región cercana.
+Quizá quieras configurar una nueva posición para tu Base.
</notification>
<notification name="ClothingLoading">
- Aún está descargándose su ropa.
-Puede usar normalmente [SECOND_LIFE], los demás residentes le verán correctamente.
+ Aún está descargándose tu ropa.
+Puedes usar [SECOND_LIFE] de forma normal; los demás residentes te verán correctamente.
<form name="form">
- <ignore name="ignore" text="Cuando está llevando mucho tiempo descargar la ropa"/>
+ <ignore name="ignore" text="La ropa está tardando mucho en descargarse"/>
</form>
</notification>
<notification name="FirstRun">
- Se ha completado la instalación de [APP_NAME].
+ Se ha completado la instalación de [SECOND_LIFE].
-Si esta es la primera vez que usa [SECOND_LIFE], deberá crear una cuenta antes de que pueda iniciar una sesión.
-¿Volver a [https://join.secondlife.com/index.php?lang=es-ES secondlife.com] para crear una cuenta nueva?
+Si es la primera vez que usas [SECOND_LIFE], debes crear una cuenta antes de poder iniciar una sesión.
+¿Volver a [http://join.secondlife.com secondlife.com] para crear una cuenta nueva?
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Cuenta nueva..."/>
</notification>
<notification name="LoginPacketNeverReceived">
- Tenemos problemas de conexión. Puede deberse a un problema de su conexión a internet o de los servidores de [SECOND_LIFE].
+ Tenemos problemas de conexión. Puede deberse a un problema de tu conexión a internet o de [SECOND_LIFE_GRID].
-Puede revisar su conexión a internet y volver a intentarlo en unos minutos. Pulse Ayuda para conectarse a nuestro sitio de Sporte, o pulse Teleportar para intentar teleportarse a su Base.
+Puedes revisar tu conexión a internet y volver a intentarlo en unos minutos, pulsar Ayuda para conectarte a [SUPPORT_SITE], o pulsar Teleporte para intentar teleportarte a tu Base.
<url name="url">
http://es.secondlife.com/support/
</url>
@@ -1178,10 +1101,10 @@ Puede cambiar más adelante su elección.
[NAME] cuesta [PRICE] L$. No tiene suficientes L$ para hacer eso.
</notification>
<notification name="GrantedModifyRights">
- Se le ha concedido el privilegio de modificar los objetos de [FIRST_NAME] [LAST_NAME].
+ [NAME] te ha dado permiso para modificar sus objetos.
</notification>
<notification name="RevokedModifyRights">
- Ha sido revocado su privilegio de modificar los objetos de [FIRST_NAME] [LAST_NAME].
+ Ha sido revocado tu privilegio de modificar los objetos de [NAME]
</notification>
<notification name="FlushMapVisibilityCaches">
Esto limpiará las caches del mapa en esta región.
@@ -1260,93 +1183,107 @@ Por favor, ponga en venta el objeto y reinténtelo.
[DOWNLOAD_PATH].
</notification>
<notification name="DownloadWindowsMandatory">
- Está disponible una versión nueva de [APP_NAME].
+ Hay una versión nueva de [SECOND_LIFE] disponible.
[MESSAGE]
-Debe descargar esta actualización para usar [APP_NAME].
+Debes descargar esta actualización para usar [SECOND_LIFE].
<usetemplate name="okcancelbuttons" notext="Salir" yestext="Descargarla"/>
</notification>
<notification name="DownloadWindows">
- Está disponible una versión actualizada de [APP_NAME].
+ Hay una versión actualizada de [SECOND_LIFE] disponible.
[MESSAGE]
-Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad.
+Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad.
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/>
</notification>
<notification name="DownloadWindowsReleaseForDownload">
- Está disponible una versión actualizada de [APP_NAME].
+ Hay una versión actualizada de [SECOND_LIFE] disponible.
[MESSAGE]
-Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad.
+Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad.
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/>
</notification>
+ <notification name="DownloadLinuxMandatory">
+ Hay una versión nueva de [SECOND_LIFE] disponible.
+[MESSAGE]
+Debes descargar esta actualización para usar [SECOND_LIFE].
+ <usetemplate name="okcancelbuttons" notext="Salir" yestext="Descargar"/>
+ </notification>
+ <notification name="DownloadLinux">
+ Hay una versión actualizada de [SECOND_LIFE] disponible.
+[MESSAGE]
+Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad.
+ <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargar"/>
+ </notification>
+ <notification name="DownloadLinuxReleaseForDownload">
+ Hay una versión actualizada de [SECOND_LIFE] disponible.
+[MESSAGE]
+Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad.
+ <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargar"/>
+ </notification>
<notification name="DownloadMacMandatory">
- Está disponible una versión nueva de [APP_NAME].
+ Hay una versión nueva de [SECOND_LIFE] disponible.
[MESSAGE]
-Debe descargar esta actualización para usar [APP_NAME].
+Debes descargar esta actualización para usar [SECOND_LIFE].
-¿Descargarla a su carpeta de aplicaciones?
+¿Descargarla a tu carpeta de Programas?
<usetemplate name="okcancelbuttons" notext="Salir" yestext="Descargarla"/>
</notification>
<notification name="DownloadMac">
- Está disponible una versión actualizada de [APP_NAME].
+ Hay una versión actualizada de [SECOND_LIFE] disponible.
[MESSAGE]
-Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad.
+Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad.
-¿Descargarla a su carpeta de aplicaciones?
+¿Descargarla a tu carpeta de Programas?
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/>
</notification>
<notification name="DownloadMacReleaseForDownload">
- Está disponible una versión actualizada de [APP_NAME].
+ Hay una versión actualizada de [SECOND_LIFE] disponible.
[MESSAGE]
-Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad.
+Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad.
-¿Descargarla a su carpeta de aplicaciones?
+¿Descargarla a tu carpeta de Programas?
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/>
</notification>
<notification name="DeedObjectToGroup">
Transferir este objeto al grupo hará que:
* Reciba los L$ pagados en el objeto
- <usetemplate ignoretext="Cuando se transfieren objetos a los grupos" name="okcancelignore" notext="Cancelar" yestext="Transferir"/>
+ <usetemplate ignoretext="Confirmar antes de transferir un objeto al grupo" name="okcancelignore" notext="Cancelar" yestext="Transferir"/>
</notification>
<notification name="WebLaunchExternalTarget">
- ¿Abrir el navegador de su sistema para ver este contenido?
- <usetemplate ignoretext="Cuando se abra el navegador de su sistema para ver una página web" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ ¿Quieres abrir tu navegador para ver este contenido?
+ <usetemplate ignoretext="Abrir mi navegador para ver una página web" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchJoinNow">
- ¿Ir a www.secondlife.com para administrar su cuenta?
- <usetemplate ignoretext="Cuando se abra el navegador para administrar su cuenta" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ ¿Ir al [http://secondlife.com/account/ Panel de Control] para administrar tu cuenta?
+ <usetemplate ignoretext="Abrir mi navegador para administrar mi cuenta" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchSecurityIssues">
Visite el wiki de [SECOND_LIFE] para más detalles sobre cómo informar de una cuestión de seguridad.
- <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki de cuestiones de seguridad" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ <usetemplate ignoretext="Abrir mi navegador para informar de un fallo de seguridad" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchQAWiki">
Visite el wiki QA de [SECOND_LIFE].
- <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki QA" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ <usetemplate ignoretext="Abrir mi navegador para el ver el wiki de &apos;QA&apos; (Control de Calidad)" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchPublicIssue">
Visite el Public Issue Tracker (sistema público de seguimiento de incidencias) de [SECOND_LIFE], donde podrá informar de errores y otros asuntos.
- <usetemplate ignoretext="Cuando se abra el navegador para ver el Public Issue Tracker" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
- </notification>
- <notification name="WebLaunchPublicIssueHelp">
- Visite el wiki de [SECOND_LIFE] para informarse de cómo usar el Public Issue Tracker (sistema público de seguimiento de incidencias).
- <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki del Public Issue Tracker" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
+ <usetemplate ignoretext="Abrir mi navegador para usar el &apos;Public Issue Tracker&apos;" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
</notification>
<notification name="WebLaunchSupportWiki">
Para ver las últimas noticias e informaciones, ¿ir la Blog oficial?
- <usetemplate ignoretext="Cuando se abra el navegador para ver el blog" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ <usetemplate ignoretext="Abrir mi navegador para ver el blog" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchLSLGuide">
- ¿Ir a la Guía de programación para encontrar ayuda?
- <usetemplate ignoretext="Cuando se abra el navegador para ver la Guía de programación" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ ¿Quieres abrir la Guía de Script para tener ayuda sobre el tema?
+ <usetemplate ignoretext="Abrir mi navegador para ver la Guía de Script" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchLSLWiki">
- ¿Ir al portal de LSL para encontrar ayuda sobre programación?
- <usetemplate ignoretext="Cuando se abra el navegador para ver el portal de programación" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
+ ¿Quieres visitar el portal de LSL para tener ayuda sobre manejo de scripts?
+ <usetemplate ignoretext="Abrir mi navegador para ver el portal de LSL" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
</notification>
<notification name="ReturnToOwner">
¿Está seguro de que quiere devolver los objetos seleccionados a sus propietarios? Los objetos transferibles que se hayan cedido volverán a sus propietarios anteriores.
*ATENCIÓN* ¡Serán borrados los objetos no transferibles que estén cedidos!
- <usetemplate ignoretext="Cuando se devuelvan los objetos a sus propietarios" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ <usetemplate ignoretext="Confirmar antes de devolver objetos a sus propietarios." name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="GroupLeaveConfirmMember">
Actualmente, usted es miembro del grupo [GROUP].
@@ -1358,14 +1295,14 @@ Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar a todos los usuarios"/>
</notification>
<notification name="MuteLinden">
- Perdón, pero no puede ignorar a un Linden.
+ Lo sentimos, pero no puedes ignorar a un Linden.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="CannotStartAuctionAlreadyForSale">
No puede empezar una subasta en una parcela que ya está en venta. Desactive la venta de terreno si está seguro de querer iniciar una subasta.
</notification>
- <notification label="Fallo al ignorar un objeto según el nombre" name="MuteByNameFailed">
- Ya ha ignorado ese nombre.
+ <notification label="Falló ignorar el objeto según su nombre." name="MuteByNameFailed">
+ Ya has ignorado este nombre.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="RemoveItemWarn">
@@ -1383,12 +1320,12 @@ Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar
</notification>
<notification name="BusyModeSet">
Pasar al modo ocupado.
-Se ocultará el chat y los mensajes instantáneos. Los mensajes instantáneos recibirán su Respuesta en el modo ocupado. Todos los ofrecimientos de teleporte serán rehusados. Todas las ofertas de inventario irán a su Papelera.
- <usetemplate ignoretext="Cuando se pasa al modo ocupado" name="okignore" yestext="OK"/>
+Se ocultará el chat y los mensajes instantáneos (éstos recibirán tu Respuesta en el modo ocupado). Se rehusarán todos los ofrecimientos de teleporte. Todas las ofertas de inventario irán a tu Papelera.
+ <usetemplate ignoretext="Cambio mi estado al modo ocupado" name="okignore" yestext="OK"/>
</notification>
<notification name="JoinedTooManyGroupsMember">
- Pertenece a demasiados grupos para poder entrar en otro. Por favor, salga de al menos uno antes de entrar en éste, o rehúse la oferta. Para salir de un grupo, seleccione la opción &apos;Grupos...&apos; en el menú &apos;Editar&apos;.
-[NAME] le ha invitado a ser miembro de un grupo.
+ Perteneces a demasiados grupos para poder entrar en otro. Por favor, sal de al menos uno antes de entrar en éste, o rehúsa la oferta.
+[NAME] te ha invitado a ser miembro de un grupo.
[INVITE]
<usetemplate name="okcancelbuttons" notext="Rehusar" yestext="Entrar"/>
</notification>
@@ -1454,7 +1391,15 @@ Se ocultará el chat y los mensajes instantáneos. Los mensajes instantáneos re
</notification>
<notification name="TeleportFromLandmark">
¿Está seguro de que quiere teleportarse?
- <usetemplate ignoretext="Cuando está teleportando desde un hito del inventario" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/>
+ <usetemplate ignoretext="Confirmar que quiero teleportarme a un hito" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/>
+ </notification>
+ <notification name="TeleportToPick">
+ ¿Teleportarte a [PICK]?
+ <usetemplate ignoretext="Confirmar el teleporte a una localización de los Destacados" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/>
+ </notification>
+ <notification name="TeleportToClassified">
+ ¿Teleportarse a [CLASSIFIED]?
+ <usetemplate ignoretext="Confirmar el teleporte a una localización de los Clasificados" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/>
</notification>
<notification label="Mensaje a todo el estado" name="MessageEstate">
Escriba un anuncio breve que se enviará a todo el que esté en su estado.
@@ -1523,9 +1468,7 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se
Usted no está autorizado en esa región por su nivel de calificación. Puede deberse a que no hay información validada de su edad.
Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="RegionEntryAccessBlocked_KB">
Usted no está autorizado en esa región por su nivel de calificación.
@@ -1534,37 +1477,26 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C
<url name="url">
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es
</url>
- <usetemplate
- name="okcancelignore"
- yestext="Ir a la Base de Conocimientos"
- notext="Cerrar"
- ignoretext="Cuando la entrada a la región está bloqueada por el nivel de calificación"/>
+ <usetemplate ignoretext="No puedo entrar a esta región dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
</notification>
<notification name="RegionEntryAccessBlocked_Notify">
Usted no está autorizado en esa región por su nivel de calificación.
</notification>
<notification name="RegionEntryAccessBlocked_Change">
- Usted no está autorizado en esa región por su nivel de calificación..
-
-Puede pulsar &apos;Cambiar preferencia&apos; para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar &gt; Preferencias... &gt; General.
- <form name="form">
- <button
- name="OK"
- text="Cambiar preferencia"/>
- <button
- default="true"
- name="Cancel"
- text="Cerrar"/>
- <ignore name="ignore" text="Cuando la entrada a la región está bloqueada por la preferencia del nivel de calificación"/>
- </form>
+ No estás autorizado en esta región por tus preferencias sobre el nivel de calificación.
+
+Puedes pulsar &apos;Cambiar las Preferencias&apos; para incrementar las preferencias del nivel de calificación y, así, poder entrar. En adelante, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer este cambio, ve a Yo &gt; Preferencias &gt; General.
+ <form name="form">
+ <button name="OK" text="Cambiar las preferencias"/>
+ <button default="true" name="Cancel" text="Cerrar"/>
+ <ignore name="ignore" text="Mis preferencias sobre nivel de calificación me impiden entrar a esta región"/>
+ </form>
</notification>
<notification name="LandClaimAccessBlocked">
Usted no puede reclamar este terreno por su nivel de calificación. Puede deberse a que no hay información validada de su edad.
Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="LandClaimAccessBlocked_KB">
No puede reclamar este terreno por sus nivel de calificación.
@@ -1573,32 +1505,22 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C
<url name="url">
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es
</url>
- <usetemplate
- name="okcancelignore"
- yestext="Ir a la Base de Conocimientos"
- notext="Cerrar"
- ignoretext="Cuando el reclamar terreno está bloqueado por el nivel de calificación"/>
+ <usetemplate ignoretext="No puedo reclamar este terreno, dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
</notification>
<notification name="LandClaimAccessBlocked_Notify">
Por su nivel de calificación, usted no puede reclamar este terreno.
</notification>
<notification name="LandClaimAccessBlocked_Change">
- No puede reclamar este terreno por sus preferencias de nivel de calificación.
+ No puedes reclamar este terreno por tus preferencias sobre el nivel de calificación.
-Puede pulsar &apos;Cambiar preferencia&apos; para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar &gt; Preferencias... &gt; General..
- <usetemplate
- name="okcancelignore"
- yestext="Cambiar preferencia"
- notext="Cerrar"
- ignoretext="Cuando el reclamar terreno está bloqueado por la preferencia del nivel de calificación"/>
+Puedes pulsar &apos;Cambiar las Preferencias&apos; para incrementar las preferencias del nivel de calificación y, así, poder entrar. En adelante, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer este cambio, ve a Yo &gt; Preferencias &gt; General.
+ <usetemplate ignoretext="Mis preferencias sobre el nivel de calificación me impiden reclamar este terreno" name="okcancelignore" notext="Cerrar" yestext="Cambiar preferencia"/>
</notification>
<notification name="LandBuyAccessBlocked">
Usted no puede comprar este terreno por su nivel de calificación. Puede deberse a que no hay información validada de su edad.
Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="LandBuyAccessBlocked_KB">
No puede comprar este terreno por sus preferencias de nivel de calificación.
@@ -1607,27 +1529,19 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C
<url name="url">
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es
</url>
- <usetemplate
- name="okcancelignore"
- yestext="Ir a la Base de Conocimientos"
- notext="Cerrar"
- ignoretext="Cuando la compra de terreno está bloqueada por el nivel de calificación"/>
+ <usetemplate ignoretext="No puedo comprar este terreno, dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
</notification>
<notification name="LandBuyAccessBlocked_Notify">
No puede comprar este terreno por su nivel de calificación.
</notification>
<notification name="LandBuyAccessBlocked_Change">
- No puede comprar este terreno por sus preferencias de nivel de calificación.
+ No puedes comprar este terreno por tus preferencias sobre el nivel de calificación.
-Puede pulsar &apos;Cambiar preferencia&apos; para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar &gt; Preferencias... &gt; General.
- <usetemplate
- name="okcancelignore"
- yestext="Cambiar preferencia"
- notext="Cerrar"
- ignoretext="Cuando la compra de terreno está bloqueada por la preferencia del nivel de calificación"/>
+Puedes pulsar &apos;Cambiar las Preferencias&apos; para incrementar las preferencias del nivel de calificación y, así, poder entrar. En adelante, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer este cambio, ve a Yo &gt; Preferencias &gt; General.
+ <usetemplate ignoretext="Mis preferencias sobre el nivel de calificación me impiden comprar el terreno" name="okcancelignore" notext="Cerrar" yestext="Cambiar preferencia"/>
</notification>
<notification name="TooManyPrimsSelected">
- &quot;Hay seleccionadas demasiadas primitivas. Por favor, seleccione [MAX_PRIM_COUNT] o menos, y reinténtelo.&quot;
+ Hay demasiados prims seleccionados. Por favor, selecciona [MAX_PRIM_COUNT] o menos y vuelve a intentarlo
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="ProblemImportingEstateCovenant">
@@ -1642,9 +1556,7 @@ Puede pulsar &apos;Cambiar preferencia&apos; para aumentar su nivel de calificac
</notification>
<notification name="UnableToLoadNotecardAsset">
En este momento, no se pueden cargar los datos de la&apos;s nota&apos;s.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="NotAllowedToViewNotecard">
Permisos insuficientes para ver la nota asociada a la ID solicitada.
@@ -1662,19 +1574,11 @@ Puede pulsar &apos;Cambiar preferencia&apos; para aumentar su nivel de calificac
</notification>
<notification name="SetClassifiedMature">
¿Este anuncio tiene contenido &apos;Mature&apos;?
- <usetemplate
- canceltext="Cancelar"
- name="yesnocancelbuttons"
- notext="No"
- yestext="Sí"/>
+ <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No" yestext="Sí"/>
</notification>
<notification name="SetGroupMature">
¿Este grupo tiene contenido &apos;Mature&apos;?
- <usetemplate
- canceltext="Cancelar"
- name="yesnocancelbuttons"
- notext="No"
- yestext="Sí"/>
+ <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No" yestext="Sí"/>
</notification>
<notification label="Confirmar el reinicio" name="ConfirmRestart">
¿Verdaderamente quiere reiniciar la región de aquí a 2 minutos?
@@ -1688,226 +1592,12 @@ Puede pulsar &apos;Cambiar preferencia&apos; para aumentar su nivel de calificac
<button name="Cancel" text="Cancelar"/>
</form>
</notification>
- <notification label="No permitir modificar el terreno" name="HelpRegionBlockTerraform">
- Si se marca está casilla, los propietarios de terreno no podrán modificarlo, independientemente de lo que esté configurado en cada parcela.
-
-Por defecto: off
- </notification>
- <notification label="Prohibir volar" name="HelpRegionBlockFly">
- Si se marca esta casilla, estará prohibido volar en la región, independientemente de lo que esté configurado en cada parcela.
-
-Por defecto: off
- </notification>
- <notification label="Cambio múltiple de permisos del contenido" name="HelpBulkPermission">
- La herramienta de cambio múltiple de permisos le ayuda a cambiar con rapidez los permisos de varios de los objetos contenidos en el objeto u objetos que seleccione. Pero fíjese que sólo configurará los permisos de los ítems que están en el contenido de los objetos seleccionados, no los de esos objetos que los contienen.
-
-Note también que los permisos no se aplicarán a los contenidos que puedan tener cada uno de los ítems. Lo que haga sólo afectará a los ítems que estén exactamente en el primer nivel de contenidos.
-
-Puede elegir qué clase de ítems modificar usando la lista &apos;Tipos de contenido&apos; here. Las imágenes se consideran incluidas si selecciona Texturas.
-
-* Esta herramienta sólo puede cambiar los permisos de aquellos ítems de los que usted esté autorizado a cambiarlos.
-* No puede otorgar al siguiente propietario permisos que usted no tenga ya.
-* Los permisos para el nuevo propietario son, en principio, una solicitud. Si alguno de los ítems no puede coger todos esos permisos solicitados, no cambiará ninguno de los permisos que tenga.
-
-Cuando esté listo para efectuar el cambio múltiple de permisos, pulse &apos;Aplicar&apos; y espere a que se muestren los resultados.
-
-SSi cierra la ventana de Cambio múltiple de permisos mientras se están cambiando, se cancelará la operación.
- </notification>
- <notification label="Permitir el daño" name="HelpRegionAllowDamage">
- Si se marca la casilla, el sistema de &apos;vida&apos; afecta a todas las parcelas independientemente de lo que tenga marcado cada una.
-Si la casilla no está marcada, el propietario de cada parcela podrá decidir si activa en ella el sistema de &apos;vida&apos;.
-
-Por defecto: off
- </notification>
- <notification label="Nº máximo de avatares" name="HelpRegionAgentLimit">
- Configura el número máximo de avatares que se permite en esta región.
-El funcionamiento puede variar según el número de avatares que estén presentes.
-
-Por defecto: 40
- </notification>
- <notification label="Plus de objetos" name="HelpRegionObjectBonus">
- El plus de objetos es un multiplicador de los prims permitidos en cualquier parcela.
-El rango permitido es de 1 a 10. Fijándolo en &apos;1&apos;, se permiten 117 objetos en cada parcela de 512 m². Fijándolo en &apos;2&apos;, se permiten 234 (el doble), y así sucesivamente. El número máximo de objetos permitidos en una región sigue siendo de 15.000, sea cual sea el plus.
-Una vez establecido, tenga en cuenta que reducir el plus de objetos puede causar que se devuelvan o borren objetos.
-
-Por defecto: 1.0
- </notification>
- <notification label="Calificación" name="HelpRegionMaturity">
- Configura el nivel de calificación de la región, tal como se verá en la barra superior del visor de cualquier residente, y en los datos que mostrará el mapa del mundo cuando se pase el cursor sobre esta región. Esta configuración también afecta al acceso a esta región y a los resultados de la búsqueda. Los demás residentes sólo entrarán en las regiones o verán aquellos resultados de la búsqueda que tengan el mismo nivel de calificación que ellos han elegido en sus preferencias.
-
-Puede llevar algún tiempo que este cambio se refleje en el mapa.
- </notification>
- <notification label="Impedir &apos;empujar&apos;" name="HelpRegionRestrictPushObject">
- Esta casilla controla en toda la región los permisos para que haya &apos;empujones&apos;.
-Cuando está activada, los residentes sólo pueden ser empujados por sí mismos o por el propietario de la parcela.
-(&apos;Empujar&apos; se refiere a la función llPushObject() del LSL).
-
-Por defecto: Off
- </notification>
- <notification label="Unir/Dividir parcelas" name="HelpParcelChanges">
- Esta casilla determina si las parcelas que no son del propietario del estado pueden unirse o subdividirse.
-Si no se marca esta opción:
- * Sólo los propietarios o los administradores del estado pueden unir o dividir parcelas.
- * Sólo podrán unir o dividir las parcelas pertenecientes al propietario o a un grupo en el que tengan los poderes adecuados.
-Si se marca esta opción:
- * Todo los propietarios de parcelas podrán unir o dividir las que posean.
- * En parcelas propiedad de un grupo, quienes tengan los poderes adecuados podrán unirlas o dividirlas.
-
-Por defecto: Marcado
- </notification>
- <notification label="No mostrar en la búsqueda" name="HelpRegionSearch">
- Marcando esta casilla bloqueará que los propietarios de parcelas puedan listarlas en la búsqueda.
-
-Por defecto: Off
- </notification>
<notification label="Cambiada la calificación de la región" name="RegionMaturityChange">
Se ha actualizado la calificación de esta región.
Llevará algún tiempo que el cambio se refleje en el mapa.
</notification>
- <notification label="Reventa de terreno" name="HelpRegionLandResell">
- Los propietarios y los administradores del estado pueden poner en venta cualquier terreno que posea el propietario del estado.
-Si se desmarca esta opción, los compradores no podrán revender el terreno que compren en esta región.
-Si se marca esta opción, los compradores podrán revender el terreno que compren en esta región.
-
-Por defecto: Deshabilitado
- </notification>
- <notification label="Desactivar los scripts" name="HelpRegionDisableScripts">
- Cuando el rendimiento de un sim es pobre, el culpable puede ser un script. Abra Estadísticas (Ctrl+May+1). Mire Simulator Physics FPS. Si es menor de 45, abre el panel Time, en la parte inferior de las Estadísticas. Si ve que Script Time está en 25 ms o más alto, pulse el botón Listar los scripts según su uso, y verá el nombre y la posición de los scripts que pueden estar causando el bajo rendimiento.
-
-Marcando la casilla Desactivar los scripts y pulsando el botón Aplicar, se desactivarán temporalmente en esta región todos los scripts.
-Debe hacer esto para viajar a la posición que ha visto en la Lista de scripts según su uso. Cuando llegue, investigue el script para determinar si es él quien causa el problema. Deberá contactar con el propietario del script, o borrar o devolver el objeto.
-Desmarque la casilla Desactivar los scripts y pulse Aplicar para reactivar los scripts en la región.
-
-Por defecto: off
- </notification>
- <notification label="Desactivar las colisiones" name="HelpRegionDisableCollisions">
- Cuando el rendimiento de un sim es pobre, la culpa puede estar en los objetos físicos. Abra Estadísticas (Ctrl+May+1). Mire Simulator Physics FPS. Si es menor de 45, abre el panel Time, en la parte inferior de las Estadísticas. Si ve que Sim Time (Physics) está en 20 ms o más alto, pulse el botón Listar los objetos que colisionan, y verá el nombre y la posición de los objetos que pueden estar causando el bajo rendimiento.
-
-Marcando la casilla Desactivar las colisiones y pulsando el botón Aplicar, se desactivarán temporalmente las colisiones entre objetos.
-Debe hacer esto para viajar a la localización que se ha avisado en la Lista de objetos que colisionan. Cuando llegue, investigue el objeto:
-¿está colisionando constantemente con otros objetos? Deberá contactar con el propietario del objeto, o borrarlo o devolverlo.
-Desmarque la casilla Desactivar las colisiones y pulse Aplicar para reactivar las colisiones en la región.
-
-Por defecto: off
- </notification>
- <notification label="Desactivar la física" name="HelpRegionDisablePhysics">
- Desactivar la física es parecido a Desactivar las colisiones, pero se desactivan todas las simulaciones físicas: no sólo se detiene la colisión de objetos, sino que también se provoca que los avatares no puedan moverse.
-
-Esto debería usarse sólo cuando Desactivar las colisiones no ha aportado a la región suficiente rendimiento para investigar un problema con las propiedades físicas o los objetos que colisionan.
-
-Cuando acabe, no se olvide de reactivar la física, o los avatares seguirán sin poderse mover.
-
-Por defecto: off
- </notification>
- <notification label="Objetos que colisionan" name="HelpRegionTopColliders">
- Muestra una lista de aquellos objetos con más colisiones potenciales con otros objetos. Estos objetos pueden ralentizar el rendimiento.
-Seleccione Ver &gt; Estadísticas, y mire Simulator &gt; Time &gt; Sim Time (Physics) para ver si se están empleando en &apos;physics&apos; más de 20 ms.
- </notification>
- <notification label="Listar los scripts" name="HelpRegionTopScripts">
- Muestra una lista de los objetos que más tiempo emplean en ejecutar scripts de LSL. Estos objetos pueden ralentizar el rendimiento.
-Seleccione Ver &gt; Estadísticas, y mire Simulator &gt; Time &gt; Script Time para ver si se están empleando más de 25 ms.
- </notification>
- <notification label="Reiniciar la región" name="HelpRegionRestart">
- Reinicia los procesos del servidor en que corre esta región tras dos minutos de advertencia previa. Se desconectará a todos los residentes que estén en la región. La región guardará sus datos, y debería volver en unos 90 segundos.
-
-Reiniciar la región no solventa la mayoría de los problemas de rendimiento, y, normalmente, debe utilizarse sólo cuando se indique.
- </notification>
- <notification label="Nivel del agua" name="HelpRegionWaterHeight">
- Es el nivel, en metros, del agua. Si se marca en algo distinto de 20, y usted tiene al lado el agua del mundo o un &apos;vacío&apos;, habrá una diferencia visible.
-
-Por defecto: 20
- </notification>
- <notification label="Elevación del terreno" name="HelpRegionTerrainRaise">
- Es la distancia que, en metros, los propietarios de parcelas pueden elevar su terreno sobre la altura del terreno inicialmente creado.
-
-Por defecto: 4
- </notification>
- <notification label="Rebaje del terreno" name="HelpRegionTerrainLower">
- Es la distancia que, en metros, los propietarios de parcelas pueden bajar su terreno sobre la altura del terreno inicialmente creado.
-
-Por defecto: -4
- </notification>
- <notification label="Subir un RAW para el terreno" name="HelpRegionUploadRaw">
- Este botón carga un archivo .RAW en la región en que usted está.
-El archivo debe tener las dimensiones correctas (RGB, 256x256) y 13 canales. La forma mejor de crear un archivo de terreno es descargar el archivo RAW existente. Un buen inicio es modificar el canal rojo -red- (altura del terreno), y subirlo.
-
-La carga puede llevar unos 45 segundos. Fíjese que subir un archivo de terreno *no* moverá los objetos que haya en el terreno, sólo el terreno mismo y los permisos asociados a las parcelas.
-Por tanto, puede que algunos objetos acaben enterrados..
-
-Para más información sobre la edición de las alturas del terreno, consulte la ayuda F1.
- </notification>
- <notification label="Descargar el RAW del terreno" name="HelpRegionDownloadRaw">
- Este botón descarga un archivo de esta región con los datos de alturas, dimensiones de las parcelas, estado de las parcelas en venta, y algunos permisos de las parcelas. Al abrir el archivo en un programa como Photoshop debe especificar las dimensiones del documento: RGB, 256x256 con 13 canales.
-Este archivo de terreno no puede abrirse de otro modo.
-
-Para más información sobre la edición de las alturas del terreno, consulte la ayuda F1.
- </notification>
- <notification label="Usar el Sol del estado" name="HelpRegionUseEstateSun">
- Esta casilla hace que la posición del Sol en la región sea la misma que la del resto del estado.
-
-Por defecto: on
- </notification>
- <notification label="Fijar el Sol" name="HelpRegionFixedSun">
- Esta casilla fija la posición del Sol en la posición del deslizable Fase, y detiene su movimiento.
-
-Por defecto: off
- </notification>
- <notification label="Predeterminar este terreno" name="HelpRegionBakeTerrain">
- Este botón salva la forma actual del terreno como nueva forma por defecto para la región. Una vez predeterminado, el terreno puede volver a esa forma cada vez que usted u otros usan la opción &apos;Revertir&apos; en Editar el terreno. El terreno predeterminado también marca el punto medio para elevar y bajar los límites.
- </notification>
- <notification label="Administradores del estado" name="HelpEstateEstateManager">
- Un administrador del estado es un residente en el que usted delega controles de la región y configuraciones del estado. Un administrador del estado puede cambiar algunas configuraciones de estos paneles, excepto las de subir, descargar, y predeterminar el terreno. Y, concretamente, puede autorizar o expulsar a residentes de su estado.
-
-Sólo el propietario del estado puede añadir o remover administradores, nadie más.
-Por favor, elija sólo a residentes en quienes confíe, pues usted será el responsable último de sus acciones.
- </notification>
- <notification label="Usar el horario global" name="HelpEstateUseGlobalTime">
- Esta casilla hace que, en su estado, el Sol tenga la misma posición que en los estados propiedad de Linden, &apos;mainland&apos;.
-
-Por defecto: on
- </notification>
- <notification label="Fijar el Sol" name="HelpEstateFixedSun">
- Esta casilla fija la posición del Sol en la posición del deslizable Fase, y detiene su movimiento.
- </notification>
- <notification label="Acceso público" name="HelpEstateExternallyVisible">
- Esta casilla habilita que cualquier residente que esté en otro estado pueda entrar en éste sin tener que estar en una lista de acceso.
-
-Por defecto: on
- </notification>
- <notification label="Permitir el teleporte a cualquier punto" name="HelpEstateAllowDirectTeleport">
- Cuando esta marcado, los residentes puede teleportarse directamente a cualquier punto de su estado. Si se desmarca, los residentes se teleportarán al Punto de Teleporte más cercano.
-
-Por defecto: off
- </notification>
- <notification label="Autorizar el acceso" name="HelpEstateAllowResident">
- El acceso a este estado se limitará a los residentes aquí enumerados y a cualquier grupo de abajo. Esta configuración sólo funciona cuando está desmarcado Acceso público.
- </notification>
- <notification label="Autorizar el acceso de grupo" name="HelpEstateAllowGroup">
- El acceso a este estado se limitará a los grupos aquí enumerados y a cualquier residente de abajo. Esta configuración sólo funciona cuando está desmarcado Acceso público.
- </notification>
- <notification label="Dirección de correo para infracciones" name="HelpEstateAbuseEmailAddress">
- Aportando aquí una dirección de correo válida, se hará que las Denuncias de Infracción en este estado se envíen a esa dirección.
-Si se deja en blanco, las Denuncias de Infracción se enviarán sólo a Linden Lab.
- </notification>
- <notification label="Denegar el acceso" name="HelpEstateBanResident">
- A los residentes en esta lista se les niega el acceso a su estado, independientemente de cualquier otra configuración.
- </notification>
- <notification label="Autorizar el chat de voz" name="HelpEstateVoiceChat">
- Se autoriza a las parcelas del estado a tener sus propios canales de voz en los que los residentes puedan hablar y oír a otros residentes.
-
-Por defecto: off
- </notification>
<notification label="Desajuste en la versión de voz" name="VoiceVersionMismatch">
- En esta región, la versión de [APP_NAME] no es compatible con el chat de voz. Para que el chat de voz funcione correctamente, debe actualizar [APP_NAME].
- </notification>
- <notification label="Contrato del estado" name="HelpEstateCovenant">
- Definir un contrato del estado le permite vender parcelas del mismo. Si no existe un contrato, no puede vender terreno.
-La nota para su contrato puede estar vacía si es que no quiere aplicar reglas, avisos a los compradores, o cualquier otra cosa relacionada con el terreno antes de que sea comprado.
-
-Puede usar un contrato para comunicar al posible comprador reglas, pautas, información cultural, o, simplemente, sus propias expectativas.
-Así, puede hablarse de parcelación, normas de las construcciones, formas de pago, u otra información que considere que el nuevo propietario debe saber y con la que debe estar de acuerdo antes de hacer la compra.
-
-Para poder finalizar la compra, el comprador debe aceptar el contrato marcando la casilla adecuada. Los contratos de los estados son siempre visibles en la información Acerca del terreno en todas las parcelas.
+ Esta versión de [APP_NAME] no es compatible con la prestación de voz de esta región. Para que el chat de voz funcione correctamente debes actualizar [APP_NAME].
</notification>
<notification label="No se pudo comprar los objetos" name="BuyObjectOneOwner">
No se pueden comprar a la vez objetos de propietarios diferentes.
@@ -1995,52 +1685,36 @@ Ha actualizado la posición de este Destacado, pero los otros detalles permanece
Ha elegido ítems &apos;no copiables&apos; de su inventario. Esos ítems se quitarán de su inventario, no se copiarán.
¿Mover el/los ítem/s del inventario?
- <usetemplate ignoretext="Cuando mueva objetos &apos;no copiables&apos; del inventario" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ <usetemplate ignoretext="Avisarme antes de que mueva ítems &apos;no copiables&apos; desde un objeto" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="MoveInventoryFromScriptedObject">
Ha elegido ítems &apos;no copiables&apos; de su inventario. Esos ítems se moverán a su inventario, no se copiarán.
Dado que estos objetos tienen scripts, moverlos a su inventario puede provocar un mal funcionamiento del script.
¿Mover el/los ítem/s del inventario?
- <usetemplate ignoretext="Cuando mueva objetos con script &apos;no copiables&apos; del inventario" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ <usetemplate ignoretext="Avisarme antes de que mueva ítems &apos;no copiables&apos; que puedan estropear un objeto con script" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="ClickActionNotPayable">
- Atención: la acción &apos;Pagar al objeto&apos; al pulsar ha sido marcada, pero sólo funcionará si se añade un script con un evento money().
+ Advertencia: la acción &apos;Pagar al objeto&apos; ha sido marcada, pero sólo funcionará si se añade un script con un evento money().
<form name="form">
- <ignore name="ignore" text="Cuando configure &apos;Pagar al objeto&apos; sin el evento money()"/>
+ <ignore name="ignore" text="He establecido la acción &apos;Pagar al objeto&apos; cuando construyo uno sin un script money()"/>
</form>
</notification>
<notification name="OpenObjectCannotCopy">
En este objeto, no hay ítems que esté autorizado a copiar.
</notification>
<notification name="WebLaunchAccountHistory">
- ¿Ir al sitio web de [SECOND_LIFE] para ver el historial de su cuenta?
- <usetemplate ignoretext="Cuando se cargue la página web del historial de la cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
- </notification>
- <notification name="ClickOpenF1Help">
- ¿Visitar el sitio web de Soporte de [SECOND_LIFE]?
- <usetemplate ignoretext="Cuando visite el sitio web de Soporte de [SECOND_LIFE]." name="okcancelignore" notext="Cancelar" yestext="Ir"/>
+ ¿Ir a tu [http://secondlife.com/account/ Panel de Control] para ver el historial de tu cuenta?
+ <usetemplate ignoretext="Abrir mi navegador para ver el historial de mi cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
</notification>
<notification name="ConfirmQuit">
¿Está seguro de que quiere salir?
- <usetemplate ignoretext="Cuando esté saliendo de [APP_NAME]." name="okcancelignore" notext="Continuar" yestext="Salir"/>
+ <usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
</notification>
<notification name="HelpReportAbuseEmailLL">
- Use esta herramienta para denunciar violaciones de las [http://secondlife.com/corporate/tos.php?lang=es-ES Condiciones del Servicio] y las [http://secondlife.com/corporate/cs.php?lang=es-ES Normas de la Comunidad].
-
-Se investigan y resuelven todas las infracciones denunciadas de las Normas de la Comunidad y las Condiciones del Servicio. Puede ver la resolución tomada en el Informe de Incidentes, en:
-
-http://secondlife.com/support/incidentreport.php
- </notification>
- <notification name="HelpReportAbuseEmailEO">
- IMPORTANTE: Esta denuncia no irá a Linden Lab, sino al propietario de la región en la que usted se encuentra actualmente.
+ Usa esta herramienta para denunciar violaciones de las [http://secondlife.com/corporate/tos.php Condiciones de Servicio] o las [http://secondlife.com/corporate/cs.php Normas de la Comunidad].
-Como un servicio a los residentes y visitantes, el propietario de la región ha elegido recibir y resolver todas las enuncias que se originen en esta región. Linden Lab no investigará las denuncias que usted envíe desde aquí.
-
-El propietario de la región resolverá las denuncias basándose en las reglas locales de la región, tal como se detallan en el Contrato del estado.
-(Puede ver el Contrato yendo al menú Mundo y eligiendo Acerca del terreno).
-
-La resolución de esta denuncia se aplica exclusivamente a esta región; el acceso de los residentes a otras áreas de [SECOND_LIFE] no se verá afectado por el resultado de esta denuncia. Únicamente Linden Lab puede impedir el acceso a la totalidad de [SECOND_LIFE].
+Se investigan y resuelven todas las infracciones denunciadas. Puedes ver la resolución tomada en el [http://secondlife.com/support/incidentreport.php Informe de Incidentes].
</notification>
<notification name="HelpReportAbuseSelectCategory">
Por favor, elija una categoría para esta denuncia de infracción.
@@ -2066,13 +1740,13 @@ Aportar una descripción precisa nos ayuda a clasificar y procesar las denuncias
<notification name="HelpReportAbuseContainsCopyright">
Estimado Residente:
-Parece que está usted denunciando una violación de la propiedad intelectual. Por favor, asegúrese de que su denuncia es correcto.
+Parece que estás denunciando una violación de la propiedad intelectual. Por favor, asegúrate de que tu denuncia es correcta.
-(1) El proceso de la denuncia. Debe enviar una denuncia de infracción si cree que un Residente está reventando el sistema de permisos de [SECOND_LIFE], por ejemplo, usando un CopyBot u otras herramientas parecidas para copiar, infringiendo los derechos de propiedad intelectual. El Equipo de Infracciones (Abuse Team) investiga y lleva a cabo las acciones disciplinarias apropiadas ante toda acción que viole las las Normas de la Comunidad de [SECOND_LIFE] o las Condiciones del Servicio. Sin embargo, el Equipo de Infracciones ni gestiona ni responde a las solicitudes de eliminar contenidos del mundo de [SECOND_LIFE].
+(1) El proceso de la denuncia. Debes enviar una denuncia de infracción si crees que un Residente está reventando el sistema de permisos de [SECOND_LIFE], usando, por ejemplo, un CopyBot u otras herramientas parecidas para copiar, infringiendo los derechos de propiedad intelectual. El Equipo de Infracciones (&apos;Abuse Team&apos;) investiga y lleva a cabo las acciones disciplinarias apropiadas ante toda acción que viole las [http://secondlife.com/corporate/tos.php Condiciones de Servicio] o las [http://secondlife.com/corporate/cs.php Normas de la Comunidad] de [SECOND_LIFE]. Sin embargo, el Equipo de Infracciones ni gestiona ni responde a las solicitudes de eliminar contenidos del mundo de [SECOND_LIFE].
-(2) El DMCA o Proceso de Eliminación de Contenido. Para solicitar que se elimine algún contenido de [SECOND_LIFE], DEBE enviar una notificación válida de infracción tal y como se explica en nuestra DMCA Policy en http://secondlife.com/corporate/dmca.php.
+(2) El DMCA o Proceso de Eliminación de Contenido. Para solicitar que se elimine algún contenido de [SECOND_LIFE], DEBES enviar una notificación válida de infracción tal y como se explica en nuestra [http://secondlife.com/corporate/dmca.php &apos;DMCA Policy&apos;].
-Si todavía quiere seguir con el proceso de infracción, por favor, cierre esta ventana y acabe de enviar su denuncia. En concreto, debe seleccionar la categoría &apos;CopyBot o Programa para saltarse los permisos&apos;.
+Si todavía quieres seguir con el proceso de infracción, por favor, cierra esta ventana y acaba de enviar tu denuncia. En concreto, debes seleccionar la categoría &apos;CopyBot o Programa para saltarse los permisos&apos;.
Gracias,
@@ -2085,7 +1759,7 @@ Linden Lab
<notification label="Reemplazar el anexado actual" name="ReplaceAttachment">
En ese punto de su cuerpo ya hay un objeto anexado. ¿Quiere reemplazarlo por el objeto que ha elegido?
<form name="form">
- <ignore name="ignore" save_option="true" text="Cuando se reemplacen anexados existentes"/>
+ <ignore name="ignore" save_option="true" text="Reemplazar un añadido actual con el ítem seleccionado"/>
<button ignore="Reemplazar automaticamente" name="Yes" text="OK"/>
<button ignore="Nunca reemplazar" name="No" text="Cancelar"/>
</form>
@@ -2095,18 +1769,22 @@ Linden Lab
¿Quiere salir del modo Ocupado ante de completar esta transacción?
<form name="form">
- <ignore name="ignore" save_option="true" text="Cuando se esté pagando a un objeto o persona en el modo Ocupado"/>
+ <ignore name="ignore" save_option="true" text="Voy a pagar a una persona u objeto mientras estoy en el modo ocupado"/>
<button ignore="Siempre salir del modo Ocupado" name="Yes" text="OK"/>
<button ignore="Nunca salir del modo Ocupado" name="No" text="Cancelar"/>
</form>
</notification>
+ <notification name="ConfirmDeleteProtectedCategory">
+ La carpeta &apos;[FOLDERNAME]&apos; pertenece al sistema, y borrar carpetas del sistema puede provocar inestabilidad. ¿Estás seguro de que quieres borrarla?
+ <usetemplate ignoretext="Confirmar antes de borrar una carpeta del sistema" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ </notification>
<notification name="ConfirmEmptyTrash">
- ¿Está seguro de que quiere vaciar definitivamente el contenido de su Papelera?
- <usetemplate ignoretext="Cuando se vacíe la Papelera" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ ¿Estás seguro de que quieres borrar de forma permanente el contenido de la Papelera?
+ <usetemplate ignoretext="Confirmar antes de vaciar la Papelera del inventario" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="ConfirmClearBrowserCache">
- ¿Está seguro de que quiere limpiar la caché de su navegador?
- <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sí"/>
+ ¿Estás seguro de que quieres borrar tu historial web, de viajes y de búsquedas?
+ <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="ConfirmClearCookies">
¿Está seguro de que quiere limpiar sus cookies?
@@ -2117,39 +1795,18 @@ Linden Lab
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sí"/>
</notification>
<notification name="ConfirmEmptyLostAndFound">
- ¿Está seguro de que quiere eliminar permanentemente el contenido de su carpeta Objetos Perdidos?
- <usetemplate ignoretext="Cuando se vacíe la carpeta del inventario Objetos Perdidos" name="okcancelignore" notext="No" yestext="Sí"/>
+ ¿Estás seguro de que quieres borrar de forma permanente el contenido de Objetos Perdidos?
+ <usetemplate ignoretext="Confirmar antes de vaciar la carpeta Objetos Perdidos" name="okcancelignore" notext="No" yestext="Sí"/>
</notification>
<notification name="CopySLURL">
- Se ha copiado a su portapapeles la siguiente SLurl:
+ Se ha copiado a tu portapapeles esta SLurl:
[SLURL]
-Publíquela en una página web para que otros puedan acceder fácilmente a esta posición, o pruébela usted mismo pegándola en la barra de direcciones de su navegador.
+Publícala en una página web para que otros puedan acceder fácilmente a esta posición, o pruébala tú mismo pegándola en la barra de direcciones de tu navegador.
<form name="form">
- <ignore name="ignore" text="Cuando se copie una SLurl al portapapeles"/>
+ <ignore name="ignore" text="La SLurl se ha copiado a mi portapapeles"/>
</form>
</notification>
- <notification name="GraphicsPreferencesHelp">
- Este panel controla el tamaño de la ventana, y la resolución y la calidad de los gráficos del cliente. La interfaz Preferencias &gt; Gráficos le permite escoger entre cuatro niveles gráficos: Bajo, Medio, Alto, y Ultra. También puede personalizar sus configuraciones gráficas marcando la casilla Personalizar y adaptando estas configuraciones:
-
-Efectos: activa o desactiva varios tipos de shaders.
-
-Objetos reflejados: determina qué objetos reflejará el agua.
-
-Renderización del avatar: muestra opciones que afectan a cómo renderiza el cliente los avatares.
-
-Distancia de dibujo: afecta a cuán lejos de su punto de vista se renderizarán los objetos en la escena.
-
-Núm. máx. de partículas: define el número máximo de partículas que podrá ver a la vez en su pantalla.
-
-Calidad del procesamiento: define la resolución con que se renderiza el brillo.
-
-Detalle de la malla: define la cantidad de detalles o número de triángulos usados para renderizar algunos objetos. Cuanto más alto sea el valor, más detalle, pero más tiempo para renderizar.
-
-Detalles de la iluminación: determina que tipo de luces quiere usted que se rendericen.
-
-Nivel de detalle del terreno: marca con cuánto detalle quiere ver la textura del terreno.
- </notification>
<notification name="WLSavePresetAlert">
¿Quiere sobrescribir la preselección guardada?
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
@@ -2168,149 +1825,6 @@ Nivel de detalle del terreno: marca con cuánto detalle quiere ver la textura de
Ya existe un efecto de procesamiento. ¿Desea sobreescribirlo?
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
</notification>
- <notification name="HelpEditSky">
- Edite los deslizables del WindLight para crear y guardar configuraciones del cielo.
- </notification>
- <notification name="HelpEditDayCycle">
- Define cómo se verán los cielos a lo largo del día.
- </notification>
- <notification name="EnvSettingsHelpButton">
- Estas configuraciones ajustan la forma en que usted ve el medio ambiente localmente, en su ordenador. Su tarjeta gráfica debe admitir shaders de la atmósfera (&apos;atmospheric shaders&apos;) para poder acceder a esta configuración.
-
-Ajuste el deslizable &apos;Duración de un día&apos; para cambiar localmente, en su visor, las etapas del día.
-
-Ajuste el deslizable &apos;Nubosidad&apos; para controlar cuántas nubes cubren el cielo.
-
-Pulse un color en el selector de &apos;Color del agua&apos; para cambiar el color de la misma.
-
-Ajuste el deslizable &apos;Claridad del agua&apos; para controlar el nivel de claridad del agua bajo la superficie.
-
-Pulse &apos;Usar el horario del estado&apos; para devolver los valores del día al tiempo actual de la región y seguir a partir de él.
-
-Pulse &apos;Cielo avanzado&apos; para abrir un editor con configuraciones avanzadas para el cielo.
-
-Pulse &apos;Agua avanzada&apos; para abrir un editor con configuraciones avanzadas para el agua.
- </notification>
- <notification name="HelpDayCycle">
- El Editor del ciclo del día le permite controlar el cielo de [SECOND_LIFE] durante el ciclo día/noche. Este es el ciclo que usa el deslizable Duración de un día del Editor del entorno.
-
-El Editor del ciclo del día trabaja configurando fotogramas clave (&apos;keyframes&apos;): nodos (representados por los puntos grises en la línea del tiempo) cada uno de los cuales tiene asociado un Cielo definido. Según progresa la Duración de un día, el WindLight realiza la &apos;animación&apos; del cielo interpolándose entre esos fotogramas clave.
-
-La flecha amarilla sobre la línea del tiempo representa lo que usted ve actualmente, basándose en la Duración de un día. Púlsela y muévela para ver cómo cambia la animación del día. Puede añadir o borrar fotogramas clave pulsando los botones Añadir un punto o Quitar un punto, situados a la derecha de la línea del tiempo.
-
-Puede establecer la posición en el tiempo de cualquier fotograma clave moviéndolo a lo largo de la línea del tiempo, o configurando manualmente su valor en el recuadro Configuración del fotograma clave. También en ese recuadro podrá asociar el fotograma clave a un modelo predefinido de WindLight.
-
-La Duración del ciclo establece la duración total de un &apos;día&apos;. Marcar un valor bajo (por ejemplo, 2 min.) hará que las 24 horas de su línea del tiempo se animen ¡en sólo dos minutos reales! Una vez que esté satisfecho con su ciclo de la línea del tiempo y los fotogramas clave, utilice los botones Probar y Parar para obtener una vista previa de los resultados. Recuerde que también puede mover la flecha amarilla de encima de la línea del tiempo para ver el ciclo de la animación. El botón Usar el horario del estado sincronizará su ciclo de duración de un día con el ciclo del estado.
-
-Cuando todo esté a su gusto, puede guardar esos datos y cargarlos luego usando los botones Guardar este tipo de día y Cargar un tipo de día. Note que, por el momento, sólo podemos permitir un ciclo de un día.
- </notification>
- <notification name="HelpBlueHorizon">
- Use los deslizables Rojo/Verde/Azul (RVA) para ajustar el color del cielo. Puede usar el deslizable de Intensidad (I) para moverlos al unísono.
- </notification>
- <notification name="HelpHazeHorizon">
- La Cantidad de bruma es uno de los parámetros más útiles para ajustar el nivel de luz de la escena. Es eficaz para simular muchos ajustes de la exposición, como la claridad en un ambiente nublado o de nevisca, o las tonalidades del una flor Iris aún cerrada.
- </notification>
- <notification name="HelpBlueDensity">
- La Saturación afecta a la densidad global de la saturación de color del cielo y la niebla. Si mueve el deslizable Intensidad (I) a la derecha, los colores serán más vivos y brillantes. Si lo mueve a la izquierda, se irán decolorando hasta llegar incluso al blanco y negro. Si desea ajustar el balance de color del cielo, puede controlar la saturación de cada elemento usando el deslizable Rojo/Verde/Azul (RVA).
- </notification>
- <notification name="HelpHazeDensity">
- La Densidad de la bruma controla lo sombrío de la atmósfera, su neblina. Es eficaz para simular escenas con mucho humo o contaminantes, y también para simular niebla y llovizna.
- </notification>
- <notification name="HelpDensityMult">
- La Densidad puede usarse para definir globalmente la &apos;pesadez&apos; de la atmósfera. Los ajustes bajos dan sensación de un &apos;aire limpio&apos;, y los altos de pesadez, de esmog.
- </notification>
- <notification name="HelpDistanceMult">
- Ajusta a qué distancia se percibe el WindLight. El valor cero desactiva la influencia del WindLight en el terreno y los objetos. Los valores superiores a 1 simulan mayores distancias a las que afectan los efectos atmosféricos
- </notification>
- <notification name="HelpMaxAltitude">
- La Altitud máx. ajusta hasta que altura el WindLight realiza sus cálculos para computar la iluminación atmosférica. En las últimas horas del día, es útil para ajustar la &apos;profundidad&apos; a la que aparece el Sol.
- </notification>
- <notification name="HelpSunlightColor">
- Ajusta en la escena la intensidad y el color de las luces directas.
- </notification>
- <notification name="HelpSunAmbient">
- Ajusta en la escena la intensidad y el color de la luz ambiental.
- </notification>
- <notification name="HelpSunGlow">
- El deslizable Tamaño controla el tamaño del Sol.
-El deslizable Visión controla cómo se ve de borroso el Sol en el cielo.
- </notification>
- <notification name="HelpSceneGamma">
- Ajusta la distribución de luz y oscuridad en la pantalla.
- </notification>
- <notification name="HelpStarBrightness">
- Ajusta el brillo de las estrellas en el cielo.
- </notification>
- <notification name="HelpTimeOfDay">
- Controla la posición del Sol en el cielo. Es parecido a la elevación.
- </notification>
- <notification name="HelpEastAngle">
- Controla la posición del Sol en el cielo. Es parecido al acimut.
- </notification>
- <notification name="HelpCloudColor">
- Edita el color de las nubes. En general, es recomendable mantenerlas blanquecinas.
-Pero, vaya, diviértase si quiere.
- </notification>
- <notification name="HelpCloudDetail">
- Controla el detalle de las capas superiores de la imagen en la imagen principal de las nubes. X e Y controlan su posición. D (Densidad) controla la densidad o la fracturación con que aparecen las nubes.
- </notification>
- <notification name="HelpCloudDensity">
- Le permite controlar la posición de las nubes con los deslizables X e Y, y su desnidad con el deslizable D.
- </notification>
- <notification name="HelpCloudCoverage">
- Controla cuánto cubren el cielo las nubes.
- </notification>
- <notification name="HelpCloudScale">
- Controla el tamaño de la imagen de las nubes en la bóveda celeste.
- </notification>
- <notification name="HelpCloudScrollX">
- Controla la velocidad de las nubes al moverse en la dirección del eje X.
- </notification>
- <notification name="HelpCloudScrollY">
- Controla la velocidad de las nubes al moverse en la dirección del eje Y.
- </notification>
- <notification name="HelpClassicClouds">
- Marque esta casilla para activar la aparición de las nubes clásicas de [SECOND_LIFE] junto a las nubes del WindLight.
- </notification>
- <notification name="HelpWaterFogColor">
- Elije el color del agua bajo la superficie.
- </notification>
- <notification name="HelpWaterFogDensity">
- Controla la densidad de la claridad del agua, y a qué distancia puede verse bajo ella.
- </notification>
- <notification name="HelpUnderWaterFogMod">
- Modifica el efecto de Transparencia para controlar cuán lejos su avatar puede ver bajo el agua.
- </notification>
- <notification name="HelpWaterGlow">
- Controla la cantidad de brillo de la superficie del agua.
- </notification>
- <notification name="HelpWaterNormalScale">
- Controla el tamaño de las tres ondulaciones que componen el agua.
- </notification>
- <notification name="HelpWaterFresnelScale">
- Controla cuánta luz se refleja desde diferentes ángulos.
- </notification>
- <notification name="HelpWaterFresnelOffset">
- Controla cuánta intensidad de luz se refleja.
- </notification>
- <notification name="HelpWaterScaleAbove">
- Controla la cantidad de luz refractada mirando la superficie del agua desde arriba.
- </notification>
- <notification name="HelpWaterScaleBelow">
- Controla la cantidad de luz refractada mirando la superficie del agua desde debajo.
- </notification>
- <notification name="HelpWaterBlurMultiplier">
- Controla cómo se mezclan las ondas y los reflejos.
- </notification>
- <notification name="HelpWaterNormalMap">
- Controla cuál es la capa de &apos;vista normal&apos; del agua, para determinar las reflexiones/refracciones.
- </notification>
- <notification name="HelpWaterWave1">
- Controla hacia adónde y a qué velocidad se mueve en los ejes X e Y la versión en tamaño grande de la &apos;vista normal&apos;.
- </notification>
- <notification name="HelpWaterWave2">
- Controla hacia adónde y a qué velocidad se mueve en los ejes X e Y la versión en tamaño pequeño de la &apos;vista normal&apos;.
- </notification>
<notification name="NewSkyPreset">
Dame un nombre para el cielo nuevo.
<form name="form">
@@ -2356,35 +1870,33 @@ Pero, vaya, diviértase si quiere.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="Cannot_Purchase_an_Attachment">
- No se pueden comprar los ítems que aún forman parte de un objeto anexado.
+ No puedes comprar un objeto mientras esté anexado.
</notification>
<notification label="Acerca de las solicitudes de autorización de débito" name="DebitPermissionDetails">
Al admitir esta petición, le da permiso a un script para que coja dólares Linden (L$) de su cuenta. Para revocar este permiso, el propietario del objeto debe eliminarlo o reiniciar ese script del objeto.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="AutoWearNewClothing">
- ¿Quiere vestirse automáticamente el ítem de ropa nueva que ha creado?
- <usetemplate ignoretext="Al vestirme automáticamente la ropa nueva" name="okcancelignore" notext="No" yestext="Sí"/>
+ ¿Quieres ponerte automáticamente la ropa que vas a crear?
+ <usetemplate ignoretext="Ponerme la ropa que estoy creando mientras modifico mi apariencia" name="okcancelignore" notext="No" yestext="Sí"/>
</notification>
<notification name="NotAgeVerified">
- Para acceder a esta parcela, se debe haber verificado su edad.
-¿Quiere visitar la web de [SECOND_LIFE] para verificar su edad?
+ Debes haber verificado tu edad para visitar este sitio. ¿Quieres ir al sitio web de [SECOND_LIFE] y verificarla?
[_URL]
<url name="url" option="0">
https://secondlife.com/account/verification.php?lang=es
</url>
- <usetemplate ignoretext="Advertir de la falta de la verificación de edad" name="okcancelignore" notext="No" yestext="Sí"/>
+ <usetemplate ignoretext="No he verificado mi edad" name="okcancelignore" notext="No" yestext="Sí"/>
</notification>
<notification name="Cannot enter parcel: no payment info on file">
- Antes de que pueda acceder a esta parcela, se requiere que usted tenga archivada su información de pago.
-¿Quiere visitar la web de [SECOND_LIFE] para actualizar esto?
+ Para visitar este sitio debes haber aportado información de pago en tu cuenta. ¿Quieres ir al sitio web de [SECOND_LIFE] y configurar esto?
[_URL]
<url name="url" option="0">
https://secondlife.com/account/index.php?lang=es
</url>
- <usetemplate ignoretext="Advertir de la falta de información de pago" name="okcancelignore" notext="No" yestext="Sí"/>
+ <usetemplate ignoretext="No he registrado información de pago" name="okcancelignore" notext="No" yestext="Sí"/>
</notification>
<notification name="MissingString">
La cadena [STRING_NAME] Ha desaparecido de strings.xml
@@ -2414,7 +1926,7 @@ Pero, vaya, diviértase si quiere.
[FIRST] [LAST] no está conectado
</notification>
<notification name="AddSelfFriend">
- No se puede añadir como amigo a usted mismo.
+ Aunque eres muy agradable, no puedes añadirte como amigo a ti mismo.
</notification>
<notification name="UploadingAuctionSnapshot">
Subiendo fotos del mundo y del sitio web...
@@ -2433,7 +1945,7 @@ Pero, vaya, diviértase si quiere.
Se ha descargado Terrain.raw
</notification>
<notification name="GestureMissing">
- El gesto [NAME] ha desaparecido de la base de datos.
+ No se encuentra en la base de datos el gesto [NAME].
</notification>
<notification name="UnableToLoadGesture">
No se ha podido cargar el gesto [NAME].
@@ -2446,14 +1958,14 @@ Por favor, vuelva a intentarlo.
No se ha podido cargar el hito. Por favor, vuelva a intentarlo.
</notification>
<notification name="CapsKeyOn">
- Tiene pulsada su tecla de bloqueo de mayúsculas, lo que influirá en cómo escriba la contraseña.
-Quizá quiera soltar esa tecla.
+ Tienes pulsada la tecla de mayúsculas.
+Esto puede influir en tu contraseña.
</notification>
<notification name="NotecardMissing">
La nota ha desaparecido de la base de datos.
</notification>
<notification name="NotecardNoPermissions">
- No tiene permisos suficientes para ver la nota.
+ No tienes permiso para ver esta nota.
</notification>
<notification name="RezItemNoPermissions">
No tiene permisos suficientes para renderizar el objeto.
@@ -2491,11 +2003,11 @@ Por favor, vuelva a intentarlo.
Por favor, vuelva a intentarlo.
</notification>
<notification name="CannotBuyObjectsFromDifferentOwners">
- No puede comprar a la vez objetos de diferentes propietarios.
-Por favor, elija sólo uno.
+ No puedes comprar más de un objeto a la vez.
+Por favor, selecciona un sólo objeto.
</notification>
<notification name="ObjectNotForSale">
- El objeto no aparece como puesto a la venta.
+ Este objeto no está en venta.
</notification>
<notification name="EnteringGodMode">
Entrando en el modo administrativo, nivel [LEVEL]
@@ -2504,10 +2016,10 @@ Por favor, elija sólo uno.
Saliendo del modo administrativo, nivel [LEVEL]
</notification>
<notification name="CopyFailed">
- No se ha hecho la copia porque usted no tiene permiso para hacerla
+ No tienes pemiso para copiar esto.
</notification>
<notification name="InventoryAccepted">
- [NAME] ha aceptado su oferta del inventario.
+ [NAME] ha recibido tu oferta de inventario.
</notification>
<notification name="InventoryDeclined">
[NAME] ha rehusado su oferta del inventario.
@@ -2522,12 +2034,14 @@ Por favor, elija sólo uno.
Se ha rehusado su tarjeta de visita.
</notification>
<notification name="TeleportToLandmark">
- Ahora que ha llegado a mainland (los continentes), puede teleportarse a localizaciones como &apos;[NAME]&apos; pulsando el botón Inventario de la esquina inferior derecha de su pantalla, y, después, seleccionando la carpeta Hitos.
-Pulse dos veces en el hito y, luego, pulse en Teleportar para viajar hasta allí.
+ Puedes teleportarte a lugares como &apos;[NAME]&apos; abriendo el panel Lugares -a la derecha de tu pantalla- y seleccionando la sección Hitos.
+Pulsa en un hito para seleccionarlo, y, luego, pulsa &apos;Teleportar&apos; en la parte inferior del panel.
+(También puedes pulsar dos veces en el hito o pulsarlo con el botón derecho del ratón y elegir &apos;Teleportar&apos;.)
</notification>
<notification name="TeleportToPerson">
- Ahora que ha llegado a mainland (los continentes), puede contactar con residentes como &apos;[NAME]&apos; pulsando el botón Inventario de la esquina inferior derecha de su pantalla, y, después, seleccionando la carpeta Tarjetas de visita.
-Pulse dos veces en la tarjeta, pulse en Mensaje Instantáneo, y escriba un mensaje.
+ Puedes contactar con residentes como &apos;[NAME]&apos; abriendo el panel Gente, a la derecha de tu pantalla.
+Selecciona un residente de la lista y pulsa &apos;MI&apos; en la parte inferior del panel.
+(También puedes pulsar dos veces en su nombre o pulsarlo con el botón derecho y elegir &apos;MI&apos;).
</notification>
<notification name="CantSelectLandFromMultipleRegions">
No puede seleccionar un terreno que cruce las fronteras entre servidores.
@@ -2550,6 +2064,9 @@ Inténtelo seleccionando un trozo más pequeño de terreno.
<notification name="SystemMessage">
[MESSAGE]
</notification>
+ <notification name="PaymentRecived">
+ [MESSAGE]
+ </notification>
<notification name="EventNotification">
Notificación de un evento:
@@ -2574,8 +2091,20 @@ Inténtelo seleccionando un trozo más pequeño de terreno.
[NAMES]
</notification>
<notification name="NoQuickTime">
- No se ve como instalado en su sistema el software QuickTime de Apple.
-Si quiere ver por streaming elementos multimedia en las parcelas que los tengan, debe ir al sitio web de QuickTime (http://www.apple.com/quicktime) e instalar el QuickTime Player.
+ No parece que tu sistema tenga instalado el software QuickTime de Apple.
+Si quieres ver media en streaming en las parcelas que los tienen, deberías ir al [http://www.apple.com/quicktime sitio de QuickTime] e intalar el QuickTime Player.
+ </notification>
+ <notification name="NoPlugin">
+ No se ha encontrado el &apos;Media Plugin&apos; para manejar el &apos;mime type&apos; &quot;[MIME_TYPE]&quot;. Los media de este tipo no estarán disponibles.
+ </notification>
+ <notification name="MediaPluginFailed">
+ Fallo de este &apos;Media Plugin&apos;:
+ [PLUGIN]
+
+Por favor, reinstala el plugin o contacta con el vendedor si sigues teniendo problemas.
+ <form name="form">
+ <ignore name="ignore" text="Fallo al ejecutar un &apos;Media Plugin&apos;"/>
+ </form>
</notification>
<notification name="OwnedObjectsReturned">
Se han devuelto a su inventario los objetos de los que usted era propietario en la parcela seleccionada.
@@ -2594,24 +2123,26 @@ Los objetos no transferibles que se transfirieron al grupo han sido borrados.
<notification name="UnOwnedObjectsReturned">
Se han devuelto a sus propietarios los objetos de los que usted NO era propietario en la parcela seleccionada.
</notification>
+ <notification name="ServerObjectMessage">
+ Mensaje de [NAME]:
+[MSG]
+ </notification>
<notification name="NotSafe">
- Este es un terreno con el daño autorizado (&apos;no seguro&apos;).
-Aquí puede ser herido. Si muere, será teleportado a su Base.
+ Este terreno tiene el daño activado.
+Aquí puedes ser herido. Si mueres, se te teleportará a tu Base.
</notification>
<notification name="NoFly">
- En este terreno no se permite volar (&apos;no volar&apos;).
-Aquí no debe volar.
+ Este terreno tiene desactivado el poder volar.
+Aquí no puedes volar.
</notification>
<notification name="PushRestricted">
- Este terreno es &apos;Sin empujones&apos;.
-No puede empujar a otros a menos que sea el propietario del terreno.
+ Este terreno no autoriza el poder empujar. No puedes hacerlo a menos que seas el propetario del terreno.
</notification>
<notification name="NoVoice">
- Este terreno tiene desactivada la voz.
+ Este tereno tiene desactivado el chat de voz. No podrás oír hablar a nadie.
</notification>
<notification name="NoBuild">
- Este terreno tiene desactivado el construir (&apos;no construir&apos;).
-Aquí no puede crear objetos.
+ Este terreno tiene desactivado el poder construir. Aquí no puedes ni construir ni crear objetos.
</notification>
<notification name="ScriptsStopped">
Un administrador ha detenido temporalmente los scripts en esta región.
@@ -2620,12 +2151,12 @@ Aquí no puede crear objetos.
En esta región no se está ejecutando ningún script.
</notification>
<notification name="NoOutsideScripts">
- Esta región tiene desactivados los scripts de otros
-(&apos;no scripts de otros&apos;).
-No se ejecutará ningún script que no pertenezca al propietario del terreno.
+ Este terreno tiene desactivados los scripts externos.
+
+Los scripts no funcionan aquí, excepto los pertenecientes al propietario del terreno.
</notification>
<notification name="ClaimPublicLand">
- Sólo puede reclamar terreno público en la región en que está usted.
+ Sólo puedes reclamar terreno público de la región en que estás.
</notification>
<notification name="RegionTPAccessBlocked">
No está autorizado en esa región por su nivel de calificación. Debe validar su edad y/o instalar el último visor.
@@ -2638,16 +2169,9 @@ Por favor, vaya a la Base de Conocimientos para más detalles sobre el acceso a
<notification name="NoTeenGridAccess">
Su cuenta no puede conectarse a esta región del grid teen.
</notification>
- <notification name="NoHelpIslandTP">
- No puede teleportarse de vuelta a la Help Island (&apos;Isla de Ayuda&apos;).
-Vaya a la &apos;Help Island Public&apos; (&apos;Isla Pública de Ayuda&apos;) para repetir el tutorial.
- </notification>
<notification name="ImproperPaymentStatus">
No tiene el estado de pago adecuado para entrar a esta región.
</notification>
- <notification name="MustGetAgeRegion">
- Debe haber verificado su edad para entrar a esta región.
- </notification>
<notification name="MustGetAgeParcel">
Debe haber verificado su edad para entrar a esta parcela.
</notification>
@@ -2710,7 +2234,8 @@ Por favor, reinténtelo en unos momentos.
No se ha podido encontrar una parcela válida.
</notification>
<notification name="ObjectGiveItem">
- Un objeto llamado [OBJECTFROMNAME], propiedad de [FIRST] [LAST], le ha dado un/a [OBJECTTYPE] de nombre [OBJECTNAME].
+ Un objeto de nombre [OBJECTFROMNAME], propiedad de [NAME_SLURL], te ha dado un/a [OBJECTTYPE]:
+[ITEM_SLURL]
<form name="form">
<button name="Keep" text="Guardar"/>
<button name="Discard" text="Descartar"/>
@@ -2718,7 +2243,8 @@ Por favor, reinténtelo en unos momentos.
</form>
</notification>
<notification name="ObjectGiveItemUnknownUser">
- Un objeto llamado [OBJECTFROMNAME], propiedad de (un usuario desconocido), le ha dado un/a [OBJECTTYPE] de nombre [OBJECTNAME].
+ Un objeto de nombre [OBJECTFROMNAME], propiedad de (un residente desconocido) te ha dado un/a [OBJECTTYPE]:
+[ITEM_SLURL]
<form name="form">
<button name="Keep" text="Guardar"/>
<button name="Discard" text="Descartar"/>
@@ -2726,15 +2252,17 @@ Por favor, reinténtelo en unos momentos.
</form>
</notification>
<notification name="UserGiveItem">
- [NAME] le ha dado un/a [OBJECTTYPE] de nombre &apos;[OBJECTNAME]&apos;.
+ [NAME_SLURL] te ha dado un/a [OBJECTTYPE]:
+[ITEM_SLURL]
<form name="form">
<button name="Keep" text="Guardar"/>
+ <button name="Show" text="Mostrar"/>
<button name="Discard" text="Descartar"/>
- <button name="Mute" text="Ignorar"/>
</form>
</notification>
<notification name="GodMessage">
[NAME]
+
[MESSAGE]
</notification>
<notification name="JoinGroup">
@@ -2746,7 +2274,7 @@ Por favor, reinténtelo en unos momentos.
</form>
</notification>
<notification name="TeleportOffered">
- [NAME] se ha ofrecido a teleportarle hasta su posición:
+ [NAME] te ofrece teleportarte a su localización:
[MESSAGE]
<form name="form">
@@ -2773,6 +2301,9 @@ Por favor, reinténtelo en unos momentos.
<button name="Decline" text="Rehusar"/>
</form>
</notification>
+ <notification name="FriendshipOffered">
+ Has ofrecido amistad a [TO_NAME]
+ </notification>
<notification name="OfferFriendshipNoMessage">
[NAME] le está ofreciendo amistad.
@@ -2797,12 +2328,12 @@ Esto añadirá un ítem a su inventario para que pueda enviar rápidamente a est
</form>
</notification>
<notification name="RegionRestartMinutes">
- La región se reiniciará en [MINUTES] minutos.
-Si permanece en esta región, será desconectado.
+ Esta región se reiniciará en [MINUTES] minutos.
+Si permaneces en esta región serás desconectado.
</notification>
<notification name="RegionRestartSeconds">
- La región se reiniciará en [SECONDS] segundos.
-Si permanece en esta región, será desconectado.
+ Esta región se reiniciará en [SECONDS] segundos.
+Si permaneces en esta región serás desconectado.
</notification>
<notification name="LoadWebPage">
¿Cargar la página web [URL]?
@@ -2822,7 +2353,7 @@ Del objeto: [OBJECTNAME]; propiedad de: [NAME]?
Búsqueda fallida de [TYPE] de nombre [DESC] en la base de datos.
</notification>
<notification name="InvalidWearable">
- El ítem que intenta llevar usa una característica que su visor no puede leer. Por favor, actualice su versión de [APP_NAME] para llevar este ítem.
+ El ítem que quieres vestirte tiene una característica que tu visor no puede leer. Por favor, actualiza tu versión de [APP_NAME] para ponerte este ítem.
</notification>
<notification name="ScriptQuestion">
&apos;[OBJECTNAME]&apos;, un objeto propiedad de &apos;[NAME]&apos;, querría:
@@ -2836,10 +2367,10 @@ Del objeto: [OBJECTNAME]; propiedad de: [NAME]?
</form>
</notification>
<notification name="ScriptQuestionCaution">
- &apos;[OBJECTNAME]&apos;, un objeto propiedad de &apos;[NAME]&apos;, querría:
+ Un objeto de nombre &apos;[OBJECTNAME]&apos;, propiedad de &apos;[NAME]&apos;, quiere:
[QUESTIONS]
-Si no confía en este objeto y su creador, debe denegar la solicitud. Para más información, pulse el botón Detalles.
+Si no confias en este objeto y en su creador, deberías rehusar esta petición.
¿Autorizar esta petición?
<form name="form">
@@ -2862,39 +2393,44 @@ Si no confía en este objeto y su creador, debe denegar la solicitud. Para más
<button name="Ignore" text="Ignorar"/>
</form>
</notification>
+ <notification name="ScriptToast">
+ El &apos;[TITLE]&apos; de [FIRST] [LAST] está esperando una respuesta del usuario.
+ <form name="form">
+ <button name="Open" text="Abrir el diálogo"/>
+ <button name="Ignore" text="Ignorar"/>
+ <button name="Block" text="Ignorar"/>
+ </form>
+ </notification>
<notification name="FirstBalanceIncrease">
- Ha recibido [AMOUNT] L$.
-Pueden darle L$ tanto objetos como otros usuarios.
-Su balance se muestra en la esquina superior derecha de la pantalla.
+ Has recibido [AMOUNT] L$.
+Tu saldo de L$ se muestra arriba a la derecha.
</notification>
<notification name="FirstBalanceDecrease">
- Ha pagado [AMOUNT] L$.
-Su balance se muestra en la esquina superior derecha de la pantalla.
+ Acabas de pagar [AMOUNT] L$.
+Tu saldo de L$ se muestra arriba a la derecha.
+ </notification>
+ <notification name="BuyLindenDollarSuccess">
+ ¡Gracias por tu pago!
+
+Tu saldo de L$ se actualizará cuando se complete el proceso. Si el proceso tarda más de 20 minutos, se cancelará tu transacción, y la cantidad se cargará en tu saldo de US$.
+
+Puedes revisar el estado de tu pago en el Historial de transacciones de tu [http://secondlife.com/account/ Panel de Control]
</notification>
<notification name="FirstSit">
- Está sentado.
-Use las teclas del cursor (o AWSD) para cambiar el punto de vista.
-Pulde el botón &apos;Levantarse&apos; para ponerse de pie.
+ Estás sentado.
+Usa las teclas de cursor (o AWSD) para mirar alrededor.
+Pulsa el botón &apos;Levantarme&apos; para ponerte de pie.
</notification>
<notification name="FirstMap">
- Pulse el mapa y arrástrelo para desplazarlo.
-Púlselo dos veces para teleportarse.
-Use los controles de la derecha para encontrar sitios y mostrar diferentes fondos.
+ Pulsa y arrastra el mapa para ver los alrededores.
+Pulsa dos veces para teleportarte.
+Usa los controles de la derecha para encontrar cosas y mostrar diferentes fondos.
</notification>
<notification name="FirstBuild">
- Usted puede construir objetos nuevos en algunas zonas de [SECOND_LIFE].
-Use las herramientas de arriba a la izquierda para construir, y pruebe a cambiar rápidamente entre ellas pulsando Ctrl o Alt.
-Pulse Esc para dejar de construir.
- </notification>
- <notification name="FirstLeftClickNoHit">
- En algunos objetos concretos, al pulsarlos con el botón izquierdo del ratón interacciona con ellos.
-Si el puntero del ratón pasa a ser una mano puede interactuar con el objeto.
-El botón derecho del ratón siempre muestra un menú con cosas que usted puede hacer.
+ Has abierto las herramientas de construcción. Cada objeto que estás viendo alrededor de ti se ha creado usando estas herramientas.
</notification>
<notification name="FirstTeleport">
- Esta región no permite teleportarse de un punto a otro, por lo que ha sido llevado al Punto de Teleporte más cercano.
-Su destinado está señalado con una columna de luz roja.
-Siga la flecha roja hasta llegar a la columna, o pulse la flecha para hacerla desaparecer.
+ Sólo puedes teleportarte a ciertos lugares de esta región. La flecha apunta al destino que elegiste. Pulsa la flecha para que desaparezca.
</notification>
<notification name="FirstOverrideKeys">
A partir de ahora, sus teclas de movimiento las gestiona un objeto.
@@ -2902,46 +2438,41 @@ Pruebe las teclas del cursor o AWSD para ver qué hacen.
Algunos objetos (las pistolas, por ejemplo) le pedirán que, para usarlos, entre usted en vista subjetiva. Pulse &apos;M&apos; para hacerlo.
</notification>
<notification name="FirstAppearance">
- Está modificando su apariencia.
-Use las teclas del cursor para girar el punto de vista y hacer zoom.
-Cuando acabe, pulse &apos;Guardar todo&apos; para salvar su apariencia y salir del modificarla.
-Puede modificar su apariencia tantas veces como quiera.
+ Estás modicando tu apariencia.
+Usa las teclas de cursor para mirar alrededor.
+Cuando lo hayas hecho, pulsa &apos;Guardar todo&apos;.
</notification>
<notification name="FirstInventory">
- Este es su inventario. Tiene objetos, notas, ropas, y otras cosas de su propiedad.
-* Para vestirse un objeto o un vestuario completo, arrástrelo hasta usted mismo.
-* Para colocar un objeto en el mundo, arrástrelo hasta el suelo.
-* Para leer una nota, pulse dos veces en ella.
+ Este es tu inventario: contiene los ítems de los que eres propietario.
+
+* Para vestirte algo, arrástralo hasta ti mismo.
+* Para colocar un objeto en el mundo, arrástralo hasta el suelo.
+* Para leer una nota, pulsa dos veces en ella.
</notification>
<notification name="FirstSandbox">
- Esta es una región &apos;sandbox&apos; (zona de pruebas).
-Los objetos que construya aquí pueden ser eliminados cuando salga de esta zona, pues los sandbox se limpian regularmente. Por favor, tenga en cuenta la información que hay arriba de su pantalla junto al nombre de la región.
+ Esta es una región &apos;sandbox&apos; (zona de pruebas) donde los Residentes pueden aprender a construir.
-Las regiones sandbox no son frecuentes, y están señalizadas.
+Los objetos que construyas aquí serán eliminados cuando la abandones; por tanto, no olvides pulsarlos con el botón derecho y elegir &apos;Tomar&apos; para que tu creación vaya a tu inventario.
</notification>
<notification name="FirstFlexible">
- Este objeto es flexible.
-Los objetos flexibles no pueden ser materiales, y serán inmateriales hasta que se desmarque la casilla de flexibles.
+ Este objeto es flexible. Los objetos flexibles han de ser inmateriales, no materiales.
</notification>
<notification name="FirstDebugMenus">
- Ha activado el menú Avanzado.
-Contiene herramientas útiles para los desarrolladores que trabajan mejorando [SECOND_LIFE].
-Para pasar este menú a una ventana, pulse Ctrl+Alt+D. En un Mac, pulse &#8997;&#8984;D.
+ Has abierto el menú Avanzado.
+
+Para activar este menú,
+ Windows: Ctrl+Alt+D
+ Mac: ⌥⌘D
</notification>
<notification name="FirstSculptedPrim">
- Está editando un prim &apos;sculpted&apos;.
-Los prim sculpted requieren una textura especial para tomar forma.
-Puede encontrar ejemplos de texturas sculpted en la biblioteca del inventario.
- </notification>
- <notification name="FirstMedia">
- Ha empezado a reproducir media. Puede hacer que los media se reproduzcan automáticamente en la pestaña Audio y Vídeo de la ventana de preferencias. Note que tal cosa puede suponer un riesgo de seguridad en los sitios multimedia en los que no confíe.
+ Está editando un prim &apos;sculpted&apos;. Los prim sculpted necesitan una textura especial para definir su forma.
</notification>
<notification name="MaxListSelectMessage">
Puede seleccionar un máximo de [MAX_SELECT] ítems de esta lista.
</notification>
<notification name="VoiceInviteP2P">
- [NAME] le está invitando a un chat de voz.
-Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a quien llama.
+ [NAME] te está invitando a un chat de voz.
+Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar al que llama.
<form name="form">
<button name="Accept" text="Aceptar"/>
<button name="Decline" text="Rehusar"/>
@@ -2949,17 +2480,17 @@ Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Puls
</form>
</notification>
<notification name="AutoUnmuteByIM">
- [FIRST] [LAST], a quien ha enviado un mensaje instantáneo, ha dejado automáticamente de estar ignorado.
+ [FIRST] [LAST] ha dejado automáticamente de estar ignorado al enviarle un mensaje instantáneo.
</notification>
<notification name="AutoUnmuteByMoney">
- [FIRST] [LAST], a quien ha dado dinero, ha dejado automáticamente de estar ignorado.
+ [FIRST] [LAST] ha dejado automáticamente de estar ignorado al darle dinero.
</notification>
<notification name="AutoUnmuteByInventory">
- [FIRST] [LAST], a quien ha ofrecido algo del inventario, ha dejado automáticamente de estar ignorado.
+ [FIRST] [LAST] ha dejado automáticamente de estar ignorado al ofrecerle algo del inventario.
</notification>
<notification name="VoiceInviteGroup">
[NAME] ha empezado un chat de voz con el grupo [GROUP].
-Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a quien llama.
+Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar al que llama.
<form name="form">
<button name="Accept" text="Aceptar"/>
<button name="Decline" text="Rehusar"/>
@@ -2968,7 +2499,7 @@ Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Puls
</notification>
<notification name="VoiceInviteAdHoc">
[NAME] ha empezado un chat de voz en multiconferencia.
-Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a este usuario.
+Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar al que llama.
<form name="form">
<button name="Accept" text="Aceptar"/>
<button name="Decline" text="Rehusar"/>
@@ -2976,8 +2507,8 @@ Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Puls
</form>
</notification>
<notification name="InviteAdHoc">
- [NAME] le está invitando a un chat en multiconferencia.
-Pulse Aceptar para entrar al chat o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a este usuario.
+ NAME] te está invitando a un chat en multiconferencia.
+Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar al que llama.
<form name="form">
<button name="Accept" text="Aceptar"/>
<button name="Decline" text="Rehusar"/>
@@ -2991,25 +2522,25 @@ Pulse Aceptar para entrar al chat o Rehusar para declinar la invitación. Pulse
Lo sentimos. Este área ha llegado a su capacidad máxima de conversaciones por voz. Por favor, intente usar la voz en otra zona.
</notification>
<notification name="VoiceChannelDisconnected">
- Ha sido desconectado del [VOICE_CHANNEL_NAME]. Va a ser reconectado al chat de voz del mundo.
+ Has sido desconectado de [VOICE_CHANNEL_NAME]. Vas a ser reconectado al chat de voz.
</notification>
<notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] ha colgado la llamada. Usted va a ser reconectado al chat de voz del mundo.
+ [VOICE_CHANNEL_NAME] ha colgado la llamada. Vas a ser reconectado al chat de voz.
</notification>
<notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] ha rehusado su llamada. Usted va a ser reconectado al chat de voz del mundo.
+ [VOICE_CHANNEL_NAME] ha rehusado tu llamada. Vas a ser reconectado al chat de voz.
</notification>
<notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] no está disponible para coger su llamada. Usted va a ser reconectado al chat de voz del mundo.
+ [VOICE_CHANNEL_NAME] no está disponible para coger tu llamada. Vas a ser reconectado al chat de voz.
</notification>
<notification name="VoiceChannelJoinFailed">
- Fallo al conectar al [VOICE_CHANNEL_NAME]; por favor, inténtelo más tarde. Usted va a ser reconectado al chat de voz del mundo.
+ Fallo al conectar a [VOICE_CHANNEL_NAME]; por favor, inténtalo más tarde. Vas a ser reconectado al chat de voz.
</notification>
<notification name="VoiceLoginRetry">
Estamos creando un canal de voz para usted. Se puede tardar hasta un minuto.
</notification>
<notification name="Cannot enter parcel: not a group member">
- No puede entrar en esta parcela, no es miembro del grupo adecuado.
+ Sólo los miembros de un grupo determinado pueden visitar esta zona.
</notification>
<notification name="Cannot enter parcel: banned">
No puede entrar en esta parcela, se le ha prohibido el acceso.
@@ -3024,18 +2555,58 @@ Pulse Aceptar para entrar al chat o Rehusar para declinar la invitación. Pulse
Ha ocurrido un error intentando conectarle al [VOICE_CHANNEL_NAME]. Por favor, inténtelo más tarde.
</notification>
<notification name="ServerVersionChanged">
- La región en la que ha entrado se ejecuta en un simulador con una versión diferente. Pulse este mensaje para ver más detalles.
+ Acabas de entrar en una región que usa un servidor con una versión distinta, y esto puede influir en el funcionamiento. [[URL] Ver las notas de desarrollo].
+ </notification>
+ <notification name="UnsupportedCommandSLURL">
+ No se admite el formato de la SLurl que has pulsado.
</notification>
- <notification name="UnableToOpenCommandURL">
- No puede abrirse desde este navegador la URL que ha pulsado.
+ <notification name="BlockedSLURL">
+ Por tu seguridad, se ha bloqueado una SLurl recibida de un navegador no de confianza.
+ </notification>
+ <notification name="ThrottledSLURL">
+ En muy poco tiempo, se han recibido muchas SLurls desde un navegador que no es de confianza.
+Por tu seguridad, serán bloqueadas durante unos segundos.
+ </notification>
+ <notification name="IMToast">
+ [MESSAGE]
+ <form name="form">
+ <button name="respondbutton" text="Responder"/>
+ </form>
+ </notification>
+ <notification name="AttachmentSaved">
+ Se ha guardado el adjunto.
+ </notification>
+ <notification name="UnableToFindHelpTopic">
+ No se ha podido encontrar un tema de ayuda para este elemento.
+ </notification>
+ <notification name="ObjectMediaFailure">
+ Error del servidor: fallo en la actualización u obtención de los media.
+&apos;[ERROR]&apos;
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TextChatIsMutedByModerator">
+ Un moderador ha silenciado tu chat de texto.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="VoiceIsMutedByModerator">
+ Un moderador ha silenciado tu voz.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmClearTeleportHistory">
+ ¿Estás seguro de que quieres borrar tu historial de teleportes?
+ <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+ </notification>
+ <notification name="BottomTrayButtonCanNotBeShown">
+ El botón elegido no se puede mostrar correctamente.
+Se mostrará cuando tenga suficiente espacio.
</notification>
<global name="UnsupportedCPU">
- La velocidad de su CPU no cumple los requerimientos mínimos.
</global>
<global name="UnsupportedGLRequirements">
- Parece que no tiene los requerimientos de hardware apropiados para [APP_NAME]. [APP_NAME] requiere una tarjeta gráfica OpenGL que admita texturas múltiples (&apos;multitexture support&apos;). Si la tiene, compruebe que tiene los últimos drivers para su tarjeta gráfica, así como los últimos parches y &apos;service packs&apos; para su sistema operativo.
+ Parece que no tienes el hardware apropiado para [APP_NAME]. [APP_NAME] requiere una tarjeta gráfica OpenGL que admita texturas múltiples (&apos;multitexture support&apos;). Si la tienes, comprueba que tienes los últimos &apos;drivers&apos; para tu tarjeta gráfica, así como los últimos parches y &apos;service packs&apos; para tu sistema operativo.
-Si los problemas persisten, por favor, acuda a: http://www.secondlife.com/support
+Si los problemas persisten, por favor, acude a [SUPPORT_SITE].
</global>
<global name="UnsupportedCPUAmount">
796
@@ -3049,10 +2620,8 @@ Si los problemas persisten, por favor, acuda a: http://www.secondlife.com/suppor
<global name="UnsupportedRAM">
- La memoria de su sistema no cumple los requerimientos mínimos.
</global>
- <global name="PermYes">
- Sí
- </global>
- <global name="PermNo">
- No
+ <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+ Si posees un terreno, puedes hacerlo tu Base.
+También puedes buscar en el Mapa lugares marcados como &quot;Puntos de Información&quot;.
</global>
</notifications>
diff --git a/indra/newview/skins/default/xui/es/panel_active_object_row.xml b/indra/newview/skins/default/xui/es/panel_active_object_row.xml
new file mode 100644
index 0000000000..8d4fadb101
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_active_object_row.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+ <string name="unknown_obj">
+ Objeto desconocido
+ </string>
+ <text name="object_name">
+ Objeto sin nombre
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml
new file mode 100644
index 0000000000..6f30286216
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <panel name="panel_call_buttons">
+ <button label="Llamar" name="call_btn"/>
+ <button label="Colgar" name="end_call_btn"/>
+ <button label="Controles de la voz" name="voice_ctrls_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
new file mode 100644
index 0000000000..83d7223272
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_list_item">
+ <string name="FormatSeconds">
+ [COUNT] seg.
+ </string>
+ <string name="FormatMinutes">
+ [COUNT] min.
+ </string>
+ <string name="FormatHours">
+ [COUNT] h.
+ </string>
+ <string name="FormatDays">
+ [COUNT] d.
+ </string>
+ <string name="FormatWeeks">
+ [COUNT] sem.
+ </string>
+ <string name="FormatMonths">
+ [COUNT] mes/es
+ </string>
+ <string name="FormatYears">
+ [COUNT] año/s
+ </string>
+ <text name="avatar_name" value="Desconocido"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
new file mode 100644
index 0000000000..6513345448
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="block_list_panel">
+ <text name="title_text">
+ Lista de ignorados
+ </text>
+ <scroll_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
+ <button label="Ignorar al residente..." label_selected="Ignorar al residente..." name="Block resident..." tool_tip="Elige a un residente para ignorarle"/>
+ <button label="Ignorar objetos según el nombre..." label_selected="Ignorar objetos según el nombre..." name="Block object by name..."/>
+ <button label="No ignorar" label_selected="No ignorar" name="Unblock" tool_tip="Quitar objetos o residentes de la lista de ignorados"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_bottomtray.xml b/indra/newview/skins/default/xui/es/panel_bottomtray.xml
new file mode 100644
index 0000000000..9924cd5ed6
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_bottomtray.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+ <string name="SpeakBtnToolTip">
+ Activa/Desactiva el micrófono
+ </string>
+ <string name="VoiceControlBtnToolTip">
+ Muestra/Oculta el panel del control de voz
+ </string>
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="gesture_panel">
+ <gesture_combo_box label="Gestos" name="Gesture" tool_tip="Muestra/Oculta los gestos"/>
+ </layout_panel>
+ <layout_panel name="movement_panel">
+ <button label="Moverme" name="movement_btn" tool_tip="Muestra/Oculta los controles del movimiento"/>
+ </layout_panel>
+ <layout_panel name="cam_panel">
+ <button label="Visión" name="camera_btn" tool_tip="Muestra/Oculta los controles de la cámara"/>
+ </layout_panel>
+ <layout_panel name="snapshot_panel">
+ <button label="" name="snapshots" tool_tip="Hacer una foto"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_classified_info.xml b/indra/newview/skins/default/xui/es/panel_classified_info.xml
new file mode 100644
index 0000000000..3b82994e32
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_classified_info.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_classified_info">
+ <text name="title" value="Información del clasificado"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="classified_name" value="[nombre]"/>
+ <text name="classified_location" value="[cargando...]"/>
+ <text name="content_type" value="[tipo de contenido]"/>
+ <text name="category" value="[categoría]"/>
+ <check_box label="Renovar automáticamente cada semana" name="auto_renew"/>
+ <text name="price_for_listing" tool_tip="Precio por publicarlo.">
+ [PRICE] L$
+ </text>
+ <text name="classified_desc" value="[descripción]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <button label="Teleportar" name="teleport_btn"/>
+ <button label="Mapa" name="show_on_map_btn"/>
+ <button label="Editar" name="edit_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_alpha.xml b/indra/newview/skins/default/xui/es/panel_edit_alpha.xml
new file mode 100644
index 0000000000..3f238da9d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_alpha.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+ <panel name="avatar_alpha_color_panel">
+ <texture_picker label="Alfa inferior" name="Lower Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Alfa superior" name="Upper Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Alfa de la cabeza" name="Head Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Alfa de los ojos" name="Eye Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Alfa del pelo" name="Hair Alpha" tool_tip="Pulsa para elegir una imagen"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_classified.xml b/indra/newview/skins/default/xui/es/panel_edit_classified.xml
new file mode 100644
index 0000000000..e612104b3f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_classified.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Editar el clasificado" name="panel_edit_classified">
+ <panel.string name="location_notice">
+ (se actualizará tras guardarlo)
+ </panel.string>
+ <text name="title">
+ Editar el clasificado
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <icon label="" name="edit_icon" tool_tip="Pulsa para elegir una imagen"/>
+ <text name="Name:">
+ Título:
+ </text>
+ <text name="description_label">
+ Descripción:
+ </text>
+ <text name="location_label">
+ Localización:
+ </text>
+ <text name="classified_location">
+ cargando...
+ </text>
+ <button label="Configurarlo en esta localización" name="set_to_curr_location_btn"/>
+ <spinner label="L$" name="price_for_listing" tool_tip="Precio por publicarlo." value="50"/>
+ <check_box label="Renovar automáticamente cada semana" name="auto_renew"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <button label="Guardar" name="save_changes_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_eyes.xml b/indra/newview/skins/default/xui/es/panel_edit_eyes.xml
new file mode 100644
index 0000000000..e33848554d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_eyes.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_eyes_panel">
+ <panel name="avatar_eye_color_panel">
+ <texture_picker label="Iris" name="Iris" tool_tip="Pulsa para elegir una imagen"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="eyes_main_tab" title="Ojos"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_gloves.xml b/indra/newview/skins/default/xui/es/panel_edit_gloves.xml
new file mode 100644
index 0000000000..397322466c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_gloves.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+ <panel name="avatar_gloves_color_panel">
+ <texture_picker label="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="gloves_main_tab" title="Guantes"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_hair.xml b/indra/newview/skins/default/xui/es/panel_edit_hair.xml
new file mode 100644
index 0000000000..49cc8ce98c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_hair.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_hair_panel">
+ <panel name="avatar_hair_color_panel">
+ <texture_picker label="Textura" name="Texture" tool_tip="Pulsa para elegir una imagen"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="hair_color_tab" title="Color"/>
+ <accordion_tab name="hair_style_tab" title="Estilo"/>
+ <accordion_tab name="hair_eyebrows_tab" title="Cejas"/>
+ <accordion_tab name="hair_facial_tab" title="Facial"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_jacket.xml b/indra/newview/skins/default/xui/es/panel_edit_jacket.xml
new file mode 100644
index 0000000000..abee993aec
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_jacket.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+ <panel name="avatar_jacket_color_panel">
+ <texture_picker label="Tejido superior" name="Upper Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Tejido inferior" name="Lower Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="jacket_main_tab" title="Chaqueta"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_pants.xml b/indra/newview/skins/default/xui/es/panel_edit_pants.xml
new file mode 100644
index 0000000000..80eb5f0de0
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_pants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+ <panel name="avatar_pants_color_panel">
+ <texture_picker label="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="pants_main_tab" title="Pantalones"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_pick.xml b/indra/newview/skins/default/xui/es/panel_edit_pick.xml
new file mode 100644
index 0000000000..839e9c6023
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_pick.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Editar el destacado" name="panel_edit_pick">
+ <text name="title">
+ Editar el destacado
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <icon label="" name="edit_icon" tool_tip="Pulsa para elegir una imagen"/>
+ <text name="Name:">
+ Título:
+ </text>
+ <text name="description_label">
+ Descripción:
+ </text>
+ <text name="location_label">
+ Posición:
+ </text>
+ <text name="pick_location">
+ cargando...
+ </text>
+ <button label="Configurar en la posición actual" name="set_to_curr_location_btn"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <button label="Guardar [WHAT]" name="save_changes_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_profile.xml b/indra/newview/skins/default/xui/es/panel_edit_profile.xml
index c12dd8d58c..e1ff6ec92a 100644
--- a/indra/newview/skins/default/xui/es/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/es/panel_edit_profile.xml
@@ -1,45 +1,48 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident"
- value="Residente" />
- <string name="AcctTypeTrial"
- value="Prueba" />
- <string name="AcctTypeCharterMember"
- value="Miembro fundador" />
- <string name="AcctTypeEmployee"
- value="Empleado de Linden Lab" />
- <string name="PaymentInfoUsed"
- value="Ha usado una forma de pago" />
- <string name="PaymentInfoOnFile"
- value="Hay infor. de la forma de pago" />
- <string name="NoPaymentInfoOnFile"
- value="Sin infor. de la forma de pago" />
- <string name="AgeVerified"
- value="Edad verificada" />
- <string name="NotAgeVerified"
- value="Edad no verificada" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=es
- </string>
- <panel name="scroll_content_panel">
- <panel name="data_panel" >
- <panel name="lifes_images_panel">
- <panel name="second_life_image_panel">
- <text name="second_life_photo_title_text">
- [SECOND_LIFE]:
- </text>
- </panel>
- </panel>
- <text name="title_partner_text" value="Compañero/a:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="text_box3">
- Mensaje en el estado ocupado:
- </text>
- </panel>
- </panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Editar el perfil" name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <string name="AcctTypeResident" value="Residente"/>
+ <string name="AcctTypeTrial" value="Prueba"/>
+ <string name="AcctTypeCharterMember" value="Miembro fundador"/>
+ <string name="AcctTypeEmployee" value="Empleado de Linden Lab"/>
+ <string name="PaymentInfoUsed" value="Ha usado una forma de pago"/>
+ <string name="PaymentInfoOnFile" value="Hay infor. de la forma de pago"/>
+ <string name="NoPaymentInfoOnFile" value="Sin infor. de la forma de pago"/>
+ <string name="AgeVerified" value="Edad verificada"/>
+ <string name="NotAgeVerified" value="Edad no verificada"/>
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=es
+ </string>
+ <string name="no_partner_text" value="Ninguno"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="data_panel">
+ <panel name="lifes_images_panel">
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Pulsa para elegir una imagen"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="real_world_photo_title_text" value="Mundo real:"/>
+ </panel>
+ <icon label="" name="real_world_edit_icon" tool_tip="Pulsa para elegir una imagen"/>
+ <text name="title_homepage_text">
+ Web:
+ </text>
+ <check_box label="Mostrarme en los resultados de la búsqueda" name="show_in_search_checkbox"/>
+ <text name="title_acc_status_text" value="Mi cuenta:"/>
+ <text name="my_account_link" value="[[URL] Ir a mi Panel de Control]"/>
+ <text name="acc_status_text" value="Residente. No ha aportado información de pago."/>
+ <text name="title_partner_text" value="Mi compañero/a:"/>
+ <text name="partner_edit_link" value="[[URL] Editar]"/>
+ </panel>
+ </panel>
+ </scroll_container>
+ <panel name="profile_me_buttons_panel">
+ <button label="Guardar cambios" name="save_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_shape.xml b/indra/newview/skins/default/xui/es/panel_edit_shape.xml
new file mode 100644
index 0000000000..8a9ac0e9ec
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_shape.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shape_panel">
+ <panel name="avatar_sex_panel">
+ <text name="gender_text">
+ Sexo:
+ </text>
+ <radio_group name="sex_radio">
+ <radio_item label="Mujer" name="radio"/>
+ <radio_item label="Varón" name="radio2"/>
+ </radio_group>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shape_body_tab" title="Cuerpo"/>
+ <accordion_tab name="shape_head_tab" title="Cabeza"/>
+ <accordion_tab name="shape_eyes_tab" title="Ojos"/>
+ <accordion_tab name="shape_ears_tab" title="Orejas"/>
+ <accordion_tab name="shape_nose_tab" title="Nariz"/>
+ <accordion_tab name="shape_mouth_tab" title="Boca"/>
+ <accordion_tab name="shape_chin_tab" title="Barbilla"/>
+ <accordion_tab name="shape_torso_tab" title="Torso"/>
+ <accordion_tab name="shape_legs_tab" title="Piernas"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_shirt.xml b/indra/newview/skins/default/xui/es/panel_edit_shirt.xml
new file mode 100644
index 0000000000..6d65660409
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_shirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shirt_panel">
+ <panel name="avatar_shirt_color_panel">
+ <texture_picker label="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shirt_main_tab" title="Camisa"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_shoes.xml b/indra/newview/skins/default/xui/es/panel_edit_shoes.xml
new file mode 100644
index 0000000000..e613b1809d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_shoes.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+ <panel name="avatar_shoes_color_panel">
+ <texture_picker label="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shoes_main_tab" title="Zapatos"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_skin.xml b/indra/newview/skins/default/xui/es/panel_edit_skin.xml
new file mode 100644
index 0000000000..2d9e556a4a
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_skin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skin_panel">
+ <panel name="avatar_skin_color_panel">
+ <texture_picker label="Tatuajes de la cabeza" name="Head Tattoos" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Tatuajes superiores" name="Upper Tattoos" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Tatuajes inferiores" name="Lower Tattoos" tool_tip="Pulsa para elegir una imagen"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skin_color_tab" title="Color de la piel"/>
+ <accordion_tab name="skin_face_tab" title="Detalles faciales"/>
+ <accordion_tab name="skin_makeup_tab" title="Maquillaje"/>
+ <accordion_tab name="skin_body_tab" title="Detalles del cuerpo"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_skirt.xml b/indra/newview/skins/default/xui/es/panel_edit_skirt.xml
new file mode 100644
index 0000000000..c8e25d38a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_skirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skirt_panel">
+ <panel name="avatar_skirt_color_panel">
+ <texture_picker label="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skirt_main_tab" title="Falda"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_socks.xml b/indra/newview/skins/default/xui/es/panel_edit_socks.xml
new file mode 100644
index 0000000000..d65f119da7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_socks.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_socks_panel">
+ <panel name="avatar_socks_color_panel">
+ <texture_picker label="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="socks_main_tab" title="Calcetines"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml
new file mode 100644
index 0000000000..e5e72a11e4
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_tattoo_panel">
+ <panel name="avatar_tattoo_color_panel">
+ <texture_picker label="Tatuaje de la cabeza" name="Head Tattoo" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Tatuaje superior" name="Upper Tattoo" tool_tip="Pulsa para elegir una imagen"/>
+ <texture_picker label="Tatuaje inferior" name="Lower Tattoo" tool_tip="Pulsa para elegir una imagen"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_underpants.xml b/indra/newview/skins/default/xui/es/panel_edit_underpants.xml
new file mode 100644
index 0000000000..ea446c1625
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_underpants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+ <panel name="avatar_underpants_color_panel">
+ <texture_picker label="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="underpants_main_tab" title="Ropa interior"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml
new file mode 100644
index 0000000000..92e42657a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+ <panel name="avatar_undershirt_color_panel">
+ <texture_picker label="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/>
+ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="undershirt_main_tab" title="Camiseta"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_wearable.xml b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml
new file mode 100644
index 0000000000..6d48b77d3c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Se puede poner" name="panel_edit_wearable">
+ <string name="edit_shape_title">
+ Modificando la anatomía
+ </string>
+ <string name="edit_skin_title">
+ Modificando la piel
+ </string>
+ <string name="edit_hair_title">
+ Modificando el pelo
+ </string>
+ <string name="edit_eyes_title">
+ Modificando los ojos
+ </string>
+ <string name="edit_shirt_title">
+ Modificando la camisa
+ </string>
+ <string name="edit_pants_title">
+ Modificando los pantalones
+ </string>
+ <string name="edit_shoes_title">
+ Modificando los zapatos
+ </string>
+ <string name="edit_socks_title">
+ Modificando los calcetines
+ </string>
+ <string name="edit_jacket_title">
+ Modificando la chaqueta
+ </string>
+ <string name="edit_skirt_title">
+ Modificando la falda
+ </string>
+ <string name="edit_gloves_title">
+ Modificando los guantes
+ </string>
+ <string name="edit_undershirt_title">
+ Modificando la camiseta
+ </string>
+ <string name="edit_underpants_title">
+ Modificando la ropa interior
+ </string>
+ <string name="edit_alpha_title">
+ Modificando la capa Alfa
+ </string>
+ <string name="edit_tattoo_title">
+ Modificando los tatuajes
+ </string>
+ <string name="shape_desc_text">
+ Anatomía:
+ </string>
+ <string name="skin_desc_text">
+ Piel:
+ </string>
+ <string name="hair_desc_text">
+ Pelo:
+ </string>
+ <string name="eyes_desc_text">
+ Ojos:
+ </string>
+ <string name="shirt_desc_text">
+ Camisa:
+ </string>
+ <string name="pants_desc_text">
+ Pantalones:
+ </string>
+ <string name="shoes_desc_text">
+ Zapatos:
+ </string>
+ <string name="socks_desc_text">
+ Calcetines:
+ </string>
+ <string name="jacket_desc_text">
+ Chaqueta:
+ </string>
+ <string name="skirt_skirt_desc_text">
+ Falda:
+ </string>
+ <string name="gloves_desc_text">
+ Guantes:
+ </string>
+ <string name="undershirt_desc_text">
+ Camiseta:
+ </string>
+ <string name="underpants_desc_text">
+ Ropa interior:
+ </string>
+ <string name="alpha_desc_text">
+ Capa alfa:
+ </string>
+ <string name="tattoo_desc_text">
+ Tatuaje:
+ </string>
+ <text name="edit_wearable_title" value="Modificando la anatomía"/>
+ <panel label="Camisa" name="wearable_type_panel">
+ <text name="description_text" value="Anatomía:"/>
+ </panel>
+ <panel name="button_panel">
+ <button label="Guardar como" name="save_as_button"/>
+ <button label="Revertir" name="revert_button"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_friends.xml b/indra/newview/skins/default/xui/es/panel_friends.xml
index ea5c7d1e4f..833b71a038 100644
--- a/indra/newview/skins/default/xui/es/panel_friends.xml
+++ b/indra/newview/skins/default/xui/es/panel_friends.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="friends">
<string name="Multiple">
- Varios amigos...
+ Varios amigos
</string>
<scroll_list name="friend_list" tool_tip="Para seleccionar a varios amigos, mantenga pulsado Ctrl o Mays. mientras les va pulsando.">
<column name="icon_online_status" tool_tip="Estado de conexión"/>
@@ -13,8 +13,8 @@
</scroll_list>
<button label="MI/Llamada" name="im_btn" tool_tip="Abrir sesión de mensajes instantáneos"/>
<button label="Perfil" name="profile_btn" tool_tip="Mostrar la imagen, los grupos, y otra información"/>
- <button label="Teleportar..." name="offer_teleport_btn" tool_tip="Ofrecer a este amigo teleportarle hasta su posición"/>
- <button label="Pagar..." name="pay_btn" tool_tip="Dar dólares Linden (L$) a este amigo"/>
- <button label="Quitar..." name="remove_btn" tool_tip="Quitar a esta persona de su lista de amigos"/>
- <button label="Añadir..." name="add_btn" tool_tip="Ofrecer ser mi amigo a un residente"/>
+ <button label="Teleporte" name="offer_teleport_btn" tool_tip="Ofrecer a este amigo teleportarle hasta su posición"/>
+ <button label="Pagar" name="pay_btn" tool_tip="Dar dólares Linden (L$) a este amigo"/>
+ <button label="Quitar" name="remove_btn" tool_tip="Quitar a esta persona de su lista de amigos"/>
+ <button label="Añadir" name="add_btn" tool_tip="Ofrecer ser mi amigo a un residente"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_control_panel.xml b/indra/newview/skins/default/xui/es/panel_group_control_panel.xml
new file mode 100644
index 0000000000..c55d69b8a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_group_control_panel.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <button label="Perfil del grupo" name="group_info_btn"/>
+ <panel name="panel_call_buttons">
+ <button label="Llamar al grupo" name="call_btn"/>
+ <button label="Colgar" name="end_call_btn"/>
+ <button label="Abrir los controles de la voz" name="voice_ctrls_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_general.xml b/indra/newview/skins/default/xui/es/panel_group_general.xml
index 4fd5685b7d..4f7c7e599e 100644
--- a/indra/newview/skins/default/xui/es/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_general.xml
@@ -1,72 +1,37 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="General" name="general_tab">
- <string name="help_text">
- La pestaña General contiene información global de este grupo, la lista de propietarios y miembros visibles, las preferencias generales del grupo, y las opciones de los miembros.
+ <panel.string name="help_text">
+ La pestaña General tiene información general de este grupo, una lista de sus miembros, las preferencias generales del grupo y las opciones de sus miembros.
-Ponga su ratón sobre las opciones para más información.
- </string>
- <string name="group_info_unchanged">
- La información general del grupo ha cambiado.
- </string>
- <button label="?" label_selected="?" name="help_button"/>
- <line_editor label="Escriba aquí el nombre de su nuevo grupo" name="group_name_editor"/>
- <text name="group_name">
- Escriba aquí el nombre de su nuevo grupo
- </text>
- <text name="prepend_founded_by">
- Creado por
- </text>
- <text name="founder_name">
- (esperando)
- </text>
- <text name="group_charter_label">
- Carta del grupo
- </text>
- <texture_picker label="Emblema del grupo" name="insignia" tool_tip="Pulse para elegir una imagen"/>
+Deja el cursor sobre las opciones para ver más ayuda.
+ </panel.string>
+ <panel.string name="group_info_unchanged">
+ Ha cambiado la información general del grupo
+ </panel.string>
+ <panel.string name="incomplete_member_data_str">
+ Recuperando los datos de los miembros
+ </panel.string>
<text_editor name="charter">
Carta del grupo
</text_editor>
- <button label="Entrar (0 L$)" label_selected="Entrar (0 L$)" name="join_button"/>
- <button label="Ver en detalle" label_selected="Ver en detalle" name="info_button"/>
- <text name="text_owners_and_visible_members">
- Propietarios y Miembros visibles
- </text>
- <text name="text_owners_are_shown_in_bold">
- (los propietarios aparecen en negrilla)
- </text>
<name_list name="visible_members">
- <name_list.columns label="Nombre del miembro" name="name" relwidth="0.40"/>
+ <name_list.columns label="Miembro" name="name" relwidth="0.40"/>
<name_list.columns label="Etiqueta" name="title" relwidth="0.25"/>
- <name_list.columns label="Última conexión" name="online" relwidth="0.35"/>
</name_list>
- <text name="text_group_preferences">
- Preferencias del grupo
+ <text name="active_title_label">
+ Mi etiqueta
</text>
+ <combo_box name="active_title" tool_tip="Configura la etiqueta que se verá sobre el nombre de tu avatar cuando tengas activo este grupo."/>
+ <check_box label="Recibir los avisos del grupo" name="receive_notices" tool_tip="Configura si quieres recibir avisos del grupo. Desmárcalo si este grupo te envía &apos;spam&apos;."/>
+ <check_box label="Mostrarlo en mi perfil" name="list_groups_in_profile" tool_tip="Configura si quieres que este grupo se vea en tu perfil"/>
<panel name="preferences_container">
- <check_box label="Mostrar en la búsqueda" name="show_in_group_list" tool_tip="Dejar que la gente vea este grupo en los resultados de la búsqueda."/>
- <check_box label="Inscripción libre" name="open_enrollement" tool_tip="Definir si se admiten al grupo nuevos miembros sin que sea preciso invitárseles."/>
- <check_box label="Cuota de inscripción:" name="check_enrollment_fee" tool_tip="Define si se requiere una cuota para entrar al grupo."/>
- <spinner width="60" left_delta="130" name="spin_enrollment_fee" tool_tip="Cuando está marcado &apos;Cuota de inscripción&apos;, los miembros nuevos deben pagar esta cuota para entrar al grupo."/>
- <combo_box bottom_delta="-38" width="150" name="group_mature_check" tool_tip="Establece si la información de su grupo es &apos;mature&apos;.">
- <combo_box.item name="select_mature" label="- Elegir Calificación -"/>
- <combo_box.item name="mature" label="Contenido &apos;Mature&apos;"/>
- <combo_box.item name="pg" label="Contenido &apos;PG&apos;"/>
+ <check_box label="Inscripción libre" name="open_enrollement" tool_tip="Configura si se permite la entrada de nuevos miembros sin ser invitados."/>
+ <check_box label="Cuota de entrada" name="check_enrollment_fee" tool_tip="Configura si hay que pagar una cuota para entrar al grupo"/>
+ <spinner label="L$" left_delta="130" name="spin_enrollment_fee" tool_tip="Si la opción Cuota de entrada está marcada, los nuevos miembros han de pagar esta cuota para entrar al grupo." width="60"/>
+ <combo_box bottom_delta="-38" name="group_mature_check" tool_tip="Establece si la información de su grupo es &apos;mature&apos;." width="150">
+ <combo_box.item label="Contenido &apos;PG&apos;" name="pg"/>
+ <combo_box.item label="Contenido &apos;Mature&apos;" name="mature"/>
</combo_box>
- <panel name="title_container">
- <text name="active_title_label">
- Mi etiqueta activa
- </text>
- <combo_box name="active_title" tool_tip="Define la etiqueta que aparecerá sobre el nombre de su avatar cuando tenga activo este grupo."/>
- </panel>
- <check_box label="Recibir los avisos del grupo" name="receive_notices" tool_tip="Define si quiere recibir avisos de este grupo. Desmarque esto si el grupo le envía spam."/>
- <check_box label="Mostrar el grupo en mi perfil" name="list_groups_in_profile" tool_tip="Define si quiere que este grupo aparezca en su perfil."/>
+ <check_box initial_value="true" label="Mostrar en la búsqueda" name="show_in_group_list" tool_tip="Permite que la gente vea este grupo en los resultados de la búsqueda"/>
</panel>
- <string name="incomplete_member_data_str">
- Recuperando los datos de los miembros
- </string>
- <string name="confirm_group_create_str">
- Crear este grupo cuesta 100 L$.
-¿Está plena, absoluta, y TOTALMENTE seguro de que quiere gastarse 100 L$ para crear este grupo?
-Queda avisado de que si, en un plazo de 48 horas, no entra nadie al grupo, éste será disuelto, y el nombre no se podrá usar en el futuro.
- </string>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml
new file mode 100644
index 0000000000..be08a1aaa7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Información del grupo" name="GroupInfo">
+ <panel.string name="default_needs_apply_text">
+ Hay cambios sin guardar en la pestaña actual
+ </panel.string>
+ <panel.string name="want_apply_text">
+ ¿Quieres guardar estos cambios?
+ </panel.string>
+ <panel.string name="group_join_btn">
+ Entrar ([AMOUNT] L$)
+ </panel.string>
+ <panel.string name="group_join_free">
+ Gratis
+ </panel.string>
+ <text name="group_name" value="(Cargando...)"/>
+ <line_editor label="Escribe aquí el nombre de tu nuevo grupo" name="group_name_editor"/>
+ <texture_picker label="" name="insignia" tool_tip="Pulsa para elegir una imagen"/>
+ <text name="prepend_founded_by">
+ Fundador:
+ </text>
+ <name_box initial_value="(buscando)" name="founder_name"/>
+ <text name="join_cost_text">
+ Gratis
+ </text>
+ <button label="¡ENTRA AHORA!" name="btn_join"/>
+ <accordion name="groups_accordion">
+ <accordion_tab name="group_general_tab" title="General"/>
+ <accordion_tab name="group_roles_tab" title="Roles"/>
+ <accordion_tab name="group_notices_tab" title="Avisos"/>
+ <accordion_tab name="group_land_tab" title="Terreno/Bienes"/>
+ </accordion>
+ <panel name="button_row">
+ <button label="Crear" label_selected="Grupo nuevo" name="btn_create"/>
+ <button label="Guardar" label_selected="Guardar" name="btn_apply"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_invite.xml b/indra/newview/skins/default/xui/es/panel_group_invite.xml
index f66f0c473a..08993d6ed8 100644
--- a/indra/newview/skins/default/xui/es/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_invite.xml
@@ -1,24 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Invitar a un miembro" name="invite_panel" width="224">
- <text name="help_text" height="72" bottom_delta="-96" width="214">
+ <panel.string name="confirm_invite_owner_str">
+ ¿Está seguro de que quiere invitar a un nuevo propietario/s? ¡Esta acción es permanente!
+ </panel.string>
+ <panel.string name="loading">
+ (cargando...)
+ </panel.string>
+ <panel.string name="already_in_group">
+ No se invitará a algunos avatares porque ya están en el grupo.
+ </panel.string>
+ <text bottom_delta="-96" height="72" name="help_text" width="214">
Puede seleccionar a varios residentes
para invitarles a su grupo. Para
empezar, pulse &apos;Abrir el selector de
residentes&apos;.
</text>
<button bottom_delta="-10" label="Abrir el selector de residentes" name="add_button" tool_tip=""/>
- <name_list height="156" bottom_delta="-160" name="invitee_list" tool_tip="Para seleccionar a varios residentes, mantenga pulsada la tecla Ctrl y vaya pulsando sus nombres."/>
- <button left_delta="-7" width="214" label="Eliminar de la lista a los seleccionados" name="remove_button" tool_tip="Elimina los residentes seleccionados de la lista de invitaciones."/>
+ <name_list bottom_delta="-160" height="156" name="invitee_list" tool_tip="Apretando la tecla Ctrl, pulsa en los nombres de los residentes para elegir a varios"/>
+ <button label="Eliminar de la lista a los seleccionados" left_delta="-7" name="remove_button" tool_tip="Quitar a los residentes seleccionados de la lista de invitaciones" width="214"/>
<text name="role_text">
Elegir qué rol asignarles:
</text>
- <combo_box name="role_name" tool_tip="Elige de la lista de roles cuál asignar a los miembros."/>
+ <combo_box name="role_name" tool_tip="Elige el rol de entre la lista de aquellos que estás autorizado a asignar"/>
<button label="Enviar las invitaciones" name="ok_button"/>
<button label="Cancelar" name="cancel_button"/>
- <string name="confirm_invite_owner_str">
- ¿Está seguro de que quiere invitar a un nuevo propietario/s? ¡Esta acción es permanente!
- </string>
- <string name="loading">
- (cargando...)
+ <string name="GroupInvitation">
+ Invitar al grupo
</string>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_land_money.xml b/indra/newview/skins/default/xui/es/panel_group_land_money.xml
index bccc114624..2ad290b49f 100644
--- a/indra/newview/skins/default/xui/es/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_land_money.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Terreno y L$" name="land_money_tab">
<string name="help_text">
- Se listan las parcelas propiedad del grupo, detallando las contribuciones. Aparece una advertencia si el Terreno total en uso es menor que o igual a la Contribución total. Las pestañas &apos;Planificación&apos;, &apos;Detalles&apos; y &apos;Ventas&apos; aportan información sobre las finanzas del grupo
+ Aparece una advertencia si el Terreno total en uso es menor que o igual a la Contribución total.
</string>
<button label="?" name="help_button"/>
<string name="cant_view_group_land_text">
- No tiene permiso para ver qué terreno posee el grupo.
+ No tienes permiso para ver el terreno propiedad del grupo
</string>
<string name="cant_view_group_accounting_text">
- No tiene permiso para ver la información de la cuenta del grupo.
+ No tienes permiso para ver la información de la cuenta del grupo.
</string>
<string name="loading_txt">
Cargando...
@@ -23,7 +23,7 @@
<column label="Superficie" name="area" width="81"/>
<column label="" name="hidden"/>
</scroll_list>
- <button label="Mostrar en el mapa" label_selected="Mostrar en el mapa" name="map_button" left="282" width="130"/>
+ <button label="Mapa" label_selected="Mapa" left="282" name="map_button" width="130"/>
<text name="total_contributed_land_label">
Contribución total:
</text>
@@ -43,43 +43,42 @@
[AREA] m²
</text>
<text name="your_contribution_label">
- Su contribución:
+ Tu contribución:
</text>
<string name="land_contrib_error">
- No se ha podido defininir su contribución de terreno.
+ No se ha podido definir tu contribución de terreno
</string>
<text name="your_contribution_units">
- ( m² )
+ m²
</text>
<text name="your_contribution_max_value">
([AMOUNT] máx.)
</text>
<text name="group_over_limit_text">
- Los miembros del grupo deben contribuir con más créditos de terreno
-para mantener el terreno en uso.
+ Se necesitan más créditos de terreno para mantener el terreno en uso
</text>
<text name="group_money_heading">
L$ del grupo
</text>
<tab_container name="group_money_tab_container">
- <panel label="Planificación" name="group_money_planning_tab">
+ <panel label="RESUMEN" name="group_money_planning_tab">
<text_editor name="group_money_planning_text">
- Calculando...
+ Cargando...
</text_editor>
</panel>
- <panel label="Detalles" name="group_money_details_tab">
+ <panel label="DETALLES" name="group_money_details_tab">
<text_editor name="group_money_details_text">
- Calculando...
+ Cargando...
</text_editor>
- <button label="&lt; Antes" label_selected="&lt; Antes" name="earlier_details_button" tool_tip="Ir hacia atrás en el tiempo"/>
- <button label="Después &gt;" label_selected="Después &gt;" name="later_details_button" tool_tip="Ir hacia adelante en el tiempo"/>
+ <button label="&lt; Antes" label_selected="&lt; Antes" name="earlier_details_button" tool_tip="Anterior"/>
+ <button label="Después &gt;" label_selected="Después &gt;" name="later_details_button" tool_tip="Siguiente"/>
</panel>
- <panel label="Ventas" name="group_money_sales_tab">
+ <panel label="VENTAS" name="group_money_sales_tab">
<text_editor name="group_money_sales_text">
- Calculando...
+ Cargando...
</text_editor>
- <button label="&lt; Antes" label_selected="&lt; Antes" name="earlier_sales_button" tool_tip="Ir hacia atrás en el tiempo"/>
- <button label="Después &gt;" label_selected="Después &gt;" name="later_sales_button" tool_tip="Ir hacia adelante en el tiempo"/>
+ <button label="&lt; Antes" label_selected="&lt; Antes" name="earlier_sales_button" tool_tip="Anterior"/>
+ <button label="Después &gt;" label_selected="Después &gt;" name="later_sales_button" tool_tip="Siguiente"/>
</panel>
</tab_container>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_list_item.xml b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
new file mode 100644
index 0000000000..4b6373f6ce
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+ <text name="group_name" value="Desconocido"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_notices.xml b/indra/newview/skins/default/xui/es/panel_group_notices.xml
index c6788b3a65..02365fc698 100644
--- a/indra/newview/skins/default/xui/es/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_notices.xml
@@ -1,35 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Avisos" name="notices_tab">
- <text name="help_text">
+ <panel.string name="help_text">
Los avisos son una forma rápida de comunicación dentro de un grupo, difundiendo un mensaje y, si se quiere, añadiéndole un ítem. Los avisos sólo los reciben los miembros del grupo cuyo rol tiene adjudicada tal habilidad. Puede desactivar los avisos en la pestaña General.
- </text>
- <text name="no_notices_text">
- No hay avisos pasados.
- </text>
- <button label="?" label_selected="?" name="help_button"/>
- <text name="lbl">
- Archivo de avisos del grupo
- </text>
+ </panel.string>
+ <panel.string name="no_notices_text">
+ No hay avisos pasados
+ </panel.string>
<text name="lbl2">
- Los avisos se mantienen durante 14 días. Las listas de avisos tienen un límite de 200 avisos por día.
+ Los avisos se mantienen durante 14 días.
+El máximo es de 200 por día y grupo.
</text>
<scroll_list name="notice_list">
- <column label="Asunto" name="subject"/>
- <column label="De" name="from"/>
- <column label="Fecha" name="date"/>
+ <scroll_list.columns label="Asunto" name="subject"/>
+ <scroll_list.columns label="De" name="from"/>
+ <scroll_list.columns label="Fecha" name="date"/>
</scroll_list>
<text name="notice_list_none_found">
- No se han encontrado.
+ No se han encontrado
</text>
- <button label="Crear un aviso nuevo" label_selected="Crear un aviso nuevo" name="create_new_notice"/>
- <button label="Actualizar" label_selected="Actualizar la lista" name="refresh_notices"/>
+ <button label="Crear un aviso nuevo" label_selected="Crear un aviso nuevo" name="create_new_notice" tool_tip="Crear un aviso nuevo"/>
+ <button label="Actualizar" label_selected="Actualizar la lista" name="refresh_notices" tool_tip="Actualizar la lista de avisos"/>
<panel label="Crear un aviso nuevo" name="panel_create_new_notice">
<text name="lbl">
Crear un aviso
</text>
- <text name="lbl2">
- Puede añadir un ítem al aviso arrastrándolo desde su inventario a este panel. Los ítems anexados deben ser copiables y transferibles, y no se puede enviar una carpeta.
- </text>
<text name="lbl3">
Asunto:
</text>
@@ -39,16 +33,19 @@
<text name="lbl5">
Anexar:
</text>
- <button label="Remover lo anexado" label_selected="Remover lo anexado" name="remove_attachment"/>
+ <text name="string">
+ Arrastra y suelta aquí un ítem para adjuntarlo:
+ </text>
+ <button label="Quitar" label_selected="Remover lo anexado" name="remove_attachment"/>
<button label="Enviar" label_selected="Enviar" name="send_notice"/>
- <panel name="drop_target" tool_tip="Para enviar un ítem con el aviso, arrástrelo desde su inventario hasta el cuadro del mensaje. Para poder enviar ese objeto con el aviso, usted debe tener permiso para copiarlo y transferirlo."/>
+ <group_drop_target name="drop_target" tool_tip="Para enviar un ítem con el aviso, arrástralo desde tu inventario hasta este cajetín. Para poder adjuntarlo, debes tener permiso para copiarlo y transferirlo."/>
</panel>
<panel label="Ver avisos pasados" name="panel_view_past_notice">
<text name="lbl">
Avisos archivados
</text>
<text name="lbl2">
- Pulse el botón &apos;Crear un aviso nuevo&apos; para enviar uno nuevo.
+ Para enviar un aviso nuevo, pulsa el botón +
</text>
<text name="lbl3">
Asunto:
@@ -56,6 +53,6 @@
<text name="lbl4">
Mensaje:
</text>
- <button label="Abrir lo anexado" label_selected="Abrir lo anexado" name="open_attachment"/>
+ <button label="Abrir el adjunto" label_selected="Abrir lo anexado" name="open_attachment"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_notify.xml b/indra/newview/skins/default/xui/es/panel_group_notify.xml
new file mode 100644
index 0000000000..7bdacbd1e0
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_group_notify.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_group_notify">
+ <panel label="header" name="header">
+ <text name="title" value="Nombre del emisor / Nombre del grupo"/>
+ </panel>
+ <text name="attachment" value="Adjunto"/>
+ <button label="OK" name="btn_ok"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_roles.xml b/indra/newview/skins/default/xui/es/panel_group_roles.xml
index 2739a3da5e..29d96d8d9e 100644
--- a/indra/newview/skins/default/xui/es/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_roles.xml
@@ -1,158 +1,119 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Miembros y Roles" name="roles_tab">
- <string name="default_needs_apply_text">
- En esta pestaña hay cambios sin aplicar.
- </string>
- <string name="want_apply_text">
- ¿Quiere aplicar estos cambios?
- </string>
- <button label="?" name="help_button"/>
- <panel name="members_header">
- <text name="static">
- Miembros y Roles
- </text>
- <text name="static2">
- Los miembros del grupo tienen asignados roles con distintas capacidades.
-Estas configuraciones son fácilmente personalizables, para facilitar una
-mayor flexibilidad y organización.
- </text>
- </panel>
- <panel name="roles_header">
- <text name="static">
- Roles
- </text>
- <text name="role_properties_modifiable">
- Elija un rol de los de abajo. Puede modificar su nombre, su
-descripción, y la etiqueta de los miembros.
- </text>
- <text name="role_properties_not_modifiable">
- Elija un rol de los de abajo para ver sus propiedades, miembros, y qué
-capacidades tiene asignadas.
- </text>
- <text bottom_delta="-28" name="role_actions_modifiable">
- También puede asignar capacidades al rol.
- </text>
- <text name="role_actions_not_modifiable">
- Puede ver, pero no modificar, las capacidades asignadas.
- </text>
- </panel>
- <panel name="actions_header">
- <text name="static">
- Capacidades
- </text>
- <text name="static2">
- Puede ver una descripción de la capacidad, y qué miembros y roles pueden
-realizarla.
- </text>
- </panel>
+ <panel.string name="default_needs_apply_text">
+ En esta pestaña hay cambios sin guardar
+ </panel.string>
+ <panel.string name="want_apply_text">
+ ¿Quieres guardar estos cambios?
+ </panel.string>
<tab_container height="164" name="roles_tab_container">
- <panel height="148" label="Miembros" name="members_sub_tab" tool_tip="Miembros">
- <line_editor bottom="127" name="search_text"/>
- <button label="Buscar" name="search_button" width="75"/>
- <button label="Verlos todos" name="show_all_button" left_delta="80"/>
- <name_list name="member_list" bottom_delta="-105" height="104" >
- <column label="Nombre del miembro" name="name"/>
- <column label="Cuotas donadas" name="donated"/>
- <column label="Última conexión" name="online"/>
- </name_list>
- <button label="Invitar a un nuevo miembro..." name="member_invite" width="175"/>
- <button label="Expulsar del grupo" name="member_eject"/>
- <string name="help_text">
+ <panel height="148" label="MIEMBROS" name="members_sub_tab" tool_tip="Miembros">
+ <panel.string name="help_text">
Puede añadir o quitar los roles asignados a los miembros.
Seleccione varios nombres manteniendo pulsada la tecla Ctrl y pulsando en cada uno de ellos.
- </string>
+ </panel.string>
+ <filter_editor label="Filtrar los miembros" name="filter_input"/>
+ <name_list bottom_delta="-105" height="104" name="member_list">
+ <name_list.columns label="Miembro" name="name"/>
+ <name_list.columns label="Donaciones" name="donated"/>
+ <name_list.columns label="Estatus" name="online"/>
+ </name_list>
+ <button label="Invitar" name="member_invite" width="175"/>
+ <button label="Expulsar" name="member_eject"/>
</panel>
- <panel height="148" label="Roles" name="roles_sub_tab">
- <line_editor bottom="127" name="search_text"/>
- <button label="Buscar" name="search_button" width="75"/>
- <button label="Verlos todos" name="show_all_button" left_delta="80"/>
- <scroll_list name="role_list" bottom_delta="-104" height="104">
- <column label="Nombre del rol" name="name"/>
- <column label="Etiqueta" name="title"/>
- <column label="Miembros" name="members"/>
+ <panel height="148" label="ROLES" name="roles_sub_tab">
+ <panel.string name="help_text">
+ Los roles tienen una etiqueta propia y unas capacidades que se
+permiten ejercer a sus miembros. Los miembros pueden
+tener más de un rol. Un grupo puede tener hasta 10 roles,
+incluyendo el de Todos y el de Propietarios.
+ </panel.string>
+ <panel.string name="cant_delete_role">
+ Los roles de &apos;Todos&apos; y &apos;Propietarios&apos; son especiales, y no pueden eliminarse.
+ </panel.string>
+ <panel.string name="power_folder_icon">
+ Inv_FolderClosed
+ </panel.string>
+ <filter_editor label="Filtrar los roles" name="filter_input"/>
+ <scroll_list bottom_delta="-104" height="104" name="role_list">
+ <scroll_list.columns label="Rol" name="name"/>
+ <scroll_list.columns label="Etiqueta" name="title"/>
+ <scroll_list.columns label="#" name="members"/>
</scroll_list>
- <button label="Crear un rol nuevo..." name="role_create"/>
+ <button label="Añadir un rol" name="role_create"/>
<button label="Eliminar el rol" name="role_delete"/>
- <string name="help_text">
- Los roles tienen una etiqueta y una serie de capacidades permitidas que los miembros pueden desarrollar. Los miembros pueden tener más de un rol. Un grupo puede tener hasta 10 roles, incluyendo el de Todos y el de Propietarios.
- </string>
- <string name="cant_delete_role">
- Los roles de &apos;Todos&apos; y &apos;Propietarios&apos; son especiales, y no pueden eliminarse.
- </string>
</panel>
- <panel height="148" label="Capacidades" name="actions_sub_tab">
- <line_editor bottom="127" name="search_text"/>
- <button label="Buscar" name="search_button" width="75"/>
- <button label="Verlos todos" name="show_all_button" left_delta="80"/>
- <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Elija una capacidad para verla más en detalle.">
- <column label="" name="icon"/>
- <column label="" name="action"/>
- </scroll_list>
- <string name="help_text">
+ <panel height="148" label="CAPACIDADES" name="actions_sub_tab" tool_tip="Puedes ver una descripción de la capacidad y qué miembros y roles la tienen.">
+ <panel.string name="help_text">
Las capacidades permiten a los miembros que tienen ese rol el hacer tareas específicas dentro de este grupo. Hay una gran variedad de capacidades.
- </string>
+ </panel.string>
+ <filter_editor label="Filtrar las capacidades" name="filter_input"/>
+ <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Elige una capacidad para verla más en detalle">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
</panel>
</tab_container>
<panel name="members_footer">
<text name="static">
- Roles asignados
+ Miembros asignados
</text>
+ <scroll_list name="member_assigned_roles">
+ <scroll_list.columns label="" name="checkbox"/>
+ <scroll_list.columns label="" name="role"/>
+ </scroll_list>
<text name="static2">
Capacidades permitidas
</text>
- <scroll_list name="member_assigned_roles">
- <column label="" name="checkbox"/>
- <column label="" name="role"/>
- </scroll_list>
- <scroll_list name="member_allowed_actions" tool_tip="Para más detalles de cada capacidad permitida, vea la pestaña Capacidades.">
- <column label="" name="icon"/>
- <column label="" name="action"/>
+ <scroll_list name="member_allowed_actions" tool_tip="Para más detalles de cada capacidad, ver la pestaña Capacidades">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="action"/>
</scroll_list>
</panel>
<panel name="roles_footer">
<text name="static">
- Nombre
- </text>
- <text name="static2">
- Descripción
+ Nombre del rol
</text>
<line_editor name="role_name">
Empleados
</line_editor>
<text name="static3">
- Etiqueta
+ Etiqueta del rol
</text>
<line_editor name="role_title">
(esperando)
</line_editor>
+ <text name="static2">
+ Descripción
+ </text>
<text_editor name="role_description">
(esperando)
</text_editor>
<text name="static4">
- Miembros asignados
+ Roles asignados
</text>
+ <check_box label="Mostrar los miembros" name="role_visible_in_list" tool_tip="Establece si los miembros de este rol pueden ser vistos en la pestaña General por personas ajenas al grupo."/>
<text name="static5" tool_tip="Una lista de las capacidades que puede desarrollar el rol seleccionado actualmente.">
Capacidades asignadas
</text>
- <check_box label="Los miembros son visibles." name="role_visible_in_list" tool_tip="Establece si los miembros de este rol pueden ser vistos en la pestaña General por personas ajenas al grupo."/>
- <scroll_list name="role_allowed_actions" tool_tip="Para más detalles de cada capacidad permitida, vea la pestaña Capacidades.">
- <column label="" name="icon"/>
- <column label="" name="checkbox"/>
- <column label="" name="action"/>
+ <scroll_list name="role_allowed_actions" tool_tip="Para más detalles de cada capacidad, ver la pestaña Capacidades">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="checkbox"/>
+ <scroll_list.columns label="" name="action"/>
</scroll_list>
</panel>
<panel name="actions_footer">
<text name="static">
- Descripción
+ Descripción de la capacidad
</text>
<text_editor name="action_description">
Esta capacidad es la de &apos;Expulsar miembros de este grupo&apos;. Sólo un propietario puede expulsar a otro.
</text_editor>
<text name="static2">
- Roles con la capacidad
+ Roles con esta capacidad
</text>
<text name="static3">
- Miembros con la capacidad
+ Miembros con esta capacidad
</text>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_im_control_panel.xml b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml
new file mode 100644
index 0000000000..5f69c50b73
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <text name="avatar_name" value="Desconocido"/>
+ <button label="Perfil" name="view_profile_btn"/>
+ <button label="Añadir como amigo" name="add_friend_btn"/>
+ <button label="Teleportarse" name="teleport_btn"/>
+ <button label="Compartir" name="share_btn"/>
+ <panel name="panel_call_buttons">
+ <button label="Llamada" name="call_btn"/>
+ <button label="Colgar" name="end_call_btn"/>
+ <button label="Controles de Voz" name="voice_ctrls_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_landmark_info.xml b/indra/newview/skins/default/xui/es/panel_landmark_info.xml
new file mode 100644
index 0000000000..c4d9d4a2b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_landmark_info.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="landmark_info">
+ <string name="title_create_landmark" value="Crear un hito"/>
+ <string name="title_edit_landmark" value="Editar el hito"/>
+ <string name="title_landmark" value="Hito"/>
+ <string name="not_available" value="(No disp.)"/>
+ <string name="unknown" value="(desconocidas)"/>
+ <string name="public" value="(público)"/>
+ <string name="server_update_text">
+ Los datos de este lugar no están disponibles sin una actualización del servidor.
+ </string>
+ <string name="server_error_text">
+ Los datos de este lugar no están disponibles por el momento. Por favor, prueba más tarde.
+ </string>
+ <string name="server_forbidden_text">
+ Por restricciones en el acceso, los datos de esta localización no están disponibles. Por favor, revisa tus permisos con el propietario de la parcela.
+ </string>
+ <string name="acquired_date">
+ [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ </string>
+ <text name="title" value="Añadir el perfil"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="maturity_value" value="desconocido"/>
+ <panel name="landmark_info_panel">
+ <text name="owner_label" value="Propietario:"/>
+ <text name="creator_label" value="Creador:"/>
+ <text name="created_label" value="Creado:"/>
+ </panel>
+ <panel name="landmark_edit_panel">
+ <text name="title_label" value="Título:"/>
+ <text name="notes_label" value="Mis notas:"/>
+ <text name="folder_label" value="Localización del hito:"/>
+ </panel>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_landmarks.xml b/indra/newview/skins/default/xui/es/panel_landmarks.xml
new file mode 100644
index 0000000000..8c2aa96b3b
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_landmarks.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Landmarks">
+ <accordion name="landmarks_accordion">
+ <accordion_tab name="tab_favorites" title="Barra de favoritos"/>
+ <accordion_tab name="tab_landmarks" title="Hitos"/>
+ <accordion_tab name="tab_inventory" title="Mi Inventario"/>
+ <accordion_tab name="tab_library" title="Biblioteca"/>
+ </accordion>
+ <panel name="bottom_panel">
+ <button name="options_gear_btn" tool_tip="Ver más opciones"/>
+ <button name="add_btn" tool_tip="Añadir un nuevo hito"/>
+ <dnd_button name="trash_btn" tool_tip="Quitar el hito seleccionado"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml
index 52c3855d6a..5485575aec 100644
--- a/indra/newview/skins/default/xui/es/panel_login.xml
+++ b/indra/newview/skins/default/xui/es/panel_login.xml
@@ -6,34 +6,29 @@
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=es
</panel.string>
-<panel name="login_widgets">
- <text name="first_name_text">
- Nombre:
- </text>
- <text name="last_name_text">
- Apellido:
- </text>
- <text name="password_text">
- Contraseña:
- </text>
- <text name="start_location_text">
- Posición inicial:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item name="MyHome" label="Mi Base"/>
- <combo_box.item name="MyLastLocation" label="Mi última posición"/>
- <combo_box.item name="Typeregionname" label="&lt;Escriba el nombre de la Región&gt;"/>
- </combo_box>
- <check_box label="Recordar la contraseña" name="remember_check"/>
- <button label="Iniciar sesión" label_selected="Iniciar sesión" name="connect_btn"/>
- <text name="create_new_account_text">
- Regístrese para obtener una cuenta
- </text>
- <text name="forgot_password_text">
- ¿Olvidó su nombre o su contraseña?
- </text>
- <text name="channel_text">
- [VERSION]
- </text>
-</panel>
+ <layout_stack name="login_widgets">
+ <layout_panel name="login">
+ <text name="first_name_text">
+ Nombre:
+ </text>
+ <line_editor label="Nombre" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/>
+ <line_editor label="Apellido" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/>
+ <check_box label="Recordar" name="remember_check"/>
+ <text name="start_location_text">
+ Empezar en:
+ </text>
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Mi Base" name="MyHome"/>
+ </combo_box>
+ <button label="Iniciar sesión" name="connect_btn"/>
+ </layout_panel>
+ <layout_panel name="links">
+ <text name="create_new_account_text">
+ Registrarse
+ </text>
+ <text name="login_help">
+ ¿Necesitas ayuda para conectarte?
+ </text>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_main_inventory.xml b/indra/newview/skins/default/xui/es/panel_main_inventory.xml
new file mode 100644
index 0000000000..8656098467
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_main_inventory.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Cosas" name="main inventory panel">
+ <panel.string name="Title">
+ Cosas
+ </panel.string>
+ <filter_editor label="Filtrar" name="inventory search editor"/>
+ <tab_container name="inventory filter tabs">
+ <inventory_panel label="Todos los ítems" name="All Items"/>
+ <inventory_panel label="Ítems recientes" name="Recent Items"/>
+ </tab_container>
+ <panel name="bottom_panel">
+ <button name="options_gear_btn" tool_tip="Mostrar más opciones"/>
+ <button name="add_btn" tool_tip="Añadir un ítem nuevo"/>
+ <dnd_button name="trash_btn" tool_tip="Quitar el ítem seleccionado"/>
+ </panel>
+ <menu_bar name="Inventory Menu">
+ <menu label="Archivo" name="File">
+ <menu_item_call label="Abrir" name="Open"/>
+ <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>
+ <menu_item_call label="Ventana nueva" name="New Window"/>
+ <menu_item_call label="Ver los filtros" name="Show Filters"/>
+ <menu_item_call label="Restablecer los filtros" name="Reset Current"/>
+ <menu_item_call label="Cerrar todas las carpetas" name="Close All Folders"/>
+ <menu_item_call label="Vaciar la Papelera" name="Empty Trash"/>
+ <menu_item_call label="Vaciar Objetos Perdidos" name="Empty Lost And Found"/>
+ </menu>
+ <menu label="Crear" name="Create">
+ <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>
+ <menu label="Ordenar" name="Sort">
+ <menu_item_check label="Alfabéticamente" name="By Name"/>
+ <menu_item_check label="Cronológicamente" name="By Date"/>
+ <menu_item_check label="Las carpetas siempre alfabéticamente" name="Folders Always By Name"/>
+ <menu_item_check label="Las carpetas del sistema, arriba" name="System Folders To Top"/>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_me.xml b/indra/newview/skins/default/xui/es/panel_me.xml
new file mode 100644
index 0000000000..fe5c91bafe
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_me.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Mi perfil" name="panel_me">
+ <tab_container name="tabs">
+ <panel label="PERFIL" name="panel_profile"/>
+ <panel label="Destacados" name="panel_picks"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_general.xml b/indra/newview/skins/default/xui/es/panel_media_settings_general.xml
new file mode 100644
index 0000000000..3cf10e0e2c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="General" name="Media Settings General">
+ <text name="home_label">
+ Web:
+ </text>
+ <text name="home_fails_whitelist_label">
+ (La Lista Blanca especificada no aprueba esta página)
+ </text>
+ <line_editor name="home_url" tool_tip="Página inicial para el origen de este media"/>
+ <text name="preview_label">
+ Vista previa
+ </text>
+ <text name="current_url_label">
+ Página actual:
+ </text>
+ <text name="current_url" tool_tip="La página actual para el origen de este media" value=""/>
+ <button label="Definir" name="current_url_reset_btn"/>
+ <check_box initial_value="false" label="Media en bucle" name="auto_loop"/>
+ <check_box initial_value="false" label="A la primera pulsación" name="first_click_interact"/>
+ <check_box initial_value="false" label="Zoom automático" name="auto_zoom"/>
+ <check_box initial_value="false" label="Ejecutar automáticamente los media" name="auto_play"/>
+ <text name="media_setting_note">
+ Nota: los residentes pueden elegir una configuración distinta de ésta
+ </text>
+ <check_box initial_value="false" label="Ajustar automáticamente los media en la cara del objeto" name="auto_scale"/>
+ <text name="size_label">
+ Tamaño:
+ </text>
+ <text name="X_label">
+ X
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml
new file mode 100644
index 0000000000..3e625f56fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Personalizar" name="Media settings for controls">
+ <text name="controls_label">
+ Controles:
+ </text>
+ <combo_box name="controls">
+ <combo_item name="Standard">
+ Estándar
+ </combo_item>
+ <combo_item name="Mini">
+ Mini
+ </combo_item>
+ </combo_box>
+ <check_box initial_value="false" label="Permitir la navegación e interactividad" name="perms_owner_interact"/>
+ <check_box initial_value="false" label="Mostrar la barra de control" name="perms_owner_control"/>
+ <check_box initial_value="false" label="Permitir la navegación e interactividad" name="perms_group_interact"/>
+ <check_box initial_value="false" label="Mostrar la barra de control" name="perms_group_control"/>
+ <check_box initial_value="false" label="Permitir la navegación e interactividad" name="perms_anyone_interact"/>
+ <check_box initial_value="false" label="Mostrar la barra de control" name="perms_anyone_control"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_security.xml b/indra/newview/skins/default/xui/es/panel_media_settings_security.xml
new file mode 100644
index 0000000000..f4debc88fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Seguridad" name="Media Settings Security">
+ <check_box initial_value="false" label="Permitir el acceso sólo a estas URL (según prefijo)" name="whitelist_enable"/>
+ <text name="home_url_fails_some_items_in_whitelist">
+ Están marcadas las entradas que la página web no admite:
+ </text>
+ <button label="Añadir" name="whitelist_add"/>
+ <button label="Borrar" name="whitelist_del"/>
+ <text name="home_url_fails_whitelist">
+ Atención: la página web especificada en la pestaña General no se admite en esta Lista Blanca. Se ha desactivado hasta que se añada una entrada correcta.
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_my_profile.xml b/indra/newview/skins/default/xui/es/panel_my_profile.xml
new file mode 100644
index 0000000000..41623e8acb
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_my_profile.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Perfil" name="panel_profile">
+ <string name="no_partner_text" value="Ninguno/a"/>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="second_life_image_panel">
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Pulsa el botón Editar el perfil para cambiar la imagen"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <icon label="" name="real_world_edit_icon" tool_tip="Pulsa el botón Editar el perfil para cambiar la imagen"/>
+ <text name="title_rw_descr_text" value="Mundo real:"/>
+ </panel>
+ <text name="me_homepage_text">
+ Página web:
+ </text>
+ <text name="title_member_text" value="Miembro desde:"/>
+ <text name="title_acc_status_text" value="Estado de la cuenta:"/>
+ <text name="acc_status_text" value="Residente. No ha aportado información de pago."/>
+ <text name="title_partner_text" value="Compañero/a:"/>
+ <text name="title_groups_text" value="Grupos:"/>
+ </panel>
+ </scroll_container>
+ <panel name="profile_buttons_panel">
+ <button label="Añadir como amigo" name="add_friend"/>
+ <button label="MI" name="im"/>
+ <button label="Llamada" name="call"/>
+ <button label="Mapa" name="show_on_map_btn"/>
+ <button label="Teleporte" name="teleport"/>
+ </panel>
+ <panel name="profile_me_buttons_panel">
+ <button label="Editar el perfil" name="edit_profile_btn" tool_tip="Edita tu información personal"/>
+ <button label="Editar la apariencia" name="edit_appearance_btn" tool_tip="Crea o edita tu apariencia: físico, ropas, etc."/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
new file mode 100644
index 0000000000..8e595096d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="navigation_bar">
+ <panel name="navigation_panel">
+ <button name="back_btn" tool_tip="Volver a lo localización anterior"/>
+ <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">
+ <chevron_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos"/>
+ </favorites_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml
new file mode 100644
index 0000000000..986c109c41
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- All our XML is utf-8 encoded. -->
+<panel name="nearby_chat">
+ <panel name="chat_caption">
+ <text name="sender_name">
+ CHAT
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml
new file mode 100644
index 0000000000..1df45108ab
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+ <string name="min_width">
+ 192
+ </string>
+ <string name="max_width">
+ 320
+ </string>
+ <line_editor label="Pulsa aquí para chatear." name="chat_box" tool_tip="Pulsa Enter para decirlo o Ctrl+Enter para gritarlo"/>
+ <button name="show_nearby_chat" tool_tip="Muestra o esconde el registro del chat"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_notes.xml b/indra/newview/skins/default/xui/es/panel_notes.xml
new file mode 100644
index 0000000000..26d5a044c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_notes.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Notas y Privacidad" name="panel_notes">
+ <layout_stack name="layout">
+ <panel name="notes_stack">
+ <scroll_container name="profile_scroll">
+ <panel name="profile_scroll_panel">
+ <text name="status_message" value="Mis notas privadas:"/>
+ <text name="status_message2" value="Permitir que esta persona:"/>
+ <check_box label="Vea si estoy conectado" name="status_check"/>
+ <check_box label="Me vea en el mapa" name="map_check"/>
+ <check_box label="Edite, borre o coja mis objetos" name="objects_check"/>
+ </panel>
+ </scroll_container>
+ </panel>
+ <panel name="notes_buttons_panel">
+ <button label="Añadir" name="add_friend" tool_tip="Ofrecer amistad al residente"/>
+ <button label="MI" name="im" tool_tip="Abrir un mensaje instantáneo"/>
+ <button label="Llamada" name="call" tool_tip="Llamar a este residente"/>
+ <button label="Mapa" name="show_on_map_btn" tool_tip="Ver al residente en el mapa"/>
+ <button label="Teleportar" name="teleport" tool_tip="Ofrecer teleporte"/>
+ </panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml
new file mode 100644
index 0000000000..7d966bba37
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Outfits">
+ <accordion name="outfits_accordion">
+ <accordion_tab name="tab_cof" title="Vestuario actual"/>
+ <accordion_tab name="tab_outfits" title="Mis vestuarios"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml
new file mode 100644
index 0000000000..8fc265504b
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+ <menu_item_call label="Reemplazar el vestuario actual" name="wear"/>
+ <menu_item_call label="Añadir al vestuario actual" name="add"/>
+ <menu_item_call label="Quitar del vestuario actual" name="remove"/>
+ <menu_item_call label="Renombrar" name="rename"/>
+ <menu_item_call label="Quitar" name="remove_link"/>
+ <menu_item_call label="Borrar" name="delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
new file mode 100644
index 0000000000..35a6c4f641
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray panel -->
+<panel label="Gente" name="people_panel">
+ <string name="no_people" value="No hay nadie"/>
+ <string name="no_one_near" value="No hay nadie cerca"/>
+ <string name="no_friends_online" value="No hay amigos conectados"/>
+ <string name="no_friends" value="No hay amigos"/>
+ <string name="no_groups" value="No hay grupos"/>
+ <string name="people_filter_label" value="Filtrar a la gente"/>
+ <string name="groups_filter_label" value="Filtrar a los grupos"/>
+ <filter_editor label="Filtrar" name="filter_input"/>
+ <tab_container name="tabs">
+ <panel label="CERCANÍA" name="nearby_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <button name="nearby_view_sort_btn" tool_tip="Opciones"/>
+ <button name="add_friend_btn" tool_tip="Añadir a tu lista de amigos al residente seleccionado"/>
+ </panel>
+ </panel>
+ <panel label="AMIGOS" name="friends_panel">
+ <accordion name="friends_accordion">
+ <accordion_tab name="tab_online" title="Conectado"/>
+ <accordion_tab name="tab_all" title="Todas"/>
+ </accordion>
+ <panel label="bottom_panel" name="bottom_panel">
+ <button name="friends_viewsort_btn" tool_tip="Opciones"/>
+ <button name="add_btn" tool_tip="Ofrecer amistad a un residente"/>
+ <button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/>
+ </panel>
+ </panel>
+ <panel label="GRUPOS" name="groups_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <button name="groups_viewsort_btn" tool_tip="Opciones"/>
+ <button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/>
+ <button name="activate_btn" tool_tip="Activar el grupo seleccionado"/>
+ </panel>
+ </panel>
+ <panel label="RECIENTE" name="recent_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <button name="recent_viewsort_btn" tool_tip="Opciones"/>
+ <button name="add_friend_btn" tool_tip="Añadir a tu lista de amigos al residente seleccionado"/>
+ </panel>
+ </panel>
+ </tab_container>
+ <panel name="button_bar">
+ <button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imagen, grupos y otra información de los residentes"/>
+ <button label="MI" name="im_btn" tool_tip="Abrir un mensaje instantáneo"/>
+ <button label="Llamada" name="call_btn" tool_tip="Llamar a este residente"/>
+ <button label="Compartir" name="share_btn"/>
+ <button label="Teleportarse" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
+ <button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/>
+ <button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_pick_info.xml b/indra/newview/skins/default/xui/es/panel_pick_info.xml
new file mode 100644
index 0000000000..c55addbc93
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_pick_info.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+ <text name="title" value="Información del destacado"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="pick_name" value="[nombre]"/>
+ <text name="pick_location" value="[cargando...]"/>
+ <text name="pick_desc" value="[descripción]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <button label="Teleporte" name="teleport_btn"/>
+ <button label="Mapa" name="show_on_map_btn"/>
+ <button label="Editar" name="edit_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_picks.xml b/indra/newview/skins/default/xui/es/panel_picks.xml
new file mode 100644
index 0000000000..abedc6c551
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_picks.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Destacados" name="panel_picks">
+ <string name="no_picks" value="No hay destacados"/>
+ <string name="no_classifieds" value="No hay clasificados"/>
+ <text name="empty_picks_panel_text">
+ No hay ni destacados ni clasificados
+ </text>
+ <accordion name="accordion">
+ <accordion_tab name="tab_picks" title="Destacados"/>
+ <accordion_tab name="tab_classifieds" title="Clasificados"/>
+ </accordion>
+ <panel label="bottom_panel" name="edit_panel">
+ <button name="new_btn" tool_tip="Crear un nuevo destacado o clasificado de la posición actual"/>
+ </panel>
+ <panel name="buttons_cucks">
+ <button label="Información" name="info_btn" tool_tip="Mostrar la información del destacado"/>
+ <button label="Teleportarse" name="teleport_btn" tool_tip="Teleportar a esta zona"/>
+ <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar esta zona en el mapa del mundo"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_place_profile.xml b/indra/newview/skins/default/xui/es/panel_place_profile.xml
new file mode 100644
index 0000000000..ad1b832979
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_place_profile.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+ <string name="on" value="On"/>
+ <string name="off" value="Off"/>
+ <string name="anyone" value="Cualquiera"/>
+ <string name="available" value="disponible"/>
+ <string name="allocated" value="asignados"/>
+ <string name="title_place" value="Añadir el perfil"/>
+ <string name="title_teleport_history" value="Localización del historial de teleportes"/>
+ <string name="not_available" value="(No disp.)"/>
+ <string name="unknown" value="(desconocido)"/>
+ <string name="public" value="(público)"/>
+ <string name="none_text" value="(ninguno)"/>
+ <string name="sale_pending_text" value="(venta pendiente)"/>
+ <string name="group_owned_text" value="(propiedad de un grupo)"/>
+ <string name="price_text" value="L$"/>
+ <string name="area_text" value="m²"/>
+ <string name="all_residents_text" value="Todos los residentes"/>
+ <string name="group_text" value="Grupo"/>
+ <string name="can_resell">
+ El terreno comprado en esta región puede revenderse.
+ </string>
+ <string name="can_not_resell">
+ El terreno comprado en esta región no puede revenderse.
+ </string>
+ <string name="can_change">
+ El terreno comprado en esta región puede unirse o dividirse.
+ </string>
+ <string name="can_not_change">
+ El terreno comprado en esta región no puede unirse o dividirse.
+ </string>
+ <string name="server_update_text">
+ La información de esta parcela no está disponible sin una actualización del servidor.
+ </string>
+ <string name="server_error_text">
+ En este momento no está disponible la información de esta parcela. Por favor, inténtalo más tarde.
+ </string>
+ <string name="server_forbidden_text">
+ Por tener restringido el acceso, no está disponible la información de esta parcela. Por favor, revisa tus permisos con el propietario de la parcela.
+ </string>
+ <string name="acquired_date">
+ [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ </string>
+ <text name="title" value="Añadir el perfil"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="owner_label" value="Propietario:"/>
+ <text name="maturity_value" value="desconocido"/>
+ <accordion name="advanced_info_accordion">
+ <accordion_tab name="parcel_characteristics_tab" title="Parcela">
+ <panel>
+ <text name="rating_label" value="Calificación:"/>
+ <text name="rating_value" value="desconocida"/>
+ <text name="voice_label" value="Voz:"/>
+ <text name="voice_value" value="Sí"/>
+ <text name="fly_label" value="Volar:"/>
+ <text name="fly_value" value="Sí"/>
+ <text name="push_label" value="Empujones:"/>
+ <text name="push_value" value="No"/>
+ <text name="build_label" value="Construir:"/>
+ <text name="build_value" value="Sí"/>
+ <text name="scripts_label" value="Scripts:"/>
+ <text name="scripts_value" value="Sí"/>
+ <text name="damage_label" value="Daño:"/>
+ <text name="damage_value" value="No"/>
+ <button label="Acerca del terreno" name="about_land_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="region_information_tab" title="Región">
+ <panel>
+ <text name="region_name_label" value="Región:"/>
+ <text name="region_type_label" value="Tipo:"/>
+ <text name="region_rating_label" value="Calificación:"/>
+ <text name="region_owner_label" value="Propietario:"/>
+ <text name="region_group_label" value="Grupo:"/>
+ <button label="Región/Estado" name="region_info_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="estate_information_tab" title="Estado">
+ <panel>
+ <text name="estate_name_label" value="Estado:"/>
+ <text name="estate_rating_label" value="Calificación:"/>
+ <text name="estate_owner_label" value="Propietario:"/>
+ <text name="covenant_label" value="Contrato:"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="sales_tab" title="En venta">
+ <panel>
+ <text name="sales_price_label" value="Precio:"/>
+ <text name="area_label" value="Área:"/>
+ <text name="traffic_label" value="Tráfico:"/>
+ <text name="primitives_label" value="Primitivas:"/>
+ <text name="parcel_scripts_label" value="Scripts:"/>
+ <text name="terraform_limits_label" value="Límites de modificación del terreno:"/>
+ <text name="subdivide_label" value="Puede dividirse/unirse:"/>
+ <text name="resale_label" value="Puede revenderse:"/>
+ <text name="sale_to_label" value="En venta a:"/>
+ </panel>
+ </accordion_tab>
+ </accordion>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml
new file mode 100644
index 0000000000..4a64fa3320
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_places.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Lugares" name="places panel">
+ <string name="landmarks_tab_title" value="MIS HITOS"/>
+ <string name="teleport_history_tab_title" value="HISTORIAL DE TELEPORTES"/>
+ <filter_editor label="Filtrar los lugares" name="Filter"/>
+ <panel name="button_panel">
+ <button label="Teleporte" name="teleport_btn"/>
+ <button label="Mapa" name="map_btn"/>
+ <button label="Editar" name="edit_btn"/>
+ <button label="Cerrar" name="close_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ <button label="Guardar" name="save_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml
index 02fb4da017..3dc6cad90e 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml
@@ -1,7 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="advanced">
+ <panel.string name="resolution_format">
+ [RES_X] x [RES_Y]
+ </panel.string>
+ <panel.string name="aspect_ratio_text">
+ [NUM]:[DEN]
+ </panel.string>
+ <check_box label="Bocadillos del chat" name="bubble_text_chat"/>
+ <color_swatch name="background" tool_tip="Elegir el color de los bocadillos del chat"/>
+ <slider label="Opacidad" name="bubble_chat_opacity"/>
<text name="AspectRatioLabel1" tool_tip="ancho / alto">
- Proporción:
+ Proporción
</text>
<combo_box name="aspect_ratio" tool_tip="ancho / alto">
<combo_box.item label="4:3 (Standard CRT)" name="item1"/>
@@ -9,4 +18,31 @@
<combo_box.item label="8:5 (Widescreen)" name="item3"/>
<combo_box.item label="16:9 (Widescreen)" name="item4"/>
</combo_box>
+ <check_box label="Detectar automáticamente" name="aspect_auto_detect"/>
+ <text name="heading1">
+ Cámara:
+ </text>
+ <slider label="Ángulo de visión" name="camera_fov"/>
+ <slider label="Distancia" name="camera_offset_scale"/>
+ <text name="heading2">
+ Posicionamiento automático para:
+ </text>
+ <check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara al entrar en o salir del modo de edición"/>
+ <check_box label="Apariencia" name="appearance_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara mientras se está editando"/>
+ <text name="heading3">
+ Avatares:
+ </text>
+ <check_box label="Verme en vista subjetiva" name="first_person_avatar_visible"/>
+ <check_box label="Las teclas del cursor siempre para moverme" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Correr siempre: atajo de teclado" name="tap_tap_hold_to_run"/>
+ <check_box label="Al hablar, mover los labios del avatar" name="enable_lip_sync"/>
+ <check_box label="Mostrar los errores de los scripts" name="show_script_errors"/>
+ <radio_group name="show_location">
+ <radio_item label="En el chat" name="0"/>
+ <radio_item label="En una ventana" name="1"/>
+ </radio_group>
+ <check_box label="Modo &apos;un toque&apos; para el micrófono cuando pulses la tecla:" name="push_to_talk_toggle_check" tool_tip="En el modo &apos;un toque&apos;, pulsa y suelta el botón UNA VEZ para activar o desactivar el micrófono. Si no estás en el modo &apos;un toque&apos;, el micrófono sólo recogerá tu voz mientras mantengas pulsado el botón."/>
+ <line_editor label="Botón de Apretar para Hablar" name="modifier_combo"/>
+ <button label="Elegir la tecla" name="set_voice_hotkey_button"/>
+ <button label="Botón de en medio del ratón" name="set_voice_middlemouse_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml
index a71ac172a3..433d7d15b4 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml
@@ -1,18 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Ventanas emergentes" name="popups" title="Ventanas emergentes">
- <text name="dont_show_label">
- No mostrar estas ventanas emergentes:
+ <text name="tell_me_label">
+ Avisarme:
</text>
- <button width="200" label="Activar esta ventana emergente" label_selected="Activar esta popup" name="enable_popup"/>
- <button width="255" left="225" label="Activar todas las ventanas emergentes..." label_selected="Restaurar cajas de diálogo &apos;Mostrar en la próxima vez&apos;..." name="reset_dialogs_btn" tool_tip="Activar todas las ventanas emergentes y los avisos de &apos;primera vez que se usa&apos;."/>
+ <check_box label="Cuando gaste o consiga L$" name="notify_money_change_checkbox"/>
+ <check_box label="Cuando mis amigos se conecten o desconecten" name="friends_online_notify_checkbox"/>
<text name="show_label" width="300">
- Mostrar estas ventanas emergentes:
+ Mostrar siempre estos avisos:
</text>
- <button left="205" width="275" label="Desactivar todas estas ventanas emergentes..." name="skip_dialogs_btn" tool_tip="Desactivar todas las ventanas emergentes y los avisos de &apos;primera vez que se usa&apos;."/>
- <text name="text_box2">
- Oferta de notas, texturas e hitos:
+ <text name="dont_show_label">
+ No mostrar nunca estos avisos:
</text>
- <check_box label="Aceptar automáticamente" name="accept_new_inventory"/>
- <check_box label="Ver automáticamente tras aceptar" name="show_new_inventory"/>
- <check_box label="Mostrar automáticamente los objetos aceptados recientemente en el inventario" name="show_in_inventory"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index 4e9dc6db6f..89243afbb5 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -1,17 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Chat de texto" name="chat">
- <text name="text_box">
- Tamaño de la fuente
-del chat:
- </text>
<radio_group name="chat_font_size">
- <radio_item name="radio" label="Pequeño" />
- <radio_item name="radio2" label="Medio" />
- <radio_item name="radio3" label="Grande" />
+ <radio_item label="Disminuir" name="radio"/>
+ <radio_item label="Media" name="radio2"/>
+ <radio_item label="Aumentar" name="radio3"/>
</radio_group>
<color_swatch label="Usted" name="user"/>
<text name="text_box1">
- Usted
+ Yo
</text>
<color_swatch label="Otros" name="agent"/>
<text name="text_box2">
@@ -37,22 +33,14 @@ del chat:
<text name="text_box7">
Propietario
</text>
- <color_swatch label="Bocadillo" name="background"/>
- <text name="text_box8">
- Bocadillo
- </text>
<color_swatch label="URL" name="links"/>
<text name="text_box9">
URL
</text>
- <check_box label="Ver en el chat los avisos y errores de los scripts" name="script_errors_as_chat"/>
- <spinner label="Quitar el chat tras" name="fade_chat_time" label_width="95" width="145" />
- <slider label="Opacidad" name="console_opacity"/>
- <check_box label="Usar el ancho de la pantalla (tras reiniciar)" name="chat_full_width_check"/>
- <check_box label="Cerrar el chat al pulsar Intro" name="close_chat_on_return_check"/>
- <check_box label="En el chat, las teclas del cursor mueven el avatar" name="arrow_keys_move_avatar_check"/>
- <check_box label="Incluir la hora en el chat" name="show_timestamps_check"/>
- <check_box label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
- <check_box label="Mostrar el chat en bocadillos" name="bubble_text_chat"/>
- <slider label="Opacidad" name="bubble_chat_opacity"/>
+ <check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
+ <check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/>
+ <radio_group name="chat_window" tool_tip="Ver tus mensajes instantáneos en ventanas separadas o en una sola con varias pestañas (requiere volverse a conectar)">
+ <radio_item label="Varias ventanas" name="radio"/>
+ <radio_item label="Una ventana" name="radio2"/>
+ </radio_group>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
index 2b813a18bf..7402f6270d 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -1,90 +1,64 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="General" name="general_panel">
- <combo_box name="start_location_combo">
- <combo_box.item name="MyHome" tool_tip="Por defecto, iniciar sesión en mi Base." label="Mi Base"/>
- <combo_box.item name="MyLastLocation" tool_tip="Por defecto, iniciar sesión en mi última posición." label="Mi última posición"/>
- </combo_box>
- <check_box label="Ver mi posición inicial en la pantalla de inicio de sesión" name="show_location_checkbox"/>
- <combo_box name="fade_out_combobox">
- <combo_box.item name="Never" label="Nunca"/>
- <combo_box.item name="Show Temporarily" label="Mostrarlos temporalmente"/>
- <combo_box.item name="Always" label="Siempre"/>
- </combo_box>
- <check_box label="Nombres de avatar en pequeño" name="small_avatar_names_checkbox"/>
- <check_box label="No ver mi nombre en mi pantalla" name="show_my_name_checkbox"/>
- <text name="group_titles_textbox">
- Etiquetas de grupo:
- </text>
- <check_box label="Ocultar las etiquetas de grupo" name="show_all_title_checkbox"/>
- <check_box label="Ocultar mi etiqueta de grupo" name="show_my_title_checkbox"/>
- <color_swatch label="" name="effect_color_swatch" tool_tip="Pulse para abrir el selector de color"/>
- <text name="UI Size:">
- Tamaño de la interfaz:
+ <text name="language_textbox">
+ Idioma:
</text>
- <check_box label="Resolución independiente del tamaño" name="ui_auto_scale"/>
- <spinner label="Ausente tras:" name="afk_timeout_spinner"/>
- <check_box label="Avisar cuando gasto o recibo dólares Linden (L$)" name="notify_money_change_checkbox"/>
- <text name="maturity_desired_label">
- Calificación:
+ <combo_box name="language_combobox">
+ <combo_box.item label="Predeterminado del sistema" name="System Default Language"/>
+ <combo_box.item label="English (Inglés)" name="English"/>
+ <combo_box.item label="Dansk (Danés) - Beta" name="Danish"/>
+ <combo_box.item label="Deutsch (Alemán) - Beta" name="Deutsch(German)"/>
+ <combo_box.item label="Español - Beta" name="Spanish"/>
+ <combo_box.item label="Français (Francés) - Beta" name="French"/>
+ <combo_box.item label="Italiano - Beta" name="Italian"/>
+ <combo_box.item label="Nederlands (Neerlandés) - Beta" name="Dutch"/>
+ <combo_box.item label="Polski (Polaco) - Beta" name="Polish"/>
+ <combo_box.item label="Portugués (Portugués) - Beta" name="Portugese"/>
+ <combo_box.item label="日本語 (Japonés) - Beta" name="(Japanese)"/>
+ </combo_box>
+ <text name="language_textbox2">
+ (requiere reiniciar)
</text>
<text name="maturity_desired_prompt">
Quiero acceder a contenido calificado:
</text>
+ <text name="maturity_desired_textbox"/>
<combo_box name="maturity_desired_combobox">
- <combo_box.item name="Desired_Adult" label="&apos;PG&apos;, &apos;Mature&apos; y &apos;Adult&apos;"/>
- <combo_box.item name="Desired_Mature" label="&apos;PG&apos; y &apos;Mature&apos;"/>
- <combo_box.item name="Desired_PG" label="&apos;PG&apos;"/>
+ <combo_box.item label="&apos;PG&apos;, &apos;Mature&apos; y &apos;Adult&apos;" name="Desired_Adult"/>
+ <combo_box.item label="&apos;PG&apos; y &apos;Mature&apos;" name="Desired_Mature"/>
+ <combo_box.item label="&apos;PG&apos;" name="Desired_PG"/>
</combo_box>
- <text name="maturity_desired_textbox">
- &apos;PG&apos;
- </text>
<text name="start_location_textbox">
- Posición inicial:
+ Localización inicial:
</text>
- <text name="show_names_textbox">
- Mostrar los nombres:
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Mi última posición" name="MyLastLocation" tool_tip="Por defecto, iniciar sesión en mi última posición."/>
+ <combo_box.item label="Mi Base" name="MyHome" tool_tip="Por defecto, iniciar sesión en mi Base."/>
+ </combo_box>
+ <check_box initial_value="true" label="Mostrar en la pantalla de conexión" name="show_location_checkbox"/>
+ <text name="name_tags_textbox">
+ Etiquetas de los nombres:
</text>
+ <radio_group name="Name_Tag_Preference">
+ <radio_item label="Off" name="radio"/>
+ <radio_item label="On" name="radio2"/>
+ <radio_item label="Mostrar brevemente" name="radio3"/>
+ </radio_group>
+ <check_box label="Mostrar mi nombre" name="show_my_name_checkbox1"/>
+ <check_box initial_value="true" label="Etiquetas de los avatares en pequeño" name="small_avatar_names_checkbox"/>
+ <check_box label="Mostrar las etiquetas de grupo" name="show_all_title_checkbox1"/>
<text name="effects_color_textbox">
- Color de mis efectos:
+ Mis efectos:
+ </text>
+ <color_swatch label="" name="effect_color_swatch" tool_tip="Pulse para abrir el selector de color"/>
+ <text name="title_afk_text">
+ Ausente tras:
</text>
+ <spinner label="Ausente tras:" name="afk_timeout_spinner"/>
<text name="seconds_textbox">
segundos
</text>
- <text name="crash_report_textbox">
- Informes de caídas:
- </text>
- <text name="language_textbox">
- Idioma:
- </text>
- <text name="language_textbox2">
- (Tendrá efecto tras reiniciar)
+ <text name="text_box3">
+ Respuesta cuando estoy en el modo ocupado:
</text>
- <string name="region_name_prompt">
- &lt;escriba el nombre de la región&gt;
- </string>
- <combo_box name="crash_behavior_combobox">
- <combo_box.item name="Askbeforesending" label="Preguntar antes de enviar"/>
- <combo_box.item name="Alwayssend" label="Enviar siempre"/>
- <combo_box.item name="Neversend" label="No enviar nunca"/>
- </combo_box>
- <combo_box name="language_combobox">
- <combo_box.item name="System Default Language" label="Predeterminado del sistema"/>
- <combo_box.item name="English" label="English (Inglés)"/>
- <combo_box.item name="Danish" label="Dansk (Danés) - Beta"/>
- <combo_box.item name="Deutsch(German)" label="Deutsch (Alemán) - Beta"/>
- <combo_box.item name="Spanish" label="Español - Beta"/>
- <combo_box.item name="French" label="Français (Francés) - Beta"/>
- <combo_box.item name="Italian" label="Italiano - Beta"/>
- <combo_box.item name="Hungarian" label="Magyar (Húngaro) - Beta"/>
- <combo_box.item name="Dutch" label="Nederlands (Neerlandés) - Beta"/>
- <combo_box.item name="Polish" label="Polski (Polaco) - Beta"/>
- <combo_box.item name="Portugese" label="Portugués (Portugués) - Beta"/>
- <combo_box.item name="Russian" label="Русский (Ruso) - Beta"/>
- <combo_box.item name="Turkish" label="Türkçe (Turco) - Beta"/>
- <combo_box.item name="Ukrainian" label="Українська (Ucraniano) - Beta"/>
- <combo_box.item name="Chinese" label="中文 (简体) (Chino) - Beta"/>
- <combo_box.item name="(Japanese)" label="日本語 (Japonés) - Beta"/>
- <combo_box.item name="(Korean)" label="한국어 (Coreano) - Beta"/>
- </combo_box>
- <check_box label="Compartir el idioma con los objetos" name="language_is_public" tool_tip="Hace que los objetos con script del mundo sepan su idioma preferido."/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
index 4038940256..dc7d692531 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
@@ -1,43 +1,17 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Gráficos" name="Display panel">
- <button label="?" name="GraphicsPreferencesHelpButton"/>
- <check_box label="Abrir Second Life en una ventana" name="windowed mode"/>
- <text_editor name="FullScreenInfo" width="480">
- Si no está marcado, el visor se mostrará en pantalla completa cuando inicie sesión.
- </text_editor>
- <text name="WindowSizeLabel">
- Tamaño de la ventana:
+ <text name="UI Size:">
+ Tamaño de la UI:
</text>
- <combo_box left="124" name="windowsize combo">
- <combo_box.item name="640x480" label="640x480"/>
- <combo_box.item name="800x600" label="800x600"/>
- <combo_box.item name="720x480" label="720x480 (NTSC)"/>
- <combo_box.item name="768x576" label="768x576 (PAL)"/>
- <combo_box.item name="1024x768" label="1024x768"/>
- </combo_box>
- <text name="DisplayResLabel">
- Resolución:
+ <text name="QualitySpeed">
+ Calidad y velocidad:
</text>
- <combo_box left="124" name="fullscreen combo" />
- <text name="AspectRatioLabel1" tool_tip="ancho / alto">
- Proporción:
- </text>
- <combo_box left="124" name="aspect_ratio" tool_tip="ancho / alto">
- <combo_box.item name="4:3(StandardCRT)" label="4:3 (Standard CRT)"/>
- <combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)"/>
- <combo_box.item name="8:5(Widescreen)" label="8:5 (Widescreen)"/>
- <combo_box.item name="16:9(Widescreen)" label="16:9 (Widescreen)"/>
- </combo_box>
- <check_box label="Detectar automáticamente &#10;la proporción" name="aspect_auto_detect" left="295" />
- <text name="HigherText">
- Calidad y
- </text>
- <text name="QualityText">
- Rendimiento:
- </text>
- <text name="FasterText" left="95">
+ <text left="95" name="FasterText">
El más rápido
</text>
+ <text name="BetterText">
+ Mejor
+ </text>
<text name="ShadersPrefText">
Bajo
</text>
@@ -50,97 +24,83 @@
<text name="ShadersPrefText4">
Ultra
</text>
- <text name="HigherText2" left="325" >
- Más alto
- </text>
- <text name="QualityText2" left="325" >
- calidad
- </text>
- <check_box label="Personalizar" name="CustomSettings"/>
- <panel name="CustomGraphics Panel">
- <text name="ShadersText">
- Shaders:
- </text>
- <check_box label="Efecto de relieve y brillo" name="BumpShiny"/>
- <check_box label="Shaders básicos" name="BasicShaders" tool_tip="Desactivando esta opción puede prevenir fallos en algunos controladores de la tarjeta gráfica."/>
- <check_box label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/>
- <check_box label="Reflejos en el agua" name="Reflections"/>
- <text name="ReflectionDetailText">
- Objetos reflejados:
- </text>
- <radio_group name="ReflectionDetailRadio">
- <radio_item name="0" label="Terreno y árboles" />
- <radio_item name="1" label="Todos los objetos estáticos" />
- <radio_item name="2" label="Todos los avatares y objetos" />
- <radio_item name="3" label="Todo" />
- </radio_group>
- <text name="AvatarRenderingText">
- Renderización del avatar:
- </text>
- <check_box label="Avatares simulados" name="AvatarImpostors"/>
- <check_box label="Renderizado por hardware" name="AvatarVertexProgram"/>
- <check_box label="Ropas del avatar" name="AvatarCloth"/>
- <text name="DrawDistanceMeterText1">
- m
- </text>
- <text name="DrawDistanceMeterText2">
- m
- </text>
- <slider label="Distancia de dibujo:" name="DrawDistance"/>
- <slider label="Núm. máx. de partículas:" name="MaxParticleCount"/>
- <slider label="Calidad del procesamiento:" name="RenderPostProcess" label_width="142"/>
- <text name="MeshDetailText">
- Detalle de la malla:
- </text>
- <slider label=" Objetos:" name="ObjectMeshDetail"/>
- <slider label=" Prims flexibles:" name="FlexibleMeshDetail"/>
- <slider label=" Árboles:" name="TreeMeshDetail"/>
- <slider label=" Avatares:" name="AvatarMeshDetail"/>
- <slider label=" Terreno:" name="TerrainMeshDetail"/>
- <slider label=" Cielo:" name="SkyMeshDetail"/>
- <text name="PostProcessText">
- Baja
- </text>
- <text name="ObjectMeshDetailText">
- Bajo
- </text>
- <text name="FlexibleMeshDetailText">
- Bajo
- </text>
- <text name="TreeMeshDetailText">
- Bajo
- </text>
- <text name="AvatarMeshDetailText">
- Bajo
- </text>
- <text name="TerrainMeshDetailText">
- Bajo
- </text>
- <text name="SkyMeshDetailText">
- Bajo
- </text>
- <text name="LightingDetailText" width="135">
- Detalles de la iluminación:
- </text>
- <radio_group name="LightingDetailRadio">
- <radio_item name="SunMoon" label="Sólo el Sol y la Luna" />
- <radio_item name="LocalLights" label="Puntos de luz cercanos" />
- </radio_group>
- <text name="TerrainDetailText">
- Nivel de detalle del
+ <panel label="CustomGraphics" name="CustomGraphics Panel">
+ <text name="ShadersText">
+ Shaders:
+ </text>
+ <check_box initial_value="true" label="Efecto de relieve y brillo" name="BumpShiny"/>
+ <check_box initial_value="true" label="Shaders básicos" name="BasicShaders" tool_tip="Desactivando esta opción puede prevenir fallos en algunos controladores de la tarjeta gráfica."/>
+ <check_box initial_value="true" label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Reflejos en el agua" name="Reflections"/>
+ <text name="ReflectionDetailText">
+ Objetos reflejados:
+ </text>
+ <radio_group name="ReflectionDetailRadio">
+ <radio_item label="Terreno y árboles" name="0"/>
+ <radio_item label="Todos los objetos estáticos" name="1"/>
+ <radio_item label="Todos los avatares y objetos" name="2"/>
+ <radio_item label="Todo" name="3"/>
+ </radio_group>
+ <text name="AvatarRenderingText">
+ Renderización del avatar:
+ </text>
+ <check_box initial_value="true" label="Avatares simulados" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="Renderizado por hardware" name="AvatarVertexProgram"/>
+ <check_box initial_value="true" label="Ropas del avatar" name="AvatarCloth"/>
+ <slider label="Distancia de dibujo:" name="DrawDistance"/>
+ <text name="DrawDistanceMeterText2">
+ m
+ </text>
+ <slider label="Núm. máx. de partículas:" name="MaxParticleCount"/>
+ <slider label="Calidad del procesamiento:" label_width="142" name="RenderPostProcess"/>
+ <text name="MeshDetailText">
+ Detalle de la malla:
+ </text>
+ <slider label=" Objetos:" name="ObjectMeshDetail"/>
+ <slider label=" Prims flexibles:" name="FlexibleMeshDetail"/>
+ <slider label=" Árboles:" name="TreeMeshDetail"/>
+ <slider label=" Avatares:" name="AvatarMeshDetail"/>
+ <slider label=" Terreno:" name="TerrainMeshDetail"/>
+ <slider label=" Cielo:" name="SkyMeshDetail"/>
+ <text name="PostProcessText">
+ Baja
+ </text>
+ <text name="ObjectMeshDetailText">
+ Bajo
+ </text>
+ <text name="FlexibleMeshDetailText">
+ Bajo
+ </text>
+ <text name="TreeMeshDetailText">
+ Bajo
+ </text>
+ <text name="AvatarMeshDetailText">
+ Bajo
+ </text>
+ <text name="TerrainMeshDetailText">
+ Bajo
+ </text>
+ <text name="SkyMeshDetailText">
+ Bajo
+ </text>
+ <text name="LightingDetailText" width="135">
+ Detalles de la iluminación:
+ </text>
+ <radio_group name="LightingDetailRadio">
+ <radio_item label="Sólo el Sol y la Luna" name="SunMoon"/>
+ <radio_item label="Puntos de luz cercanos" name="LocalLights"/>
+ </radio_group>
+ <text name="TerrainDetailText">
+ Nivel de detalle del
terreno:
- </text>
- <radio_group name="TerrainDetailRadio" left_delta="60">
- <radio_item name="0" label="Bajo" />
- <radio_item name="2" label="Alto" />
- </radio_group>
+ </text>
+ <radio_group left_delta="60" name="TerrainDetailRadio">
+ <radio_item label="Bajo" name="0"/>
+ <radio_item label="Alto" name="2"/>
+ </radio_group>
</panel>
- <button label="Configuraciones recomendadas" name="Defaults" width="195" left="110"/>
- <button label="Opciones del hardware" label_selected="Opciones del hardware" name="GraphicsHardwareButton" left="315"/>
- <panel.string name="resolution_format">
- [RES_X] x [RES_Y]
- </panel.string>
- <panel.string name="aspect_ratio_text">
- [NUM]:[DEN]
- </panel.string>
+ <button label="Aplicar" label_selected="Aplicar" name="Apply"/>
+ <button label="Por defecto" left="110" name="Defaults" width="195"/>
+ <button label="Avanzado" name="Advanced"/>
+ <button label="Hardware" label_selected="Hardware" left="315" name="GraphicsHardwareButton"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
index cbaa3d96ee..fbc885abc4 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
@@ -1,34 +1,27 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Comunicación" name="im">
- <text name="text_box">
- Mi estado de conexión:
+ <panel.string name="log_in_to_change">
+ Conéctate para que cambie
+ </panel.string>
+ <button label="Limpiar el historial" name="clear_cache"/>
+ <text name="cache_size_label_l">
+ (Localizaciones, imágenes, web, historial de búsqueda)
</text>
- <check_box label="Sólo pueden ver si estoy conectado mis amigos y grupos" name="online_visibility"/>
- <text name="text_box2">
- Opciones de los MI:
+ <check_box label="Sólo saben si estoy conectado mis amigos y grupos" name="online_visibility"/>
+ <check_box label="Sólo pueden llamarme o mandarme un MI mis amigos y grupos" name="voice_call_friends_only_check"/>
+ <check_box label="Desconectar el micrófono cuando finalicen las llamadas" name="auto_disengage_mic_check"/>
+ <check_box label="Aceptar las &apos;cookies&apos;" name="cookies_enabled"/>
+ <check_box label="Permitir la ejecución automática de los media" name="autoplay_enabled"/>
+ <text name="Logs:">
+ Registros:
</text>
- <string name="log_in_to_change">
- inicie sesión para cambiar
- </string>
- <check_box label="Enviar MI al correo electrónico ([EMAIL])" name="send_im_to_email"/>
- <check_box label="Incluir los MI en la consola del chat" name="include_im_in_chat_console"/>
- <check_box label="Incluir la hora en los MI" name="show_timestamps_check"/>
- <check_box label="Avisar si se conecta un amigo" name="friends_online_notify_checkbox"/>
- <text name="text_box3">
- Mensaje en el estado
-ocupado:
- </text>
- <text name="text_box4">
- Opciones de los
-registros:
- </text>
- <check_box label="Guardar un registro de los MI en mi ordenador" name="log_instant_messages"/>
- <check_box label="Incluir la hora en el registro de los MI" name="log_instant_messages_timestamp"/>
- <check_box label="Mostrar el final de la última conversación por MI" name="log_show_history"/>
- <check_box label="Guardar un registro del chat en mi ordenador" name="log_chat"/>
- <check_box label="Incluir la hora en el registro del chat" name="log_chat_timestamp"/>
- <check_box label="Mostrar en el chat la llegada de los MI" name="log_chat_IM"/>
- <check_box label="Incluir la fecha junto a la hora" name="log_date_timestamp"/>
- <button label="Cambiar la ruta" label_selected="Cambiar la ruta" name="log_path_button" width="120"/>
+ <check_box label="Guardar en mi ordenador registros del chat" name="log_nearby_chat"/>
+ <check_box label="Guardar en mi ordenador registros de los MI" name="log_instant_messages"/>
+ <check_box label="Añadir fecha y hora" name="show_timestamps_check_im"/>
<line_editor left="278" name="log_path_string" right="-20"/>
+ <text name="log_path_desc">
+ Ruta de los registros
+ </text>
+ <button label="Elegir" label_selected="Elegir" name="log_path_button" width="120"/>
+ <button label="Lista de ignorados" name="block_list"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
index 967626b8d5..d58878b120 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
@@ -1,32 +1,46 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Dispositivos y Cámara" name="Input panel">
- <text name=" Mouselook Options:">
+ <button bottom_delta="-40" label="Otros dispositivos" name="joystick_setup_button"/>
+ <text name="Mouselook:">
Vista subjetiva:
</text>
- <text name=" Mouse Sensitivity:">
- Sensibilidad del ratón:
+ <text name=" Mouse Sensitivity">
+ Sensibilidad del ratón
</text>
- <check_box label="Invertir el ratón" name="invert_mouse"/>
- <text name=" Auto Fly Options:">
- Vuelo:
+ <check_box label="Invertir" name="invert_mouse"/>
+ <text name="Network:">
+ Red:
</text>
- <check_box label="Despegar/Aterrizar pulsando RePág/AvPág" name="automatic_fly"/>
- <text name=" Camera Options:">
- Opciones de la cámara:
+ <text name="Maximum bandwidth">
+ Ancho de banda máximo
</text>
- <text name="camera_fov_label" width="218">
- Ángulo de vista de la cámara:
+ <text name="text_box2">
+ kbps
</text>
- <slider bottom_delta="-6" width="128" left="326" name="camera_fov" />
- <text name="Camera Follow Distance:" width="218">
- Distancia a la que sigue la cámara:
+ <check_box label="Personalizar el puerto" name="connection_port_enabled"/>
+ <spinner label="Número de puerto:" name="web_proxy_port"/>
+ <text name="cache_size_label_l">
+ Tamaño de la caché
</text>
- <slider bottom_delta="-6" width="128" left="326" name="camera_offset_scale" />
- <check_box label="Reorientar la cámara al editar" name="edit_camera_movement" tool_tip="Usar la reorientación automática de la cámara al entrar y salir del modo de edición"/>
- <check_box label="Reorientar la cámara al modificar la apariencia" name="appearance_camera_movement" tool_tip="Usar la reorientación automática de la cámara mientras se modifica la apariencia"/>
- <text name="text2">
- Visualización del avatar:
+ <text name="text_box5">
+ MB
+ </text>
+ <button label="Elegir" label_selected="Elegir" name="set_cache"/>
+ <button label="Recuperar" label_selected="Configurar" name="reset_cache"/>
+ <text name="Cache location">
+ Ruta de la caché
+ </text>
+ <text name="Web:">
+ Web:
+ </text>
+ <radio_group name="use_external_browser">
+ <radio_item label="Usar el navegador incorporado" name="internal" tool_tip="Usa el navegador incorporado para ayuda, enlaces web, etc. Este navegador se abre en una nueva ventana dentro de [APP_NAME]."/>
+ <radio_item label="Usar mi navegador (IE, Firefox)" name="external" tool_tip="Usa tu navegador por defecto para ayuda, enlaces web, etc. No es aconsejable si estás a pantalla completa."/>
+ </radio_group>
+ <check_box initial_value="false" label="Web proxy" name="web_proxy_enabled"/>
+ <line_editor name="web_proxy_editor" tool_tip="Nombre o dirección IP del proxy que quieres usar"/>
+ <button label="Buscar" label_selected="Buscar" name="set_proxy"/>
+ <text name="Proxy location">
+ Localización del proxy
</text>
- <check_box label="Ver el avatar en vista subjetiva" name="first_person_avatar_visible"/>
- <button bottom_delta="-40" label="Configurar el joystick" name="joystick_setup_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
index 241f3042fe..5ec5ba88fa 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
@@ -1,38 +1,38 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Audio y Vídeo" name="Preference Media panel">
- <slider label="General" name="System Volume"/>
+<panel label="Sonidos" name="Preference Media panel">
+ <slider label="Volumen general" name="System Volume"/>
+ <check_box initial_value="true" label="Silenciar al minimizar" name="mute_when_minimized"/>
<slider label="Ambiental" name="Wind Volume"/>
- <slider label="Sonidos" name="SFX Volume"/>
- <slider label="Media" name="Media Volume"/>
- <slider label="Interfaz" name="UI Volume"/>
- <slider label="Música" name="Music Volume"/>
+ <slider label="Botones" name="UI Volume"/>
+ <slider label="Medios de comunicación" name="Media Volume"/>
+ <slider label="Efectos sonoros" name="SFX Volume"/>
+ <slider label="Música en streaming" name="Music Volume"/>
+ <check_box label="Voz" name="enable_voice_check"/>
<slider label="Voz" name="Voice Volume"/>
- <text_editor name="voice_unavailable">
- El chat de voz no está disponible
- </text_editor>
- <check_box label="Activar el chat de voz" name="enable_voice_check"/>
+ <text name="Listen from">
+ Oír desde:
+ </text>
<radio_group name="ear_location">
- <radio_item name="0" label="Oír el chat desde la posición de la cámara." />
- <radio_item name="1" label="Oír el chat desde la posición del avatar." />
+ <radio_item label="La posición de la cámara" name="0"/>
+ <radio_item label="La posición del avatar" name="1"/>
</radio_group>
- <button label="Configuración de los dispositivos" name="device_settings_btn" width="210" />
- <text name="muting_text">
- Volumen:
- </text>
- <text name="streaming_prefs_text">
- Preferencias multimedia:
- </text>
- <text name="audio_prefs_text">
- Preferencias de sonido:
- </text>
- <panel label="Volumen" name="Volume Panel"/>
- <check_box label="Si hay música, reproducirla en streaming" name="streaming_music"/>
- <check_box label="Si hay media, reproducirlos en streaming" name="streaming_video"/>
- <check_box label="Reproducir automáticamente los media" name="auto_streaming_video"/>
- <check_box label="Silenciar el sonido al minimizar la ventana" name="mute_when_minimized"/>
- <slider label="Efecto Doppler" name="Doppler Effect" label_width="140" width="270" />
- <slider label="Distancia de escucha" name="Distance Factor" label_width="140" width="270" />
- <slider label="Nivel de atenuación" name="Rolloff Factor" label_width="140" width="270" />
- <spinner label="Avisar de transacción de L$ desde" name="L$ Change Threshold" label_width="195" width="259"/>
- <spinner label="Avisar del estado de la vida desde" name="Health Change Threshold" label_width="195" width="259"/>
+ <button label="Dispositivos de entrada y salida" name="device_settings_btn" width="210"/>
+ <panel label="Configuración de dispositivos" name="device_settings_panel">
+ <panel.string name="default_text">
+ Por defecto
+ </panel.string>
+ <text name="Input">
+ Entrada
+ </text>
+ <text name="My volume label">
+ Mi volumen:
+ </text>
+ <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia el volumen usando este deslizable"/>
+ <text name="wait_text">
+ Por favor, espera
+ </text>
+ <text name="Output">
+ Salida
+ </text>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml
new file mode 100644
index 0000000000..4701c67e06
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+ <layout_stack name="media_controls">
+ <layout_panel name="media_address">
+ <line_editor name="media_address_url" tool_tip="URL de los media"/>
+ <layout_stack name="media_address_url_icons">
+ <layout_panel>
+ <icon name="media_whitelist_flag" tool_tip="Lista Blanca activada"/>
+ </layout_panel>
+ <layout_panel>
+ <icon name="media_secure_lock_flag" tool_tip="Navegación segura"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="media_play_position">
+ <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Progreso de la película"/>
+ </layout_panel>
+ <layout_panel name="media_volume">
+ <button name="media_mute_button" tool_tip="Silenciar este media"/>
+ <slider name="volume_slider" tool_tip="Volumen de los media"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack>
+ <panel name="media_progress_indicator">
+ <progress_bar name="media_progress_bar" tool_tip="Los media se están cargando"/>
+ </panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_profile.xml b/indra/newview/skins/default/xui/es/panel_profile.xml
index 218e03dcce..f61c7c3e33 100644
--- a/indra/newview/skins/default/xui/es/panel_profile.xml
+++ b/indra/newview/skins/default/xui/es/panel_profile.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_profile">
+<panel label="Perfil" name="panel_profile">
<string name="CaptionTextAcctInfo">
[ACCTTYPE]
[PAYMENTINFO] [AGEVERIFICATION]
@@ -11,4 +11,38 @@
http://www.secondlife.com/account/partners.php?lang=es
</string>
<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=es-ES"/>
+ <string name="no_partner_text" value="Ninguno"/>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="second_life_image_panel">
+ <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="title_rw_descr_text" value="Mundo real:"/>
+ </panel>
+ <text name="me_homepage_text">
+ Web:
+ </text>
+ <text name="title_member_text" value="Miembro desde:"/>
+ <text name="title_acc_status_text" value="Estado de la cuenta:"/>
+ <text name="acc_status_text" value="Residente. No ha aportado información de pago."/>
+ <text name="title_partner_text" value="Compañero/a:"/>
+ <text name="title_groups_text" value="Grupos:"/>
+ </panel>
+ </scroll_container>
+ <panel name="profile_buttons_panel">
+ <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad al residente"/>
+ <button label="MI" name="im" tool_tip="Abrir un mensaje instantáneo"/>
+ <button label="Llamada" name="call" tool_tip="Llamar a este residente"/>
+ <button label="Mapa" name="show_on_map_btn" tool_tip="Ver al residente en el mapa"/>
+ <button label="Teleportarse" name="teleport" tool_tip="Ofrecer teleporte"/>
+ <button label="▼" name="overflow_btn" tool_tip="Pagar dinero o dar algo del inventario al residente"/>
+ </panel>
+ <panel name="profile_me_buttons_panel">
+ <button label="Editar el perfil" name="edit_profile_btn"/>
+ <button label="Modificar la apariencia" name="edit_appearance_btn"/>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_profile_view.xml b/indra/newview/skins/default/xui/es/panel_profile_view.xml
new file mode 100644
index 0000000000..b556346051
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_profile_view.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_target_profile">
+ <string name="status_online">
+ Conectado/a
+ </string>
+ <string name="status_offline">
+ Desconectado/a
+ </string>
+ <text_editor name="user_name" value="(Cargando...)"/>
+ <text name="status" value="Conectado/a"/>
+ <tab_container name="tabs">
+ <panel label="PERFIL" name="panel_profile"/>
+ <panel label="DESTACADOS" name="panel_picks"/>
+ <panel label="NOTAS Y PRIVACIDAD" name="panel_notes"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_region_covenant.xml b/indra/newview/skins/default/xui/es/panel_region_covenant.xml
index 220479098b..7713a173e5 100644
--- a/indra/newview/skins/default/xui/es/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_covenant.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Contrato" name="Covenant">
<text name="estate_section_lbl">
- Estado:
+ Estado
</text>
<text name="estate_name_lbl">
Nombre:
@@ -22,7 +22,7 @@
Última modificación el miér. 31 de dic. de 1969, 16:00:00
</text>
<button label="?" name="covenant_help"/>
- <text_editor name="covenant_editor" bottom="-263" height="178" >
+ <text_editor bottom="-263" height="178" name="covenant_editor">
No se ha aportado un contrato para este estado.
</text_editor>
<button label="Cambiar" name="reset_covenant"/>
@@ -30,11 +30,11 @@
Los cambios en el contrato se mostrarán en todas las parcelas
del estado.
</text>
- <text name="covenant_instructions" bottom_delta="-31" >
- Para cambiar el contrato de este estado, arrastre y suelte una nota.
+ <text bottom_delta="-31" name="covenant_instructions">
+ Arrastra y suelta una nota para cambiar el contrato de este Estado.
</text>
<text name="region_section_lbl">
- Región:
+ Región
</text>
<text name="region_name_lbl">
Nombre:
diff --git a/indra/newview/skins/default/xui/es/panel_region_debug.xml b/indra/newview/skins/default/xui/es/panel_region_debug.xml
index a7999cc54d..64162220a6 100644
--- a/indra/newview/skins/default/xui/es/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_debug.xml
@@ -7,11 +7,11 @@
desconocida
</text>
<check_box label="Desactivar los scripts" name="disable_scripts_check" tool_tip="Descativar todos los scripts en esta región"/>
- <button label="?" name="disable_scripts_help" left="215"/>
+ <button label="?" left="215" name="disable_scripts_help"/>
<check_box label="Desactivar las colisiones" name="disable_collisions_check" tool_tip="Desactiva las colisiones (no las de avatares) en esta región"/>
- <button label="?" name="disable_collisions_help" left="215"/>
+ <button label="?" left="215" name="disable_collisions_help"/>
<check_box label="Desactivar las propiedades físicas" name="disable_physics_check" tool_tip="Desactiva toda la física en esta región"/>
- <button label="?" name="disable_physics_help" left="215"/>
+ <button label="?" left="215" name="disable_physics_help"/>
<button label="Aplicar" name="apply_btn"/>
<text name="objret_text_lbl" width="130">
Devolver el objeto
@@ -22,18 +22,18 @@
<line_editor name="target_avatar_name">
(nadie)
</line_editor>
- <button label="Elegir..." name="choose_avatar_btn"/>
+ <button label="Elegir" name="choose_avatar_btn"/>
<text name="options_text_lbl">
Opciones:
</text>
- <check_box label="Devolver sólo los objetos con scripts" name="return_scripts" tool_tip="Devolver sólo los objetos que tengan scripts."/>
- <check_box label="Devolver sólo los objetos que están en terreno de otro" name="return_other_land" tool_tip="Devolver sólo los objetos que están en terreno de otro"/>
- <check_box label="Devolver los objetos de cualquier región de este estado" name="return_estate_wide" tool_tip="Devolver los objetos de todas las regiones que forman este estado"/>
+ <check_box label="Con scripts" name="return_scripts" tool_tip="Devolver sólo los objetos con scripts"/>
+ <check_box label="En el terreno de otros" name="return_other_land" tool_tip="Devolver sólo los objetos que están en terreno de otro"/>
+ <check_box label="En cada región de este estado" name="return_estate_wide" tool_tip="Devolver los objetos de todas las regiones que forman este estado"/>
<button label="Devolver" name="return_btn"/>
- <button width="280" label="Listar los objetos que colisionan..." name="top_colliders_btn" tool_tip="Lista de los objetos con más posibles colisiones potenciales"/>
- <button label="?" name="top_colliders_help" left="297"/>
- <button width="280" label="Listar los scripts según su uso..." name="top_scripts_btn" tool_tip="Lista de los objetos que más tiempo emplean ejecutando scripts"/>
- <button label="?" name="top_scripts_help" left="297"/>
+ <button label="Listar los objetos que colisionan..." name="top_colliders_btn" tool_tip="Lista de los objetos con más posibles colisiones potenciales" width="280"/>
+ <button label="?" left="297" name="top_colliders_help"/>
+ <button label="Listar los scripts según su uso..." name="top_scripts_btn" tool_tip="Lista de los objetos que más tiempo emplean ejecutando scripts" width="280"/>
+ <button label="?" left="297" name="top_scripts_help"/>
<button label="Reiniciar la región" name="restart_btn" tool_tip="Cuenta atrás de 2 minutos y reiniciar la región"/>
<button label="?" name="restart_help"/>
<button label="Retrasar el reinicio" name="cancel_restart_btn" tool_tip="Retrasar una hora el reinicio de la región"/>
diff --git a/indra/newview/skins/default/xui/es/panel_region_estate.xml b/indra/newview/skins/default/xui/es/panel_region_estate.xml
index f16ec89cb0..437ecd4e10 100644
--- a/indra/newview/skins/default/xui/es/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_estate.xml
@@ -11,7 +11,7 @@ pestaña afectarán a todas las regiones del estado.
(desconocido)
</text>
<text name="owner_text">
- Propietario:
+ Propietario del Estado:
</text>
<text name="estate_owner">
(desconocido)
@@ -24,10 +24,10 @@ pestaña afectarán a todas las regiones del estado.
<check_box label="Permitir el acceso público" name="externally_visible_check"/>
<button label="?" name="externally_visible_help"/>
<text name="Only Allow">
- Impedir el acceso a Residentes...
+ Acceso restringido a cuentas verificadas por:
</text>
- <check_box label="sin información de pago archivada" name="limit_payment" tool_tip="Impedir el acceso a los residentes no identificados."/>
- <check_box label="que no han verificado si son adultos" name="limit_age_verified" tool_tip="Impedir el acceso a residentes que no hayan verificado su edad. Para más información, vea support.secondlife.com"/>
+ <check_box label="Información de pago aportada" name="limit_payment" tool_tip="Expulsar a los residentes no identificados"/>
+ <check_box label="Verificación de la edad" name="limit_age_verified" tool_tip="Prohibir el acceso a residentes que no hayan verificado su edad. Para más información, ver [SUPPORT_SITE]."/>
<check_box label="Permitir el chat de voz" name="voice_chat_check"/>
<button label="?" name="voice_chat_help"/>
<check_box label="Permitir el teleporte a cualquier punto" name="allow_direct_teleport"/>
diff --git a/indra/newview/skins/default/xui/es/panel_region_texture.xml b/indra/newview/skins/default/xui/es/panel_region_texture.xml
index 5540358f97..83c22d20eb 100644
--- a/indra/newview/skins/default/xui/es/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_texture.xml
@@ -48,7 +48,7 @@
Estos valores representan la gama de mezclas para las texturas superiores.
</text>
<text name="height_text_lbl11">
- Midiendo en metros, el valor BAJA es la altura MÁXIMA de la textura #1,
+ Midiendo en metros, el valor BAJA es la altura MÁXIMA de la textura #1, y el valor ALTA es la altura MÍNIMA de la textura #4.
</text>
<text name="height_text_lbl12">
y el valor ALTA es la altura MÍNIMA de la textura #4.
diff --git a/indra/newview/skins/default/xui/es/panel_script_ed.xml b/indra/newview/skins/default/xui/es/panel_script_ed.xml
new file mode 100644
index 0000000000..c73db729fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_script_ed.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+ <panel.string name="loading">
+ Cargando...
+ </panel.string>
+ <panel.string name="can_not_view">
+ No puedes ver ni editar este script. Ha sido configurado como &quot;no copiable&quot;. Necesitas todos los permisos para ver o editar un script que está dentro de un objeto.
+ </panel.string>
+ <panel.string name="public_objects_can_not_run">
+ Los objetos públicos no pueden ejecutar scripts
+ </panel.string>
+ <panel.string name="script_running">
+ Ejecutándose
+ </panel.string>
+ <panel.string name="Title">
+ Script: [NAME]
+ </panel.string>
+ <text_editor name="Script Editor">
+ Cargando...
+ </text_editor>
+ <button label="Guardar" label_selected="Guardar" name="Save_btn"/>
+ <combo_box label="Insertar..." name="Insert..."/>
+ <menu_bar name="script_menu">
+ <menu label="Archivo" name="File">
+ <menu_item_call label="Guardar" name="Save"/>
+ <menu_item_call label="Deshacer todos los cambios" name="Revert All Changes"/>
+ </menu>
+ <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="Seleccionar todo" name="Select All"/>
+ <menu_item_call label="Deseleccionar" name="Deselect"/>
+ <menu_item_call label="Buscar / Reemplazar..." name="Search / Replace..."/>
+ </menu>
+ <menu label="Ayuda" name="Help">
+ <menu_item_call label="Ayuda..." name="Help..."/>
+ <menu_item_call label="Ayuda de palabras clave..." name="Keyword Help..."/>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_side_tray.xml b/indra/newview/skins/default/xui/es/panel_side_tray.xml
new file mode 100644
index 0000000000..1222f620f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_side_tray.xml
@@ -0,0 +1,26 @@
+<?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">
+ <sidetray_tab description="Base." name="sidebar_home" tab_title="Home">
+ <panel label="base" name="panel_home"/>
+ </sidetray_tab>
+ <sidetray_tab description="Encuentra a tus amigos, contactos y gente que esté cerca." name="sidebar_people" tab_title="People">
+ <panel_container name="panel_container">
+ <panel label="Información del grupo" name="panel_group_info_sidetray"/>
+ <panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
+ </panel_container>
+ </sidetray_tab>
+ <sidetray_tab description="Encontrar lugares donde ir o que ya visitaste." label="Lugares" name="sidebar_places" tab_title="Places">
+ <panel label="Lugares" name="panel_places"/>
+ </sidetray_tab>
+ <sidetray_tab description="Edita tu perfil público y tus destacados." name="sidebar_me" tab_title="My Profile">
+ <panel label="Yo" name="panel_me"/>
+ </sidetray_tab>
+ <sidetray_tab description="Cambia tu apariencia y tu &apos;look&apos; actual." name="sidebar_appearance" tab_title="My Appearance">
+ <panel label="Modificar la apariencia" name="sidepanel_appearance"/>
+ </sidetray_tab>
+ <sidetray_tab description="Mira tu inventario." name="sidebar_inventory" tab_title="My Inventory">
+ <panel label="Modificar el inventario" name="sidepanel_inventory"/>
+ </sidetray_tab>
+</side_tray>
diff --git a/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml
new file mode 100644
index 0000000000..3633b0ccaa
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="sidetray_tab_panel">
+ <text name="sidetray_tab_title" value="Panel lateral"/>
+ <button name="show_help" tool_tip="Ver ayuda"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml
new file mode 100644
index 0000000000..350aec9c69
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
+<panel name="panel_stand_stop_flying">
+ <button label="Levantarme" name="stand_btn" tool_tip="Pulsa aquí para levantarte."/>
+ <button label="Dejar de volar" name="stop_fly_btn" tool_tip="Dejar de volar"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml
index 31cde7d237..a3443aee25 100644
--- a/indra/newview/skins/default/xui/es/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml
@@ -1,38 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="status">
- <text name="ParcelNameText" tool_tip="Nombre de la parcela en la que está. Pulse Acerca del terreno.">
- el nombre de la parcela va aquí
- </text>
- <text name="BalanceText" tool_tip="Saldo de su cuenta">
- Cargando...
- </text>
- <button label="" label_selected="" name="buycurrency" tool_tip="Comprar dinero"/>
- <text name="TimeText" tool_tip="Hora actual (costa oeste EE.UU.)">
- 12:00 AM
- </text>
- <string name="StatBarDaysOfWeek">
+ <panel.string name="StatBarDaysOfWeek">
Domingo:Lunes:Martes:Miércoles:Jueves:Viernes:Sábado
- </string>
- <string name="StatBarMonthsOfYear">
+ </panel.string>
+ <panel.string name="StatBarMonthsOfYear">
Enero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre
- </string>
- <button label="" label_selected="" name="scriptout" tool_tip="Errores y alertas de los scripts"/>
- <button label="" label_selected="" name="health" tool_tip="Vida"/>
- <text name="HealthText" tool_tip="Vida">
- 100%
- </text>
- <button label="" label_selected="" name="no_fly" tool_tip="Prohibido volar"/>
- <button label="" label_selected="" name="no_build" tool_tip="No se permite Construir/Renderizar"/>
- <button label="" label_selected="" name="no_scripts" tool_tip="No se permiten los scripts"/>
- <button label="" label_selected="" name="restrictpush" tool_tip="Sin &apos;empujones&apos;"/>
- <button label="" label_selected="" name="status_no_voice" tool_tip="Aquí no está disponible la voz"/>
- <button label="" label_selected="" name="buyland" tool_tip="Comprar esta parcela"/>
- <line_editor label="Buscar" name="search_editor" tool_tip="Buscar en [SECOND_LIFE]"/>
- <button label="" label_selected="" name="search_btn" tool_tip="Buscar en [SECOND_LIFE]"/>
- <string name="packet_loss_tooltip">
+ </panel.string>
+ <panel.string name="packet_loss_tooltip">
Pérdida de paquetes
- </string>
- <string name="bandwidth_tooltip">
+ </panel.string>
+ <panel.string name="bandwidth_tooltip">
Ancho de banda
- </string>
+ </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>
+ <button label="" label_selected="" name="buycurrency" tool_tip="Mi saldo: pulsa para comprar más L$"/>
+ <text name="TimeText" tool_tip="Hora actual (Pacífico)">
+ 12:00 AM
+ </text>
+ <button name="volume_btn" tool_tip="Control general del volumen"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_teleport_history.xml b/indra/newview/skins/default/xui/es/panel_teleport_history.xml
new file mode 100644
index 0000000000..ff7cd5e723
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_teleport_history.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Teleport History">
+ <accordion name="history_accordion">
+ <accordion_tab name="today" title="Hoy"/>
+ <accordion_tab name="yesterday" title="Ayer"/>
+ <accordion_tab name="2_days_ago" title="Hace 2 días"/>
+ <accordion_tab name="3_days_ago" title="Hace 3 días"/>
+ <accordion_tab name="4_days_ago" title="Hace 4 días"/>
+ <accordion_tab name="5_days_ago" title="Hace 5 días"/>
+ <accordion_tab name="6_days_and_older" title="6 y más días"/>
+ <accordion_tab name="1_month_and_older" title="1 mes y más"/>
+ <accordion_tab name="6_months_and_older" title="6 y más meses"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_world_map.xml b/indra/newview/skins/default/xui/es/panel_world_map.xml
index 7cb4009422..77cec6b60b 100644
--- a/indra/newview/skins/default/xui/es/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/es/panel_world_map.xml
@@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="world_map">
+ <panel.string name="Loading">
+ Cargando...
+ </panel.string>
+ <panel.string name="InvalidLocation">
+ Localización inválida
+ </panel.string>
<panel.string name="world_map_north">
N
</panel.string>
diff --git a/indra/newview/skins/default/xui/es/role_actions.xml b/indra/newview/skins/default/xui/es/role_actions.xml
index da9a820eb8..14df3d67ca 100644
--- a/indra/newview/skins/default/xui/es/role_actions.xml
+++ b/indra/newview/skins/default/xui/es/role_actions.xml
@@ -1,199 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<role_actions>
- <action_set
- description="Estas capacidades incluyen poderes para añadir o quitar miembros del grupo, y para pemitir que se sumen nuevos miembros sin necesidad de invitación."
- name="Membership">
- <action description="Invitar personas al grupo"
- longdescription="Invitar a personas al grupo usando el botón &apos;Invitar a un nuevo miembro&apos; en Miembros y Roles &gt; subpestaña Miembros."
- name="member invite" value="1" />
- <action description="Expulsar a miembros del grupo"
- longdescription="Expulsar a miembros del grupo usando el botón &apos;Expulsar del grupo&apos; en Miembros y Roles &gt; subpestaña Miembros. Un propietario puede expulsar a cualquiera, excepto a otro propietario. Si usted no es un propietario, un miembro del grupo puede expulsarle sólo si tiene concedida tal capacidad específica. Para quitar capacidades a los miembros, usted debe tener la de &apos;Quitar capacidades a miembros&apos;."
- name="member eject" value="2" />
- <action
- description="Activar/desactivar &apos;Inscripción libre&apos; y cambiar &apos;Cuota de inscripción&apos;"
- longdescription="Activar/desactivar &apos;Inscripción libre&apos; para permitir o no que se unan sin invitación nuevos miembros, y cambiar la &apos;Cuota de inscripción&apos; en la sección Preferencias del grupo de la pestaña General."
- name="member options" value="3" />
+ <action_set description="Estas capacidades incluyen poderes para añadir o quitar miembros del grupo, y para pemitir que se sumen nuevos miembros sin necesidad de invitación." name="Membership">
+ <action description="Invitar personas al grupo" longdescription="Invitar a gente a este grupo usando el botón &apos;Invitar&apos; en la sección Roles &gt; pestaña Miembros." name="member invite" value="1"/>
+ <action description="Expulsar a miembros del grupo" longdescription="Expulsar a miembros de este grupo usando el botón &apos;Expulsar&apos; en la sección Roles &gt; pestaña Miembros. Un propietario puede expulsar a cualquiera, excepto a otro propietario. Si no eres un propietario, un miembro puede ser expulsado única y exclusivamente si está en el rol de Cualquiera y NO en otros roles. Para quitar roles a los miembros, tienes que tener la capacidad de &apos;Quitar roles a los miembros&apos;." name="member eject" value="2"/>
+ <action description="Cambiar &apos;Inscripción abierta&apos; y &apos;Cuota de inscripción&apos;" longdescription="En la sección General, cambiar la &apos;Inscripción abierta&apos; -que permite entrar al grupo sin invitación- y la &apos;Cuota de inscripción&apos;." name="member options" value="3"/>
</action_set>
- <action_set
- description="Estas habilidades incluyen el poder añadir, quitar y cambiar roles, asignarlos a miembros, y darles capacidades."
- name="Roles">
- <action description="Crear nuevos roles"
- longdescription="Crear nuevos roles en Miembros y Roles &gt; pestaña Roles &gt; botón Crear un rol nuevo."
- name="role create" value="4" />
- <action description="Borrar roles"
- longdescription="Borrar roles en Miembros y Roles &gt; pestaña Roles &gt; botón Eliminar el rol."
- name="role delete" value="5" />
- <action description="Cambiar nombres de roles, títulos y descripciones"
- longdescription="Cambiar el nombre del rol que elija, su etiqueta y descripción en la parte media de la pestaña Miembros y Roles."
- name="role properties" value="6" />
- <action description="Designar miembros para el rol del asignador"
- longdescription="Designar miembros para un rol en la sección Roles asignados de la pestaña Miembros y Roles &gt; subpestaña Miembros. Un miembro con este poder sólo puede asignar a otros el rol que él posee."
- name="role assign member limited" value="7" />
- <action description="Designar miembros para cualquier rol"
- longdescription="Designar miembros para cualquier rol en la sección Roles asignados de la pestaña Miembros y Roles &gt; subpestaña Miembros. *AVISO* Todos los miembros con esta capacidad podrán asignarse a sí mismos -y a otros miembros- roles con mayores poderes de los que actualmente tienen. Potencialmente, podrían elevarse hasta poderes cercanos a los del propietario. Asegúrese de lo que está haciendo antes de otorgar esta capacidad."
- name="role assign member" value="8" />
- <action description="Quitar capacidades a los miembros"
- longdescription="Quitar capacidades a los miembros en la sección Capacidades asignadas de Miembros y Roles &gt; subpestaña Roles. No se pueden quitar a los Propietarios."
- name="role remove member" value="9" />
- <action description="Añadir o quitar capacidades a los roles"
- longdescription="Añadir o quitar capacidades a los roles en la sección Capacidades asignadas de Miembros y Roles &gt; subpestaña Roles. *AVISO* Todos los miembros con esta capacidad podrán asignarse a sí mismos -y a otros miembros- roles con mayores poderes de los que actualmente tienen. Potencialmente, podrían elevarse hasta poderes cercanos a los del propietario. Asegúrese de lo que está haciendo antes de otorgar esta capacidad."
- name="role change actions" value="10" />
+ <action_set description="Estas habilidades incluyen el poder añadir, quitar y cambiar roles, asignarlos a miembros, y darles capacidades." name="Roles">
+ <action description="Crear nuevos roles" longdescription="Crear roles nuevos en la sección Roles &gt; pestaña Roles." name="role create" value="4"/>
+ <action description="Borrar roles" longdescription="Borrar roles en la sección Roles &gt; pestaña Roles." name="role delete" value="5"/>
+ <action description="Cambiar el nombre, la etiqueta y la descripción de los roles, así como qué miembros se muestran públicamente en ese rol" longdescription="Cambiar el nombre, la etiqueta y la descripción de los roles, así como qué miembros se muestran públicamente en ese rol. Se hace seleccionando el rol, dentro de la sección Roles &gt; pestaña Roles." name="role properties" value="6"/>
+ <action description="Designar miembros para el rol del asignador" longdescription="Añadir miembros a los roles en la lista de Roles asignados (sección Roles &gt; pestaña Miembros). Un miembro con esta capacidad sólo puede añadir miembros a los roles que tenga él mismo." name="role assign member limited" value="7"/>
+ <action description="Designar miembros para cualquier rol" longdescription="Designar miembros para cualquier rol en la lista de Roles asignados (sección Roles &gt; pestaña Miembros). *AVISO* Todos los miembros que tengan un rol con esta capacidad podrán asignarse a sí mismos -y a otros miembros que no sean los propietarios- roles con mayores poderes de los que actualmente tienen. Potencialmente, podrían elevarse hasta poderes cercanos a los del propietario. Asegúrate de lo que estás haciendo antes de otorgar esta capacidad." name="role assign member" value="8"/>
+ <action description="Quitar capacidades a los miembros" longdescription="Quitar miembros de los roles en la lista de roles asignados (sección Roles &gt; pestaña Miembros). No se puede quitar a los Propietarios." name="role remove member" value="9"/>
+ <action description="Añadir o quitar capacidades a los roles" longdescription="Asignar y quitar capacidades a cada rol en la lista de capacidades permitidas (sección Roles &gt; pestaña Roles). *AVISO* Todos los miembros que tengan un rol con esta capacidad podrán asignarse a sí mismos -y a otros miembros que no sean los propietarios- todas las capacidades. Potencialmente, podrían elevarse hasta poderes cercanos a los del propietario. Asegúrate de lo que estás haciendo antes de otorgar esta capacidad." name="role change actions" value="10"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poderes para modificar la identidad del grupo, como su visibilidad pública, su carta o su emblema."
- name="Group Identity">
- <action
- description="Cambiar la carta, emblema, &apos;Mostrar en la búsqueda&apos;, y qué miembros serán visibles en la información del grupo"
- longdescription="Cambiar la carta, emblema, &apos;Mostrar en la búsqueda&apos;, y qué miembros serán visibles en la información del grupo de la pestaña General."
- name="group change identity" value="11" />
+ <action_set description="Estas capacidades incluyen poderes para modificar la identidad del grupo, como su visibilidad pública, su carta o su emblema." name="Group Identity">
+ <action description="Cambiar la carta, emblema, &apos;Mostrar en la búsqueda&apos;, y qué miembros serán visibles en la información del grupo" longdescription="Cambia la carta, emblema y &apos;Mostrar en la búsqueda&apos;. Se hace en la sección General." name="group change identity" value="11"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poderes para transferir, modificar y vender terrenos del grupo. Vea el menú Mundo &gt; Acerca del terreno, o pulse con el botón derecho en el terreno y seleccione &apos;Acerca del terreno...&apos;, o pulse en la información de la parcela en la barra superior del menú."
- name="Parcel Management">
- <action description="Transferir y comprar terreno para el grupo"
- longdescription="Transferir y comprar terreno para el grupo. Se hace en Acerca del terreno &gt; pestaña General."
- name="land deed" value="12" />
- <action description="Abandonar al terreno a favor de Governor Linden"
- longdescription="Abandonar al terreno a favor de Governor Linden. *AVISO* Todos los miembros con esta capacidad pueden abandonar terreno perteneciente al grupo en Acerca del terreno &gt; pestaña General, devolviendo la posesión a Linden ¡gratuitamente! Asegúrese de lo que está haciendo antes de otorgar esta capacidad."
- name="land release" value="13" />
- <action description="Vender terreno"
- longdescription="Vender terreno. *AVISO* Todos los miembros con esta capacidad pueden vender terreno perteneciente al grupo -¡en la forma en que quieran!- en Acerca del terreno &gt; pestaña General. Asegúrese de lo que está haciendo antes de otorgar esta capacidad."
- name="land set sale info" value="14" />
- <action description="Dividir y unir parcelas"
- longdescription="Dividir y unir parcelas. Se hace pulsando con el botón derecho en el terreno, &apos;Modificar el terreno&apos;, y dibujando en el terreno con el ratón lo que se quiere seleccionar. Para dividir, elija la parte que quiere separar y pulse &apos;Subdividir...&apos;. Para unir, seleccione dos o más parcelas contiguas y pulse &apos;Unir...&apos;. "
- name="land divide join" value="15" />
+ <action_set description="Estas capacidades incluyen poder para transferir, modificar y vender terrenos del grupo. Para ver la ventana Acerca del terreno, pulsa con el botón derecho en el terreno y selecciona &apos;Acerca del terreno&apos;, o pulsa en el signo &apos;i&apos; de la barra de navegación." name="Parcel Management">
+ <action description="Transferir y comprar terreno para el grupo" longdescription="Transferir y comprar terreno para el grupo. Se hace en Acerca del terreno &gt; pestaña General." name="land deed" value="12"/>
+ <action description="Abandonar al terreno a favor de Governor Linden" longdescription="Abandonar al terreno a favor de Governor Linden. *AVISO* Todos los miembros con esta capacidad pueden abandonar terreno perteneciente al grupo en Acerca del terreno &gt; pestaña General, devolviendo la posesión a Linden ¡gratuitamente! Asegúrese de lo que está haciendo antes de otorgar esta capacidad." name="land release" value="13"/>
+ <action description="Vender terreno" longdescription="Vender terreno. *AVISO* Todos los miembros con esta capacidad pueden vender terreno perteneciente al grupo -¡en la forma en que quieran!- en Acerca del terreno &gt; pestaña General. Asegúrese de lo que está haciendo antes de otorgar esta capacidad." name="land set sale info" value="14"/>
+ <action description="Dividir y unir parcelas" longdescription="Dividir y unir parcelas. Se hace pulsando con el botón derecho en el terreno, &apos;Modificar el terreno&apos;, y dibujando en el terreno con el ratón lo que se quiere seleccionar. Para dividir, elige la parte que quieres separar y pulsa &apos;Dividir&apos;. Para unir, selecciona dos o más parcelas contiguas y pulsa &apos;Unir&apos;." name="land divide join" value="15"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poder cambiar el nombre de la parcela y su configuración, así como si se muestra en Buscar y las opciones del punto de llegada y el de teleporte."
- name="Parcel Identity">
- <action
- description="Activar/desactivar &apos;Mostrar en Buscar&apos; y el definir la categoría"
- longdescription="Activar/desactivar el &apos;Mostrar en Buscar&apos; y en que categoría se mostrará en Acerca del terreno &gt; pestaña Opciones."
- name="land find places" value="17" />
- <action
- description="Cambiar el nombre de la parcela, la descripción, y la configuración de &apos;Mostrar en Buscar&apos;"
- longdescription="Cambiar el nombre y descripción de la parcela, y la configuración de &apos;Mostrar en Buscar&apos;. Se hace en Acerca del terreno &gt; pestaña Opciones."
- name="land change identity" value="18" />
- <action description="Definir los puntos de llegada y teleporte"
- longdescription="En una parcela perteneciente al grupo, los miembros con un rol que tenga esta capacidad pueden precisar el punto de llegada o el de teleporte. Se hace en Acerca del terreno &gt; pestaña Opciones."
- name="land set landing point" value="19" />
+ <action_set description="Estas capacidades incluyen poder cambiar el nombre de la parcela y su configuración, así como si se muestra en Buscar y las opciones del punto de llegada y el de teleporte." name="Parcel Identity">
+ <action description="Cambiar &apos;Mostrar el sitio en Buscar&apos; y configurar la categoría" longdescription="Cambia &apos;Mostrar el sitio en Buscar&apos; y el configurar la categoría de una parcela en Acerca del terreno &gt; pestaña Opciones." name="land find places" value="17"/>
+ <action description="Cambiar el nombre de la parcela, su descripción, y la configuración de &apos;Mostrar el sitio en Buscar&apos;" longdescription="Cambia el nombre de la parcela, su descripción, y la configuración de &apos;Mostrar el sitio en Buscar&apos;. Se hace en Acerca del terreno &gt; pestaña Opciones." name="land change identity" value="18"/>
+ <action description="Definir los puntos de llegada y teleporte" longdescription="En una parcela perteneciente al grupo, los miembros con un rol que tenga esta capacidad pueden precisar el punto de llegada o el de teleporte. Se hace en Acerca del terreno &gt; pestaña Opciones." name="land set landing point" value="19"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poderes que afectan a las opciones de la parcela, como &apos;Crear objetos&apos;, &apos;Editar el terreno&apos; y las configuraciones de la música y los media."
- name="Parcel Settings">
- <action description="Cambiar música y configuraciones de los media"
- longdescription="Cambiar la música en streaming y las configuraciones de vídeo en Acerca del terreno &gt; pestaña Media."
- name="land change media" value="20" />
- <action description="Activar/desactivar &apos;Editar el terreno&apos;"
- longdescription="Activar/desactivar &apos;Editar el terreno&apos;. *AVISO* Acerca del terreno &gt; pestaña Opciones &gt; Editar el terreno, permite a cualquiera alterar la forma de su terreno y sustituir y mover plantas Linden. Asegúrese de lo que está haciendo antes de otorgar esta capacidad. La edición del terreno se activada/desactiva en Acerca del terreno &gt; pestaña Opciones."
- name="land edit" value="21" />
- <action
- description="Activar/desactivar varios ítems de Acerca del terreno &gt; Opciones"
- longdescription="Activar/desactivar en un terreno del grupo los ítems de Acerca del terreno &gt; pestaña Opciones: &apos;Seguro (sin daño)&apos;, &apos;Volar&apos;, y permitir a otros residentes: &apos;Crear objetos&apos;, &apos;Editar el terreno&apos;, &apos;Crear hitos&apos;, y &apos;Ejecutar scripts&apos;."
- name="land options" value="22" />
+ <action_set description="Estas capacidades incluyen poderes que afectan a las opciones de la parcela, como &apos;Crear objetos&apos;, &apos;Editar el terreno&apos; y las configuraciones de la música y los media." name="Parcel Settings">
+ <action description="Cambiar música y configuraciones de los media" longdescription="Cambiar la música en streaming y las configuraciones de vídeo en Acerca del terreno &gt; pestaña Media." name="land change media" value="20"/>
+ <action description="Activar/desactivar &apos;Editar el terreno&apos;" longdescription="Activar/desactivar &apos;Editar el terreno&apos;. *AVISO* Acerca del terreno &gt; pestaña Opciones &gt; Editar el terreno, permite a cualquiera alterar la forma de su terreno y sustituir y mover plantas Linden. Asegúrese de lo que está haciendo antes de otorgar esta capacidad. La edición del terreno se activada/desactiva en Acerca del terreno &gt; pestaña Opciones." name="land edit" value="21"/>
+ <action description="Activar/desactivar varios ítems de Acerca del terreno &gt; Opciones" longdescription="Cambia &apos;Seguro (sin daño)&apos;, &apos;Volar&apos;, y el permitir a otros residentes en terrenos propiedad del grupo &apos;Modificar el terreno&apos;, &apos;Construir&apos;, &apos;Crear hitos&apos; y &apos;Ejecutat scripts&apos;, como aparece en Acerca del terreno &gt; pestaña Opciones." name="land options" value="22"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poderes que permiten a los miembros rebasar las restricciones de parcelas pertenecientes al grupo."
- name="Parcel Powers">
- <action description="Permitir siempre &apos;Editar el terreno&apos;"
- longdescription="Quien tenga un rol con esta capacidad puede editar el terreno de una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones."
- name="land allow edit land" value="23" />
- <action description="Permitir siempre &apos;Volar&apos;"
- longdescription="Quien tenga un rol con esta capacidad puede volar sobre una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones."
- name="land allow fly" value="24" />
- <action description="Permitir siempre &apos;Crear objetos&apos;"
- longdescription="Quien tenga un rol con esta capacidad puede crear objetos en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones."
- name="land allow create" value="25" />
- <action description="Permitir siempre &apos;Crear hitos&apos;"
- longdescription="Quien tenga un rol con esta capacidad puede crear un hito en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones."
- name="land allow landmark" value="26" />
- <action description="Permitir &apos;Fijar mi Base aquí&apos; en el terreno del grupo"
- longdescription="Quien tenga un rol con esta capacidad puede usar el menú Mundo &gt; Fijar mi Base aquí en una parcela transferida al grupo."
- name="land allow set home" value="28" />
+ <action_set description="Estas capacidades incluyen poderes que permiten a los miembros rebasar las restricciones de parcelas pertenecientes al grupo." name="Parcel Powers">
+ <action description="Permitir siempre &apos;Editar el terreno&apos;" longdescription="Quien tenga un rol con esta capacidad puede editar el terreno de una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones." name="land allow edit land" value="23"/>
+ <action description="Permitir siempre &apos;Volar&apos;" longdescription="Quien tenga un rol con esta capacidad puede volar sobre una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones." name="land allow fly" value="24"/>
+ <action description="Permitir siempre &apos;Crear objetos&apos;" longdescription="Quien tenga un rol con esta capacidad puede crear objetos en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones." name="land allow create" value="25"/>
+ <action description="Permitir siempre &apos;Crear hitos&apos;" longdescription="Quien tenga un rol con esta capacidad puede crear un hito en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones." name="land allow landmark" value="26"/>
+ <action description="Permitir &apos;Fijar mi Base aquí&apos; en el terreno del grupo" longdescription="Los miembros que tengan un rol con esta capacidad pueden usar el menú Mundo &gt; Hitos &gt; Fijar aquí mi Base en una parcela transferida al grupo." name="land allow set home" value="28"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poderes para permitir o restringir el acceso a parcelas pertenecientes al grupo, incluyendo el congelar y expulsar a residentes."
- name="Parcel Access">
- <action description="Administrar las listas de acceso a la parcela"
- longdescription="Administre las listas de acceso a la parcela en Acerca del terreno &gt; pestaña Acceso."
- name="land manage allowed" value="29" />
- <action description="Administrar la lista de residentes con el acceso prohibido"
- longdescription="Administrar la lista de residentes con el acceso prohibido a la parcela en Acerca del terreno &gt; pestaña Acceso."
- name="land manage banned" value="30" />
- <action description="Cambiar en las configuraciones de parcela el &apos;Vender pases a...&apos;"
- longdescription="Cambiar la configuración de &apos;Vender pases a...&apos; en Acerca del terreno &gt; pestaña Acceso."
- name="land manage passes" value="31" />
- <action description="Expulsar y congelar residentes en las parcelas"
- longdescription="Quien tenga un rol con esta capacidad puede actuar frente a un residente indeseado en una parcela del grupo pulsando con el botón derecho sobre él, Más &gt; y seleccionando &apos;Expulsar...&apos; o &apos;Congelar...&apos;."
- name="land admin" value="32" />
+ <action_set description="Estas capacidades incluyen poderes para permitir o restringir el acceso a parcelas pertenecientes al grupo, incluyendo el congelar y expulsar a residentes." name="Parcel Access">
+ <action description="Administrar las listas de acceso a la parcela" longdescription="Administre las listas de acceso a la parcela en Acerca del terreno &gt; pestaña Acceso." name="land manage allowed" value="29"/>
+ <action description="Administrar la lista de residentes con el acceso prohibido" longdescription="Manejar la lista de expulsados en Acerca del terreno &gt; pestaña Acceso." name="land manage banned" value="30"/>
+ <action description="Cambiar en la parcela la configuración de &apos;Vender pases a&apos;" longdescription="Cambia en la parcela la configuración de &apos;Vender pases a&apos; (Acerca del terreno &gt; pestaña Acceso)." name="land manage passes" value="31"/>
+ <action description="Expulsar y congelar residentes en las parcelas" longdescription="En una parcela propiedad del grupo, los miembros cuyo rol tengan esta capacidad pueden manejar a residentes no deseados pulsándoles con el botón derecho del ratón para &apos;Expulsar&apos; o &apos;Congelar&apos;." name="land admin" value="32"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poderes que permitan a los miembros devolver objetos y poner y mover plantas Linden. Es útil para que miembros organicen el paisaje, pero debe ser usado con cuidado, ya que no se pueden deshacer esos cambios en los objetos."
- name="Parcel Content">
- <action description="Devolver objetos que pertenecen al grupo"
- longdescription="Devolver objetos pertenecientes al grupo en parcelas de su propiedad en Acerca del terreno &gt; pestaña Objetos."
- name="land return group owned" value="48" />
- <action description="Devolver objetos definidos para el grupo"
- longdescription="Devuelva objetos en parcelas pertenecientes al grupo en Acerca del terreno &gt; pestaña Objetos."
- name="land return group set" value="33" />
- <action description="Devolver objetos que no pertenecen al grupo"
- longdescription="Devuolver objetos que estén en una parcela del grupo y pertenezcan a alguien que no sea del grupo en Acerca del terreno &gt; pestaña Objetos."
- name="land return non group" value="34" />
- <action description="Modificar el paisaje usando plantas Linden"
- longdescription="La capacidad de modificar el paisaje permite poner y mover árboles Linden, plantas y arbustos. Estos ítems están en la &apos;s Biblioteca de su Inventario &gt; carpeta Objetos, o pueden crearse con el botón Construir."
- name="land gardening" value="35" />
+ <action_set description="Estas capacidades incluyen poderes que permitan a los miembros devolver objetos y poner y mover plantas Linden. Es útil para que miembros organicen el paisaje, pero debe ser usado con cuidado, ya que no se pueden deshacer esos cambios en los objetos." name="Parcel Content">
+ <action description="Devolver objetos que pertenecen al grupo" longdescription="Devolver objetos pertenecientes al grupo en parcelas de su propiedad en Acerca del terreno &gt; pestaña Objetos." name="land return group owned" value="48"/>
+ <action description="Devolver objetos definidos para el grupo" longdescription="Devuelva objetos en parcelas pertenecientes al grupo en Acerca del terreno &gt; pestaña Objetos." name="land return group set" value="33"/>
+ <action description="Devolver objetos que no pertenecen al grupo" longdescription="Devuolver objetos que estén en una parcela del grupo y pertenezcan a alguien que no sea del grupo en Acerca del terreno &gt; pestaña Objetos." name="land return non group" value="34"/>
+ <action description="Modificar el paisaje usando plantas Linden" longdescription="Capacidad de poner y mover árboles, plantas y arbustos Linden. Estos ítems están en la Biblioteca de tu inventario &gt; carpeta Objetos, o pueden construirse con el menú Construir." name="land gardening" value="35"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poderes para tranferir, modificar y vender objetos pertenecientes al grupo. Estos cambios se hacen en la pestaña General de la herramienta de edición. Para verlo, pulse en un objeto con el botón derecho y elija Editar. "
- name="Object Management">
- <action description="Transferir objetos al grupo"
- longdescription="Transferir objetos al grupo en Editar &gt; pestaña General."
- name="object deed" value="36" />
- <action description="Manipular (mover, copiar, y modificar) objetos del grupo"
- longdescription="Manipular (mover, copiar, y modificar) objetos pertenecientes al grupo en Editar &gt; pestaña General."
- name="object manipulate" value="38" />
- <action description="Vender objetos pertenecientes al grupo"
- longdescription="Poner a la venta objetos pertenecientes al grupo para venta en Editar &gt; pestaña General."
- name="object set sale" value="39" />
+ <action_set description="Estas capacidades incluyen poder transferir, modificar y vender objetos propiedad del grupo. Estos cambios se hacen en las Herramientas de construcción &gt; pestaña General. Pulsa un objeto con el botón derecho del ratón y edítalo para ver sus configuraciones." name="Object Management">
+ <action description="Transferir objetos al grupo" longdescription="Transferir objetos al grupo en las Herramientas de construcción &gt; pestaña General." name="object deed" value="36"/>
+ <action description="Manipular (mover, copiar, y modificar) objetos del grupo" longdescription="Mover, copiar y modificar objetos pertenecientes al grupo en las Herramientas de construcción &gt; pestaña General." name="object manipulate" value="38"/>
+ <action description="Vender objetos pertenecientes al grupo" longdescription="Poner a la venta objetos pertenecientes al grupo en las Herramientas de construcción &gt; pestaña General." name="object set sale" value="39"/>
</action_set>
- <action_set
- description="Estas habilidades incluyen poderes para que los miembros paguen deudas del grupo o reciban sus dividendos, y para limitar el acceso al historial de la cuenta del grupo."
- name="Accounting">
- <action description="Pagar deudas y recibir dividendos del grupo"
- longdescription="Quien tenga un rol con esta capacidad, automáticamente pagará deudas del grupo y recibirá sus dividendos. Esto significa que recibirá una parte de las ventas de terreno de grupo, y que contribuirá a cosas como, por ejemplo, las cuotas por posesión de terreno. "
- name="accounting accountable" value="40" />
+ <action_set description="Estas habilidades incluyen poderes para que los miembros paguen deudas del grupo o reciban sus dividendos, y para limitar el acceso al historial de la cuenta del grupo." name="Accounting">
+ <action description="Pagar deudas y recibir dividendos del grupo" longdescription="Quien tenga un rol con esta capacidad, automáticamente pagará deudas del grupo y recibirá sus dividendos. Esto significa que recibirá una parte de las ventas de terreno de grupo, y que contribuirá a cosas como, por ejemplo, las cuotas por posesión de terreno. " name="accounting accountable" value="40"/>
</action_set>
- <action_set
- description="Estas habilidades incluyen poderes para enviar, recibir y ver avisos de grupo."
- name="Notices">
- <action description="Enviar aviso"
- longdescription="Quien tenga un rol con esta capacidad puede enviar avisos en Información del grupo &gt; pestaña Avisos."
- name="notices send" value="42" />
- <action description="Recibir avisos nuevos y ver los anteriores"
- longdescription="Quien tenga un rol con esta capacidad puede recibir los avisos nuevos, y ver los anteriores en Información del grupo &gt; pestaña Avisos."
- name="notices receive" value="43" />
+ <action_set description="Estas habilidades incluyen poderes para enviar, recibir y ver avisos de grupo." name="Notices">
+ <action description="Enviar aviso" longdescription="Los miembros con un rol que tenga esta capacidad pueden enviar avisos a través de la sección Grupo &gt; Avisos." name="notices send" value="42"/>
+ <action description="Recibir avisos nuevos y ver los anteriores" longdescription="Los miembros con un rol que tenga esta capacidad pueden recibir Avisos y ver los ya enviados en la sección Grupo &gt; Avisos." name="notices receive" value="43"/>
</action_set>
- <action_set
- description="Estas habilidades incluyen poderes para permitir a los miembros crear propuestas, votarlas, y ver el historial de votaciones."
- name="Proposals">
- <action description="Hacer una propuesta"
- longdescription="Quien tenga un rol con esta capacidad puede crear propuestas para que sean votadas en Información del grupo &gt; pestaña Propuestas."
- name="proposal start" value="44" />
- <action description="Votar en propuestas"
- longdescription="Quien tenga un rol con esta capacidad puede votar las propuestas en Información del grupo &gt; pestaña Propuestas."
- name="proposal vote" value="45" />
+ <action_set description="Estas habilidades incluyen poderes para permitir a los miembros crear propuestas, votarlas, y ver el historial de votaciones." name="Proposals">
+ <action description="Hacer una propuesta" longdescription="Quien tenga un rol con esta capacidad puede crear propuestas para que sean votadas en Información del grupo &gt; pestaña Propuestas." name="proposal start" value="44"/>
+ <action description="Votar en propuestas" longdescription="Quien tenga un rol con esta capacidad puede votar las propuestas en Información del grupo &gt; pestaña Propuestas." name="proposal vote" value="45"/>
</action_set>
- <action_set
- description="Estas capacidades incluyen poderes para permitir o no el aceso a las sesiones de chat del grupo y al chat de voz del mismo."
- name="Chat">
- <action description="Abrir chat de grupo"
- longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat del grupo, tanto de texto como de voz."
- name="join group chat" value="16" />
- <action description="Abrir chat de voz del grupo"
- longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat de voz del grupo. NOTA: para acceder al chat de voz debe tenerse la capacidad &apos;Abrir chat de grupo&apos;."
- name="join voice chat" value="27" />
- <action description="Moderar el chat de grupo"
- longdescription="Quien tenga esta capacidad puede controlar el acceso y la participación en los chats de texto y de voz del grupo."
- name="moderate group chat" value="37" />
+ <action_set description="Estas capacidades incluyen poderes para permitir o no el aceso a las sesiones de chat del grupo y al chat de voz del mismo." name="Chat">
+ <action description="Abrir chat de grupo" longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat del grupo, tanto de texto como de voz." name="join group chat" value="16"/>
+ <action description="Abrir chat de voz del grupo" longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat de voz del grupo. NOTA: para acceder al chat de voz debe tenerse la capacidad &apos;Abrir chat de grupo&apos;." name="join voice chat" value="27"/>
+ <action description="Moderar el chat de grupo" longdescription="Quien tenga esta capacidad puede controlar el acceso y la participación en los chats de texto y de voz del grupo." name="moderate group chat" value="37"/>
</action_set>
</role_actions>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_appearance.xml b/indra/newview/skins/default/xui/es/sidepanel_appearance.xml
new file mode 100644
index 0000000000..da9f6bbcf1
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/sidepanel_appearance.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Vestuarios" name="appearance panel">
+ <string name="No Outfit" value="No hay vestuario"/>
+ <filter_editor label="Filtrar los vestuarios" name="Filter"/>
+ <panel name="bottom_panel">
+ <button name="options_gear_btn" tool_tip="Ver más opciones"/>
+ <button name="newlook_btn" tool_tip="Añadir un vestuario nuevo"/>
+ <dnd_button name="trash_btn" tool_tip="Quitar el ítem seleccionado"/>
+ <button label="Ponerme" name="wear_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
new file mode 100644
index 0000000000..776b253adc
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Cosas" name="objects panel">
+ <panel label="" name="sidepanel__inventory_panel">
+ <panel name="button_panel">
+ <button label="Perfil" name="info_btn"/>
+ <button label="Ponerme" name="wear_btn"/>
+ <button label="Play" name="play_btn"/>
+ <button label="Teleporte" name="teleport_btn"/>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml
new file mode 100644
index 0000000000..e5a132ce1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="item properties" title="Propiedades del ítem del inventario">
+ <panel.string name="unknown">
+ (desconocidas)
+ </panel.string>
+ <panel.string name="public">
+ (público)
+ </panel.string>
+ <panel.string name="you_can">
+ Puedes:
+ </panel.string>
+ <panel.string name="owner_can">
+ El propietario puede:
+ </panel.string>
+ <panel.string name="acquiredDate">
+ [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ </panel.string>
+ <text name="title" value="Propiedades del ítem"/>
+ <panel label="">
+ <text name="LabelItemNameTitle">
+ Nombre:
+ </text>
+ <text name="LabelItemDescTitle">
+ Descripción:
+ </text>
+ <text name="LabelCreatorTitle">
+ Creador:
+ </text>
+ <button label="Perfil..." name="BtnCreator"/>
+ <text name="LabelOwnerTitle">
+ Propietario:
+ </text>
+ <button label="Perfil..." name="BtnOwner"/>
+ <text name="LabelAcquiredTitle">
+ Obtenido:
+ </text>
+ <text name="LabelAcquiredDate">
+ Miér., 24 Mayo 2006 12:50:46
+ </text>
+ <text name="OwnerLabel">
+ Tú:
+ </text>
+ <check_box label="Editar" name="CheckOwnerModify"/>
+ <check_box label="Copiar" name="CheckOwnerCopy"/>
+ <check_box label="Revender" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Cualquiera:
+ </text>
+ <check_box label="Copiar" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Grupo:
+ </text>
+ <check_box label="Compartir" name="CheckShareWithGroup"/>
+ <text name="NextOwnerLabel">
+ El próximo propietario:
+ </text>
+ <check_box label="Editar" name="CheckNextOwnerModify"/>
+ <check_box label="Copiar" name="CheckNextOwnerCopy"/>
+ <check_box label="Revender" name="CheckNextOwnerTransfer"/>
+ <check_box label="En venta" name="CheckPurchase"/>
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Copiar" name="Copy"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Precio:" name="Edit Cost"/>
+ <text name="CurrencySymbol">
+ L$
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
new file mode 100644
index 0000000000..a65a0d5e45
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="object properties" title="Propiedades del objeto">
+ <panel.string name="text deed continued">
+ Transfeir
+ </panel.string>
+ <panel.string name="text deed">
+ Transfeir
+ </panel.string>
+ <panel.string name="text modify info 1">
+ Puedes modificar este objeto
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Puedes modificar estos objetos
+ </panel.string>
+ <panel.string name="text modify info 3">
+ No puedes modificar este objeto
+ </panel.string>
+ <panel.string name="text modify info 4">
+ No puedes modificar estos objetos
+ </panel.string>
+ <panel.string name="text modify warning">
+ Este objeto tiene partes enlazadas
+ </panel.string>
+ <panel.string name="Cost Default">
+ Precio: L$
+ </panel.string>
+ <panel.string name="Cost Total">
+ Precio total: L$
+ </panel.string>
+ <panel.string name="Cost Per Unit">
+ Price Per: L$
+ </panel.string>
+ <panel.string name="Cost Mixed">
+ Mixed Price
+ </panel.string>
+ <panel.string name="Sale Mixed">
+ Mixed Sale
+ </panel.string>
+ <panel label="">
+ <text name="Name:">
+ Nombre:
+ </text>
+ <text name="Description:">
+ Descripción:
+ </text>
+ <text name="Creator:">
+ Creador:
+ </text>
+ <text name="Owner:">
+ Propietario:
+ </text>
+ <text name="Group:">
+ Grupo:
+ </text>
+ <button name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/>
+ <name_box initial_value="Cargando..." name="Group Name Proxy"/>
+ <button label="Transfeir" label_selected="Transfeir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/>
+ <check_box label="Compartir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/>
+ <text name="label click action">
+ Al tocarlo:
+ </text>
+ <combo_box name="clickaction">
+ <combo_box.item label="Tocarlo (por defecto)" name="Touch/grab(default)"/>
+ <combo_box.item label="Sentarme en el objeto" name="Sitonobject"/>
+ <combo_box.item label="Comprar el objeto" name="Buyobject"/>
+ <combo_box.item label="Pagar al objeto" name="Payobject"/>
+ <combo_box.item label="Abrir" name="Open"/>
+ </combo_box>
+ <check_box label="En venta:" name="checkbox for sale"/>
+ <combo_box name="sale type">
+ <combo_box.item label="Copiarlo" name="Copy"/>
+ <combo_box.item label="Contenidos" name="Contents"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Precio: L$" name="Edit Cost"/>
+ <check_box label="Mostrar en la búsqueda" name="search_check" tool_tip="Permitir que la gente vea este objetos en los resultados de la búsqueda"/>
+ <panel name="perms_build">
+ <text name="perm_modify">
+ Puedes modificar este objeto
+ </text>
+ <text name="Anyone can:">
+ Cualquiera:
+ </text>
+ <check_box label="Moverse" name="checkbox allow everyone move"/>
+ <check_box label="Copiarlo" name="checkbox allow everyone copy"/>
+ <text name="Next owner can:">
+ Próximo propietario:
+ </text>
+ <check_box label="Modificarlo" name="checkbox next owner can modify"/>
+ <check_box label="Copiarlo" name="checkbox next owner can copy"/>
+ <check_box label="Transferirlo" name="checkbox next owner can transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/>
+ <text name="B:">
+ B:
+ </text>
+ <text name="O:">
+ O:
+ </text>
+ <text name="G:">
+ G:
+ </text>
+ <text name="E:">
+ E:
+ </text>
+ <text name="N:">
+ N:
+ </text>
+ <text name="F:">
+ F:
+ </text>
+ </panel>
+ </panel>
+ <panel name="button_panel">
+ <button label="Abrir" name="open_btn"/>
+ <button label="Pagar" name="pay_btn"/>
+ <button label="Comprar" name="buy_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ <button label="Guardar" name="save_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index dc508f7c37..4b96b7f31f 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -4,10 +4,21 @@
For example, the strings used in avatar chat bubbles, and strings
that are returned from one component and may appear in many places-->
<strings>
- <string name="create_account_url">http://join.secondlife.com/index.php?lang=es-ES</string>
+ <string name="SUPPORT_SITE">
+ Portal de Soporte de Second Life
+ </string>
+ <string name="StartupDetectingHardware">
+ Identificando el hardware...
+ </string>
+ <string name="StartupLoading">
+ Cargando
+ </string>
<string name="LoginInProgress">
Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere.
</string>
+ <string name="LoginInProgressNoFrozen">
+ Iniciando la sesión...
+ </string>
<string name="LoginAuthenticating">
Autenticando
</string>
@@ -26,6 +37,9 @@
<string name="LoginInitializingMultimedia">
Iniciando multimedia...
</string>
+ <string name="LoginInitializingFonts">
+ Cargando las fuentes...
+ </string>
<string name="LoginVerifyingCache">
Comprobando los archivos de la caché (puede tardar entre 60 y 90 segundos)...
</string>
@@ -56,9 +70,15 @@
<string name="LoginDownloadingClothing">
Descargando la ropa...
</string>
+ <string name="LoginFailedNoNetwork">
+ Error de red: no se ha podido conectar; por favor, revisa tu conexión a internet.
+ </string>
<string name="Quit">
Salir
</string>
+ <string name="create_account_url">
+ http://join.secondlife.com/index.php?lang=es-ES
+ </string>
<string name="AgentLostConnection">
Esta región puede estar teniendo problemas. Por favor, compruebe su conexión a internet.
</string>
@@ -77,39 +97,9 @@
<string name="TooltipIsGroup">
(Grupo)
</string>
- <string name="TooltipFlagScript">
- Script
- </string>
- <string name="TooltipFlagPhysics">
- Propiedades físicas
- </string>
- <string name="TooltipFlagTouch">
- Tocar
- </string>
- <string name="TooltipFlagL$">
- L$
- </string>
- <string name="TooltipFlagDropInventory">
- Desplegar el inventario
- </string>
- <string name="TooltipFlagPhantom">
- Inmaterial
- </string>
- <string name="TooltipFlagTemporary">
- Temporal
- </string>
- <string name="TooltipFlagRightClickMenu">
- (pulse el botón derecho del ratón para ver el menú)
- </string>
- <string name="TooltipFreeToCopy">
- Copia gratis
- </string>
<string name="TooltipForSaleL$">
En venta: [AMOUNT] L$
</string>
- <string name="TooltipForSaleMsg">
- En venta: [MESSAGE]
- </string>
<string name="TooltipFlagGroupBuild">
Construir el grupo
</string>
@@ -137,6 +127,76 @@
<string name="TooltipMustSingleDrop">
Aquí se puede arrastrar sólo un ítem
</string>
+ <string name="TooltipHttpUrl">
+ Pulsa para ver esta página web
+ </string>
+ <string name="TooltipSLURL">
+ Pulsa para ver la información de este lugar
+ </string>
+ <string name="TooltipAgentUrl">
+ Pulsa para ver el perfil de este residente
+ </string>
+ <string name="TooltipGroupUrl">
+ Pulsa para ver la descripción de este grupo
+ </string>
+ <string name="TooltipEventUrl">
+ Pulsa para ver la descripción de este evento
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Pulsa para ver este clasificado
+ </string>
+ <string name="TooltipParcelUrl">
+ Pulsa para ver la descripción de esta parcela
+ </string>
+ <string name="TooltipTeleportUrl">
+ Pulsa para teleportarte a esta posición
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Pulsa para ver la descripción de este objeto
+ </string>
+ <string name="TooltipMapUrl">
+ Pulsa para ver en el mapa esta localización
+ </string>
+ <string name="TooltipSLAPP">
+ Pulsa para ejecutar el comando secondlife://
+ </string>
+ <string name="CurrentURL" value="URL actual: [CurrentURL]"/>
+ <string name="SLurlLabelTeleport">
+ Teleportarse a
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Mostrarla en el mapa
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Cerrar (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Cerrar (Ctrl+W)
+ </string>
+ <string name="BUTTON_RESTORE">
+ Maximizar
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimizar
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Separar la ventana
+ </string>
+ <string name="BUTTON_DOCK">
+ Fijar
+ </string>
+ <string name="BUTTON_UNDOCK">
+ Soltar
+ </string>
+ <string name="BUTTON_HELP">
+ Ver la Ayuda
+ </string>
+ <string name="Searching">
+ Buscando...
+ </string>
+ <string name="NoneFound">
+ No se ha encontrado.
+ </string>
<string name="RetrievingData">
Reintentando...
</string>
@@ -191,8 +251,77 @@
<string name="AssetErrorUnknownStatus">
Estado desconocido
</string>
- <string name="AvatarEditingApparance">
- (Modificando la apariencia)
+ <string name="texture">
+ la textura
+ </string>
+ <string name="sound">
+ el sonido
+ </string>
+ <string name="calling card">
+ la tarjeta de visita
+ </string>
+ <string name="landmark">
+ el hito
+ </string>
+ <string name="legacy script">
+ el script antiguo
+ </string>
+ <string name="clothing">
+ esa ropa
+ </string>
+ <string name="object">
+ el objeto
+ </string>
+ <string name="note card">
+ la nota
+ </string>
+ <string name="folder">
+ la carpeta
+ </string>
+ <string name="root">
+ la ruta
+ </string>
+ <string name="lsl2 script">
+ ese script de LSL2
+ </string>
+ <string name="lsl bytecode">
+ el código intermedio de LSL
+ </string>
+ <string name="tga texture">
+ esa textura tga
+ </string>
+ <string name="body part">
+ esa parte del cuerpo
+ </string>
+ <string name="snapshot">
+ la foto
+ </string>
+ <string name="lost and found">
+ Objetos Perdidos
+ </string>
+ <string name="targa image">
+ esa imagen targa
+ </string>
+ <string name="trash">
+ la Papelera
+ </string>
+ <string name="jpeg image">
+ esa imagen jpeg
+ </string>
+ <string name="animation">
+ la animación
+ </string>
+ <string name="gesture">
+ el gesto
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ ese favorito
+ </string>
+ <string name="symbolic link">
+ el enlace
</string>
<string name="AvatarAway">
Ausente
@@ -414,7 +543,19 @@
Cargando...
</string>
<string name="worldmap_offline">
- Desconectado/a
+ Sin conexión
+ </string>
+ <string name="worldmap_results_none_found">
+ No se ha encontrado.
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ Fin prematuro del archivo
+ </string>
+ <string name="ST_NO_JOINT">
+ No se puede encontrar ROOT o JOINT.
</string>
<string name="whisper">
susurra:
@@ -422,6 +563,57 @@
<string name="shout">
grita:
</string>
+ <string name="ringing">
+ Conectando al chat de voz...
+ </string>
+ <string name="connected">
+ Conectado
+ </string>
+ <string name="unavailable">
+ La voz no está disponible en su localización actual
+ </string>
+ <string name="hang_up">
+ Desconectado del chat de voz
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ &apos;[OBJECTNAME]&apos;, un objeto propiedad de &apos;[OWNERNAME]&apos;, localizado en [REGIONNAME] con la posición [REGIONPOS], ha recibido permiso para: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ A &apos;[OBJECTNAME]&apos;, un objeto propiedad de &apos;[OWNERNAME]&apos;, localizado en [REGIONNAME] con la posición [REGIONPOS], se le ha denegado el permiso para: [PERMISSIONS].
+ </string>
+ <string name="ScriptTakeMoney">
+ Cogerle a usted dólares Linden (L$)
+ </string>
+ <string name="ActOnControlInputs">
+ Actuar en sus controles de entrada
+ </string>
+ <string name="RemapControlInputs">
+ Reconfigurar sus controles de entrada
+ </string>
+ <string name="AnimateYourAvatar">
+ Ejecutar animaciones en su avatar
+ </string>
+ <string name="AttachToYourAvatar">
+ Anexarse a su avatar
+ </string>
+ <string name="ReleaseOwnership">
+ Anular la propiedad y que pase a ser público
+ </string>
+ <string name="LinkAndDelink">
+ Enlazar y desenlazar de otros objetos
+ </string>
+ <string name="AddAndRemoveJoints">
+ Añadir y quitar uniones con otros objetos
+ </string>
+ <string name="ChangePermissions">
+ Cambiar sus permisos
+ </string>
+ <string name="TrackYourCamera">
+ Seguir su cámara
+ </string>
+ <string name="ControlYourCamera">
+ Controlar su cámara
+ </string>
<string name="SIM_ACCESS_PG">
&apos;PG&apos;
</string>
@@ -440,8 +632,6 @@
<string name="land_type_unknown">
(desconocido)
</string>
- <string name="covenant_never_modified">Última modificación: (nunca)</string>
- <string name="covenant_modified">Última modificación: </string>
<string name="all_files">
Todos los archivos
</string>
@@ -487,28 +677,740 @@
<string name="choose_the_directory">
Elegir directorio
</string>
- <!-- OSMessageBox messages -->
- <string name="MBAlreadyRunning">
- [APP_NAME] ya se está ejecutando.
-Busque en la barra de su escritorio una copia minimizada del programa.
-Si aun así persiste este mensaje, reinicie su ordenador.
+ <string name="AvatarSetNotAway">
+ Salir del estado ausente
</string>
- <string name="MBVideoDrvErr">
- No se puede ejecutar [APP_NAME] porque los drivers de su tarjeta de vídeo no están instalados correctamente, o no están actualizados, o son de un hardware no admitido. Por favor, asegúrese de que tiene los últimos drivers para su tarjeta de vídeo, e incluso en ese caso intente reinstalarlos.
-
-Si sigue recibiendo este mensaje, contacte con el [SUPPORT_SITE].
+ <string name="AvatarSetAway">
+ Pasar al estado ausente
+ </string>
+ <string name="AvatarSetNotBusy">
+ Salir del estado ocupado
+ </string>
+ <string name="AvatarSetBusy">
+ Pasar al estado ocupado
+ </string>
+ <string name="shape">
+ Forma
+ </string>
+ <string name="skin">
+ Piel
+ </string>
+ <string name="hair">
+ Pelo
+ </string>
+ <string name="eyes">
+ Ojos
+ </string>
+ <string name="shirt">
+ Camisa
+ </string>
+ <string name="pants">
+ Pantalón
+ </string>
+ <string name="shoes">
+ Zapatos
+ </string>
+ <string name="socks">
+ Calcetines
+ </string>
+ <string name="jacket">
+ Chaqueta
+ </string>
+ <string name="gloves">
+ Guantes
+ </string>
+ <string name="undershirt">
+ Camiseta
+ </string>
+ <string name="underpants">
+ Ropa interior
+ </string>
+ <string name="skirt">
+ Falda
+ </string>
+ <string name="alpha">
+ Alfa
+ </string>
+ <string name="tattoo">
+ Tatuaje
+ </string>
+ <string name="invalid">
+ inválido/a
+ </string>
+ <string name="next">
+ Siguiente
+ </string>
+ <string name="ok">
+ OK
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Aviso de grupo
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Avisos del grupo
+ </string>
+ <string name="GroupNotifySentBy">
+ Enviado por
+ </string>
+ <string name="GroupNotifyAttached">
+ Adjunto:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Ver los avisos pasados u optar por dejar de recibir aquí estos mensajes.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Abrir el adjunto
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Guardar el adjunto
+ </string>
+ <string name="TeleportOffer">
+ Ofrecimiento de teleporte
+ </string>
+ <string name="StartUpNotification">
+ Llegó [%d] aviso nuevo mientras estabas ausente...
+ </string>
+ <string name="StartUpNotifications">
+ Llegaron [%d] avisos nuevos mientras estabas ausente...
+ </string>
+ <string name="OverflowInfoChannelString">
+ Tienes [%d] aviso/s más
+ </string>
+ <string name="BodyPartsRightArm">
+ Brazo der.
+ </string>
+ <string name="BodyPartsHead">
+ Cabeza
+ </string>
+ <string name="BodyPartsLeftArm">
+ Brazo izq.
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Pierna izq.
+ </string>
+ <string name="BodyPartsTorso">
+ Torso
+ </string>
+ <string name="BodyPartsRightLeg">
+ Pierna der.
+ </string>
+ <string name="GraphicsQualityLow">
+ Bajo
+ </string>
+ <string name="GraphicsQualityMid">
+ Medio
+ </string>
+ <string name="GraphicsQualityHigh">
+ Alto
+ </string>
+ <string name="LeaveMouselook">
+ Pulsa ESC para salir de la vista subjetiva
+ </string>
+ <string name="InventoryNoMatchingItems">
+ No se han encontrado tales ítems en el inventario.
+ </string>
+ <string name="InventoryNoTexture">
+ No tienes una copia de esta
+textura en tu inventario
+ </string>
+ <string name="no_transfer" value="(no transferible)"/>
+ <string name="no_modify" value="(no modificable)"/>
+ <string name="no_copy" value="(no copiable)"/>
+ <string name="worn" value="(puesto)"/>
+ <string name="link" value="(enlace)"/>
+ <string name="broken_link" value="(enlace roto)&quot;"/>
+ <string name="LoadingContents">
+ Cargando el contenido...
+ </string>
+ <string name="NoContents">
+ No hay contenido
+ </string>
+ <string name="WornOnAttachmentPoint" value="(lo llevas en: [ATTACHMENT_POINT])"/>
+ <string name="Chat" value="Chat :"/>
+ <string name="Sound" value="Sonido :"/>
+ <string name="Wait" value="--- Espera :"/>
+ <string name="AnimFlagStop" value="Parar la animación:"/>
+ <string name="AnimFlagStart" value="Empezar la animación:"/>
+ <string name="Wave" value="Onda"/>
+ <string name="HelloAvatar" value="¡Hola, avatar!"/>
+ <string name="ViewAllGestures" value="Ver todos &gt;&gt;"/>
+ <string name="Animations" value="Animaciones,"/>
+ <string name="Calling Cards" value="Tarjetas de visita,"/>
+ <string name="Clothing" value="Ropa,"/>
+ <string name="Gestures" value="Gestos,"/>
+ <string name="Landmarks" value="Hitos,"/>
+ <string name="Notecards" value="Notas,"/>
+ <string name="Objects" value="Objetos,"/>
+ <string name="Scripts" value="Scripts,"/>
+ <string name="Sounds" value="Sonidos,"/>
+ <string name="Textures" value="Texturas,"/>
+ <string name="Snapshots" value="Fotos,"/>
+ <string name="No Filters" value="No"/>
+ <string name="Since Logoff" value="- Desde la desconexión"/>
+ <string name="InvFolder My Inventory">
+ Mi Inventario
+ </string>
+ <string name="InvFolder My Favorites">
+ Mis Favoritos
+ </string>
+ <string name="InvFolder Library">
+ Biblioteca
+ </string>
+ <string name="InvFolder Textures">
+ Texturas
+ </string>
+ <string name="InvFolder Sounds">
+ Sonidos
+ </string>
+ <string name="InvFolder Calling Cards">
+ Tarjetas de visita
+ </string>
+ <string name="InvFolder Landmarks">
+ Hitos
+ </string>
+ <string name="InvFolder Scripts">
+ Scripts
+ </string>
+ <string name="InvFolder Clothing">
+ Ropa
+ </string>
+ <string name="InvFolder Objects">
+ Objetos
+ </string>
+ <string name="InvFolder Notecards">
+ Notas
+ </string>
+ <string name="InvFolder New Folder">
+ Carpeta nueva
+ </string>
+ <string name="InvFolder Inventory">
+ Inventario
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Imágenes sin comprimir
+ </string>
+ <string name="InvFolder Body Parts">
+ Partes del cuerpo
+ </string>
+ <string name="InvFolder Trash">
+ la Papelera
+ </string>
+ <string name="InvFolder Photo Album">
+ Álbum de fotos
+ </string>
+ <string name="InvFolder Lost And Found">
+ Objetos Perdidos
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Sonidos sin comprimir
+ </string>
+ <string name="InvFolder Animations">
+ Animaciones
+ </string>
+ <string name="InvFolder Gestures">
+ Gestos
+ </string>
+ <string name="InvFolder favorite">
+ Favoritos
+ </string>
+ <string name="InvFolder Current Outfit">
+ Vestuario actual
+ </string>
+ <string name="InvFolder My Outfits">
+ Mis vestuarios
+ </string>
+ <string name="InvFolder Friends">
+ Amigos
+ </string>
+ <string name="InvFolder All">
+ Todas
+ </string>
+ <string name="Buy">
+ Comprar
+ </string>
+ <string name="BuyforL$">
+ Comprar por L$
+ </string>
+ <string name="Stone">
+ Piedra
+ </string>
+ <string name="Metal">
+ Metal
+ </string>
+ <string name="Glass">
+ Cristal
+ </string>
+ <string name="Wood">
+ Madera
+ </string>
+ <string name="Flesh">
+ Carne
+ </string>
+ <string name="Plastic">
+ Plástico
+ </string>
+ <string name="Rubber">
+ Goma
+ </string>
+ <string name="Light">
+ Claridad
+ </string>
+ <string name="KBShift">
+ Mayúsculas
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Tórax
+ </string>
+ <string name="Skull">
+ Cráneo
+ </string>
+ <string name="Left Shoulder">
+ Hombro izquierdo
+ </string>
+ <string name="Right Shoulder">
+ Hombro derecho
+ </string>
+ <string name="Left Hand">
+ Mano izq.
+ </string>
+ <string name="Right Hand">
+ Mano der.
+ </string>
+ <string name="Left Foot">
+ Pie izq.
+ </string>
+ <string name="Right Foot">
+ Pie der.
+ </string>
+ <string name="Spine">
+ Columna
+ </string>
+ <string name="Pelvis">
+ Pelvis
+ </string>
+ <string name="Mouth">
+ Boca
+ </string>
+ <string name="Chin">
+ Barbilla
+ </string>
+ <string name="Left Ear">
+ Oreja izq.
+ </string>
+ <string name="Right Ear">
+ Oreja der.
+ </string>
+ <string name="Left Eyeball">
+ Ojo izq.
+ </string>
+ <string name="Right Eyeball">
+ Ojo der.
+ </string>
+ <string name="Nose">
+ Nariz
+ </string>
+ <string name="R Upper Arm">
+ Brazo der.
+ </string>
+ <string name="R Forearm">
+ Antebrazo der.
+ </string>
+ <string name="L Upper Arm">
+ Brazo izq.
+ </string>
+ <string name="L Forearm">
+ Antebrazo izq.
+ </string>
+ <string name="Right Hip">
+ Cadera der.
+ </string>
+ <string name="R Upper Leg">
+ Muslo der.
+ </string>
+ <string name="R Lower Leg">
+ Pantorrilla der.
+ </string>
+ <string name="Left Hip">
+ Cadera izq.
+ </string>
+ <string name="L Upper Leg">
+ Muslo izq.
+ </string>
+ <string name="L Lower Leg">
+ Pantorrilla izq.
+ </string>
+ <string name="Stomach">
+ Abdomen
+ </string>
+ <string name="Left Pec">
+ Pecho izquierdo
+ </string>
+ <string name="Right Pec">
+ Pecho derecho
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS] de edad
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS] de edad
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS] de edad
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS] de edad
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS] de edad
+ </string>
+ <string name="TodayOld">
+ Registrado hoy
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] año
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] años
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] años
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] mes
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] meses
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] meses
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] semana
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] semanas
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] semanas
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] día
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] días
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] días
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] miembro
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] miembros
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] miembros
+ </string>
+ <string name="AcctTypeResident">
+ Residente
+ </string>
+ <string name="AcctTypeTrial">
+ Prueba
+ </string>
+ <string name="AcctTypeCharterMember">
+ Miembro fundador
+ </string>
+ <string name="AcctTypeEmployee">
+ Empleado de Linden Lab
+ </string>
+ <string name="PaymentInfoUsed">
+ Ha usado información sobre la forma de pago
+ </string>
+ <string name="PaymentInfoOnFile">
+ Hay información archivada sobre la forma de pago
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ No hay información archivada sobre la forma de pago
+ </string>
+ <string name="AgeVerified">
+ Edad verificada
+ </string>
+ <string name="NotAgeVerified">
+ Edad no verificada
+ </string>
+ <string name="Center 2">
+ Centro 2
+ </string>
+ <string name="Top Right">
+ Arriba der.
+ </string>
+ <string name="Top">
+ Arriba
+ </string>
+ <string name="Top Left">
+ Arriba izq.
+ </string>
+ <string name="Center">
+ Centro
+ </string>
+ <string name="Bottom Left">
+ Abajo izq.
+ </string>
+ <string name="Bottom">
+ Abajo
+ </string>
+ <string name="Bottom Right">
+ Abajo der.
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Descargado, compilándolo
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ No se encuentra el script en el servidor.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Problema al descargar
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Permisos insuficientes para descargar un script.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Permisos insuficientes para
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Fallo desconocido en la descarga
+ </string>
+ <string name="CompileQueueTitle">
+ Recompilando
+ </string>
+ <string name="CompileQueueStart">
+ recompilar
+ </string>
+ <string name="ResetQueueTitle">
+ Progreso del reinicio
+ </string>
+ <string name="ResetQueueStart">
+ restaurar
+ </string>
+ <string name="RunQueueTitle">
+ Configurar según se ejecuta
+ </string>
+ <string name="RunQueueStart">
+ Configurando según se ejecuta
+ </string>
+ <string name="NotRunQueueTitle">
+ Configurar sin ejecutar
+ </string>
+ <string name="NotRunQueueStart">
+ Configurando sin ejecutarlo
+ </string>
+ <string name="CompileSuccessful">
+ ¡Compilación correcta!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Compilación correcta, guardando...
+ </string>
+ <string name="SaveComplete">
+ Guardado.
+ </string>
+ <string name="ObjectOutOfRange">
+ Script (objeto fuera de rango)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ El objeto [OBJECT] es propiedad de [OWNER]
+ </string>
+ <string name="GroupsNone">
+ ninguno
+ </string>
+ <string name="Group" value="(grupo)"/>
+ <string name="Unknown">
+ (Desconocido)
+ </string>
+ <string name="SummaryForTheWeek" value="Resumen de esta semana, empezando el"/>
+ <string name="NextStipendDay" value="El próximo día de pago es el"/>
+ <string name="GroupIndividualShare" value="Grupo Aportaciones individuales"/>
+ <string name="Balance">
+ Saldo
+ </string>
+ <string name="Credits">
+ Créditos
+ </string>
+ <string name="Debits">
+ Débitos
+ </string>
+ <string name="Total">
+ Total
+ </string>
+ <string name="NoGroupDataFound">
+ No se encontraron datos del grupo
+ </string>
+ <string name="IMParentEstate">
+ parent estate
+ </string>
+ <string name="IMMainland">
+ continente
+ </string>
+ <string name="IMTeen">
+ teen
+ </string>
+ <string name="RegionInfoError">
+ error
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ todos los estados propiedad de [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ todos los estados que posees
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ todos los estados que administras para [OWNER]
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Residentes autorizados: ([ALLOWEDAGENTS], de un máx. de [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Grupos autorizados: ([ALLOWEDGROUPS], de un máx. de [MAXACCESS])
+ </string>
+ <string name="CursorPos">
+ Línea [LINE], Columna [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] resultados
+ </string>
+ <string name="PanelContentsNewScript">
+ Script nuevo
+ </string>
+ <string name="MuteByName">
+ (por el nombre)
+ </string>
+ <string name="MuteAgent">
+ (residente)
+ </string>
+ <string name="MuteObject">
+ (objeto)
+ </string>
+ <string name="MuteGroup">
+ (grupo)
+ </string>
+ <string name="RegionNoCovenant">
+ No se ha aportado un contrato para este estado.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ No se ha aportado un contrato para este estado. El terreno de este estado lo vende el propietario del estado, no Linden Lab. Por favor, contacta con ese propietario para informarte sobre la venta.
+ </string>
+ <string name="covenant_last_modified">
+ Última modificación:
+ </string>
+ <string name="none_text" value="(no hay)"/>
+ <string name="never_text" value="(nunca)"/>
+ <string name="GroupOwned">
+ Propiedad del grupo
+ </string>
+ <string name="Public">
+ Público
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Clics: [TELEPORT] teleportes, [MAP] mapa, [PROFILE] perfil
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (se actualizará tras la publicación)
+ </string>
+ <string name="MultiPreviewTitle">
+ Vista previa
+ </string>
+ <string name="MultiPropertiesTitle">
+ Propiedades
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Un objeto de nombre
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ propiedad del grupo
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ propiedad de un grupo desconocido
+ </string>
+ <string name="InvOfferOwnedBy">
+ propiedad de
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ propiedad de un usuario desconocido
+ </string>
+ <string name="InvOfferGaveYou">
+ te ha dado
+ </string>
+ <string name="InvOfferYouDecline">
+ Has rehusado
+ </string>
+ <string name="InvOfferFrom">
+ de
+ </string>
+ <string name="GroupMoneyTotal">
+ Total
+ </string>
+ <string name="GroupMoneyBought">
+ comprado
+ </string>
+ <string name="GroupMoneyPaidYou">
+ pagado a ti
+ </string>
+ <string name="GroupMoneyPaidInto">
+ pagado en
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ pase comprado a
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ cuotas pagadas para el evento
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ precio pagado por el evento
+ </string>
+ <string name="GroupMoneyBalance">
+ Saldo
+ </string>
+ <string name="GroupMoneyCredits">
+ Créditos
+ </string>
+ <string name="GroupMoneyDebits">
+ Débitos
+ </string>
+ <string name="ViewerObjectContents">
+ Contenidos
+ </string>
+ <string name="AcquiredItems">
+ Artículos adquiridos
+ </string>
+ <string name="Cancel">
+ Cancelar
+ </string>
+ <string name="UploadingCosts">
+ Subir este/a [%s] cuesta
+ </string>
+ <string name="UnknownFileExtension">
+ Extensión de archivo desconocida [.%s]
+Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Guardarme este hito...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Editar este hito...
</string>
<string name="accel-mac-control">
- &#8963;
+ ⌃
</string>
<string name="accel-mac-command">
- &#8984;
+ ⌘
</string>
<string name="accel-mac-option">
- &#8997;
+ ⌥
</string>
<string name="accel-mac-shift">
- &#8679;
+ ⇧
</string>
<string name="accel-win-control">
Ctrl+
@@ -519,82 +1421,1790 @@ Si sigue recibiendo este mensaje, contacte con el [SUPPORT_SITE].
<string name="accel-win-shift">
Mayús+
</string>
- <string name="GraphicsQualityLow">
- Bajo
+ <string name="FileSaved">
+ Archivo guardado
</string>
- <string name="GraphicsQualityMid">
- Medio
+ <string name="Receiving">
+ Recibiendo
</string>
- <string name="GraphicsQualityHigh">
- Alto
+ <string name="AM">
+ AM
</string>
-
- <!-- PARCEL_CATEGORY_UI_STRING -->
- <string name="Linden Location">Localización Linden</string>
- <string name="Adult">&apos;Adult&apos;</string>
- <string name="Arts&amp;Culture">Arte y Cultura</string>
- <string name="Business">Negocios</string>
- <string name="Educational">Educativo</string>
- <string name="Gaming">Juegos de azar</string>
- <string name="Hangout">Entretenimiento</string>
- <string name="Newcomer Friendly">Para recién llegados</string>
- <string name="Parks&amp;Nature">Parques y Naturaleza</string>
- <string name="Residential">Residencial</string>
- <string name="Shopping">Compras</string>
- <string name="Other">Otra</string>
-
- <string name="ringing">
- Conectando al chat de voz...
+ <string name="PM">
+ PM
</string>
- <string name="connected">
- Conectado
+ <string name="PST">
+ PST
</string>
- <string name="unavailable">
- La voz no está disponible en su localización actual
+ <string name="PDT">
+ PDT
</string>
- <string name="hang_up">
- Desconectado del chat de voz
+ <string name="Forward">
+ Adelante
+ </string>
+ <string name="Left">
+ Izquierda
+ </string>
+ <string name="Right">
+ Derecha
+ </string>
+ <string name="Back">
+ Atrás
+ </string>
+ <string name="North">
+ Norte
+ </string>
+ <string name="South">
+ Sur
+ </string>
+ <string name="West">
+ Oeste
+ </string>
+ <string name="East">
+ Este
+ </string>
+ <string name="Up">
+ Arriba
+ </string>
+ <string name="Down">
+ Abajo
+ </string>
+ <string name="Any Category">
+ Cualquier categoría
+ </string>
+ <string name="Shopping">
+ Compras
+ </string>
+ <string name="Land Rental">
+ Terreno en alquiler
+ </string>
+ <string name="Property Rental">
+ Propiedad en alquiler
+ </string>
+ <string name="Special Attraction">
+ Atracción especial
+ </string>
+ <string name="New Products">
+ Nuevos productos
+ </string>
+ <string name="Employment">
+ Empleo
+ </string>
+ <string name="Wanted">
+ Se busca
+ </string>
+ <string name="Service">
+ Servicios
+ </string>
+ <string name="Personal">
+ Personal
+ </string>
+ <string name="None">
+ Ninguno
+ </string>
+ <string name="Linden Location">
+ Localización Linden
+ </string>
+ <string name="Adult">
+ &apos;Adult&apos;
+ </string>
+ <string name="Arts&amp;Culture">
+ Arte y Cultura
+ </string>
+ <string name="Business">
+ Negocios
+ </string>
+ <string name="Educational">
+ Educativo
+ </string>
+ <string name="Gaming">
+ Juegos de azar
+ </string>
+ <string name="Hangout">
+ Entretenimiento
+ </string>
+ <string name="Newcomer Friendly">
+ Para recién llegados
+ </string>
+ <string name="Parks&amp;Nature">
+ Parques y Naturaleza
+ </string>
+ <string name="Residential">
+ Residencial
+ </string>
+ <string name="Stage">
+ Artes escénicas
+ </string>
+ <string name="Other">
+ Otra
+ </string>
+ <string name="Any">
+ Cualquiera
+ </string>
+ <string name="You">
+ Tú
+ </string>
+ <string name="Multiple Media">
+ Múltiples medias
+ </string>
+ <string name="Play Media">
+ Play/Pausa los media
+ </string>
+ <string name="MBCmdLineError">
+ Ha habido un error analizando la línea de comando.
+Por favor, consulta: http://wiki.secondlife.com/wiki/Client_parameters
+Error:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Uso de línea de comando:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] no puede acceder a un archivo que necesita.
+
+Puede ser porque estés ejecutando varias copias, o porque tu sistema crea -equivocadamente- que el archivo está abierto.
+Si este mensaje persiste, reinicia tu ordenador y vuelve a intentarlo.
+Si aun así sigue apareciendo el mensaje, debes desinstalar completamente [APP_NAME] y reinstalarlo.
+ </string>
+ <string name="MBFatalError">
+ Error fatal
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] requiere un procesador con AltiVec (G4 o posterior).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] ya se está ejecutando.
+Revisa tu barra de tareas para encontrar una copia minimizada del programa.
+Si este mensaje persiste, reinicia tu ordenador.
+ </string>
+ <string name="MBFrozenCrashed">
+ En su anterior ejecución, [APP_NAME] se congeló o se cayó.
+¿Quieres enviar un informe de caída?
+ </string>
+ <string name="MBAlert">
+ Alerta
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] no encuentra DirectX 9.0b o superior.
+[APP_NAME] usa DirectX para detectar el hardware o los drivers no actualizados que pueden provocar problemas de estabilidad, ejecución pobre y caídas. Aunque puedes ejecutar [APP_NAME] sin él, recomendamos encarecidamente hacerlo con DirectX 9.0b.
+
+¿Quieres continuar?
+ </string>
+ <string name="MBWarning">
+ ¡Atención!
+ </string>
+ <string name="MBNoAutoUpdate">
+ Las actualizaciones automáticas no están todavía implementadas para Linux.
+Por favor, descarga la última versión desde www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ Fallo en RegisterClass
+ </string>
+ <string name="MBError">
+ Error
+ </string>
+ <string name="MBFullScreenErr">
+ No puede ejecutarse a pantalla completa de [WIDTH] x [HEIGHT].
+Ejecutándose en una ventana.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Error Shutdown destruyendo la ventana (DestroyWindow() failed)
+ </string>
+ <string name="MBShutdownErr">
+ Error Shutdown
+ </string>
+ <string name="MBDevContextErr">
+ No se puede construir el &apos;GL device context&apos;
+ </string>
+ <string name="MBPixelFmtErr">
+ No se puede encontrar un formato adecuado de píxel
+ </string>
+ <string name="MBPixelFmtDescErr">
+ No se puede conseguir la descripción del formato de píxel
+ </string>
+ <string name="MBTrueColorWindow">
+ Para ejecutarse, [APP_NAME] necesita True Color (32-bit).
+Por favor, en las configuraciones de tu ordenador ajusta el modo de color a 32-bit.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] no puede ejecutarse porque no puede obtener un canal alpha de 8 bit. Generalmente, se debe a alguna cuestión de los drivers de la tarjeta de vídeo.
+Por favor, comprueba que tienes instalados los últimos drivers para tu tarjeta de vídeo.
+Comprueba también que tu monitor esta configurado para True Color (32-bit) en Panel de Control &gt; Apariencia y temas &gt; Pantalla.
+Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ No se puede configurar el formato de píxel
+ </string>
+ <string name="MBGLContextErr">
+ No se puede crear el &apos;GL rendering context&apos;
+ </string>
+ <string name="MBGLContextActErr">
+ No se puede activar el &apos;GL rendering context&apos;
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] no puede ejecutarse porque los drivers de tu tarjeta de vídeo o no están bien instalados, o no están actualizados, o son para hardware no admitido. Por favor, comprueba que tienes los drivers más actuales para tu tarjeta de vídeo, y, aunque los tengas, intenta reinstalarlos.
+
+Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
+ </string>
+ <string name="5 O&apos;Clock Shadow">
+ Barba del día
+ </string>
+ <string name="All White">
+ Blanco del todo
+ </string>
+ <string name="Anime Eyes">
+ Ojos de cómic
+ </string>
+ <string name="Arced">
+ Arqueadas
+ </string>
+ <string name="Arm Length">
+ Brazos: longitud
+ </string>
+ <string name="Attached">
+ Cortos
+ </string>
+ <string name="Attached Earlobes">
+ Lóbulos cortos
+ </string>
+ <string name="Back Bangs">
+ Back Bangs
+ </string>
+ <string name="Back Bangs Down">
+ Back Bangs Down
+ </string>
+ <string name="Back Bangs Up">
+ Back Bangs Up
+ </string>
+ <string name="Back Fringe">
+ Nuca: largo
+ </string>
+ <string name="Back Hair">
+ Back Hair
+ </string>
+ <string name="Back Hair Down">
+ Back Hair Down
+ </string>
+ <string name="Back Hair Up">
+ Back Hair Up
+ </string>
+ <string name="Baggy">
+ Marcadas
+ </string>
+ <string name="Bangs">
+ Bangs
+ </string>
+ <string name="Bangs Down">
+ Bangs Down
+ </string>
+ <string name="Bangs Up">
+ Bangs Up
+ </string>
+ <string name="Beady Eyes">
+ Ojos pequeños
+ </string>
+ <string name="Belly Size">
+ Barriga: tamaño
+ </string>
+ <string name="Big">
+ Grande
+ </string>
+ <string name="Big Butt">
+ Culo grande
+ </string>
+ <string name="Big Eyeball">
+ Big Eyeball
+ </string>
+ <string name="Big Hair Back">
+ Pelo: moño
+ </string>
+ <string name="Big Hair Front">
+ Pelo: tupé
+ </string>
+ <string name="Big Hair Top">
+ Pelo: melena alta
+ </string>
+ <string name="Big Head">
+ Cabeza grande
+ </string>
+ <string name="Big Pectorals">
+ Grandes pectorales
+ </string>
+ <string name="Big Spikes">
+ Crestas grandes
+ </string>
+ <string name="Black">
+ Negro
+ </string>
+ <string name="Blonde">
+ Rubio
+ </string>
+ <string name="Blonde Hair">
+ Pelo rubio
+ </string>
+ <string name="Blush">
+ Colorete
+ </string>
+ <string name="Blush Color">
+ Color del colorete
+ </string>
+ <string name="Blush Opacity">
+ Opacidad del colorete
+ </string>
+ <string name="Body Definition">
+ Definición del cuerpo
+ </string>
+ <string name="Body Fat">
+ Cuerpo: gordura
+ </string>
+ <string name="Body Freckles">
+ Pecas del cuerpo
+ </string>
+ <string name="Body Thick">
+ Cuerpo grueso
+ </string>
+ <string name="Body Thickness">
+ Cuerpo: grosor
+ </string>
+ <string name="Body Thin">
+ Cuerpo delgado
+ </string>
+ <string name="Bow Legged">
+ Abiertas
+ </string>
+ <string name="Breast Buoyancy">
+ Busto: firmeza
+ </string>
+ <string name="Breast Cleavage">
+ Busto: canalillo
+ </string>
+ <string name="Breast Size">
+ Busto: tamaño
+ </string>
+ <string name="Bridge Width">
+ Puente: ancho
+ </string>
+ <string name="Broad">
+ Ancho
+ </string>
+ <string name="Brow Size">
+ Arco ciliar
+ </string>
+ <string name="Bug Eyes">
+ Bug Eyes
+ </string>
+ <string name="Bugged Eyes">
+ Ojos saltones
+ </string>
+ <string name="Bulbous">
+ Bulbosa
+ </string>
+ <string name="Bulbous Nose">
+ Nariz de porra
+ </string>
+ <string name="Bushy Eyebrows">
+ Cejijuntas
+ </string>
+ <string name="Bushy Hair">
+ Pelo tupido
+ </string>
+ <string name="Butt Size">
+ Culo: tamaño
+ </string>
+ <string name="bustle skirt">
+ Polisón
+ </string>
+ <string name="no bustle">
+ Sin polisón
+ </string>
+ <string name="more bustle">
+ Con polisón
+ </string>
+ <string name="Chaplin">
+ Cortito
+ </string>
+ <string name="Cheek Bones">
+ Pómulos
+ </string>
+ <string name="Chest Size">
+ Tórax: tamaño
+ </string>
+ <string name="Chin Angle">
+ Barbilla: ángulo
+ </string>
+ <string name="Chin Cleft">
+ Barbilla: contorno
+ </string>
+ <string name="Chin Curtains">
+ Barba en collar
+ </string>
+ <string name="Chin Depth">
+ Barbilla: largo
+ </string>
+ <string name="Chin Heavy">
+ Hacia la barbilla
+ </string>
+ <string name="Chin In">
+ Barbilla retraída
+ </string>
+ <string name="Chin Out">
+ Barbilla prominente
+ </string>
+ <string name="Chin-Neck">
+ Papada
+ </string>
+ <string name="Clear">
+ Transparente
+ </string>
+ <string name="Cleft">
+ Remarcar
+ </string>
+ <string name="Close Set Eyes">
+ Ojos juntos
+ </string>
+ <string name="Closed">
+ Cerrar
+ </string>
+ <string name="Closed Back">
+ Trasera cerrada
+ </string>
+ <string name="Closed Front">
+ Frontal cerrado
+ </string>
+ <string name="Closed Left">
+ Cerrada
+ </string>
+ <string name="Closed Right">
+ Cerrada
+ </string>
+ <string name="Coin Purse">
+ Poco abultada
+ </string>
+ <string name="Collar Back">
+ Espalda
+ </string>
+ <string name="Collar Front">
+ Escote
+ </string>
+ <string name="Corner Down">
+ Hacia abajo
+ </string>
+ <string name="Corner Normal">
+ Corner Normal
+ </string>
+ <string name="Corner Up">
+ Hacia arriba
+ </string>
+ <string name="Creased">
+ Caídos
+ </string>
+ <string name="Crooked Nose">
+ Nariz torcida
+ </string>
+ <string name="Cropped Hair">
+ Cropped Hair
+ </string>
+ <string name="Cuff Flare">
+ Acampanado
+ </string>
+ <string name="Dark">
+ Oscuridad
+ </string>
+ <string name="Dark Green">
+ Verde oscuro
+ </string>
+ <string name="Darker">
+ Más oscuros
+ </string>
+ <string name="Deep">
+ Remarcar
+ </string>
+ <string name="Default Heels">
+ Tacones por defecto
+ </string>
+ <string name="Default Toe">
+ Default Toe
+ </string>
+ <string name="Dense">
+ Densas
+ </string>
+ <string name="Dense hair">
+ Dense hair
+ </string>
+ <string name="Double Chin">
+ Mucha papada
+ </string>
+ <string name="Downturned">
+ Poco
+ </string>
+ <string name="Duffle Bag">
+ Muy abultada
+ </string>
+ <string name="Ear Angle">
+ Orejas: ángulo
+ </string>
+ <string name="Ear Size">
+ Orejas: tamaño
+ </string>
+ <string name="Ear Tips">
+ Orejas: forma
+ </string>
+ <string name="Egg Head">
+ Cabeza: ahuevada
+ </string>
+ <string name="Eye Bags">
+ Ojos: bolsas
+ </string>
+ <string name="Eye Color">
+ Ojos: color
+ </string>
+ <string name="Eye Depth">
+ Ojos: profundidad
+ </string>
+ <string name="Eye Lightness">
+ Ojos: brillo
+ </string>
+ <string name="Eye Opening">
+ Ojos: apertura
+ </string>
+ <string name="Eye Pop">
+ Ojos: simetría
+ </string>
+ <string name="Eye Size">
+ Ojos: tamaño
+ </string>
+ <string name="Eye Spacing">
+ Ojos: separación
+ </string>
+ <string name="Eyeball Size">
+ Eyeball Size
+ </string>
+ <string name="Eyebrow Arc">
+ Cejas: arco
+ </string>
+ <string name="Eyebrow Density">
+ Cejas: densidad
+ </string>
+ <string name="Eyebrow Height">
+ Cejas: altura
+ </string>
+ <string name="Eyebrow Points">
+ Cejas: en V
+ </string>
+ <string name="Eyebrow Size">
+ Cejas: tamaño
+ </string>
+ <string name="Eyelash Length">
+ Pestañas: longitud
+ </string>
+ <string name="Eyeliner">
+ Contorno de ojos
+ </string>
+ <string name="Eyeliner Color">
+ Contorno de ojos: color
+ </string>
+ <string name="Eyes Back">
+ Eyes Back
+ </string>
+ <string name="Eyes Bugged">
+ Eyes Bugged
+ </string>
+ <string name="Eyes Forward">
+ Eyes Forward
+ </string>
+ <string name="Eyes Long Head">
+ Eyes Long Head
+ </string>
+ <string name="Eyes Shear Left Up">
+ Ojos arriba - izq.
+ </string>
+ <string name="Eyes Shear Right Up">
+ Ojos arriba - der.
+ </string>
+ <string name="Eyes Short Head">
+ Eyes Short Head
+ </string>
+ <string name="Eyes Spread">
+ Eyes Spread
+ </string>
+ <string name="Eyes Sunken">
+ Eyes Sunken
+ </string>
+ <string name="Eyes Together">
+ Eyes Together
+ </string>
+ <string name="Face Shear">
+ Cara: simetría
+ </string>
+ <string name="Facial Definition">
+ Rasgos marcados
+ </string>
+ <string name="Far Set Eyes">
+ Ojos separados
+ </string>
+ <string name="Fat">
+ Fat
+ </string>
+ <string name="Fat Head">
+ Fat Head
+ </string>
+ <string name="Fat Lips">
+ Prominentes
+ </string>
+ <string name="Fat Lower">
+ Fat Lower
+ </string>
+ <string name="Fat Lower Lip">
+ Fat Lower Lip
+ </string>
+ <string name="Fat Torso">
+ Fat Torso
+ </string>
+ <string name="Fat Upper">
+ Fat Upper
+ </string>
+ <string name="Fat Upper Lip">
+ Fat Upper Lip
+ </string>
+ <string name="Female">
+ Mujer
+ </string>
+ <string name="Fingerless">
+ Sin dedos
+ </string>
+ <string name="Fingers">
+ Con dedos
+ </string>
+ <string name="Flared Cuffs">
+ Campana
+ </string>
+ <string name="Flat">
+ Redondeadas
+ </string>
+ <string name="Flat Butt">
+ Culo plano
+ </string>
+ <string name="Flat Head">
+ Cabeza plana
+ </string>
+ <string name="Flat Toe">
+ Empeine bajo
+ </string>
+ <string name="Foot Size">
+ Pie: tamaño
+ </string>
+ <string name="Forehead Angle">
+ Frente: ángulo
+ </string>
+ <string name="Forehead Heavy">
+ Hacia la frente
+ </string>
+ <string name="Freckles">
+ Pecas
+ </string>
+ <string name="Front Bangs Down">
+ Front Bangs Down
+ </string>
+ <string name="Front Bangs Up">
+ Front Bangs Up
+ </string>
+ <string name="Front Fringe">
+ Flequillo
+ </string>
+ <string name="Front Hair">
+ Front Hair
+ </string>
+ <string name="Front Hair Down">
+ Front Hair Down
+ </string>
+ <string name="Front Hair Up">
+ Front Hair Up
+ </string>
+ <string name="Full Back">
+ Sin cortar
+ </string>
+ <string name="Full Eyeliner">
+ Contorno completo
+ </string>
+ <string name="Full Front">
+ Sin cortar
+ </string>
+ <string name="Full Hair Sides">
+ Pelo: volumen a los lados
+ </string>
+ <string name="Full Sides">
+ Volumen total
+ </string>
+ <string name="Glossy">
+ Con brillo
+ </string>
+ <string name="Glove Fingers">
+ Guantes: dedos
+ </string>
+ <string name="Glove Length">
+ Guantes: largo
+ </string>
+ <string name="Hair">
+ Pelo
+ </string>
+ <string name="Hair Back">
+ Pelo: nuca
+ </string>
+ <string name="Hair Front">
+ Pelo: delante
+ </string>
+ <string name="Hair Sides">
+ Pelo: lados
+ </string>
+ <string name="Hair Sweep">
+ Peinado: dirección
+ </string>
+ <string name="Hair Thickess">
+ Pelo: espesor
+ </string>
+ <string name="Hair Thickness">
+ Pelo: espesor
+ </string>
+ <string name="Hair Tilt">
+ Pelo: inclinación
+ </string>
+ <string name="Hair Tilted Left">
+ A la izq.
+ </string>
+ <string name="Hair Tilted Right">
+ A la der.
+ </string>
+ <string name="Hair Volume">
+ Pelo: volumen
+ </string>
+ <string name="Hand Size">
+ Manos: tamaño
+ </string>
+ <string name="Handlebars">
+ Muy largo
+ </string>
+ <string name="Head Length">
+ Cabeza: longitud
+ </string>
+ <string name="Head Shape">
+ Cabeza: forma
+ </string>
+ <string name="Head Size">
+ Cabeza: tamaño
+ </string>
+ <string name="Head Stretch">
+ Cabeza: estiramiento
+ </string>
+ <string name="Heel Height">
+ Tacón: altura
+ </string>
+ <string name="Heel Shape">
+ Tacón: forma
+ </string>
+ <string name="Height">
+ Altura
+ </string>
+ <string name="High">
+ Subir
+ </string>
+ <string name="High Heels">
+ Tacones altos
+ </string>
+ <string name="High Jaw">
+ Mandíbula alta
+ </string>
+ <string name="High Platforms">
+ Suela gorda
+ </string>
+ <string name="High and Tight">
+ Pegada
+ </string>
+ <string name="Higher">
+ Arrriba
+ </string>
+ <string name="Hip Length">
+ Cadera: altura
+ </string>
+ <string name="Hip Width">
+ Cadera: ancho
+ </string>
+ <string name="In">
+ Pegadas
+ </string>
+ <string name="In Shdw Color">
+ Línea de ojos: color
+ </string>
+ <string name="In Shdw Opacity">
+ Línea de ojos: opacidad
+ </string>
+ <string name="Inner Eye Corner">
+ Ojos: lagrimal
+ </string>
+ <string name="Inner Eye Shadow">
+ Inner Eye Shadow
+ </string>
+ <string name="Inner Shadow">
+ Línea de ojos
+ </string>
+ <string name="Jacket Length">
+ Chaqueta: largo
+ </string>
+ <string name="Jacket Wrinkles">
+ Chaqueta: arrugas
+ </string>
+ <string name="Jaw Angle">
+ Mandíbula: ángulo
+ </string>
+ <string name="Jaw Jut">
+ Maxilar inferior
+ </string>
+ <string name="Jaw Shape">
+ Mandíbula: forma
+ </string>
+ <string name="Join">
+ Más junto
+ </string>
+ <string name="Jowls">
+ Mofletes
+ </string>
+ <string name="Knee Angle">
+ Rodillas: ángulo
+ </string>
+ <string name="Knock Kneed">
+ Zambas
+ </string>
+ <string name="Large">
+ Aumentar
+ </string>
+ <string name="Large Hands">
+ Manos grandes
+ </string>
+ <string name="Left Part">
+ Raya: izq.
+ </string>
+ <string name="Leg Length">
+ Piernas: longitud
+ </string>
+ <string name="Leg Muscles">
+ Piernas: musculatura
+ </string>
+ <string name="Less">
+ Menos
+ </string>
+ <string name="Less Body Fat">
+ Menos gordura
+ </string>
+ <string name="Less Curtains">
+ Menos tupida
+ </string>
+ <string name="Less Freckles">
+ Menos pecas
+ </string>
+ <string name="Less Full">
+ Menos grosor
+ </string>
+ <string name="Less Gravity">
+ Más levantado
+ </string>
+ <string name="Less Love">
+ Menos michelines
+ </string>
+ <string name="Less Muscles">
+ Pocos músculos
+ </string>
+ <string name="Less Muscular">
+ Poca musculatura
+ </string>
+ <string name="Less Rosy">
+ Menos sonrosada
+ </string>
+ <string name="Less Round">
+ Menos redondeada
+ </string>
+ <string name="Less Saddle">
+ Menos cartucheras
+ </string>
+ <string name="Less Square">
+ Menos cuadrada
+ </string>
+ <string name="Less Volume">
+ Menos volumen
+ </string>
+ <string name="Less soul">
+ Pequeña
+ </string>
+ <string name="Lighter">
+ Más luminosos
+ </string>
+ <string name="Lip Cleft">
+ Labio: hoyuelo
+ </string>
+ <string name="Lip Cleft Depth">
+ Hoyuelo marcado
+ </string>
+ <string name="Lip Fullness">
+ Labios: grosor
+ </string>
+ <string name="Lip Pinkness">
+ Labios sonrosados
+ </string>
+ <string name="Lip Ratio">
+ Labios: ratio
+ </string>
+ <string name="Lip Thickness">
+ Labios: prominencia
+ </string>
+ <string name="Lip Width">
+ Labios: ancho
+ </string>
+ <string name="Lipgloss">
+ Brillo de labios
+ </string>
+ <string name="Lipstick">
+ Barra de labios
+ </string>
+ <string name="Lipstick Color">
+ Barra de labios: color
+ </string>
+ <string name="Long">
+ Más
+ </string>
+ <string name="Long Head">
+ Cabeza alargada
+ </string>
+ <string name="Long Hips">
+ Cadera larga
+ </string>
+ <string name="Long Legs">
+ Piernas largas
+ </string>
+ <string name="Long Neck">
+ Cuello largo
+ </string>
+ <string name="Long Pigtails">
+ Coletas largas
+ </string>
+ <string name="Long Ponytail">
+ Cola de caballo larga
+ </string>
+ <string name="Long Torso">
+ Torso largo
+ </string>
+ <string name="Long arms">
+ Brazos largos
+ </string>
+ <string name="Longcuffs">
+ Longcuffs
+ </string>
+ <string name="Loose Pants">
+ Pantalón suelto
+ </string>
+ <string name="Loose Shirt">
+ Camiseta suelta
+ </string>
+ <string name="Loose Sleeves">
+ Puños anchos
+ </string>
+ <string name="Love Handles">
+ Michelines
+ </string>
+ <string name="Low">
+ Bajar
+ </string>
+ <string name="Low Heels">
+ Tacones bajos
+ </string>
+ <string name="Low Jaw">
+ Mandíbula baja
+ </string>
+ <string name="Low Platforms">
+ Suela fina
+ </string>
+ <string name="Low and Loose">
+ Suelta
+ </string>
+ <string name="Lower">
+ Abajo
+ </string>
+ <string name="Lower Bridge">
+ Puente: abajo
+ </string>
+ <string name="Lower Cheeks">
+ Mejillas: abajo
+ </string>
+ <string name="Male">
+ Varón
+ </string>
+ <string name="Middle Part">
+ Raya: en medio
+ </string>
+ <string name="More">
+ Más
+ </string>
+ <string name="More Blush">
+ Más colorete
+ </string>
+ <string name="More Body Fat">
+ Más gordura
+ </string>
+ <string name="More Curtains">
+ Más tupida
+ </string>
+ <string name="More Eyeshadow">
+ Más
+ </string>
+ <string name="More Freckles">
+ Más pecas
+ </string>
+ <string name="More Full">
+ Más grosor
+ </string>
+ <string name="More Gravity">
+ Menos levantado
+ </string>
+ <string name="More Lipstick">
+ Más barra de labios
+ </string>
+ <string name="More Love">
+ Más michelines
+ </string>
+ <string name="More Lower Lip">
+ Más el inferior
+ </string>
+ <string name="More Muscles">
+ Más músculos
+ </string>
+ <string name="More Muscular">
+ Más musculatura
+ </string>
+ <string name="More Rosy">
+ Más sonrosada
+ </string>
+ <string name="More Round">
+ Más redondeada
+ </string>
+ <string name="More Saddle">
+ Más cartucheras
+ </string>
+ <string name="More Sloped">
+ Más inclinada
+ </string>
+ <string name="More Square">
+ Más cuadrada
+ </string>
+ <string name="More Upper Lip">
+ Más el superior
+ </string>
+ <string name="More Vertical">
+ Más recta
+ </string>
+ <string name="More Volume">
+ Más volumen
+ </string>
+ <string name="More soul">
+ Grande
+ </string>
+ <string name="Moustache">
+ Bigote
+ </string>
+ <string name="Mouth Corner">
+ Comisuras
+ </string>
+ <string name="Mouth Position">
+ Boca: posición
+ </string>
+ <string name="Mowhawk">
+ Rapado
+ </string>
+ <string name="Muscular">
+ Muscular
+ </string>
+ <string name="Mutton Chops">
+ Patillas largas
+ </string>
+ <string name="Nail Polish">
+ Uñas pintadas
+ </string>
+ <string name="Nail Polish Color">
+ Uñas pintadas: color
+ </string>
+ <string name="Narrow">
+ Disminuir
+ </string>
+ <string name="Narrow Back">
+ Rapada
+ </string>
+ <string name="Narrow Front">
+ Entradas
+ </string>
+ <string name="Narrow Lips">
+ Labios estrechos
+ </string>
+ <string name="Natural">
+ Natural
+ </string>
+ <string name="Neck Length">
+ Cuello: longitud
+ </string>
+ <string name="Neck Thickness">
+ Cuello: grosor
+ </string>
+ <string name="No Blush">
+ Sin colorete
+ </string>
+ <string name="No Eyeliner">
+ Sin contorno
+ </string>
+ <string name="No Eyeshadow">
+ Menos
+ </string>
+ <string name="No Heels">
+ No Heels
+ </string>
+ <string name="No Lipgloss">
+ Sin brillo
+ </string>
+ <string name="No Lipstick">
+ Sin barra de labios
+ </string>
+ <string name="No Part">
+ Sin raya
+ </string>
+ <string name="No Polish">
+ Sin pintar
+ </string>
+ <string name="No Red">
+ Nada
+ </string>
+ <string name="No Spikes">
+ Sin crestas
+ </string>
+ <string name="No White">
+ Sin blanco
+ </string>
+ <string name="No Wrinkles">
+ Sin arrugas
+ </string>
+ <string name="Normal Lower">
+ Normal Lower
+ </string>
+ <string name="Normal Upper">
+ Normal Upper
+ </string>
+ <string name="Nose Left">
+ Nariz a la izq.
+ </string>
+ <string name="Nose Right">
+ Nariz a la der.
+ </string>
+ <string name="Nose Size">
+ Nariz: tamaño
+ </string>
+ <string name="Nose Thickness">
+ Nariz: grosor
+ </string>
+ <string name="Nose Tip Angle">
+ Nariz: respingona
+ </string>
+ <string name="Nose Tip Shape">
+ Nariz: punta
+ </string>
+ <string name="Nose Width">
+ Nariz: ancho
+ </string>
+ <string name="Nostril Division">
+ Ventana: altura
+ </string>
+ <string name="Nostril Width">
+ Ventana: ancho
+ </string>
+ <string name="Old">
+ Old
+ </string>
+ <string name="Opaque">
+ Opaco
+ </string>
+ <string name="Open">
+ Abrir
+ </string>
+ <string name="Open Back">
+ Apertura trasera
+ </string>
+ <string name="Open Front">
+ Apertura frontal
+ </string>
+ <string name="Open Left">
+ Abierta
+ </string>
+ <string name="Open Right">
+ Abierta
+ </string>
+ <string name="Orange">
+ Anaranjado
+ </string>
+ <string name="Out">
+ De soplillo
+ </string>
+ <string name="Out Shdw Color">
+ Sombra de ojos: color
+ </string>
+ <string name="Out Shdw Opacity">
+ Sombra de ojos: opacidad
+ </string>
+ <string name="Outer Eye Corner">
+ Ojos: comisura
+ </string>
+ <string name="Outer Eye Shadow">
+ Outer Eye Shadow
+ </string>
+ <string name="Outer Shadow">
+ Sombra de ojos
+ </string>
+ <string name="Overbite">
+ Retraído
+ </string>
+ <string name="Package">
+ Pubis
+ </string>
+ <string name="Painted Nails">
+ Pintadas
+ </string>
+ <string name="Pale">
+ Pálida
+ </string>
+ <string name="Pants Crotch">
+ Pantalón: cruz
+ </string>
+ <string name="Pants Fit">
+ Ceñido
+ </string>
+ <string name="Pants Length">
+ Pernera: largo
+ </string>
+ <string name="Pants Waist">
+ Caja
+ </string>
+ <string name="Pants Wrinkles">
+ Pantalón: arrugas
+ </string>
+ <string name="Part">
+ Raya
+ </string>
+ <string name="Part Bangs">
+ Flequillo partido
+ </string>
+ <string name="Pectorals">
+ Pectorales
+ </string>
+ <string name="Pigment">
+ Tono
+ </string>
+ <string name="Pigtails">
+ Coletas
+ </string>
+ <string name="Pink">
+ Rosa
+ </string>
+ <string name="Pinker">
+ Más sonrosados
+ </string>
+ <string name="Platform Height">
+ Suela: altura
+ </string>
+ <string name="Platform Width">
+ Suela: ancho
+ </string>
+ <string name="Pointy">
+ En punta
+ </string>
+ <string name="Pointy Heels">
+ De aguja
+ </string>
+ <string name="Pointy Toe">
+ Pointy Toe
+ </string>
+ <string name="Ponytail">
+ Cola de caballo
+ </string>
+ <string name="Poofy Skirt">
+ Con vuelo
+ </string>
+ <string name="Pop Left Eye">
+ Izquierdo más grande
+ </string>
+ <string name="Pop Right Eye">
+ Derecho más grande
+ </string>
+ <string name="Puffy">
+ Hinchadas
+ </string>
+ <string name="Puffy Eyelids">
+ Ojeras
+ </string>
+ <string name="Rainbow Color">
+ Irisación
+ </string>
+ <string name="Red Hair">
+ Pelirrojo
+ </string>
+ <string name="Red Skin">
+ Red Skin
+ </string>
+ <string name="Regular">
+ Regular
+ </string>
+ <string name="Regular Muscles">
+ Regular Muscles
+ </string>
+ <string name="Right Part">
+ Raya: der.
+ </string>
+ <string name="Rosy Complexion">
+ Tez sonrosada
+ </string>
+ <string name="Round">
+ Redondear
+ </string>
+ <string name="Round Forehead">
+ Round Forehead
+ </string>
+ <string name="Ruddiness">
+ Rubicundez
+ </string>
+ <string name="Ruddy">
+ Rojiza
+ </string>
+ <string name="Rumpled Hair">
+ Pelo encrespado
+ </string>
+ <string name="Saddle Bags">
+ Cartucheras
+ </string>
+ <string name="Saddlebags">
+ Cartucheras
+ </string>
+ <string name="Scrawny">
+ Scrawny
+ </string>
+ <string name="Scrawny Leg">
+ Piernas flacas
+ </string>
+ <string name="Separate">
+ Más ancho
+ </string>
+ <string name="Shading">
+ Shading
+ </string>
+ <string name="Shadow hair">
+ Shadow hair
+ </string>
+ <string name="Shallow">
+ Sin marcar
+ </string>
+ <string name="Shear Back">
+ Nuca: corte
+ </string>
+ <string name="Shear Face">
+ Shear Face
+ </string>
+ <string name="Shear Front">
+ Shear Front
+ </string>
+ <string name="Shear Left">
+ Shear Left
+ </string>
+ <string name="Shear Left Up">
+ Arriba - izq.
+ </string>
+ <string name="Shear Right">
+ Shear Right
+ </string>
+ <string name="Shear Right Up">
+ Arriba - der.
+ </string>
+ <string name="Sheared Back">
+ Rapada
+ </string>
+ <string name="Sheared Front">
+ Rapada
+ </string>
+ <string name="Shift Left">
+ A la izq.
+ </string>
+ <string name="Shift Mouth">
+ Boca: ladeada
+ </string>
+ <string name="Shift Right">
+ A la der.
+ </string>
+ <string name="Shirt Bottom">
+ Alto de cintura
+ </string>
+ <string name="Shirt Fit">
+ Ceñido
+ </string>
+ <string name="Shirt Wrinkles">
+ Camisa: arrugas
+ </string>
+ <string name="Shoe Height">
+ Caña: altura
+ </string>
+ <string name="Short">
+ Menos
+ </string>
+ <string name="Short Arms">
+ Brazos cortos
+ </string>
+ <string name="Short Legs">
+ Piernas cortas
+ </string>
+ <string name="Short Neck">
+ Cuello corto
+ </string>
+ <string name="Short Pigtails">
+ Coletas cortas
+ </string>
+ <string name="Short Ponytail">
+ Cola de caballo corta
+ </string>
+ <string name="Short Sideburns">
+ Patillas cortas
+ </string>
+ <string name="Short Torso">
+ Torso corto
+ </string>
+ <string name="Short hips">
+ Cadera corta
+ </string>
+ <string name="Shoulders">
+ Hombros
+ </string>
+ <string name="Side Bangs">
+ Side Bangs
+ </string>
+ <string name="Side Bangs Down">
+ Side Bangs Down
+ </string>
+ <string name="Side Bangs Up">
+ Side Bangs Up
+ </string>
+ <string name="Side Fringe">
+ Lados: franja
+ </string>
+ <string name="Sideburns">
+ Patillas
+ </string>
+ <string name="Sides Hair">
+ Pelo: lados
+ </string>
+ <string name="Sides Hair Down">
+ Bajar lados del pelo
+ </string>
+ <string name="Sides Hair Up">
+ Subir lados del pelo
+ </string>
+ <string name="Skinny">
+ Skinny
+ </string>
+ <string name="Skinny Neck">
+ Cuello estrecho
+ </string>
+ <string name="Skirt Fit">
+ Falda: vuelo
+ </string>
+ <string name="Skirt Length">
+ Falda: largo
+ </string>
+ <string name="Slanted Forehead">
+ Slanted Forehead
+ </string>
+ <string name="Sleeve Length">
+ Largo de manga
+ </string>
+ <string name="Sleeve Looseness">
+ Ancho de puños
+ </string>
+ <string name="Slit Back">
+ Raja trasera
+ </string>
+ <string name="Slit Front">
+ Raja frontal
+ </string>
+ <string name="Slit Left">
+ Raja a la izq.
+ </string>
+ <string name="Slit Right">
+ Raja a la der.
+ </string>
+ <string name="Small">
+ Disminuir
+ </string>
+ <string name="Small Hands">
+ Manos pequeñas
+ </string>
+ <string name="Small Head">
+ Cabeza pequeña
+ </string>
+ <string name="Smooth">
+ Leves
+ </string>
+ <string name="Smooth Hair">
+ Pelo liso
+ </string>
+ <string name="Socks Length">
+ Calcetines: largo
+ </string>
+ <string name="Some">
+ Some
+ </string>
+ <string name="Soulpatch">
+ Perilla
+ </string>
+ <string name="Sparse">
+ Depiladas
+ </string>
+ <string name="Spiked Hair">
+ Crestas
+ </string>
+ <string name="Square">
+ Cuadrada
+ </string>
+ <string name="Square Toe">
+ Punta cuadrada
+ </string>
+ <string name="Squash Head">
+ Cabeza aplastada
+ </string>
+ <string name="Squash/Stretch Head">
+ Squash/Stretch Head
+ </string>
+ <string name="Stretch Head">
+ Cabeza estirada
+ </string>
+ <string name="Sunken">
+ Chupadas
+ </string>
+ <string name="Sunken Chest">
+ Estrecho de pecho
+ </string>
+ <string name="Sunken Eyes">
+ Ojos hundidos
+ </string>
+ <string name="Sweep Back">
+ Sweep Back
+ </string>
+ <string name="Sweep Forward">
+ Sweep Forward
+ </string>
+ <string name="Swept Back">
+ Swept Back
+ </string>
+ <string name="Swept Back Hair">
+ Swept Back Hair
+ </string>
+ <string name="Swept Forward">
+ Swept Forward
+ </string>
+ <string name="Swept Forward Hair">
+ Swept Forward Hair
+ </string>
+ <string name="Tall">
+ Alta
+ </string>
+ <string name="Taper Back">
+ Cubierta trasera
+ </string>
+ <string name="Taper Front">
+ Cubierta frontal
+ </string>
+ <string name="Thick Heels">
+ Tacones grandes
+ </string>
+ <string name="Thick Neck">
+ Cuello ancho
+ </string>
+ <string name="Thick Toe">
+ Empeine alto
+ </string>
+ <string name="Thickness">
+ Thickness
+ </string>
+ <string name="Thin">
+ Delgadas
+ </string>
+ <string name="Thin Eyebrows">
+ Cejas finas
+ </string>
+ <string name="Thin Lips">
+ Hacia dentro
+ </string>
+ <string name="Thin Nose">
+ Nariz fina
+ </string>
+ <string name="Tight Chin">
+ Poca papada
+ </string>
+ <string name="Tight Cuffs">
+ Sin campana
+ </string>
+ <string name="Tight Pants">
+ Pantalón ceñido
+ </string>
+ <string name="Tight Shirt">
+ Camisa ceñida
+ </string>
+ <string name="Tight Skirt">
+ Falda ceñida
+ </string>
+ <string name="Tight Sleeves">
+ Puños ceñidos
+ </string>
+ <string name="Tilt Left">
+ Tilt Left
+ </string>
+ <string name="Tilt Right">
+ Tilt Right
+ </string>
+ <string name="Toe Shape">
+ Punta: forma
+ </string>
+ <string name="Toe Thickness">
+ Empeine
+ </string>
+ <string name="Torso Length">
+ Torso: longitud
+ </string>
+ <string name="Torso Muscles">
+ Torso: musculatura
+ </string>
+ <string name="Torso Scrawny">
+ Torso flacucho
+ </string>
+ <string name="Unattached">
+ Largos
+ </string>
+ <string name="Uncreased">
+ Abiertos
+ </string>
+ <string name="Underbite">
+ Prognatismo
+ </string>
+ <string name="Unnatural">
+ No natural
+ </string>
+ <string name="Upper Bridge">
+ Puente: arriba
+ </string>
+ <string name="Upper Cheeks">
+ Mejillas: arriba
+ </string>
+ <string name="Upper Chin Cleft">
+ Barbilla: prominencia
+ </string>
+ <string name="Upper Eyelid Fold">
+ Párpados
+ </string>
+ <string name="Upturned">
+ Mucho
+ </string>
+ <string name="Very Red">
+ Del todo
+ </string>
+ <string name="Waist Height">
+ Cintura
+ </string>
+ <string name="Well-Fed">
+ Mofletes
+ </string>
+ <string name="White Hair">
+ Pelo blanco
+ </string>
+ <string name="Wide">
+ Ancho
+ </string>
+ <string name="Wide Back">
+ Completa
+ </string>
+ <string name="Wide Front">
+ Completa
+ </string>
+ <string name="Wide Lips">
+ Labios anchos
+ </string>
+ <string name="Wild">
+ Total
+ </string>
+ <string name="Wrinkles">
+ Arrugas
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Añadir a mis hitos
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Editar mis hitos
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ Ver más información de esta localización
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ Historial de mis localizaciones
+ </string>
+ <string name="UpdaterWindowTitle">
+ Actualizar [APP_NAME]
+ </string>
+ <string name="UpdaterNowUpdating">
+ Actualizando [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ Instalando [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Tu visor [APP_NAME] se está actualizando a la última versión. Llevará algún tiempo, paciencia.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Descargando la actualización...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Descargando la actualización
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Fallo en la descarga de la actualización
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Ha habido un error actualizando [APP_NAME]. Por favor, descarga la última versión desde www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Fallo al instalar la actualización
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Fallo al iniciar el visor
+ </string>
+ <string name="IM_logging_string">
+ -- Activado el registro de los mensajes instantáneos --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] está escribiendo...
+ </string>
+ <string name="Unnamed">
+ (sin nombre)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Moderado: por defecto, desactivada la voz)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Para esta llamada no está disponible el chat de texto.
+ </string>
+ <string name="IM_muted_text_label">
+ Un moderador del grupo ha desactivado tu chat de texto.
+ </string>
+ <string name="IM_default_text_label">
+ Pulsa aquí para enviar un mensaje instantáneo.
+ </string>
+ <string name="IM_to_label">
+ A
+ </string>
+ <string name="IM_moderator_label">
+ (Moderador)
</string>
- <string name="ScriptQuestionCautionChatGranted">
- &apos;[OBJECTNAME]&apos;, un objeto propiedad de &apos;[OWNERNAME]&apos;, localizado en [REGIONNAME] con la posición [REGIONPOS], ha recibido permiso para: [PERMISSIONS].
- </string>
- <string name="ScriptQuestionCautionChatDenied">
- A &apos;[OBJECTNAME]&apos;, un objeto propiedad de &apos;[OWNERNAME]&apos;, localizado en [REGIONNAME] con la posición [REGIONPOS], se le ha denegado el permiso para: [PERMISSIONS].
- </string>
- <string name="ScriptTakeMoney">
- Cogerle a usted dólares Linden (L$)
- </string>
- <string name="ActOnControlInputs">
- Actuar en sus controles de entrada
- </string>
- <string name="RemapControlInputs">
- Reconfigurar sus controles de entrada
- </string>
- <string name="AnimateYourAvatar">
- Ejecutar animaciones en su avatar
- </string>
- <string name="AttachToYourAvatar">
- Anexarse a su avatar
- </string>
- <string name="ReleaseOwnership">
- Anular la propiedad y que pase a ser público
- </string>
- <string name="LinkAndDelink">
- Enlazar y desenlazar de otros objetos
- </string>
- <string name="AddAndRemoveJoints">
- Añadir y quitar uniones con otros objetos
- </string>
- <string name="ChangePermissions">
- Cambiar sus permisos
- </string>
- <string name="TrackYourCamera">
- Seguir su cámara
- </string>
- <string name="ControlYourCamera">
- Controlar su cámara
- </string>
-
<string name="only_user_message">
Usted es el único usuario en esta sesión.
</string>
@@ -637,31 +3247,4 @@ Si sigue recibiendo este mensaje, contacte con el [SUPPORT_SITE].
<string name="close_on_no_ability">
Usted ya no tendrá más la capacidad de estar en la sesión de chat.
</string>
- <string name="AcctTypeResident">
- Residente
- </string>
- <string name="AcctTypeTrial">
- Prueba
- </string>
- <string name="AcctTypeCharterMember">
- Miembro fundador
- </string>
- <string name="AcctTypeEmployee">
- Empleado de Linden Lab
- </string>
- <string name="PaymentInfoUsed">
- Ha usado una forma de pago
- </string>
- <string name="PaymentInfoOnFile">
- Hay infor. de la forma de pago
- </string>
- <string name="NoPaymentInfoOnFile">
- Sin infor. de la forma de pago
- </string>
- <string name="AgeVerified">
- Edad verificada
- </string>
- <string name="NotAgeVerified">
- Edad no verificada
- </string>
</strings>
diff --git a/indra/newview/skins/default/xui/es/teleport_strings.xml b/indra/newview/skins/default/xui/es/teleport_strings.xml
index 6cf5437e3c..0a605277f2 100644
--- a/indra/newview/skins/default/xui/es/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/es/teleport_strings.xml
@@ -2,12 +2,12 @@
<teleport_messages>
<message_set name="errors">
<message name="invalid_tport">
- Ha habido un problema al procesar su petición de teleporte. Debe volver a iniciar sesión para poder teleportarse. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico:
-www.secondlife.com/support
+ Ha habido un problema al procesar tu petición de teleporte. Debes volver a iniciar sesión antes de poder teleportarte de nuevo.
+Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
</message>
<message name="invalid_region_handoff">
- Ha habido un problema al procesar su paso a otra región. Debe volver a iniciar sesión para poder pasar de región a región. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico:
-www.secondlife.com/support
+ Ha habido un problema al procesar tu paso a otra región. Debes volver a iniciar sesión para poder pasar de región a región.
+Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
</message>
<message name="blocked_tport">
Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema.
diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml
index 7d6d736c5e..21d0b6c10c 100644
--- a/indra/newview/skins/default/xui/fr/floater_about.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about.xml
@@ -8,7 +8,7 @@
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 à [HOSTNAME] ([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]]
</floater.string>
@@ -49,7 +49,7 @@ Version Vivox : [VIVOX_VERSION]
- Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant
+Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant
</text_editor>
</panel>
<panel label="Licences" name="licenses_panel">
@@ -61,7 +61,8 @@ Version Vivox : [VIVOX_VERSION]
FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
GL Copyright (C) 1999-2004 Brian Paul.
Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
- jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
+ jpeg2000 Copyright (C) 2001, David Taubman, The University of New South
+ Wales (UNSW)
jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
ogg/vorbis Copyright (C) 2001, Xiphophorus
OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
@@ -73,7 +74,8 @@ Version Vivox : [VIVOX_VERSION]
Tous droits réservés. Voir licenses.txt pour plus de détails.
- Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+ Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1
+ Annex C)
</text_editor>
</panel>
</tab_container>
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 4c97551e55..e7e2d8a0ee 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -12,7 +12,7 @@
<floater.string name="Remaining">
restantes
</floater.string>
- <tab_container name="landtab">
+ <tab_container name="landtab" tab_min_width="60">
<panel label="GÉNÉRAL" name="land_general_panel">
<panel.string name="new users only">
Nouveaux utilisateurs uniquement
@@ -71,7 +71,7 @@
Catégorie :
</text>
<text name="ContentRatingText">
- Adult
+ Adulte
</text>
<text name="Owner:">
Propriétaire :
@@ -99,7 +99,7 @@
Prix : [PRICE] L$ ([PRICE_PER_SQM] L$/m²)
</text>
<text name="SalePending"/>
- <button label="Vendez du terrain" label_selected="Vendre le terrain..." name="Sell Land..."/>
+ <button label="Vendre le terrain" label_selected="Vendre le terrain..." name="Sell Land..."/>
<text name="For sale to">
À vendre à : [BUYER]
</text>
@@ -128,10 +128,10 @@
<text name="DwellText">
0
</text>
- <button label="Acheter du terrain" label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/>
- <button label="Infos sur les scripts" name="Scripts..."/>
+ <button label="Acheter du terrain" label_selected="Acheter le terrain..." left_delta="60" name="Buy Land..." width="125"/>
+ <button label="Infos sur les scripts" name="Scripts..." width="110"/>
<button label="Acheter pour le groupe" label_selected="Acheter pour le groupe..." name="Buy For Group..."/>
- <button label="Acheter un pass" label_selected="Acheter un pass..." left="130" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
+ <button label="Acheter un pass" label_selected="Acheter un pass..." left_delta="-127" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
<button label="Abandonner le terrain" label_selected="Abandonner le terrain..." name="Abandon Land..."/>
<button label="Récupérer le terrain" label_selected="Redemander le terrain…" name="Reclaim Land..."/>
<button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
@@ -252,13 +252,13 @@ ou divisé.
</text>
<button label="Afficher" label_selected="Afficher" name="ShowOther" right="-135" width="60"/>
<button label="Retour" label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
- <text left="14" name="Selected / sat upon:" width="193">
+ <text left="14" name="Selected / sat upon:" width="220">
Sélectionnées/où quelqu&apos;un est assis :
</text>
- <text left="214" name="selected_objects_text" width="48">
+ <text left_delta="214" name="selected_objects_text" width="48">
[COUNT]
</text>
- <text left="4" name="Autoreturn" width="412">
+ <text left="4" name="Autoreturn" width="440">
Renvoi automatique des objets d&apos;autres résidents (minutes, 0 pour désactiver) :
</text>
<line_editor name="clean other time" right="-6" width="36"/>
@@ -270,9 +270,9 @@ ou divisé.
<name_list label="Plus récents" name="owner list">
<name_list.columns label="Type" name="type"/>
<name_list.columns name="online_status"/>
- <name_list.columns label="Nom" name="name"/>
- <name_list.columns label="Nombre" name="count"/>
- <name_list.columns label="Plus récents" name="mostrecent"/>
+ <name_list.columns label="Nom" name="name" width="100"/>
+ <name_list.columns label="Nombre" name="count" width="100"/>
+ <name_list.columns label="Plus récents" name="mostrecent" width="120"/>
</name_list>
</panel>
<panel label="OPTIONS" name="land_options_panel">
@@ -317,7 +317,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
</text>
<check_box label="Tous" left="285" name="edit objects check"/>
<check_box label="Groupe" left="395" name="edit group objects check"/>
- <text left="152" name="allow_label3" width="134">
+ <text left="152" name="allow_label3" width="150">
Laisser entrer des objets :
</text>
<check_box label="Tous" left="285" name="all object entry check"/>
@@ -402,7 +402,8 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
</text>
<line_editor left="97" name="url_description" tool_tip="Texte affiché à côté du bouton Jouer/Charger"/>
<text name="Media texture:">
- Remplacer la texture :
+ Remplacer la
+texture :
</text>
<texture_picker label="" left="97" name="media texture" tool_tip="Cliquez pour sélectionner une image"/>
<text name="replace_texture_help">
@@ -423,9 +424,11 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
<check_box label="En boucle" name="media_loop" tool_tip="Jouer le média en boucle. Lorsque le média aura fini de jouer, il recommencera."/>
</panel>
<panel label="SON" name="land_audio_panel">
- <text name="MusicURL:">
- URL de la musique :
+ <text bottom_delta="-28" name="MusicURL:">
+ URL de la
+musique :
</text>
+ <check_box label="Masquer l&apos;URL" name="hide_music_url" tool_tip="Si vous cochez cette option, l&apos;URL de musique sera masquée et invisible pour tous les utilisateurs non autorisés des informations de cette parcelle."/>
<text name="Sound:">
Son :
</text>
@@ -435,7 +438,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
</text>
<check_box label="Activer le chat vocal" name="parcel_enable_voice_channel"/>
<check_box label="Activer la voix (contrôlé par le domaine)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box label="Limiter le chat vocal à cette parcelle" name="parcel_enable_voice_channel_parcel"/>
+ <check_box label="Limiter le chat vocal à cette parcelle" name="parcel_enable_voice_channel_local"/>
</panel>
<panel label="ACCÈS" name="land_access_panel">
<panel.string name="access_estate_defined">
@@ -455,7 +458,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
<check_box label="Vérification de l&apos;âge [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Bannir les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
<check_box label="Autoriser l&apos;accès au groupe : [GROUP]" name="GroupCheck" tool_tip="Définir le groupe à l&apos;onglet Général."/>
<check_box label="Vendre des pass à :" name="PassCheck" tool_tip="Autoriser un accès temporaire à cette parcelle"/>
- <combo_box name="pass_combo">
+ <combo_box name="pass_combo" width="110">
<combo_box.item label="Tout le monde" name="Anyone"/>
<combo_box.item label="Groupe" name="Group"/>
</combo_box>
diff --git a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
index f7a796a508..e0cb0ef524 100644
--- a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
@@ -106,6 +106,9 @@ La longueur maximale est de [MAX_LENGTH] secondes.
<floater.string name="E_ST_NO_XLT_EMOTE">
Impossible de lire le nom emote.
</floater.string>
+ <floater.string name="E_ST_BAD_ROOT">
+ Nom de racine incorrect.
+ </floater.string>
<text name="name_label">
Nom :
</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
index e784bda2e5..65bb683e4c 100644
--- a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
@@ -20,7 +20,7 @@
</string>
<tab_container name="ResidentChooserTabs">
<panel label="Rechercher" name="SearchPanel">
- <text name="InstructSearchResidentName">
+ <text name="InstructSearchResidentName" width="240">
Saisissez une partie du nom du résident :
</text>
<button label="OK" label_selected="OK" name="Find"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
index 313c9496a2..ae8f926d8f 100644
--- a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
@@ -23,8 +23,8 @@
<texture_picker label="Œil" name="eyes_iris"/>
<texture_picker label="Alpha yeux" name="eyes_alpha"/>
<texture_picker label="Haut du corps" name="upper-baked"/>
- <texture_picker label="Peinture corporelle haut" name="upper_bodypaint"/>
- <texture_picker label="Sous-vêtements (homme)" name="upper_undershirt"/>
+ <texture_picker label="Peinture corporelle &#10;haut" name="upper_bodypaint"/>
+ <texture_picker label="Débardeur" name="upper_undershirt"/>
<texture_picker label="Gants" name="upper_gloves"/>
<texture_picker label="Chemise" name="upper_shirt"/>
<texture_picker label="Veste (haut)" name="upper_jacket"/>
@@ -32,7 +32,7 @@
<texture_picker label="Tatouage haut" name="upper_tattoo"/>
<texture_picker label="Bas du corps" name="lower-baked"/>
<texture_picker label="Peinture corporelle bas" name="lower_bodypaint"/>
- <texture_picker label="Sous-vêtements (femme)" name="lower_underpants"/>
+ <texture_picker label="Caleçon" name="lower_underpants"/>
<texture_picker label="Chaussettes" name="lower_socks"/>
<texture_picker label="Chaussures" name="lower_shoes"/>
<texture_picker label="Pantalon" name="lower_pants"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_beacons.xml b/indra/newview/skins/default/xui/fr/floater_beacons.xml
index 778d92793b..d61115a2db 100644
--- a/indra/newview/skins/default/xui/fr/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/fr/floater_beacons.xml
@@ -2,7 +2,7 @@
<floater name="beacons" title="BALISES">
<panel name="beacons_panel">
<text name="label_show">
- Afficher :
+ Afficher :
</text>
<check_box label="Balises" name="beacons"/>
<check_box label="Surbrillances" name="highlights"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
index 5ea36d8505..c7437c4603 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -7,7 +7,8 @@
Vous avez besoin de plus de L$
</text>
<text name="contacting">
- En train de contacter le Lindex...
+ En train de contacter
+le Lindex...
</text>
<text left="5" name="info_buying">
Acheter des L$
@@ -59,7 +60,7 @@
</text>
<button label="Acheter" name="buy_btn"/>
<button label="Annuler" name="cancel_btn"/>
- <text left="5" name="info_cannot_buy" right="-5">
+ <text left="5" name="info_cannot_buy" width="200" right="-5">
Achat impossible
</text>
<button label="Accéder au Web" name="error_web"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_land.xml b/indra/newview/skins/default/xui/fr/floater_buy_land.xml
index 1d7eeca3c4..7c9a31a4c3 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_land.xml
@@ -1,5 +1,132 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="buy land" title="ACHETER DU TERRAIN">
+ <floater.string name="can_resell">
+ Peut être revendu.
+ </floater.string>
+ <floater.string name="can_not_resell">
+ Ne peut pas être revendu.
+ </floater.string>
+ <floater.string name="can_change">
+ Peut être fusionné ou divisé.
+ </floater.string>
+ <floater.string name="can_not_change">
+ Ne peut pas être fusionné ou divisé.
+ </floater.string>
+ <floater.string name="cant_buy_for_group">
+ Vous n&apos;avez pas la permission d&apos;acheter de terrain pour votre groupe.
+ </floater.string>
+ <floater.string name="no_land_selected">
+ Aucun terrain sélectionné.
+ </floater.string>
+ <floater.string name="multiple_parcels_selected">
+ Vous avez sélectionné plusieurs parcelles.
+Sélectionnez une zone plus petite.
+ </floater.string>
+ <floater.string name="no_permission">
+ Vous n&apos;avez pas la permission d&apos;acheter de terrain pour votre groupe.
+ </floater.string>
+ <floater.string name="parcel_not_for_sale">
+ La parcelle sélectionnée n&apos;est pas à vendre.
+ </floater.string>
+ <floater.string name="group_already_owns">
+ La parcelle appartient déjà au groupe.
+ </floater.string>
+ <floater.string name="you_already_own">
+ La parcelle vous appartient déjà.
+ </floater.string>
+ <floater.string name="set_to_sell_to_other">
+ La parcelle sélectionnée doit déjà être vendue à quelqu&apos;un d&apos;autre.
+ </floater.string>
+ <floater.string name="no_public_land">
+ Il n&apos;y a pas de terrain public dans cette zone.
+ </floater.string>
+ <floater.string name="not_owned_by_you">
+ Le terrain sélectionné appartient à quelqu&apos;un d&apos;autre.
+Sélectionnez une zone plus petite.
+ </floater.string>
+ <floater.string name="processing">
+ Achat en cours de traitement...
+
+(Veuillez patienter quelques instants.)
+ </floater.string>
+ <floater.string name="fetching_error">
+ Une erreur s&apos;est produite pendant le traitement de l&apos;achat du terrain.
+ </floater.string>
+ <floater.string name="buying_will">
+ Si vous achetez ce terrain :
+ </floater.string>
+ <floater.string name="buying_for_group">
+ Si vous achetez le terrain pour le groupe :
+ </floater.string>
+ <floater.string name="cannot_buy_now">
+ Impossible d&apos;acheter maintenant :
+ </floater.string>
+ <floater.string name="not_for_sale">
+ Pas à vendre :
+ </floater.string>
+ <floater.string name="none_needed">
+ aucun besoin
+ </floater.string>
+ <floater.string name="must_upgrade">
+ Pour posséder du terrain, vous devez avoir un niveau de compte supérieur.
+ </floater.string>
+ <floater.string name="cant_own_land">
+ Avec votre compte, vous pouvez posséder du terrain.
+ </floater.string>
+ <floater.string name="land_holdings">
+ Vous détenez [BUYER] m² de terrain.
+ </floater.string>
+ <floater.string name="pay_to_for_land">
+ Payez [AMOUNT] L$ à [SELLER] pour ce terrain
+ </floater.string>
+ <floater.string name="buy_for_US">
+ Achetez [AMOUNT] L$ pour environ [LOCAL_AMOUNT],
+ </floater.string>
+ <floater.string name="parcel_meters">
+ Cette parcelle fait [AMOUNT] m²
+ </floater.string>
+ <floater.string name="premium_land">
+ C&apos;est un terrain premium, [AMOUNT] m².
+ </floater.string>
+ <floater.string name="discounted_land">
+ Ce terrain est en solde, [AMOUNT] m².
+ </floater.string>
+ <floater.string name="meters_supports_object">
+ [AMOUNT] m²
+prend en charge [AMOUNT2] objets
+ </floater.string>
+ <floater.string name="sold_with_objects">
+ vendu avec objets
+ </floater.string>
+ <floater.string name="sold_without_objects">
+ objets non inclus
+ </floater.string>
+ <floater.string name="info_price_string">
+ [PRICE] L$
+([PRICE_PER_SQM] L$/m²)
+[SOLD_WITH_OBJECTS]
+ </floater.string>
+ <floater.string name="insufficient_land_credits">
+ Ce groupe, [GROUP], aura besoin de suffisamment de crédit pour payer les frais d&apos;occupation de terrain avant que l&apos;achat de cette parcelle ne soit finalisé.
+ </floater.string>
+ <floater.string name="have_enough_lindens">
+ Vous avez [AMOUNT] L$, ce qui est suffisant pour acheter ce terrain.
+ </floater.string>
+ <floater.string name="not_enough_lindens">
+ Vous n&apos;avez que [AMOUNT] L$ et vous avez besoin de [AMOUNT2] L$ de plus.
+ </floater.string>
+ <floater.string name="balance_left">
+ Après cet achat, il vous restera [AMOUNT] L$.
+ </floater.string>
+ <floater.string name="balance_needed">
+ Pour avoir les moyens d&apos;acquérir ce terrain, vous devez acheter au moins [AMOUNT] L$.
+ </floater.string>
+ <floater.string name="no_parcel_selected">
+ (aucune parcelle sélectionnée)
+ </floater.string>
+ <floater.string name="icon_PG" value="Parcel_PG_Dark"/>
+ <floater.string name="icon_M" value="Parcel_M_Dark"/>
+ <floater.string name="icon_R" value="Parcel_R_Dark"/>
<text name="region_name_label">
Région :
</text>
@@ -37,10 +164,10 @@
Vous devez accepter le règlement du domaine :
</text>
<text left="470" name="covenant_timestamp_text"/>
- <text_editor name="covenant_editor">
+ <text_editor left="510" name="covenant_editor">
Chargement...
</text_editor>
- <check_box label="J&apos;accepte le règlement ci-dessus." name="agree_covenant"/>
+ <check_box label="J&apos;accepte le règlement ci-dessus." left="510" name="agree_covenant"/>
<text name="info_parcel_label">
Parcelle :
</text>
@@ -79,7 +206,7 @@ vendu avec objets
<combo_box.item label="7,50 US$/mois, facturation trimestrielle" name="US$7.50/month,billedquarterly"/>
<combo_box.item label="6,00 US$/mois, facturation annuelle" name="US$6.00/month,billedannually"/>
</combo_box>
- <text name="land_use_action">
+ <text follows="top|left" font="SansSerifBig" height="16" layout="topleft" left="72" length="1" name="land_use_action" right="500" top="284" type="string" width="400">
Augmentez vos frais d&apos;occupation de terrain à 40 US$/mois.
</text>
<text name="land_use_reason">
@@ -107,131 +234,4 @@ Cette parcelle fait 512 m².
<check_box label="Enlever [AMOUNT] m² de contribution du groupe." name="remove_contribution"/>
<button label="Acheter" name="buy_btn"/>
<button label="Annuler" name="cancel_btn"/>
- <string name="can_resell">
- Peut être revendu.
- </string>
- <string name="can_not_resell">
- Ne peut pas être revendu.
- </string>
- <string name="can_change">
- Peut être fusionné ou divisé.
- </string>
- <string name="can_not_change">
- Ne peut pas être fusionné ou divisé.
- </string>
- <string name="cant_buy_for_group">
- Vous n&apos;avez pas la permission d&apos;acheter de terrain pour votre groupe.
- </string>
- <string name="no_land_selected">
- Aucun terrain sélectionné.
- </string>
- <string name="multiple_parcels_selected">
- Vous avez sélectionné plusieurs parcelles.
-Sélectionnez une zone plus petite.
- </string>
- <string name="no_permission">
- Vous n&apos;avez pas la permission d&apos;acheter de terrain pour votre groupe.
- </string>
- <string name="parcel_not_for_sale">
- La parcelle sélectionnée n&apos;est pas à vendre.
- </string>
- <string name="group_already_owns">
- La parcelle appartient déjà au groupe.
- </string>
- <string name="you_already_own">
- La parcelle vous appartient déjà.
- </string>
- <string name="set_to_sell_to_other">
- La parcelle sélectionnée doit déjà être vendue à quelqu&apos;un d&apos;autre.
- </string>
- <string name="no_public_land">
- Il n&apos;y a pas de terrain public dans cette zone.
- </string>
- <string name="not_owned_by_you">
- Le terrain sélectionné appartient à quelqu&apos;un d&apos;autre.
-Sélectionnez une zone plus petite.
- </string>
- <string name="processing">
- Achat en cours de traitement...
-
-(Veuillez patienter quelques instants.)
- </string>
- <string name="fetching_error">
- Une erreur s&apos;est produite pendant le traitement de l&apos;achat du terrain.
- </string>
- <string name="buying_will">
- Si vous achetez ce terrain :
- </string>
- <string name="buying_for_group">
- Si vous achetez le terrain pour le groupe :
- </string>
- <string name="cannot_buy_now">
- Impossible d&apos;acheter maintenant :
- </string>
- <string name="not_for_sale">
- Pas à vendre :
- </string>
- <string name="none_needed">
- aucun besoin
- </string>
- <string name="must_upgrade">
- Pour posséder du terrain, vous devez avoir un niveau de compte supérieur.
- </string>
- <string name="cant_own_land">
- Avec votre compte, vous pouvez posséder du terrain.
- </string>
- <string name="land_holdings">
- Vous détenez [BUYER] m² de terrain.
- </string>
- <string name="pay_to_for_land">
- Payez [AMOUNT] L$ à [SELLER] pour ce terrain
- </string>
- <string name="buy_for_US">
- Achetez [AMOUNT] L$ pour environ [LOCAL_AMOUNT],
- </string>
- <string name="parcel_meters">
- Cette parcelle fait [AMOUNT] m²
- </string>
- <string name="premium_land">
- C&apos;est un terrain premium, [AMOUNT] m².
- </string>
- <string name="discounted_land">
- Ce terrain est en solde, [AMOUNT] m².
- </string>
- <string name="meters_supports_object">
- [AMOUNT] m²
-prend en charge [AMOUNT2] objets
- </string>
- <string name="sold_with_objects">
- vendu avec objets
- </string>
- <string name="sold_without_objects">
- objets non inclus
- </string>
- <string name="info_price_string">
- [PRICE] L$
-([PRICE_PER_SQM] L$/m²)
-[SOLD_WITH_OBJECTS]
- </string>
- <string name="insufficient_land_credits">
- Ce groupe, [GROUP], aura besoin de suffisamment de crédit pour payer les frais d&apos;occupation de terrain avant que l&apos;achat de cette parcelle ne soit finalisé.
- </string>
- <string name="have_enough_lindens">
- Vous avez [AMOUNT] L$, ce qui est suffisant pour acheter ce terrain.
- </string>
- <string name="not_enough_lindens">
- Vous n&apos;avez que [AMOUNT] L$ et vous avez besoin de [AMOUNT2] L$ de plus.
- </string>
- <string name="balance_left">
- Après cet achat, il vous restera [AMOUNT] L$.
- </string>
- <string name="balance_needed">
- Pour avoir les moyens d&apos;acquérir ce terrain, vous devez acheter au moins [AMOUNT] L$.
- </string>
- <string name="no_parcel_selected">
- (aucune parcelle sélectionnée)
- </string>
- <string name="buy_currency">
- Acheter [LINDENS] L$ pour environ [USD] US$
- </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_color_picker.xml b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
index c509a4783e..8d7fe76b35 100644
--- a/indra/newview/skins/default/xui/fr/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
@@ -25,7 +25,7 @@
<text left="8" name="Current color:">
Couleur actuelle :
</text>
- <text left="8" name="(Drag below to save.)" width="114">
+ <text left="8" name="(Drag below to save.)" width="220">
(Faire glisser dessous pour enregistrer.)
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_customize.xml b/indra/newview/skins/default/xui/fr/floater_customize.xml
index a1cd568571..82b54aeffc 100644
--- a/indra/newview/skins/default/xui/fr/floater_customize.xml
+++ b/indra/newview/skins/default/xui/fr/floater_customize.xml
@@ -156,8 +156,8 @@
<panel label="Chemise" name="Shirt">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
- <button label="Créer une chemise" label_selected="Créer une chemise" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
+ <button label="Créer une chemise" label_selected="Créer une chemise" name="Create New"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
<button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/>
@@ -189,8 +189,8 @@
<panel label="Pantalon" name="Pants">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
- <button label="Créer un pantalon" label_selected="Créer un pantalon" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
+ <button label="Créer un pantalon" label_selected="Créer un pantalon" name="Create New"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
<button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/>
@@ -238,6 +238,7 @@
<text name="not worn instructions">
Pour changer de chaussures, faites-en glisser une paire de votre inventaire à votre avatar. Vous pouvez aussi en créer des nouvelles et les porter.
</text>
+ <button label="Créer des chaussures" label_selected="Créer des chaussures" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas la permission de modifier cet objet.
</text>
@@ -246,7 +247,6 @@
</text>
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
- <button label="Créer des chaussures" label_selected="Créer des chaussures" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -271,6 +271,7 @@
<text name="not worn instructions">
Pour changer de chaussettes, faites-en glisser une paire à partir de votre inventaire. Vous pouvez aussi en créer des nouvelles et les porter.
</text>
+ <button label="Créer des chaussettes" label_selected="Créer des chaussettes" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas la permission de modifier cet objet.
</text>
@@ -279,7 +280,6 @@
</text>
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
- <button label="Créer des chaussettes" label_selected="Créer des chaussettes" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -304,6 +304,7 @@
<text name="not worn instructions">
Pour changer de veste, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter.
</text>
+ <button label="Créer une veste" label_selected="Créer une veste" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas la permission de modifier cet objet.
</text>
@@ -313,7 +314,6 @@
<texture_picker label="Tissu (dessus)" name="Upper Fabric" tool_tip="Cliquez pour sélectionner une image" width="81"/>
<texture_picker label="Tissu (dessous)" name="Lower Fabric" tool_tip="Cliquez pour sélectionner une image" width="81"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="81"/>
- <button label="Créer une veste" label_selected="Créer une veste" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -338,6 +338,7 @@
<text name="not worn instructions">
Pour changer de gants, faites-en glisser une paire à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter.
</text>
+ <button label="Créer des gants" label_selected="Créer des gants" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas la permission de modifier cet objet.
</text>
@@ -346,13 +347,12 @@
</text>
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
- <button label="Créer des gants" label_selected="Créer des gants" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
<button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/>
</panel>
- <panel label="Sous-vêtements (haut)" name="Undershirt">
+ <panel label="Débardeur" name="Undershirt">
<text name="title">
[DESC]
</text>
@@ -363,30 +363,29 @@
[DESC]: en cours de chargement...
</text>
<text name="title_not_worn">
- [DESC]: non portés
+ [DESC]: non porté
</text>
<text name="path">
Emplacement : [PATH]
</text>
<text name="not worn instructions">
- Pour changer de sous-vêtements (homme), faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter.
+ Pour changer de débardeur, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter.
</text>
+ <button label="Créer un débardeur" label_selected="Créer un débardeur" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas la permission de modifier cet objet.
</text>
<text bottom="-470" name="Item Action Label" right="92">
- Sous-vêtements
-(haut) :
+ Débardeur :
</text>
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
- <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
<button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/>
</panel>
- <panel label="Sous-vêtements (bas)" name="Underpants">
+ <panel label="Caleçon" name="Underpants">
<text name="title">
[DESC]
</text>
@@ -397,24 +396,23 @@
[DESC]: en cours de chargement...
</text>
<text name="title_not_worn">
- [DESC]: non portés
+ [DESC]: non porté
</text>
<text name="path">
Emplacement : [PATH]
</text>
<text name="not worn instructions">
- Pour changer de sous-vêtements (femme), faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter.
+ Pour changer de caleçon, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter.
</text>
+ <button label="Créer un caleçon" label_selected="Créer un caleçon" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas la permission de modifier cet objet.
</text>
<text bottom="-470" name="Item Action Label" right="92">
- Sous-vêtements
-(bas) :
+ Caleçon :
</text>
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
- <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -439,6 +437,7 @@
<text name="not worn instructions">
Pour changer de jupe, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter.
</text>
+ <button label="Créer une jupe" label_selected="Créer une jupe" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas la permission de modifier cet objet.
</text>
@@ -447,13 +446,12 @@
</text>
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
- <button label="Créer une jupe" label_selected="Créer une jupe" name="Create New"/>
<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
<button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/>
</panel>
- <panel label="Alpha" name="Alpha">
+ <panel label="Tatouage" name="Tattoo">
<text name="title">
[DESC]
</text>
@@ -470,26 +468,24 @@
Dans [PATH]
</text>
<text name="not worn instructions">
- Pour changer de masque alpha, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter.
+ Pour changer de tatouage, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter.
</text>
+ <button label="Créer un nouveau tatouage" label_selected="Créer un nouveau tatouage" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas le droit de modifier cet objet.
</text>
<text name="Item Action Label">
- Alpha :
+ Tatouage :
</text>
- <texture_picker label="Alpha bas" name="Lower Alpha" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Alpha haut" name="Upper Alpha" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Alpha tête" name="Head Alpha" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Alpha yeux" name="Eye Alpha" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Alpha cheveux" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/>
- <button label="Créer un nouvel alpha" label_selected="Créer un nouvel alpha" name="Create New"/>
+ <texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
<button label="Enlever" label_selected="Enlever" name="Take Off"/>
<button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/>
<button label="Annuler modification" label_selected="Annuler modification" name="Revert"/>
</panel>
- <panel label="Tatouage" name="Tattoo">
+ <panel label="Alpha" name="Alpha">
<text name="title">
[DESC]
</text>
@@ -506,18 +502,20 @@
Dans [PATH]
</text>
<text name="not worn instructions">
- Pour changer de tatouage, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter.
+ Pour changer de masque alpha, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter.
</text>
+ <button label="Créer un nouvel alpha" label_selected="Créer un nouvel alpha" name="Create New"/>
<text name="no modify instructions">
Vous n&apos;avez pas le droit de modifier cet objet.
</text>
<text name="Item Action Label">
- Tatouage :
+ Alpha :
</text>
- <texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
- <button label="Créer un nouveau tatouage" label_selected="Créer un nouveau tatouage" name="Create New"/>
+ <texture_picker label="Alpha bas" name="Lower Alpha" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Alpha haut" name="Upper Alpha" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Alpha tête" name="Head Alpha" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Alpha yeux" name="Eye Alpha" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Alpha cheveux" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/>
<button label="Enlever" label_selected="Enlever" name="Take Off"/>
<button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
<button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/>
@@ -525,7 +523,7 @@
</panel>
</tab_container>
<scroll_container left="251" name="panel_container"/>
- <button label="Infos sur les scripts" label_selected="Infos sur les scripts" name="script_info"/>
+ <button label="Infos sur les scripts" label_selected="Infos sur les scripts" name="script_info" tool_tip="Afficher les scripts attachés à votre avatar"/>
<button label="Créer tenue" label_selected="Créer une tenue..." name="make_outfit_btn"/>
<button label="Annuler" label_selected="Annuler" name="Cancel"/>
<button label="OK" label_selected="OK" name="Ok"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
index 0b36b7b8ca..15cc6cd1ba 100644
--- a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
@@ -59,14 +59,14 @@
</text>
<button label="Ajouter clé" label_selected="Ajouter clé" name="WLAddKey" width="89" bottom="-45" />
<button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey" width="89" bottom="-70" />
- <text name="WLCurKeyFrameText">
+ <text name="WLCurKeyFrameText" width="170">
Réglages des images-clés :
</text>
- <text name="WLCurKeyTimeText">
+ <text name="WLCurKeyTimeText" width="170">
Heure de la clé :
</text>
- <spinner label="Heure" name="WLCurKeyHour" />
- <spinner label="Min" name="WLCurKeyMin" />
+ <spinner label="Heure" name="WLCurKeyHour" label_width="80" width="74"/>
+ <spinner label="Min" name="WLCurKeyMin" label_width="80"/>
<text name="WLCurKeyTimeText2">
Préréglages clés :
</text>
@@ -78,13 +78,13 @@
<text name="DayCycleText2">
Durée du cycle :
</text>
- <spinner label="Heure" name="WLLengthOfDayHour" />
+ <spinner label="Heure" name="WLLengthOfDayHour" label_width="80" width="74" />
<spinner label="Min" name="WLLengthOfDayMin" />
- <spinner label="S" name="WLLengthOfDaySec" label_width="10" width="50" left_delta="75"/>
- <text name="DayCycleText3">
+ <spinner label="S" name="WLLengthOfDaySec" label_width="10" width="50" left_delta="95"/>
+ <text name="DayCycleText3" left="280" width="200">
Prévisualiser :
</text>
- <button label="Jouer" label_selected="Jouer" name="WLAnimSky" />
+ <button label="Jouer" label_selected="Jouer" name="WLAnimSky" left_delta="90"/>
<button label="Stop !" label_selected="Stop" name="WLStopAnimSky" />
<button label="Utiliser heure domaine" label_selected="Aller heure domaine"
name="WLUseLindenTime" />
diff --git a/indra/newview/skins/default/xui/fr/floater_env_settings.xml b/indra/newview/skins/default/xui/fr/floater_env_settings.xml
index 505c9236c7..dd714e85b6 100644
--- a/indra/newview/skins/default/xui/fr/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/fr/floater_env_settings.xml
@@ -3,7 +3,7 @@
<floater.string name="timeStr">
[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
</floater.string>
- <text bottom="-45" name="EnvTimeText">
+ <text bottom="-45" name="EnvTimeText" top="29">
Heure de la
journée
</text>
@@ -14,7 +14,7 @@ journée
Couverture
nuageuse
</text>
- <text bottom="-45" name="EnvWaterColorText">
+ <text bottom="-45" name="EnvWaterColorText" top="29">
Couleur de
l&apos;eau
</text>
@@ -23,7 +23,7 @@ l&apos;eau
Brouillard
dans l&apos;eau
</text>
- <button bottom="-144" label="Utiliser heure du domaine" name="EnvUseEstateTimeButton" width="145"/>
+ <button bottom="-144" label="Utiliser heure du domaine" name="EnvUseEstateTimeButton" width="152"/>
<button label="Ciel avancé" left="162" name="EnvAdvancedSkyButton" width="145"/>
<button label="Eau avancée" left="316" name="EnvAdvancedWaterButton" width="145"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_event.xml b/indra/newview/skins/default/xui/fr/floater_event.xml
new file mode 100644
index 0000000000..02192c65ec
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_event.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Événement" name="Event" title="DÉTAILS SUR L&apos;ÉVÉNEMENT">
+ <floater.string name="none">
+ aucun
+ </floater.string>
+ <floater.string name="notify">
+ Prévenir
+ </floater.string>
+ <floater.string name="dont_notify">
+ Ne pas prévenir
+ </floater.string>
+ <layout_stack name="layout">
+ <layout_panel name="profile_stack">
+ <text name="event_name">
+ Nameless Event...of Doom! De doom! Doom doom.
+ </text>
+ <text name="event_category">
+ (pas de catégorie)
+ </text>
+ <text name="event_runby_label">
+ Organisé par :
+ </text>
+ <text initial_value="(récupération en cours)" name="event_runby"/>
+ <text name="event_date">
+ 10/10/2010
+ </text>
+ <text name="event_duration">
+ 1 heure
+ </text>
+ <text name="event_cover">
+ Gratuit
+ </text>
+ <text name="event_location_label">
+ Lieu :
+ </text>
+ <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
+ <text name="rating_label" value="Catégorie :"/>
+ <text name="rating_value" value="inconnu"/>
+ </layout_panel>
+ <layout_panel name="button_panel">
+ <button name="create_event_btn" tool_tip="Créer un événement"/>
+ <button name="god_delete_event_btn" tool_tip="Supprimer l&apos;événement"/>
+ <button label="Me prévenir" name="notify_btn"/>
+ <button label="Téléporter" name="teleport_btn"/>
+ <button label="Carte" name="map_btn"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
index 0dedf499bb..187814eba2 100644
--- a/indra/newview/skins/default/xui/fr/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
@@ -12,7 +12,7 @@
<line_editor left="85" name="region name" width="198"/>
<check_box label="Initiation" name="check prelude" tool_tip="Définir cette région comme zone d&apos;initiation."/>
<check_box label="Soleil fixe" name="check fixed sun" tool_tip="Définir la position du soleil (comme dans Région et Domaine &gt; Terrain.)"/>
- <check_box height="32" label="Réinitialiser le domicile à la téléportation" name="check reset home" tool_tip="Quand les résidents s&apos;en vont par téléportation, réinitialisez leur domicile sur l&apos;emplacement de destination."/>
+ <check_box height="32" label="Réinitialiser le domicile à la téléportation" name="check reset home" tool_tip="Quand les résidents s&apos;en vont par téléportation, réinitialisez leur domicile sur l&apos;emplacement de destination."/>
<check_box bottom_delta="-32" label="Visible" name="check visible" tool_tip="Cochez pour rendre la région visible aux non-admins."/>
<check_box label="Dégâts" name="check damage" tool_tip="Cochez pour activer les dégâts dans cette région."/>
<check_box label="Bloquer le suivi de trafic" name="block dwell" tool_tip="Cochez pour que la région ne comptabilise pas le trafic."/>
@@ -48,8 +48,8 @@
<spinner left="320" name="land cost" width="70"/>
<button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh" tool_tip="Cliquez ici pour rafraîchir les informations ci-dessus."/>
<button label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/>
- <button label="Sélectionner une région" label_selected="Sélectionner une région" left="136" name="Select Region" tool_tip="Sélectionnez une région entière à l&apos;aide de l&apos;outil Terrain." width="140"/>
- <button label="Sauvegarde automatique" label_selected="Sauvegarde automatique" left="136" name="Autosave now" tool_tip="Sauvegarde automatique au format gzip." width="140"/>
+ <button label="Sélectionner une région" label_selected="Sélectionner une région" left="136" name="Select Region" tool_tip="Sélectionnez une région entière à l&apos;aide de l&apos;outil Terrain." width="160"/>
+ <button label="Sauvegarde automatique" label_selected="Sauvegarde automatique" left="136" name="Autosave now" tool_tip="Sauvegarde automatique au format gzip." width="160"/>
</panel>
<panel label="Objets" name="objects">
<panel.string name="no_target">
diff --git a/indra/newview/skins/default/xui/fr/floater_help_browser.xml b/indra/newview/skins/default/xui/fr/floater_help_browser.xml
index 1170d1d87b..11caca640c 100644
--- a/indra/newview/skins/default/xui/fr/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/fr/floater_help_browser.xml
@@ -1,14 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_help_browser" title="NAVIGATEUR D&apos;AIDE">
- <floater.string name="home_page_url">
- http://fr.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://fr.secondlife.com/support
+ <floater.string name="loading_text">
+ Chargement…
</floater.string>
<layout_stack name="stack1">
- <layout_panel name="external_controls">
- <button label="Ouvrir dans mon navigateur Web" name="open_browser"/>
- </layout_panel>
+ <layout_panel name="external_controls"/>
</layout_stack>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_inspect.xml b/indra/newview/skins/default/xui/fr/floater_inspect.xml
index de74f47bcf..9b1bdf106d 100644
--- a/indra/newview/skins/default/xui/fr/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inspect.xml
@@ -7,7 +7,7 @@
<scroll_list.columns label="Nom" name="object_name"/>
<scroll_list.columns label="Propriétaire" name="owner_name"/>
<scroll_list.columns label="Créateur" name="creator_name"/>
- <scroll_list.columns label="Date de création" name="creation_date"/>
+ <scroll_list.columns label="Date de création" name="creation_date" width="114"/>
</scroll_list>
<button label="Voir le profil du propriétaire..." name="button owner" tool_tip="Voir le profil du propriétaire de l&apos;objet en surbrillance" width="172"/>
<button label="Voir le profil du créateur..." left="192" name="button creator" tool_tip="Voir le profil du créateur de l&apos;objet en surbrillance" width="172"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory.xml b/indra/newview/skins/default/xui/fr/floater_inventory.xml
index 1f8b7f37ad..200c07e522 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Inventory" title="INVENTAIRE">
+<floater name="Inventory" title="MON INVENTAIRE">
<floater.string name="Title">
- Inventaire
+ MON INVENTAIRE
</floater.string>
<floater.string name="TitleFetching">
- Inventaire (Récupération de [ITEM_COUNT] articles en cours) [FILTER]
+ MON INVENTAIRE (récupération de [ITEM_COUNT] articles en cours) [FILTER]
</floater.string>
<floater.string name="TitleCompleted">
- Inventaire ([ITEM_COUNT] articles) [FILTER]
+ MON INVENTAIRE ([ITEM_COUNT] articles) [FILTER]
</floater.string>
<floater.string name="Fetched">
Récupéré
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
index b0d5df161c..fca1a329a2 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
@@ -47,11 +47,11 @@
<check_box label="Éditer" name="CheckOwnerModify"/>
<check_box label="Copier" name="CheckOwnerCopy"/>
<check_box label="Revendre" name="CheckOwnerTransfer"/>
- <text name="AnyoneLabel">
+ <text name="AnyoneLabel" width="80">
N&apos;importe qui :
</text>
<check_box label="Copier" name="CheckEveryoneCopy"/>
- <text name="GroupLabel">
+ <text name="GroupLabel" width="80">
Groupe :
</text>
<check_box label="Partager" name="CheckShareWithGroup"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
index 52f8597dc2..6cd886d4b9 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
@@ -13,7 +13,7 @@
<check_box label="Photos" name="check_snapshot"/>
<button label="Tout" label_selected="Tout" name="All" width="70"/>
<button bottom_delta="0" label="Aucun" label_selected="Aucun" left="83" name="None" width="70"/>
- <check_box bottom_delta="-20" label="Toujours montrer les dossiers" name="check_show_empty"/>
+ <check_box bottom_delta="-20" label="Toujours montrer les dossiers" name="check_show_empty"/>
<check_box bottom_delta="-36" label="Depuis la déconnexion" name="check_since_logoff"/>
<text name="- OR -">
Ou il y a...
diff --git a/indra/newview/skins/default/xui/fr/floater_joystick.xml b/indra/newview/skins/default/xui/fr/floater_joystick.xml
index d3a1b6c61b..e00f9564e8 100644
--- a/indra/newview/skins/default/xui/fr/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/fr/floater_joystick.xml
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Joystick" title="CONFIGURATION DU JOYSTICK">
<check_box label="Activer :" name="enable_joystick"/>
- <spinner label="Mapping axe des X " name="JoystickAxis1"/>
- <spinner label="Mapping axe des Y" name="JoystickAxis2"/>
- <spinner label="Mapping axe des Z" name="JoystickAxis0"/>
- <spinner label="Mapping du tangage" label_width="111" left="8" name="JoystickAxis4" width="152"/>
- <spinner label="Mapping du lacet" name="JoystickAxis5"/>
- <spinner label="Mapping du roulis" name="JoystickAxis3"/>
- <spinner label="Mapping du zoom" name="JoystickAxis6"/>
+ <spinner label="Mapping axe des X " name="JoystickAxis1" left="20" width="154" label_width="130"/>
+ <spinner label="Mapping axe des Y" name="JoystickAxis2" width="154" label_width="130"/>
+ <spinner label="Mapping axe des Z" name="JoystickAxis0" width="154" label_width="130"/>
+ <spinner label="Mapping du tangage" label_width="136" left="20" name="JoystickAxis4" width="154"/>
+ <spinner label="Mapping du lacet" name="JoystickAxis5" width="154" label_width="130"/>
+ <spinner label="Mapping du roulis" name="JoystickAxis3" width="154" label_width="130"/>
+ <spinner label="Mapping du zoom" name="JoystickAxis6" left="20" width="154" label_width="130"/>
<check_box label="Zoom direct" name="ZoomDirect"/>
- <check_box label="Curseur 3D" name="Cursor3D"/>
- <check_box label="Niveau automatique" name="AutoLeveling"/>
+ <check_box label="Curseur 3D" name="Cursor3D" left="300"/>
+ <check_box label="Niveau automatique" name="AutoLeveling" left="400"/>
<text name="Control Modes:">
Modes de contrôle :
</text>
@@ -44,13 +44,13 @@
<text name="ZDeadZone">
Zone neutre Z
</text>
- <text left="4" name="PitchDeadZone" width="110">
- Zone neutre Tangage
+ <text left="4" name="PitchDeadZone" width="116">
+ Zone neutre tangage
</text>
- <text name="YawDeadZone">
+ <text name="YawDeadZone" left="10" width="104">
Zone neutre lacet
</text>
- <text name="RollDeadZone">
+ <text name="RollDeadZone" left="10" width="104">
Zone neutre roulis
</text>
<text name="Feathering">
@@ -59,7 +59,7 @@
<text name="ZoomScale2">
Échelle du zoom
</text>
- <text left="6" name="ZoomDeadZone" width="110">
+ <text left="6" name="ZoomDeadZone" width="120">
Zone neutre du zoom
</text>
<button label="Options par défaut du joystick" name="SpaceNavigatorDefaults"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
index b0a2f92f7c..52b1a16bbc 100644
--- a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
@@ -7,9 +7,9 @@
Exécution en cours
</floater.string>
<floater.string name="Title">
- Script : [NAME]
+ SCRIPT : [NAME]
</floater.string>
<button label="Réinitialiser" label_selected="Réinitialiser" left="390" name="Reset" width="100"/>
<check_box initial_value="true" label="Exécution en cours" left="4" name="running"/>
- <check_box initial_value="true" label="Mono" left="130" name="mono"/>
+ <check_box initial_value="true" label="Mono" left_delta="160" name="mono"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
index b92c0944de..71d2c42578 100644
--- a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="script ed float" title="RÉFÉRENCE LSL">
- <check_box label="Suivre le curseur" name="lock_check"/>
- <combo_box label="Verrouiller" left_delta="120" name="history_combo" width="70"/>
- <button label="Précédente" left_delta="75" name="back_btn"/>
- <button label="Suivante" name="fwd_btn"/>
+
+ <check_box label="Suivre le curseur" name="lock_check" width="90" />
+ <combo_box label="Verrouiller" left_delta="120" name="history_combo" width="82"/>
+ <button label="Précédente" name="back_btn" left_delta="75"/>
+ <button label="Suivante" name="fwd_btn" width="60"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml
index aeef4b0e91..e01b687fce 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">
+<floater name="Map" title="Mini-carte">
<floater.string name="mini_map_north">
N
</floater.string>
diff --git a/indra/newview/skins/default/xui/fr/floater_media_browser.xml b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
index 0677c5d41f..58535eddf5 100644
--- a/indra/newview/skins/default/xui/fr/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
@@ -15,12 +15,12 @@
<button label="OK" left_delta="515" name="go"/>
</layout_panel>
<layout_panel name="time_controls">
- <button label="en arrière" name="rewind"/>
+ <button label="en arrière" name="rewind" width="60"/>
<button label="stop" name="stop"/>
- <button label="en avant" name="seek"/>
+ <button label="en avant" name="seek" width="60"/>
</layout_panel>
<layout_panel name="parcel_owner_controls">
- <button label="Envoyer la page actuelle à la parcelle" name="assign"/>
+ <button label="Envoyer la page actuelle à la parcelle" name="assign" width="220"/>
</layout_panel>
<layout_panel name="external_controls">
<button label="Ouvrir dans mon navigateur web" name="open_browser" width="196"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
index 5993f90cef..d03c4d7544 100644
--- a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
@@ -12,7 +12,7 @@
[NOTE2]
</text>
<button label="Commencer" name="start_btn" width="85"/>
- <button label="Stop" left="100" name="stop_btn"/>
- <button label="Libérer" left="177" name="release_btn"/>
- <button label="Fermer" name="close_btn"/>
+ <button label="Stop" name="stop_btn"/>
+ <button label="Libérer" name="release_btn"/>
+ <button label="Fermer" name="close_btn" left_pad="20"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_notification.xml b/indra/newview/skins/default/xui/fr/floater_notification.xml
index 62727da007..fe4b5f9bd6 100644
--- a/indra/newview/skins/default/xui/fr/floater_notification.xml
+++ b/indra/newview/skins/default/xui/fr/floater_notification.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="notification" title="CONSOLE DE NOTIFICATIONS">
<text_editor name="payload">
- Chargement..
+ Chargement...
</text_editor>
<combo_box label="Réponse" name="response"/>
</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 f5dfc8d6df..d77dfbdf82 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,11 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container">
+<floater name="modal container" title="Enregistrer la tenue">
<button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
<button label="Annuler" label_selected="Annuler" name="Cancel"/>
<text name="Save item as:">
- Enregistrer la tenue sous :
+ Enregistrer ce que je porte
+comme une nouvelle tenue :
</text>
<line_editor name="name ed">
- [DESC]
+ [DESC] (nouv.)
</line_editor>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml
index a6f0970502..2420c2b04b 100644
--- a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml
@@ -25,10 +25,13 @@
Pas de réponse. Veuillez réessayer ultérieurement.
</text>
<text name="nearby">
- Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. Vous allez maintenant être reconnecté(e) au chat vocal près de vous.
+ Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. [RECONNECT_NEARBY]
</text>
- <text name="nearby_P2P">
- [VOICE_CHANNEL_NAME] a mis fin à l&apos;appel. Vous allez maintenant être reconnecté(e) au chat vocal près de vous.
+ <text name="nearby_P2P_by_other">
+ [VOICE_CHANNEL_NAME] a mis fin à l&apos;appel. [RECONNECT_NEARBY]
+ </text>
+ <text name="nearby_P2P_by_agent">
+ Vous avez mis fin à l&apos;appel. [RECONNECT_NEARBY]
</text>
<text name="leaving">
En train de quitter [CURRENT_CHAT].
diff --git a/indra/newview/skins/default/xui/fr/floater_pay_object.xml b/indra/newview/skins/default/xui/fr/floater_pay_object.xml
index c96db77721..9cac739ab0 100644
--- a/indra/newview/skins/default/xui/fr/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/fr/floater_pay_object.xml
@@ -17,10 +17,10 @@
<text left="105" name="object_name_text">
...
</text>
- <button label="1 L$" label_selected="1 L$" left="105" name="fastpay 1"/>
- <button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/>
- <button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/>
- <button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/>
+ <button label="1 L$" label_selected="1 L$" name="fastpay 1"/>
+ <button label="5 L$" label_selected="5 L$" name="fastpay 5"/>
+ <button label="10 L$" label_selected="10 L$" name="fastpay 10"/>
+ <button label="20 L$" label_selected="20 L$" name="fastpay 20"/>
<text halign="left" left="5" name="amount text">
Ou choisissez un montant :
</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml
index 2be2ae7c88..f83000cf87 100644
--- a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml
@@ -4,7 +4,7 @@
<button label="?" label_selected="?" name="help"/>
<check_box label="Partager avec le groupe" name="share_with_group"/>
<check_box label="Autoriser tout le monde à copier" name="everyone_copy"/>
- <text name="NextOwnerLabel">
+ <text name="NextOwnerLabel" width="260">
Le prochain propriétaire pourra :
</text>
<check_box label="Modifier" name="next_owner_modify"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_postcard.xml b/indra/newview/skins/default/xui/fr/floater_postcard.xml
index 6a9a674fac..489b90eeba 100644
--- a/indra/newview/skins/default/xui/fr/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_postcard.xml
@@ -3,19 +3,19 @@
<text name="to_label" width="135">
E-mail du destinataire :
</text>
- <line_editor left="143" name="to_form" width="127"/>
+ <line_editor left="143" name="to_form" width="130" left_delta="146"/>
<text name="from_label">
Votre e-mail :
</text>
- <line_editor left="143" name="from_form" width="127"/>
+ <line_editor left="143" name="from_form" width="130" left_delta="146"/>
<text name="name_label">
Votre nom :
</text>
- <line_editor left="143" name="name_form" width="127"/>
+ <line_editor left="143" name="name_form" width="130" left_delta="146"/>
<text name="subject_label">
Sujet :
</text>
- <line_editor left="143" name="subject_form" width="127"/>
+ <line_editor left="143" name="subject_form" width="130" left_delta="146"/>
<line_editor label="Saisissez votre sujet ici." name="subject_form"/>
<text name="msg_label">
Message :
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml
index 4db7ca304c..406e91a18a 100644
--- a/indra/newview/skins/default/xui/fr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml
@@ -6,7 +6,7 @@
<panel label="Général" name="general"/>
<panel label="Graphiques" name="display"/>
<panel label="Confidentialité" name="im"/>
- <panel label="Son" name="audio"/>
+ <panel label="Son et Média" name="audio"/>
<panel label="Chat" name="chat"/>
<panel label="Notifications" name="msgs"/>
<panel label="Configuration" name="input"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
index 923d56801e..b14aecafbb 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
@@ -6,6 +6,6 @@
<text name="desc txt">
Description :
</text>
- <button label="Jouer dans le Monde" label_selected="Stop" left="20" name="Anim play btn" tool_tip="Lire cette animation de façon à ce que les autres puissent la voir" width="131"/>
+ <button label="Jouer dans Second Life" label_selected="Stop" left="20" name="Anim play btn" tool_tip="Lire cette animation de façon à ce que les autres puissent la voir" width="131"/>
<button label="Jouer localement" label_selected="Stop" left="162" name="Anim audition btn" tool_tip="Lire cette animation de façon à ce que vous soyez la seule personne à pouvoir la voir" width="125"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml
index 06caf0635d..d866c32882 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml
@@ -6,8 +6,8 @@
<text name="key_label">
Clavier :
</text>
- <combo_box label="Aucun" name="modifier_combo"/>
- <combo_box label="Aucun" name="key_combo"/>
+ <combo_box label="Aucun" name="modifier_combo" width="62"/>
+ <combo_box label="Aucun" name="key_combo" width="62"/>
<text name="replace_text" tool_tip="Remplacez le ou les mots-clés par ces mots. Par exemple, si vous remplacez le mot-clé &quot; bonjour &quot; par &quot; salut &quot;, le chat &quot; Je voulais te dire bonjour &quot; devient &quot; Je voulais te dire salut &quot; et le geste correspondant s&apos;affiche.">
Remplacer :
</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml
index 67d93e9e92..a215f92df1 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml
@@ -6,6 +6,6 @@
<text name="desc txt">
Description :
</text>
- <button label="Jouer dans le Monde" label_selected="Jouer dans le Monde" left_delta="-142" name="Sound play btn" tool_tip="Lire ce son de façon à ce que les autres puissent l&apos;entendre" width="131"/>
+ <button label="Jouer dans Second Life" label_selected="Jouer dans Second Life" left_delta="-142" name="Sound play btn" tool_tip="Lire ce son de façon à ce que les autres puissent l&apos;entendre" width="131"/>
<button label="Jouer localement" label_selected="Jouer localement" left="162" name="Sound audition btn" tool_tip="Lire ce son de façon à ce que vous soyez la seule personne à pouvoir l&apos;entendre" width="125"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
index 2ff14b4a68..dc40d31a79 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
@@ -42,6 +42,6 @@
</combo_item>
</combo_box>
<button label="OK" name="Keep"/>
- <button label="Annuler" name="Discard"/>
+ <button label="Jeter" name="Discard"/>
<button label="Enregistrer sous" name="save_tex_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
index b96e15e4bb..78c35dc303 100644
--- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
@@ -5,7 +5,7 @@
</floater.string>
<check_box label="Utiliser cette capture d&apos;écran" name="screen_check"/>
<text name="reporter_title" width="60">
- Déposant :
+ Témoin :
</text>
<text name="reporter_field">
Loremipsum Dolorsitamut Longnamez
@@ -29,13 +29,13 @@
<text name="object_name_label">
Objet :
</text>
- <text left_delta="70" name="object_name" width="105">
+ <text left_pad="26" name="object_name" width="105">
Consetetur Sadipscing
</text>
- <text name="owner_name_label" width="66">
+ <text name="owner_name_label" width="100">
Propriétaire :
</text>
- <text left_delta="70" name="owner_name" width="105">
+ <text left_delta="120" name="owner_name" width="105">
Hendrerit Vulputate Kamawashi Longname
</text>
<combo_box name="category_combo" tool_tip="Choisissez la catégorie qui décrit le mieux ce rapport">
diff --git a/indra/newview/skins/default/xui/fr/floater_script_preview.xml b/indra/newview/skins/default/xui/fr/floater_script_preview.xml
index 7b8c5399b9..7b6bc73677 100644
--- a/indra/newview/skins/default/xui/fr/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_script_preview.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview lsl text" title="SCRIPT : SCRIPT DE ROTATION">
<floater.string name="Title">
- Script : [NAME]
+ SCRIPT : [NAME]
</floater.string>
<text name="desc txt">
Description :
diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
index e950a64c4c..d79726e8e2 100644
--- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
@@ -5,13 +5,13 @@
<text name="info_parcel_label">
Parcelle :
</text>
- <text name="info_parcel">
+ <text name="info_parcel" left="70">
NOM DE LA PARCELLE
</text>
<text name="info_size_label">
Taille :
</text>
- <text name="info_size">
+ <text name="info_size" left="70">
[AREA] m²
</text>
<text bottom_delta="-60" name="info_action">
diff --git a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
index aae4729347..995837e9ee 100644
--- a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
@@ -4,7 +4,7 @@
<combo_box.item label="VRAI" name="TRUE"/>
<combo_box.item label="FAUX" name="FALSE"/>
</combo_box>
- <color_swatch label="Couleur" name="val_color_swatch"/>
+ <color_swatch label="Couleur" name="val_color_swatch" width="50"/>
<spinner label="x" name="val_spinner_1"/>
<spinner label="x" name="val_spinner_2"/>
<spinner label="x" name="val_spinner_3"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
index 486eafef01..74738b7e31 100644
--- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
@@ -45,8 +45,8 @@
<combo_box.item label="JPEG" name="JPEG"/>
<combo_box.item label="BMP" name="BMP"/>
</combo_box>
- <spinner label="Largeur" label_width="41" name="snapshot_width" width="101"/>
- <spinner label="Hauteur" label_width="41" left="121" name="snapshot_height" width="101"/>
+ <spinner label="Largeur" label_width="44" name="snapshot_width" width="101"/>
+ <spinner label="Hauteur" label_width="46" left="121" name="snapshot_height" width="101"/>
<slider label="Qualité de l&apos;image" name="image_quality_slider"/>
<text name="layer_type_label">
Capturer :
diff --git a/indra/newview/skins/default/xui/fr/floater_sys_well.xml b/indra/newview/skins/default/xui/fr/floater_sys_well.xml
index 9b0253065c..47b761aed9 100644
--- a/indra/newview/skins/default/xui/fr/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sys_well.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="notification_chiclet" title="NOTIFICATIONS">
<string name="title_im_well_window">
- SESSIONS IM
+ CONVERSATIONS
</string>
<string name="title_notification_well_window">
NOTIFICATIONS
diff --git a/indra/newview/skins/default/xui/fr/floater_telehub.xml b/indra/newview/skins/default/xui/fr/floater_telehub.xml
index a50cfc25c1..c529ca2736 100644
--- a/indra/newview/skins/default/xui/fr/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/fr/floater_telehub.xml
@@ -10,8 +10,7 @@
Pour supprimer, cliquez sur Déconnecter.
</text>
<text bottom_delta="-18" height="38" name="help_text_not_connected">
- Sélectionner l&apos;objet et cliquez sur Connecter
-le téléhub.
+ Sélectionner l&apos;objet et cliquez sur Connecter le téléhub.
</text>
<button label="Connecter le téléhub" name="connect_btn" width="122"/>
<button label="Déconnecter" left="142" name="disconnect_btn" width="98"/>
@@ -20,7 +19,7 @@ le téléhub.
</text>
<button label="Ajouter point" name="add_spawn_point_btn"/>
<button label="Supprimer point" name="remove_spawn_point_btn"/>
- <text name="spawn_point_help">
+ <text name="spawn_point_help" height="100">
Sélectionnez l&apos;objet et cliquez sur Ajouter pour indiquer la position.
Vous pourrez ensuite déplacer ou supprimer l&apos;objet.
Les positions sont relatives au centre du téléhub.
diff --git a/indra/newview/skins/default/xui/fr/floater_url_entry.xml b/indra/newview/skins/default/xui/fr/floater_url_entry.xml
index 6a90731691..4b2be14569 100644
--- a/indra/newview/skins/default/xui/fr/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/fr/floater_url_entry.xml
@@ -3,11 +3,11 @@
<text name="media_label">
URL du média :
</text>
- <combo_box left="100" name="media_entry" width="360" />
- <button label="OK" name="ok_btn" />
+ <combo_box name="media_entry"/>
+ <button label="OK" name="ok_btn" width="30" />
<button label="Annuler" name="cancel_btn" />
- <button label="Effacer" name="clear_btn" />
- <text name="loading_label">
+ <button label="Effacer" name="clear_btn" left_pad="94"/>
+ <text name="loading_label" left="120">
Chargement...
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_water.xml b/indra/newview/skins/default/xui/fr/floater_water.xml
index 287f51d9f7..1a74017330 100644
--- a/indra/newview/skins/default/xui/fr/floater_water.xml
+++ b/indra/newview/skins/default/xui/fr/floater_water.xml
@@ -3,7 +3,7 @@
<floater.string name="WLDefaultWaterNames">
Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
</floater.string>
- <text name="KeyFramePresetsText">
+ <text name="KeyFramePresetsText" width="120">
Préréglages eau :
</text>
<button label="Nouveau" label_selected="Nouveau" name="WaterNewPreset"/>
@@ -12,8 +12,7 @@
<tab_container name="Water Tabs">
<panel label="Paramètres" name="Settings">
<text name="BHText">
- Couleur du brouillard
-dans l&apos;eau
+ Couleur du brouillard dans l&apos;eau
</text>
<color_swatch left="75" name="WaterFogColor" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
<text name="WaterFogDensText">
diff --git a/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml
index af6274d4e2..5dda347fcf 100644
--- a/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="modal container">
- <button label="Enregistrer" label_selected="Enregistrer" name="Save" />
- <button label="Annuler" label_selected="Annuler" name="Cancel" />
+ <button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
+ <button label="Annuler" label_selected="Annuler" name="Cancel"/>
<text name="Save item as:">
- Enregistrer l&apos;objet sous :
+ Enregistrer l&apos;objet dans mon inventaire comme :
</text>
<line_editor name="name ed">
Nouveau [DESC]
diff --git a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
index e28de71625..d92fadd048 100644
--- a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
+++ b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
@@ -6,7 +6,7 @@
<button label="Nouveau" label_selected="Nouveau" name="WLNewPreset"/>
<button label="Enregistrer" label_selected="Enregistrer" left_delta="75" name="WLSavePreset" width="75"/>
<button label="Supprimer" label_selected="Supprimer" left_delta="80" name="WLDeletePreset"/>
- <button label="Éditeur du cycle du jour" label_selected="Éditeur du cycle du jour" left_delta="95" name="WLDayCycleMenuButton" width="150"/>
+ <button label="Éditeur du cycle du jour" label_selected="Éditeur du cycle du jour" left_pad="20" left_delta="95" name="WLDayCycleMenuButton" width="150"/>
<tab_container name="WindLight Tabs" width="706">
<panel label="Atmosphère" name="Atmosphere">
<text name="BHText">
diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml
index 3ac3580d4b..19ea764ae8 100644
--- a/indra/newview/skins/default/xui/fr/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml
@@ -71,6 +71,7 @@
</combo_box>
<search_editor label="Régions par nom" name="location" tool_tip="Saisissez le nom d&apos;une région" width="155"/>
<button label="Trouver" label_selected="&gt;" left_delta="160" name="DoSearch" tool_tip="Recherchez sur la carte" width="75"/>
+ <button name="Clear" tool_tip="Effacer les lignes de suivi et réinitialiser la carte"/>
<scroll_list left="-270" name="search_results" width="252">
<scroll_list.columns label="" name="icon"/>
<scroll_list.columns label="" name="sim_name"/>
diff --git a/indra/newview/skins/default/xui/fr/inspect_avatar.xml b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
index be23369dc7..381a52ed43 100644
--- a/indra/newview/skins/default/xui/fr/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
@@ -18,7 +18,7 @@
<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="Plus" name="view_profile_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"/>
diff --git a/indra/newview/skins/default/xui/fr/inspect_remote_object.xml b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml
index 6d8c44578a..6d7cfadc04 100644
--- a/indra/newview/skins/default/xui/fr/inspect_remote_object.xml
+++ b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml
@@ -7,7 +7,7 @@
<text name="object_name">
Nom d&apos;objet de test vraiment très long
</text>
- <text name="object_owner_label">
+ <text name="object_owner_label" width="70">
Propriétaire :
</text>
<text name="object_owner">
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
index 82945cf96e..e370e8d3b8 100644
--- a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Self Pie">
<menu_item_call label="Me lever" name="Stand Up"/>
- <context_menu label="Enlever &gt;" name="Take Off &gt;">
- <context_menu label="Habits &gt;" name="Clothes &gt;">
+ <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"/>
@@ -16,8 +16,8 @@
<menu_item_call label="Alpha" name="Self Alpha"/>
<menu_item_call label="Tous les habits" name="All Clothes"/>
</context_menu>
- <context_menu label="HUD &gt;" name="Object Detach HUD"/>
- <context_menu label="Détacher &gt;" name="Object Detach"/>
+ <context_menu label="HUD ▶" name="Object Detach HUD"/>
+ <context_menu label="Détacher ▶" name="Object Detach"/>
<menu_item_call label="Tout détacher" name="Detach All"/>
</context_menu>
<menu_item_call label="Mon apparence" name="Appearance..."/>
diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
index 39ba4b1074..e5746dd4c2 100644
--- a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
@@ -15,4 +15,5 @@
<menu_item_call label="Situer sur la carte" name="find_on_map"/>
<menu_item_call label="Zoomer en avant" name="zoom_in"/>
<menu_item_call label="Payer" name="pay"/>
+ <menu_item_call label="Partager" name="share"/>
</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index 5276aa5b7e..2f6f25dc6b 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -20,8 +20,8 @@
<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 tricot" name="New Undershirt"/>
- <menu_item_call label="Nouveaux sous-vêtements" name="New Underpants"/>
+ <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>
@@ -40,8 +40,8 @@
<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="Sous-vêtements (femme)" name="Underpants"/>
- <menu_item_call label="Sous-vêtements (homme)" name="Undershirt"/>
+ <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"/>
@@ -65,7 +65,7 @@
<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 le Monde" name="Animation Play"/>
+ <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..."/>
diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml
index b6775661ad..1837be9c5d 100644
--- a/indra/newview/skins/default/xui/fr/menu_object.xml
+++ b/indra/newview/skins/default/xui/fr/menu_object.xml
@@ -7,18 +7,18 @@
<menu_item_call label="M&apos;asseoir ici" name="Object Sit"/>
<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 &gt;" name="Put On">
+ <context_menu label="Porter ▶" name="Put On">
<menu_item_call label="Porter" name="Wear"/>
- <context_menu label="Joindre &gt;" name="Object Attach"/>
- <context_menu label="Joindre les éléments HUD &gt;" name="Object Attach HUD"/>
+ <context_menu label="Attacher ▶" name="Object Attach"/>
+ <context_menu label="Attacher les éléments HUD ▶" name="Object Attach HUD"/>
</context_menu>
- <context_menu label="Supprimer &gt;" name="Remove">
- <menu_item_call label="Prendre" name="Pie Object Take"/>
+ <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..."/>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
index d48be969f4..08a97ee403 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
@@ -2,6 +2,7 @@
<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="Partager" name="Share"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
index 2185ac95e9..18ae84a67b 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
@@ -1,6 +1,7 @@
<?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"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
index 4bb9fa19a8..ab5016465d 100644
--- a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
@@ -2,6 +2,8 @@
<toggleable_menu name="profile_overflow_menu">
<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="Geler" name="freeze"/>
<menu_item_call label="Dégeler" name="unfreeze"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 272fcfdae6..1b360b3007 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -9,8 +9,8 @@
<menu_item_call label="Mon profil" name="Profile"/>
<menu_item_call label="Mon apparence" name="Appearance"/>
<menu_item_check label="Mon inventaire" name="Inventory"/>
- <menu_item_call label="Afficher l&apos;inventaire dans le panneau latéral" name="ShowSidetrayInventory"/>
- <menu_item_call label="Mes gestes" name="Gestures"/>
+ <menu_item_check label="Mon inventaire" name="ShowSidetrayInventory"/>
+ <menu_item_check label="Mes gestes" name="Gestures"/>
<menu label="Mon statut" name="Status">
<menu_item_call label="Absent" name="Set Away"/>
<menu_item_call label="Occupé" name="Set Busy"/>
@@ -24,7 +24,6 @@
<menu_item_call label="Mes groupes" name="My Groups"/>
<menu_item_check label="Chat près de vous" name="Nearby Chat"/>
<menu_item_call label="Personnes près de vous" name="Active Speakers"/>
- <menu_item_check label="Média près de vous" name="Nearby Media"/>
</menu>
<menu label="Monde" name="World">
<menu_item_check label="Mini-carte" name="Mini-Map"/>
@@ -39,7 +38,11 @@
<menu_item_call label="Mes terrains" name="My Land"/>
<menu label="Afficher" name="LandShow">
<menu_item_check label="Contrôles de mouvement" name="Movement Controls"/>
- <menu_item_check label="Contrôles d&apos;affichage" name="Camera Controls"/>
+ <menu_item_check label="Contrôles d’affichage" name="Camera Controls"/>
+ <menu_item_check label="Lignes d&apos;interdiction" name="Ban Lines"/>
+ <menu_item_check label="Balises" name="beacons"/>
+ <menu_item_check label="Limites du terrain" name="Property Lines"/>
+ <menu_item_check label="Propriétaires de terrains" name="Land Owners"/>
</menu>
<menu_item_call label="Me téléporter chez moi" name="Teleport Home"/>
<menu_item_call label="Définir le domicile ici" name="Set Home to Here"/>
@@ -74,6 +77,7 @@
</menu>
<menu_item_call label="Lien" name="Link"/>
<menu_item_call label="Annuler le lien" name="Unlink"/>
+ <menu_item_check label="Modifier les parties reliées" name="Edit Linked Parts"/>
<menu_item_call label="Point central sur la sélection" name="Focus on Selection"/>
<menu_item_call label="Zoomer sur la sélection" name="Zoom to Selection"/>
<menu label="Objet" name="Object">
@@ -90,25 +94,18 @@
<menu_item_call label="Définir les scripts sur Pas d&apos;exécution" name="Set Scripts to Not Running"/>
</menu>
<menu label="Options" name="Options">
- <menu_item_check label="Modifier les parties reliées" name="Edit Linked Parts"/>
<menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/>
<menu_item_check label="Afficher les droits avancés" name="DebugPermissions"/>
- <menu label="Sélection" name="Selection">
- <menu_item_check label="Sélectionner mes objets uniquement" name="Select Only My Objects"/>
- <menu_item_check label="Sélectionner les objets déplaçables uniquement" name="Select Only Movable Objects"/>
- <menu_item_check label="Sélectionner en entourant" name="Select By Surrounding"/>
- </menu>
- <menu label="Afficher" name="Show">
- <menu_item_check label="Afficher la sélection masquée" name="Show Hidden Selection"/>
- <menu_item_check label="Afficher le rayon lumineux pour la sélection" name="Show Light Radius for Selection"/>
- <menu_item_check label="Afficher le faisceau de sélection lumineux" name="Show Selection Beam"/>
- </menu>
- <menu label="Grille" name="Grid">
- <menu_item_check label="Fixer sur la grille" name="Snap to Grid"/>
- <menu_item_call label="Fixer les coordonnées XY de l&apos;objet sur la grille" name="Snap Object XY to Grid"/>
- <menu_item_call label="Utiliser la sélection pour la grille" name="Use Selection for Grid"/>
- <menu_item_call label="Options de la grille" name="Grid Options"/>
- </menu>
+ <menu_item_check label="Sélectionner mes objets uniquement" name="Select Only My Objects"/>
+ <menu_item_check label="Sélectionner les objets déplaçables uniquement" name="Select Only Movable Objects"/>
+ <menu_item_check label="Sélectionner en entourant" name="Select By Surrounding"/>
+ <menu_item_check label="Afficher la sélection masquée" name="Show Hidden Selection"/>
+ <menu_item_check label="Afficher le rayon lumineux pour la sélection" name="Show Light Radius for Selection"/>
+ <menu_item_check label="Afficher le faisceau de sélection lumineux" name="Show Selection Beam"/>
+ <menu_item_check label="Fixer sur la grille" name="Snap to Grid"/>
+ <menu_item_call label="Fixer les coordonnées XY de l&apos;objet sur la grille" name="Snap Object XY to Grid"/>
+ <menu_item_call label="Utiliser la sélection pour la grille" name="Use Selection for Grid"/>
+ <menu_item_call label="Options de la grille" name="Grid Options"/>
</menu>
<menu label="Sélectionner les parties reliées" name="Select Linked Parts">
<menu_item_call label="Sélectionner la partie suivante" name="Select Next Part"/>
@@ -127,7 +124,7 @@
<menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/>
<menu_item_call label="Refixer les textures" name="Rebake Texture"/>
<menu_item_call label="Taille de l&apos;interface par défaut" name="Set UI Size to Default"/>
- <menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/>
+ <menu_item_call label="Définir la taille de la fenêtre…" name="Set Window Size..."/>
<menu_item_check label="Limiter la distance de sélection" name="Limit Select Distance"/>
<menu_item_check label="Désactiver les contraintes de la caméra" name="Disable Camera Distance"/>
<menu_item_check label="Photo haute résolution" name="HighResSnapshot"/>
@@ -175,8 +172,8 @@
<menu_item_check label="Exécuter plusieurs threads" name="Run Multiple Threads"/>
<menu_item_call label="Effacer le cache du groupe" name="ClearGroupCache"/>
<menu_item_check label="Effet de lissage de la souris" name="Mouse Smoothing"/>
- <menu_item_check label="Afficher les IM dans le chat près de vous" name="IMInChat"/>
<menu label="Raccourcis" name="Shortcuts">
+ <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/>
<menu_item_check label="Rechercher" name="Search"/>
<menu_item_call label="Relâcher les touches" name="Release Keys"/>
<menu_item_call label="Taille de l&apos;interface par défaut" name="Set UI Size to Default"/>
@@ -219,6 +216,7 @@
<menu_item_check label="Caméra" name="Camera"/>
<menu_item_check label="Vent" name="Wind"/>
<menu_item_check label="Angle de champ" name="FOV"/>
+ <menu_item_check label="Badge" name="Badge"/>
</menu>
<menu label="Afficher les infos" name="Display Info">
<menu_item_check label="Afficher l&apos;heure" name="Show Time"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 6d7aef6389..e122032447 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -11,18 +11,29 @@
</global>
<template name="okbutton">
<form>
- <button name="OK" text="$yestext"/>
+ <button name="OK_okbutton" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore">
+ <form>
+ <button name="OK_okignore" text="$yestext"/>
</form>
</template>
- <template name="okignore"/>
<template name="okcancelbuttons">
<form>
- <button name="Cancel" text="$notext"/>
+ <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="okcancelignore"/>
<template name="okhelpbuttons">
<form>
+ <button name="OK_okhelpbuttons" text="$yestext"/>
<button name="Help" text="$helptext"/>
</form>
</template>
@@ -30,6 +41,7 @@
<form>
<button name="Yes" text="$yestext"/>
<button name="No" text="$notext"/>
+ <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
</form>
</template>
<notification functor="GenericAcknowledge" label="Message de notification inconnu" name="MissingAlert">
@@ -93,6 +105,10 @@ Veuillez ne sélectionner qu&apos;un seul objet.
Enregistrer tous les changements dans les habits/parties du corps ?
<usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Tout enregistrer"/>
</notification>
+ <notification name="FriendsAndGroupsOnly">
+ Les résidents qui ne sont pas vos amis ne sauront pas que vous avez choisi d&apos;ignorer leurs appels et leurs messages instantanés.
+ <usetemplate name="okbutton" yestext="Oui"/>
+ </notification>
<notification name="GrantModifyRights">
Lorsque vous accordez des droits d&apos;édition à un autre résident, vous lui permettez de changer, supprimer ou prendre n&apos;importe lequel de vos objets dans le Monde. Réfléchissez bien avant d&apos;accorder ces droits.
Souhaitez-vous accorder des droits d&apos;édition à [FIRST_NAME] [LAST_NAME] ?
@@ -154,14 +170,16 @@ Ajouter ce pouvoir à « [ROLE_NAME] » ?
Voulez-vous vraiment continuer ?
<usetemplate ignoretext="Confirmez avant d&apos;abandonner les éléments joints." name="okcancelignore" notext="Non" yestext="Oui"/>
</notification>
- <notification name="ClickUnimplemented">
- Désolés, pas encore mis en œuvre.
- </notification>
<notification name="JoinGroupCanAfford">
Rejoindre ce groupe coûte [COST] L$.
Voulez-vous continuer ?
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="Rejoindre"/>
</notification>
+ <notification name="JoinGroupNoCost">
+ Vous vous apprêtez à rejoindre le groupe [NAME].
+Voulez-vous continuer ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Fusionner"/>
+ </notification>
<notification name="JoinGroupCannotAfford">
Rejoindre ce groupe coûte [COST] L$.
Vous n&apos;avez pas suffisamment de L$ pour rejoindre ce groupe.
@@ -328,6 +346,10 @@ Voulez-vous vraiment continuer ?
Enregistrer les changements dans l&apos;annonce [NAME] ?
<usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/>
</notification>
+ <notification name="ClassifiedInsufficientFunds">
+ Fonds insuffisants pour créer la petite annonce.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
<notification name="DeleteAvatarPick">
Supprimer le favori [PICK] ?
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
@@ -423,18 +445,18 @@ L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
Impossible d&apos;écrire le fichier [[FILE]]
</notification>
<notification name="UnsupportedHardware">
- Avertissement : vous n&apos;avez pas la configuration système requise pour utiliser [APP_NAME]. Si vous continuez à utiliser [APP_NAME], votre performance risque d&apos;être moindre. Malheureusement, la page [SUPPORT_SITE] n&apos;offre aucune assistance pour les problèmes de configuration système.
+ Votre ordinateur ne satisfait pas la configuration système requise pour [APP_NAME]. Les performances risquent d&apos;être médiocres. Malheureusement, la page [SUPPORT_SITE] n’offre aucune assistance pour les problèmes de configuration système.
MINSPECS
-Voulez-vous visiter [_URL] pour plus d&apos;informations ?
+Consulter [_URL] pour en savoir plus ?
<url name="url" option="0">
http://secondlife.com/support/sysreqs.php?lang=fr
</url>
<usetemplate ignoretext="Mon matériel n&apos;est pas pris en charge" name="okcancelignore" notext="Non" yestext="Oui"/>
</notification>
<notification name="UnknownGPU">
- Votre système contient une carte graphique que [APP_NAME] ne reconnaît pas actuellement.
-Cela est souvent le cas avec le nouveau matériel qui n&apos;a pas encore été testé avec [APP_NAME]. Vous pourrez probablement utiliser [APP_NAME] sans problème, mais vous devrez peut-être ajuster les paramètres de vos graphiques.
+ Votre système contient une carte graphique que [APP_NAME] ne reconnaît pas.
+Cela est souvent le cas avec le nouveau matériel qui n&apos;a pas encore été testé avec [APP_NAME]. Cela ne posera probablement pas de problème, mais vous devrez peut-être ajuster vos paramètres graphiques.
(Moi &gt; Préférences &gt; Graphiques).
<form name="form">
<ignore name="ignore" text="Ma carte graphique ne peut être identifiée"/>
@@ -657,7 +679,7 @@ Recherche effectuée : [FINALQUERY]
Vos termes de recherche étaient trop courts et aucune recherche n&apos;a été effectuée.
</notification>
<notification name="CouldNotTeleportReason">
- Impossible de téléporter.
+ Échec de la téléportation.
[REASON]
</notification>
<notification name="invalid_tport">
@@ -757,14 +779,6 @@ plusieurs parcelles sélectionnées.
Essayez de ne sélectionner qu&apos;une seule parcelle.
</notification>
- <notification name="ParcelCanPlayMedia">
- Cet emplacement propose des flux de média.
-Pour jouer des flux de média, il faut avoir une connexion Internet rapide.
-
-Jouer les flux de média lorsqu&apos;ils sont disponibles ?
-(Vous pourrez modifier cette option ultérieurement sous Préférences &gt; Confidentialité.)
- <usetemplate name="okcancelbuttons" notext="Désactiver" yestext="Jouer le média"/>
- </notification>
<notification name="CannotDeedLandWaitingForServer">
Cession du terrain impossible :
rapport de propriété sur le point d&apos;être envoyé par le serveur.
@@ -886,9 +900,8 @@ Fusionner le terrain ?
Cette erreur est généralement temporaire. Veuillez éditer et sauvegarder l&apos;élément endossable à nouveau d&apos;ici quelques minutes.
</notification>
<notification name="YouHaveBeenLoggedOut">
- Vous avez été déconnecté(e) de [SECOND_LIFE] :
+ Zut. Vous avez été déconnecté(e) de [SECOND_LIFE]
[MESSAGE]
-Vous pouvez afficher vos messages instantanés et votre chat en cliquant sur Afficher IM et chat. Sinon, cliquez sur Quitter pour quitter immédiatement [APP_NAME].
<usetemplate name="okcancelbuttons" notext="Quitter" yestext="Afficher IM et chat"/>
</notification>
<notification name="OnlyOfficerCanBuyLand">
@@ -1038,6 +1051,7 @@ Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ?
</notification>
<notification name="ErrorMessage">
[ERROR_MESSAGE]
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="AvatarMovedDesired">
La destination que vous avez choisie n&apos;est pas disponible actuellement.
@@ -1316,7 +1330,6 @@ Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages i
<notification name="JoinedTooManyGroupsMember">
Vous avez atteint le nombre de groupes maximum. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre.
[NAME] vous invite à rejoindre un groupe.
-[INVITE]
<usetemplate name="okcancelbuttons" notext="Refuser" yestext="Rejoindre"/>
</notification>
<notification name="JoinedTooManyGroups">
@@ -1384,7 +1397,7 @@ Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages i
</form>
</notification>
<notification name="TeleportFromLandmark">
- Êtes-vous certain de vouloir être téléporté ?
+ Souhaitez-vous vraiment vous téléporter vers &lt;nolink&gt;[LOCATION]&lt;/nolink&gt; ?
<usetemplate ignoretext="Confirmer que je veux me téléporter à un repère" name="okcancelignore" notext="Annuler" yestext="Téléporter"/>
</notification>
<notification name="TeleportToPick">
@@ -1708,9 +1721,9 @@ Déplacer les objets de l&apos;inventaire ?
<usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
</notification>
<notification name="HelpReportAbuseEmailLL">
- Utilisez cet outil pour signaler des infractions aux [http://secondlife.com/corporate/tos.php Conditions d&apos;utilisation] et aux [http://secondlife.com/corporate/cs.php Règles communautaires].
+ Utilisez cet outil pour signaler des infractions aux [http://secondlife.com/corporate/tos.php Conditions d’utilisation] et aux [http://secondlife.com/corporate/cs.php Règles communautaires].
-Lorsqu&apos;elles sont signalées, toutes les infractions font l&apos;objet d&apos;une enquête et sont résolues. Vous pouvez consulter les détails de la résolution d&apos;un incident dans le [http://secondlife.com/support/incidentreport.php Rapport d&apos;incident].
+Lorsqu&apos;elles sont signalées, toutes les infractions font l&apos;objet d&apos;une enquête et sont résolues.
</notification>
<notification name="HelpReportAbuseSelectCategory">
Veuillez choisir une catégorie pour ce rapport d&apos;infraction.
@@ -2121,8 +2134,8 @@ Les objets non transférables donnés au groupe ont étés supprimés.
Les objets sélectionnés sur la parcelle et qui ne sont pas à vous ont été rendus à leurs propriétaires.
</notification>
<notification name="ServerObjectMessage">
- Message de [NAME] :
-[MSG]
+ Message de [NAME] :
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
</notification>
<notification name="NotSafe">
Les dégâts sont autorisés sur ce terrain.
@@ -2302,7 +2315,6 @@ Veuillez réessayer dans quelques minutes.
<form name="form">
<button name="Accept" text="Accepter"/>
<button name="Decline" text="Refuser"/>
- <button name="Send IM" text="Envoyer IM"/>
</form>
</notification>
<notification name="FriendshipOffered">
diff --git a/indra/newview/skins/default/xui/fr/panel_audio_device.xml b/indra/newview/skins/default/xui/fr/panel_audio_device.xml
index a9540d8346..2caa013f54 100644
--- a/indra/newview/skins/default/xui/fr/panel_audio_device.xml
+++ b/indra/newview/skins/default/xui/fr/panel_audio_device.xml
@@ -6,7 +6,7 @@
<text name="Input device (microphone):">
Périphérique d&apos;entrée (micro) :
</text>
- <text name="Output device (speakers):">
+ <text name="Output device (speakers):" width="300">
Périphérique de sortie (haut-parleurs) :
</text>
<text name="Input level:">
diff --git a/indra/newview/skins/default/xui/fr/panel_bottomtray.xml b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml
index b3fac96250..d3e4afd6ee 100644
--- a/indra/newview/skins/default/xui/fr/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml
@@ -7,6 +7,11 @@
Affiche/Masque le panneau de contrôle vocal
</string>
<layout_stack name="toolbar_stack">
+ <layout_panel name="speak_panel">
+ <talk_button name="talk">
+ <speak_button label="Parler" label_selected="Parler" name="speak_btn"/>
+ </talk_button>
+ </layout_panel>
<layout_panel name="gesture_panel">
<gesture_combo_list label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml
new file mode 100644
index 0000000000..5b6d37ce00
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray_lite">
+ <layout_stack name="toolbar_stack_lite">
+ <layout_panel name="gesture_panel">
+ <gesture_combo_list label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_classified_info.xml b/indra/newview/skins/default/xui/fr/panel_classified_info.xml
index d317e35d2f..784c6baae9 100644
--- a/indra/newview/skins/default/xui/fr/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/fr/panel_classified_info.xml
@@ -6,18 +6,19 @@
<panel.string name="type_pg">
Contenu Général
</panel.string>
+ <panel.string name="l$_price">
+ [PRICE] L$
+ </panel.string>
<text name="title" value="Infos sur la petite annonce"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
- <text name="classified_name" value="[name]"/>
- <text name="classified_location" value="[loading...]"/>
- <text name="content_type" value="[content type]"/>
- <text name="category" value="[category]"/>
+ <text_editor name="classified_name" value="[name]"/>
+ <text_editor name="classified_location" value="[loading...]"/>
+ <text_editor name="content_type" value="[content type]"/>
+ <text_editor name="category" value="[category]"/>
<check_box label="Renouvellement automatique toutes les semaines" name="auto_renew"/>
- <text name="price_for_listing" tool_tip="Coût de l&apos;annonce.">
- [PRICE] L$
- </text>
- <text name="classified_desc" value="[description]"/>
+ <text_editor name="price_for_listing" tool_tip="Coût de l&apos;annonce."/>
+ <text_editor name="classified_desc" value="[description]"/>
</panel>
</scroll_container>
<panel name="buttons">
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml
index 836dd99097..3b81ef2a5f 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml
@@ -5,6 +5,6 @@
<texture_picker label="Alpha haut" name="Upper Alpha" tool_tip="Cliquez pour sélectionner une image"/>
<texture_picker label="Alpha tête" name="Head Alpha" tool_tip="Cliquez pour sélectionner une image"/>
<texture_picker label="Alpha yeux" name="Eye Alpha" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Alpha cheveux" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Alpha cheveux" width="80" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml
index e37e0b2481..73e136ade6 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml
@@ -2,7 +2,7 @@
<panel name="edit_gloves_panel">
<panel name="avatar_gloves_color_panel">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
<accordion_tab name="gloves_main_tab" title="Gants"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml
index 759db657a6..cee44eb795 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml
@@ -3,7 +3,7 @@
<panel name="avatar_jacket_color_panel">
<texture_picker label="Tissu (haut)" name="Upper Fabric" tool_tip="Cliquez pour sélectionner une image"/>
<texture_picker label="Tissu (bas)" name="Lower Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
<accordion_tab name="jacket_main_tab" title="Veste"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pants.xml b/indra/newview/skins/default/xui/fr/panel_edit_pants.xml
index 5328e885d3..71d82c817f 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_pants.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_pants.xml
@@ -2,7 +2,7 @@
<panel name="edit_pants_panel">
<panel name="avatar_pants_color_panel">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
<accordion_tab name="pants_main_tab" title="Pantalon"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
index 4a42858861..d10a7f37e1 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
@@ -42,18 +42,18 @@
<line_editor name="homepage_edit" value="http://"/>
<check_box label="Afficher dans les résultats de recherche" name="show_in_search_checkbox"/>
<text name="title_acc_status_text" value="Mon compte :"/>
+ <text_editor name="acc_status_text" value="Résident. Aucune info de paiement enregistrée."/>
<text name="my_account_link" value="[[URL] Accéder à ma Page d&apos;accueil]"/>
- <text name="acc_status_text" value="Résident. Aucune info de paiement enregistrée."/>
<text name="title_partner_text" value="Mon partenaire :"/>
- <text name="partner_edit_link" value="[[URL] Modifier]"/>
<panel name="partner_data_panel">
- <name_box name="partner_text" value="[FIRST] [LAST]"/>
+ <name_box initial_value="(récupération en cours)" name="partner_text" value="[FIRST] [LAST]"/>
</panel>
+ <text name="partner_edit_link" value="[[URL] Modifier]"/>
</panel>
</panel>
</scroll_container>
<panel name="profile_me_buttons_panel">
- <button label="Enregistrer les changements" name="save_btn"/>
+ <button label="Enregistrer les changements" name="save_btn" width="166"/>
<button label="Annuler" name="cancel_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml
index 0fe7d5bbb0..cf28cd8c1e 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml
@@ -2,7 +2,7 @@
<panel name="edit_shirt_panel">
<panel name="avatar_shirt_color_panel">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
<accordion_tab name="shirt_main_tab" title="Chemise"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml
index 588a2ca7b2..a8e0910a15 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml
@@ -2,7 +2,7 @@
<panel name="edit_shoes_panel">
<panel name="avatar_shoes_color_panel">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
<accordion_tab name="shoes_main_tab" title="Chaussures"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
index 649b91d66d..dac005f6b6 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="edit_skin_panel">
<panel name="avatar_skin_color_panel">
- <texture_picker label="Tatouage tête" name="Head Tattoos" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Tatouage haut" name="Upper Tattoos" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Tatouage tête" name="Head Tattoos" width="76" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Tatouage haut" name="Upper Tattoos" width="80" tool_tip="Cliquez pour sélectionner une image"/>
<texture_picker label="Tatouage bas" name="Lower Tattoos" tool_tip="Cliquez pour sélectionner une image"/>
</panel>
<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml
index 9d0f13c4e8..e9784b9510 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml
@@ -2,7 +2,7 @@
<panel name="edit_skirt_panel">
<panel name="avatar_skirt_color_panel">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
<accordion_tab name="skirt_main_tab" title="Jupe"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_socks.xml b/indra/newview/skins/default/xui/fr/panel_edit_socks.xml
index 8b062e0145..6fc6a3dc77 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_socks.xml
@@ -2,7 +2,7 @@
<panel name="edit_socks_panel">
<panel name="avatar_socks_color_panel">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
<accordion_tab name="socks_main_tab" title="Chaussettes"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
index 1faee191e0..7ab2aa6bc9 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="edit_tattoo_panel">
<panel name="avatar_tattoo_color_panel">
- <texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
- <texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Tatouage tête" name="Head Tattoo" width="76" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Tatouage haut" name="Upper Tattoo" width="80" tool_tip="Cliquez pour sélectionner une image"/>
+ <texture_picker label="Tatouage bas" name="Lower Tattoo" width="76" tool_tip="Cliquez pour sélectionner une image"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml
index b9164ad862..90dcae18ec 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml
@@ -2,9 +2,9 @@
<panel name="edit_underpants_panel">
<panel name="avatar_underpants_color_panel">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
- <accordion_tab name="underpants_main_tab" title="Sous-vêtements (femme)"/>
+ <accordion_tab name="underpants_main_tab" title="Caleçon"/>
</accordion>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml
index 462eff9451..950cdd7639 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml
@@ -2,9 +2,9 @@
<panel name="edit_undershirt_panel">
<panel name="avatar_undershirt_color_panel">
<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
</panel>
<accordion name="wearable_accordion">
- <accordion_tab name="undershirt_main_tab" title="Sous-vêtements (homme)"/>
+ <accordion_tab name="undershirt_main_tab" title="Débardeur"/>
</accordion>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml
index 24ea030b33..c6ab686b0e 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml
@@ -96,6 +96,6 @@
</panel>
<panel name="button_panel">
<button label="Enregistrer sous" name="save_as_button"/>
- <button label="Annuler modification" name="revert_button"/>
+ <button label="Annuler modification" width="130" name="revert_button"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml
index f0b242c6a1..cf71a28451 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml
@@ -11,27 +11,45 @@ Faites glisser le pointeur de la souris sur les options pour en savoir plus.
<panel.string name="incomplete_member_data_str">
Extraction des données du résident en cours
</panel.string>
+ <panel name="group_info_top">
+ <texture_picker label="" name="insignia" tool_tip="Cliquez pour sélectionner une image"/>
+ <text name="prepend_founded_by">
+ Fondateur :
+ </text>
+ <name_box initial_value="(récupération en cours)" name="founder_name"/>
+ <text name="join_cost_text">
+ Gratuit
+ </text>
+ <button label="REJOINDRE" name="btn_join"/>
+ </panel>
<text_editor name="charter">
Indiquez ici la charte de votre groupe
</text_editor>
<name_list name="visible_members">
<name_list.columns label="Membre" name="name" relwidth="0.40"/>
<name_list.columns label="Titre" name="title" relwidth="0.25"/>
+ <name_list.columns label="Statut" name="status"/>
</name_list>
+ <text name="my_group_settngs_label">
+ Moi
+ </text>
<text name="active_title_label">
- Mon titre
+ Mon titre :
</text>
<combo_box name="active_title" tool_tip="Indique le titre qui apparaît en face du nom de votre avatar lorsque votre groupe est actif."/>
<check_box label="Recevoir les notices du groupe" name="receive_notices" tool_tip="Indique si vous souhaitez recevoir les notices envoyées au groupe. Décochez si ce groupe vous envoie des spams."/>
<check_box label="Afficher dans mon profil" name="list_groups_in_profile" tool_tip="Indique si vous voulez afficher ce groupe dans votre profil"/>
<panel name="preferences_container">
- <check_box label="Inscription libre" name="open_enrollement" tool_tip="Indique si ce groupe autorise les nouveaux membres à le rejoindre sans y être invités."/>
- <check_box label="Frais d&apos;inscription" name="check_enrollment_fee" tool_tip="Indique s&apos;il faut payer des frais d&apos;inscription pour rejoindre ce groupe"/>
+ <text name="group_settngs_label">
+ Groupe
+ </text>
+ <check_box label="Inscription ouverte à tous" name="open_enrollement" tool_tip="Indique si ce groupe autorise les nouveaux membres à le rejoindre sans y être invités."/>
+ <check_box label="Inscription payante" name="check_enrollment_fee" tool_tip="Indique s&apos;il faut payer des frais d&apos;inscription pour rejoindre ce groupe"/>
<spinner label="L$" name="spin_enrollment_fee" tool_tip="Les nouveaux membres doivent payer ces frais pour rejoindre le groupe quand l&apos;option Frais d&apos;inscription est cochée."/>
- <check_box initial_value="true" label="Afficher dans la recherche" name="show_in_group_list" tool_tip="Permettre aux autres résidents de voir ce groupe dans les résultats de recherche"/>
<combo_box name="group_mature_check" tool_tip="Définit si votre groupe contient des informations de type Modéré" width="195">
<combo_box.item label="Contenu Général" name="pg"/>
<combo_box.item label="Contenu Modéré" name="mature"/>
</combo_box>
+ <check_box initial_value="true" label="Afficher dans la recherche" name="show_in_group_list" tool_tip="Permettre aux autres résidents de voir ce groupe dans les résultats de recherche"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
index b2f61fde71..5b08b4aefb 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Profil du groupe" name="GroupInfo">
<panel.string name="default_needs_apply_text">
- Certaines modifications sur cet onglet n&apos;ont pas été enregistrées.
+ Certaines modifications n&apos;ont pas été enregistrées.
</panel.string>
<panel.string name="want_apply_text">
Voulez-vous enregistrer ces modifications ?
@@ -12,27 +12,24 @@
<panel.string name="group_join_free">
Gratuit
</panel.string>
- <text name="group_name" value="(en cours de chargement...)"/>
- <line_editor label="Saisissez le nom du groupe ici" name="group_name_editor"/>
- <texture_picker label="" name="insignia" tool_tip="Cliquez pour sélectionner une image"/>
- <text name="prepend_founded_by">
- Fondateur :
- </text>
- <name_box initial_value="(récupération en cours)" name="founder_name"/>
- <text name="join_cost_text">
- Gratuit
- </text>
- <button label="REJOINDRE" name="btn_join"/>
- <accordion name="groups_accordion">
- <accordion_tab name="group_general_tab" title="Général"/>
- <accordion_tab name="group_roles_tab" title="Rôles"/>
- <accordion_tab name="group_notices_tab" title="Notices"/>
- <accordion_tab name="group_land_tab" title="Terrain/Actifs"/>
- </accordion>
- <panel name="button_row">
- <button label="Créer" label_selected="Nouveau groupe" name="btn_create"/>
- <button label="Chat de groupe" name="btn_chat"/>
- <button label="Appel de groupe" name="btn_call"/>
- <button label="Enregistrer" label_selected="Enregistrer" name="btn_apply"/>
+ <panel name="group_info_top">
+ <text name="group_name" value="(en cours de chargement...)"/>
+ <line_editor label="Saisissez le nom du groupe ici" name="group_name_editor"/>
</panel>
+ <layout_stack name="layout">
+ <layout_panel name="group_accordions">
+ <accordion name="groups_accordion">
+ <accordion_tab name="group_general_tab" title="Général"/>
+ <accordion_tab name="group_roles_tab" title="Rôles"/>
+ <accordion_tab name="group_notices_tab" title="Notices"/>
+ <accordion_tab name="group_land_tab" title="Terrain/Actifs"/>
+ </accordion>
+ </layout_panel>
+ <layout_panel name="button_row">
+ <button label="Chat" name="btn_chat"/>
+ <button label="Appel de groupe" name="btn_call" tool_tip="Appeler ce groupe"/>
+ <button label="Enregistrer" label_selected="Enregistrer" name="btn_apply"/>
+ <button label="Créer un groupe" name="btn_create" tool_tip="Créer un groupe"/>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
index 3ca22b6e21..a10eaf9d18 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
@@ -1,65 +1,62 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Terrain et L$" name="land_money_tab">
- <string name="help_text">
+ <panel.string name="help_text">
Un avertissement apparaît si la surface utilisée par le groupe est supérieure ou égale au total des contributions.
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
+ </panel.string>
+ <panel.string name="cant_view_group_land_text">
Vous n&apos;avez pas la permission de voir quel terrain possède ce groupe
- </string>
- <string name="cant_view_group_accounting_text">
+ </panel.string>
+ <panel.string name="cant_view_group_accounting_text">
Vous n&apos;avez pas la permission d&apos;accéder aux informations financières de ce groupe.
- </string>
- <string name="loading_txt">
+ </panel.string>
+ <panel.string name="loading_txt">
Chargement...
- </string>
- <text name="group_land_heading">
- Terrain du groupe
- </text>
- <scroll_list name="group_parcel_list">
- <column label="Parcelle" name="name"/>
- <column label="Région" name="location"/>
- <column label="Type" name="type"/>
- <column label="Surface" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="Carte" label_selected="Carte" name="map_button"/>
- <text name="total_contributed_land_label">
- Total des contributions :
- </text>
- <text name="total_contributed_land_value">
- [AREA] m²
- </text>
- <text name="total_land_in_use_label">
- Superficie déjà utilisée :
- </text>
- <text name="total_land_in_use_value">
- [AREA] m²
- </text>
- <text name="land_available_label">
- Superficie disponible :
- </text>
- <text name="land_available_value">
- [AREA] m²
- </text>
- <text name="your_contribution_label">
- Votre contribution :
- </text>
- <string name="land_contrib_error">
+ </panel.string>
+ <panel.string name="land_contrib_error">
Impossible de définir votre don de terrain
- </string>
- <text name="your_contribution_units">
- m²
- </text>
- <text name="your_contribution_max_value">
- ([AMOUNT] max.)
- </text>
- <text name="group_over_limit_text">
- Une contribution supplémentaire est requise pour prendre en charge le terrain utilisé
- </text>
- <text name="group_money_heading">
- Finances
- </text>
+ </panel.string>
+ <panel name="layout_panel_landmoney">
+ <scroll_list name="group_parcel_list">
+ <scroll_list.columns label="Parcelle" name="name"/>
+ <scroll_list.columns label="Région" name="location"/>
+ <scroll_list.columns label="Type" name="type"/>
+ <scroll_list.columns label="Surface" name="area"/>
+ </scroll_list>
+ <text name="total_contributed_land_label">
+ Total des contributions :
+ </text>
+ <text name="total_contributed_land_value">
+ [AREA] m²
+ </text>
+ <button label="Carte" label_selected="Carte" name="map_button"/>
+ <text name="total_land_in_use_label">
+ Superficie déjà utilisée :
+ </text>
+ <text name="total_land_in_use_value">
+ [AREA] m²
+ </text>
+ <text name="land_available_label">
+ Superficie disponible :
+ </text>
+ <text name="land_available_value">
+ [AREA] m²
+ </text>
+ <text name="your_contribution_label">
+ Votre contribution :
+ </text>
+ <text name="your_contribution_units">
+ m²
+ </text>
+ <text name="your_contribution_max_value">
+ ([AMOUNT] max.)
+ </text>
+ <text name="group_over_limit_text">
+ Une contribution supplémentaire est requise pour prendre en charge le terrain utilisé
+ </text>
+ <text name="group_money_heading">
+ Finances
+ </text>
+ </panel>
<tab_container name="group_money_tab_container">
<panel label="PLANIFICATION" name="group_money_planning_tab">
<text_editor name="group_money_planning_text">
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
index 1ec63cf027..35a5caaa92 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
@@ -10,7 +10,7 @@ Vous pouvez désactiver la réception des notices dans l&apos;onglet Général.
</panel.string>
<text name="lbl2">
Les notices sont conservées pendant 14 jours.
-200 maximum par groupe et par jour
+200 max. par groupe et par jour.
</text>
<scroll_list name="notice_list">
<scroll_list.columns label="" name="icon"/>
@@ -27,23 +27,23 @@ Vous pouvez désactiver la réception des notices dans l&apos;onglet Général.
<text name="lbl">
Créer une notice
</text>
- <text bottom_delta="-79" left="20" name="lbl3">
+ <text name="lbl3">
Sujet :
</text>
- <line_editor left_delta="61" name="create_subject" width="331"/>
- <text left="20" name="lbl4">
+ <line_editor name="create_subject"/>
+ <text name="lbl4">
Message :
</text>
- <text_editor bottom_delta="-90" height="104" left_delta="61" name="create_message" width="330"/>
- <text name="lbl5" width="68">
+ <text_editor name="create_message"/>
+ <text name="lbl5">
Pièce-jointe :
</text>
- <line_editor left_delta="74" name="create_inventory_name" width="190"/>
+ <line_editor name="create_inventory_name"/>
<text name="string">
Faire glisser l&apos;objet et le déposer ici pour le joindre :
</text>
- <button label="Supprimer" label_selected="Supprimer pièce-jointe" left="274" name="remove_attachment" width="140"/>
- <button label="Envoyer" label_selected="Envoyer" left="274" name="send_notice" width="140"/>
+ <button label="Supprimer" label_selected="Supprimer pièce-jointe" name="remove_attachment" tool_tip="Supprimer la pièce jointe de votre notification"/>
+ <button label="Envoyer" label_selected="Envoyer" left="200" name="send_notice" width="100"/>
<group_drop_target name="drop_target" tool_tip="Faites glisser un objet de l&apos;inventaire jusqu&apos;à cette case pour l&apos;envoyer avec la notice. Vous devez avoir l&apos;autorisation de copier et transférer l&apos;objet pour pouvoir le joindre."/>
</panel>
<panel label="Voir ancienne notice" name="panel_view_past_notice">
diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
index d0c9f2f302..7fc10833ea 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Membres et rôles" name="roles_tab">
<panel.string name="default_needs_apply_text">
- Certaines modifications sur cet onglet n&apos;ont pas été enregistrées.
+ Certaines modifications n&apos;ont pas été enregistrées.
</panel.string>
<panel.string name="want_apply_text">
Voulez-vous enregistrer vos modifications ?
</panel.string>
- <tab_container height="164" name="roles_tab_container">
- <panel height="148" label="MEMBRES" name="members_sub_tab" tool_tip="Membres">
+ <tab_container name="roles_tab_container">
+ <panel label="MEMBRES" name="members_sub_tab" tool_tip="Membres">
<panel.string name="help_text">
Vous pouvez ajouter ou supprimer les rôles assignés aux membres.
Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la touche Ctrl enfoncée.
</panel.string>
<filter_editor label="Filtrer les membres" name="filter_input"/>
- <name_list bottom_delta="-105" height="104" name="member_list">
+ <name_list name="member_list">
<name_list.columns label="Membre" name="name"/>
<name_list.columns label="Donation" name="donated" width="116"/>
<name_list.columns label="Statut" name="online" width="136"/>
@@ -21,7 +21,7 @@ Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la to
<button label="Inviter" name="member_invite" width="165"/>
<button label="Expulser" name="member_eject"/>
</panel>
- <panel height="148" label="RÔLES" name="roles_sub_tab">
+ <panel label="RÔLES" name="roles_sub_tab">
<panel.string name="help_text">
Chaque rôle possède un titre et des
pouvoirs. Les membres peuvent avoir
@@ -41,13 +41,13 @@ notamment les rôles Tous et Propriétaire.
Checkbox_Off
</panel.string>
<filter_editor label="Filtrer les rôles" name="filter_input"/>
- <scroll_list bottom_delta="-104" height="104" name="role_list">
+ <scroll_list name="role_list">
<scroll_list.columns label="Rôle" name="name"/>
<scroll_list.columns label="Titre" name="title"/>
<scroll_list.columns label="#" name="members"/>
</scroll_list>
<button label="Nouveau rôle" name="role_create"/>
- <button label="Supprimer le rôle" name="role_delete"/>
+ <button label="Supprimer le rôle" name="role_delete" width="120"/>
</panel>
<panel height="148" label="POUVOIRS" name="actions_sub_tab" tool_tip="Vous pouvez afficher une description du pouvoir et voir quels membres et rôles peuvent s&apos;en servir.">
<panel.string name="help_text">
diff --git a/indra/newview/skins/default/xui/fr/panel_groups.xml b/indra/newview/skins/default/xui/fr/panel_groups.xml
index 98320656fb..4cda98b9f7 100644
--- a/indra/newview/skins/default/xui/fr/panel_groups.xml
+++ b/indra/newview/skins/default/xui/fr/panel_groups.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="groups">
<scroll_list bottom="50" name="group list"/>
- <text bottom="16" height="32" name="groupdesc" width="268">
+ <text name="groupdesc">
Le groupe actif est en gras.
</text>
- <text bottom="3" name="groupcount">
+ <text name="groupcount" width="280">
Vous appartenez à [COUNT] groupes ([MAX] max).
</text>
<button label="IM/Appel" name="IM" tool_tip="Ouvrir une session de messagerie instantanée"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
index 0590ed0f1b..115e25e487 100644
--- a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
@@ -9,11 +9,14 @@
<button label="Devenir amis" name="add_friend_btn"/>
</layout_panel>
<layout_panel name="teleport_btn_panel">
- <button label="Téléporter" name="teleport_btn"/>
+ <button label="Téléporter" name="teleport_btn" tool_tip="Proposer de téléporter cette personne"/>
</layout_panel>
<layout_panel name="share_btn_panel">
<button label="Partager" name="share_btn"/>
</layout_panel>
+ <layout_panel name="share_btn_panel">
+ <button label="Payer" name="pay_btn"/>
+ </layout_panel>
<layout_panel name="call_btn_panel">
<button label="Appeler" name="call_btn"/>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_landmarks.xml b/indra/newview/skins/default/xui/fr/panel_landmarks.xml
index c4e90bed61..9c15b0bbd3 100644
--- a/indra/newview/skins/default/xui/fr/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/fr/panel_landmarks.xml
@@ -2,7 +2,7 @@
<panel name="Landmarks">
<accordion name="landmarks_accordion">
<accordion_tab name="tab_favorites" title="Barre des Favoris"/>
- <accordion_tab name="tab_landmarks" title="Repères"/>
+ <accordion_tab name="tab_landmarks" title="Mes repères"/>
<accordion_tab name="tab_inventory" title="Mon inventaire"/>
<accordion_tab name="tab_library" title="Bibliothèque"/>
</accordion>
diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml
index 8f0561d243..209a803e07 100644
--- a/indra/newview/skins/default/xui/fr/panel_login.xml
+++ b/indra/newview/skins/default/xui/fr/panel_login.xml
@@ -19,11 +19,11 @@
<text name="password_text">
Mot de passe :
</text>
- <check_box label="Rappel" name="remember_check"/>
+ <check_box label="Enregistrer" name="remember_check"/>
<text name="start_location_text">
Commencer à :
</text>
- <combo_box name="start_location_combo">
+ <combo_box name="start_location_combo" width="152">
<combo_box.item label="Dernier emplacement" name="MyLastLocation"/>
<combo_box.item label="Domicile" name="MyHome"/>
<combo_box.item label="&lt;Saisissez le nom de la région&gt;" name="Typeregionname"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml
index 5dc9042205..5faba01339 100644
--- a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml
@@ -42,8 +42,8 @@
<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="Nouveaux sous-vêtements (homme)" name="New Undershirt"/>
- <menu_item_call label="Nouveaux sous-vêtements (femme)" name="New Underpants"/>
+ <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>
diff --git a/indra/newview/skins/default/xui/fr/panel_me.xml b/indra/newview/skins/default/xui/fr/panel_me.xml
index c9d77c208f..2521967bc6 100644
--- a/indra/newview/skins/default/xui/fr/panel_me.xml
+++ b/indra/newview/skins/default/xui/fr/panel_me.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Mon profil" name="panel_me">
<tab_container name="tabs">
- <panel label="PROFIL" name="panel_profile"/>
- <panel label="FAVORIS" name="panel_picks"/>
+ <panel label="MON PROFIL" name="panel_profile"/>
+ <panel label="MES PRÉFÉRENCES" name="panel_picks"/>
</tab_container>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
index 36d5f4e860..9d070b7aff 100644
--- a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
@@ -2,7 +2,8 @@
<panel label="Sécurité" name="Media Settings Security">
<check_box initial_value="false" label="Autoriser l&apos;accès aux styles d&apos;URL spécifiés uniquement" name="whitelist_enable"/>
<text name="home_url_fails_some_items_in_whitelist">
- Les entrées par lesquelles la page d&apos;accueil est rejetée sont indiquées :
+ Les entrées par lesquelles la page
+d&apos;accueil est rejetée sont indiquées :
</text>
<button label="Ajouter" name="whitelist_add"/>
<button label="Supprimer" name="whitelist_del"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_my_profile.xml b/indra/newview/skins/default/xui/fr/panel_my_profile.xml
index bbf760466a..73affc3420 100644
--- a/indra/newview/skins/default/xui/fr/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_my_profile.xml
@@ -30,11 +30,14 @@
</panel>
<text name="title_member_text" value="Résident depuis :"/>
<text name="title_acc_status_text" value="Statut du compte :"/>
- <text name="acc_status_text">
+ <text_editor name="acc_status_text">
Résident. Aucune info de paiement enregistrée.
Linden.
- </text>
+ </text_editor>
<text name="title_partner_text" value="Partenaire :"/>
+ <panel name="partner_data_panel">
+ <name_box initial_value="(récupération en cours)" name="partner_text"/>
+ </panel>
<text name="title_groups_text" value="Groupes :"/>
</panel>
</scroll_container>
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 7b89a2b686..974c0cd032 100644
--- a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
@@ -1,15 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
<panel name="navigation_panel">
- <button name="back_btn" tool_tip="Revenir à l&apos;emplacement précédent"/>
- <button name="forward_btn" tool_tip="Avancer d&apos;un emplacement"/>
+ <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">
+ <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.">
+ Barre des Favoris
+ </label>
<chevron_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris"/>
</favorites_bar>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
index fa1ddd2430..f1a7ebb35c 100644
--- a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
@@ -2,8 +2,8 @@
<!-- All our XML is utf-8 encoded. -->
<panel name="nearby_chat">
<panel name="chat_caption">
- <text name="sender_name">
- CHAT PRÈS DE VOUS
- </text>
+ <text
+ name="sender_name"
+width="170">CHAT PRÈS DE VOUS</text>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
new file mode 100644
index 0000000000..53b9bc6f82
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_media">
+ <string name="media_item_count_format">
+ (%ld articles de média)
+ </string>
+ <string name="empty_item_text">
+ &lt;vide&gt;
+ </string>
+ <string name="parcel_media_name">
+ Flux de média de la parcelle
+ </string>
+ <string name="parcel_audio_name">
+ Flux audio de la parcelle
+ </string>
+ <string name="playing_suffix">
+ (lecture en cours)
+ </string>
+ <panel name="minimized_controls">
+ <button label="Tout arrêter" name="all_nearby_media_disable_btn" tool_tip="Désactiver tous les médias près de vous"/>
+ <button label="Tout lancer" name="all_nearby_media_enable_btn" tool_tip="Activer tous les médias près de vous"/>
+ <button name="open_prefs_btn" tool_tip="Ouvrir les préférences de média"/>
+ <button label="Plus &gt;&gt;" label_selected="Moins &lt;&lt;" name="more_less_btn" tool_tip="Options avancées"/>
+ </panel>
+ <panel name="nearby_media_panel">
+ <combo_box name="show_combo">
+ <combo_box.item label="Tout" name="All"/>
+ <combo_box.item label="Dans cette parcelle" name="WithinParcel"/>
+ <combo_box.item label="En dehors de la parcelle" name="OutsideParcel"/>
+ </combo_box>
+ <scroll_list name="media_list">
+ <scroll_list.columns label="Proximité" name="media_proximity"/>
+ <scroll_list.columns label="Visible" name="media_visibility"/>
+ <scroll_list.columns label="Classe" name="media_class"/>
+ <scroll_list.columns label="Nom" name="media_name"/>
+ <scroll_list.columns label="Débogage" name="media_debug"/>
+ </scroll_list>
+ <panel>
+ <layout_stack name="media_controls">
+ <layout_panel name="stop">
+ <button name="stop_btn" tool_tip="Arrêter le média sélectionné"/>
+ </layout_panel>
+ <layout_panel name="play">
+ <button name="play_btn" tool_tip="Jouer le média sélectionné"/>
+ </layout_panel>
+ <layout_panel name="pause">
+ <button name="pause_btn" tool_tip="Pauser le média sélectionné"/>
+ </layout_panel>
+ <layout_panel name="volume_slider_ctrl">
+ <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Volume audio pour le média sélectionné"/>
+ </layout_panel>
+ <layout_panel name="mute">
+ <button name="mute_btn" tool_tip="Couper l&apos;audio sur le média sélectionné"/>
+ </layout_panel>
+ <layout_panel name="zoom">
+ <button name="zoom_btn" tool_tip="Zoomer en avant sur le média sélectionné"/>
+ </layout_panel>
+ <layout_panel name="unzoom">
+ <button name="unzoom_btn" tool_tip="Zoomer en arrière sur le média sélectionné"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_notes.xml b/indra/newview/skins/default/xui/fr/panel_notes.xml
index b1be274616..ba052a0e07 100644
--- a/indra/newview/skins/default/xui/fr/panel_notes.xml
+++ b/indra/newview/skins/default/xui/fr/panel_notes.xml
@@ -14,8 +14,8 @@
</layout_panel>
<layout_panel name="notes_buttons_panel">
<button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
- <button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
- <button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
+ <button label="IM" name="im" width="30" tool_tip="Ouvrir une session IM"/>
+ <button label="Appeler" name="call" width="60" tool_tip="Appeler ce résident"/>
<button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/>
<button label="Téléporter" name="teleport" tool_tip="Proposez une téléportation"/>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_online_status.xml b/indra/newview/skins/default/xui/fr/panel_online_status.xml
new file mode 100644
index 0000000000..fdc489f375
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_online_status.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="friend_online_status" name="friend_online_status"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml
index 3447d54cf8..9b9d830aaf 100644
--- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml
@@ -2,7 +2,7 @@
<panel label="Choses" name="Outfits">
<tab_container name="appearance_tabs">
<inventory_panel label="MES TENUES" name="outfitslist_tab"/>
- <inventory_panel label="TENUE" name="cof_accordionpanel"/>
+ <inventory_panel label="PORTÉ" name="cof_tab"/>
</tab_container>
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Afficher d&apos;autres options"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index 408a7e67d7..f129f56261 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -5,7 +5,6 @@
<string name="no_one_near" value="Personne près de vous"/>
<string name="no_friends_online" value="Pas d&apos;amis connectés"/>
<string name="no_friends" value="Pas d&apos;amis"/>
- <string name="no_groups" value="Pas de groupes"/>
<string name="people_filter_label" value="Filtrer les personnes"/>
<string name="groups_filter_label" value="Filtrer les groupes"/>
<filter_editor label="Filtre" name="filter_input"/>
@@ -16,18 +15,22 @@
<button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
</panel>
</panel>
- <panel label="AMIS" name="friends_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>
+ <text name="no_friends_msg">
+ Pour ajouter des amis, essayez [secondlife:///app/search/people la recherche globale] ou cliquez sur un utilisateur pour l&apos;ajouter à vos amis.
+Si vous voulez rencontrer d&apos;autres résidents, ouvrez la [secondlife:///app/worldmap carte].
+ </text>
<panel label="bottom_panel" name="bottom_panel">
<button name="friends_viewsort_btn" tool_tip="Options"/>
<button name="add_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
<button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d&apos;amis"/>
</panel>
</panel>
- <panel label="GROUPES" name="groups_panel">
+ <panel label="MES GROUPES" name="groups_panel">
<panel label="bottom_panel" name="bottom_panel">
<button name="groups_viewsort_btn" tool_tip="Options"/>
<button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/>
@@ -47,8 +50,8 @@
<button label="Appeler" name="call_btn" tool_tip="Appeler ce résident"/>
<button label="Partager" name="share_btn"/>
<button label="Téléporter" name="teleport_btn" tool_tip="Proposez une téléportation"/>
- <button label="Profil du groupe" name="group_info_btn" tool_tip="Voir le profil du groupe"/>
- <button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/>
- <button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/>
+ <button label="Profil" name="group_info_btn" tool_tip="Voir le profil du groupe"/>
+ <button label="Chat" name="chat_btn" tool_tip="Ouvrir une session de chat"/>
+ <button label="Appel" name="group_call_btn" tool_tip="Appeler ce groupe"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_place_profile.xml b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
index 7ff796a61f..620bab0c24 100644
--- a/indra/newview/skins/default/xui/fr/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
@@ -6,7 +6,7 @@
<string name="available" value="disponible"/>
<string name="allocated" value="affecté"/>
<string name="title_place" value="Profil du lieu"/>
- <string name="title_teleport_history" value="Emplacement de l&apos;historique des téléportations"/>
+ <string name="title_teleport_history" value="Historique des téléportations"/>
<string name="not_available" value="(s/o)"/>
<string name="unknown" value="(inconnu)"/>
<string name="public" value="(public)"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml
index 3cea86a3e4..f6a64f0c58 100644
--- a/indra/newview/skins/default/xui/fr/panel_places.xml
+++ b/indra/newview/skins/default/xui/fr/panel_places.xml
@@ -2,7 +2,7 @@
<panel label="Lieux" name="places panel">
<string name="landmarks_tab_title" value="MES REPÈRES"/>
<string name="teleport_history_tab_title" value="HISTORIQUE DES TÉLÉPORTATIONS"/>
- <filter_editor label="Filtrer les lieux" name="Filter"/>
+ <filter_editor label="Filtrer Mes lieux" name="Filter"/>
<panel name="button_panel">
<button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu&apos;à la zone sélectionnée"/>
<button label="Carte" name="map_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
index 04abcc8aad..4b8559fdde 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
@@ -1,48 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
-<panel name="advanced">
- <panel.string name="resolution_format">
- [RES_X] x [RES_Y]
- </panel.string>
+<panel label="Avancées" name="advanced">
<panel.string name="aspect_ratio_text">
[NUM]:[DEN]
</panel.string>
- <check_box label="Bulles de chat" name="bubble_text_chat"/>
- <color_swatch name="background" tool_tip="Choisir la couleur des bulles de chat"/>
- <slider label="Opacité" name="bubble_chat_opacity"/>
- <text name="AspectRatioLabel1" tool_tip="largeur/hauteur">
- Rapport hauteur/largeur
- </text>
- <combo_box name="aspect_ratio" tool_tip="largeur/hauteur">
- <combo_box.item label="4:3 (Standard CRT)" name="item1"/>
- <combo_box.item label="5:4 (1280 x 1024 LCD)" name="item2"/>
- <combo_box.item label="8:5 (écran large)" name="item3"/>
- <combo_box.item label="16:9 (plein écran)" name="item4"/>
- </combo_box>
- <check_box label="Détection automatique" name="aspect_auto_detect"/>
- <text name="heading1">
- Caméra :
- </text>
<slider label="Angle de vue" name="camera_fov"/>
<slider label="Distance" name="camera_offset_scale"/>
<text name="heading2">
- Positionnement automatique pour :
+ Positionnement automatique pour :
</text>
<check_box label="Construire/Éditer" name="edit_camera_movement" tool_tip="Utilisez le positionnement automatique de la caméra quand vous accédez au mode de modification et quand vous le quittez"/>
<check_box label="Apparence" name="appearance_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra quand je suis en mode Édition"/>
- <text name="heading3">
- Avatars :
- </text>
<check_box label="Afficher en vue subjective" name="first_person_avatar_visible"/>
<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="Faire bouger les lèvres de l&apos;avatar quand il parle" name="enable_lip_sync"/>
- <check_box label="Afficher les erreurs de script" name="show_script_errors"/>
+ <check_box label="Bulles de chat" name="bubble_text_chat"/>
+ <slider label="Opacité" name="bubble_chat_opacity"/>
+ <color_swatch name="background" tool_tip="Choisir la couleur des bulles de chat"/>
+ <check_box label="Afficher les erreurs de script dans :" name="show_script_errors"/>
<radio_group name="show_location">
- <radio_item label="En chat" name="0"/>
- <radio_item label="Dans une fenêtre" name="1"/>
+ <radio_item label="Chat près de vous" name="0"/>
+ <radio_item label="Autre fenêtre" name="1"/>
</radio_group>
- <check_box label="Basculer le mode micro quand j&apos;appuie sur la touche de contrôle de la fonction Parler :" name="push_to_talk_toggle_check" tool_tip="En mode bascule, appuyez une fois sur la touche de contrôle de la fonction, puis relâchez-la pour activer/désactiver votre micro. Si vous n&apos;êtes pas en mode bascule, le micro ne diffuse votre voix que quand vous maintenez la touche de contrôle de la fonction enfoncée."/>
+ <check_box label="Activer/désactiver la fonction Parler quand j&apos;appuie sur :" name="push_to_talk_toggle_check" tool_tip="En mode bascule, appuyez une fois sur la touche de contrôle de la fonction, puis relâchez-la pour activer/désactiver votre micro. Si vous n&apos;êtes pas en mode bascule, le micro ne diffuse votre voix que quand vous maintenez la touche de contrôle de la fonction enfoncée."/>
<line_editor label="Touche de contrôle de la fonction Appuyer pour parler" name="modifier_combo"/>
<button label="Définir la touche" name="set_voice_hotkey_button"/>
- <button label="Bouton central de la souris" name="set_voice_middlemouse_button"/>
+ <button label="Bouton central de la souris" name="set_voice_middlemouse_button" tool_tip="Réinitialiser sur le bouton central de la souris"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml
index 73f4e1e2bd..901a92ed1b 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml
@@ -6,9 +6,9 @@
<check_box label="Quand je dépense ou que je reçois des L$" name="notify_money_change_checkbox"/>
<check_box label="Quand mes amis se connectent ou se déconnectent" name="friends_online_notify_checkbox"/>
<text name="show_label">
- Toujours afficher ces notifications :
+ Toujours afficher :
</text>
<text name="dont_show_label">
- Ne jamais afficher ces notifications :
+ Ne jamais afficher :
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index 25a8e3b6d4..27242ec3de 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -42,6 +42,6 @@
<check_box label="Activer l&apos;historique des chats en texte brut" name="plain_text_chat_history"/>
<radio_group name="chat_window" tool_tip="Afficher vos messages instantanés dans plusieurs fenêtres ou dans une seule fenêtre avec plusieurs onglets (redémarrage requis)">
<radio_item label="Plusieurs fenêtres" name="radio" value="0"/>
- <radio_item label="Une fenêtre" name="radio2" value="1"/>
+ <radio_item label="Onglets" name="radio2" value="1"/>
</radio_group>
</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 b359cf56d8..c3bbe18a7c 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -51,10 +51,10 @@
Mes effets :
</text>
<text name="title_afk_text">
- Délai d&apos;absence :
+ Me montrer absent après :
</text>
<color_swatch label="" name="effect_color_swatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/>
- <combo_box label="Délai d&apos;absence :" name="afk">
+ <combo_box label="Me montrer absent après :" name="afk">
<combo_box.item label="2 minutes" name="item0"/>
<combo_box.item label="5 minutes" name="item1"/>
<combo_box.item label="10 minutes" name="item2"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index 4459244395..aa004d2c84 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -17,11 +17,11 @@
<text name="QualitySpeed">
Qualité et vitesse :
</text>
- <text left="105" name="FasterText">
+ <text left="35" name="FasterText">
Plus rapide
</text>
<text name="BetterText">
- Meilleur
+ Meilleure
</text>
<text name="ShadersPrefText">
Faible
@@ -62,7 +62,7 @@
<text name="DrawDistanceMeterText2">
m
</text>
- <slider label="Nombre de particules max. :" label_width="143" name="MaxParticleCount"/>
+ <slider label="Nombre de particules max. :" label_width="147" name="MaxParticleCount"/>
<slider label="Qualité post-traitement :" name="RenderPostProcess"/>
<text name="MeshDetailText">
Détails des rendus :
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
index 88b68d1a06..f14ccc3a8e 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
@@ -3,7 +3,7 @@
<panel.string name="log_in_to_change">
se connecter pour changer
</panel.string>
- <button label="Vider le cache" name="clear_cache"/>
+ <button label="Vider le cache" name="clear_cache" tool_tip="Effacer l&apos;image de connexion, le dernier lieu, l&apos;historique des téléportations et la texture du cache."/>
<text name="cache_size_label_l">
(Endroits, images, web, historique des recherches)
</text>
@@ -11,14 +11,12 @@
<check_box label="Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM" name="voice_call_friends_only_check"/>
<check_box label="Fermer le micro à la fin d&apos;un appel" name="auto_disengage_mic_check"/>
<check_box label="Accepter les cookies" name="cookies_enabled"/>
- <check_box label="Média activé" name="media_enabled"/>
- <check_box label="Autoriser la lecture automatique du média" name="autoplay_enabled"/>
<text name="Logs:">
Journaux :
</text>
<check_box label="Sauvegarder les chats près de moi sur mon ordinateur" name="log_nearby_chat"/>
<check_box label="Sauvegarder les IM sur mon ordinateur" name="log_instant_messages"/>
- <check_box label="Inclure les heures" name="show_timestamps_check_im"/>
+ <check_box label="Inclure les dates et heures" name="show_timestamps_check_im"/>
<text name="log_path_desc">
Emplacement :
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
index 68a735df90..3c789574a4 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
@@ -18,29 +18,29 @@
kbps
</text>
<check_box label="Port de connexion personnalisé" name="connection_port_enabled"/>
- <spinner label="Numéro de port :" name="web_proxy_port"/>
+ <spinner label="Numéro de port :" name="connection_port"/>
<text name="cache_size_label_l">
Taille de la mémoire
</text>
<text name="text_box5">
Mo
</text>
- <button label="Parcourir" label_selected="Parcourir" name="set_cache"/>
- <button label="Réinitialiser" label_selected="Réinitialiser" name="reset_cache"/>
<text name="Cache location">
Emplacement du cache :
</text>
+ <button label="Parcourir" label_selected="Parcourir" name="set_cache"/>
+ <button label="Réinitialiser" label_selected="Réinitialiser" name="reset_cache"/>
<text name="Web:">
Web :
</text>
<radio_group name="use_external_browser">
- <radio_item label="Utiliser le navigateur intégré" name="internal" tool_tip="Utilisez le navigateur intégré pour obtenir de l&apos;aide, ouvrir des liens, etc. Ce navigateur s&apos;ouvre dans [APP_NAME]."/>
- <radio_item label="Utiliser mon navigateur (IE, Firefox etc.)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l&apos;aide, les liens etc. Non recommandé en mode plein écran."/>
+ <radio_item label="Utiliser le navigateur intégré" name="internal" tool_tip="Utilisez le navigateur intégré pour obtenir de l&apos;aide, ouvrir des liens, etc. Ce navigateur s&apos;ouvre dans [APP_NAME]." value="0"/>
+ <radio_item label="Utiliser mon navigateur (IE, Firefox, Safari)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l&apos;aide, les liens etc. Non recommandé en mode plein écran." value="1"/>
</radio_group>
- <check_box initial_value="false" label="Proxy web" name="web_proxy_enabled"/>
- <line_editor name="web_proxy_editor" tool_tip="Le nom ou adresse IP du proxy que vous souhaitez utiliser"/>
- <button label="Parcourir" label_selected="Parcourir" name="set_proxy"/>
+ <check_box initial_value="false" label="Activer le proxy Web" name="web_proxy_enabled"/>
<text name="Proxy location">
Emplacement du proxy :
</text>
+ <line_editor name="web_proxy_editor" tool_tip="Le nom ou adresse IP du proxy que vous souhaitez utiliser"/>
+ <spinner label="Numéro de port :" label_width="95" name="web_proxy_port" width="170"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
index 4f5ef423f5..663775559a 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
@@ -1,16 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Sons" name="Preference Media panel">
<slider label="Volume principal" name="System Volume"/>
- <check_box initial_value="true" label="Couper le son si minimisé" name="mute_when_minimized"/>
- <slider label="Ambiant" name="Wind Volume"/>
+ <check_box initial_value="true" label="Couper le son quand minimisé" name="mute_when_minimized"/>
<slider label="Boutons" name="UI Volume"/>
- <slider label="Média" name="Media Volume"/>
+ <slider label="Ambiant" name="Wind Volume"/>
<slider label="Effets sonores" name="SFX Volume"/>
<slider label="Flux musical" name="Music Volume"/>
- <check_box label="Activer le chat vocal" name="enable_voice_check"/>
+ <check_box label="Activé" name="music_enabled"/>
+ <slider label="Média" name="Media Volume"/>
+ <check_box label="Activé" name="enable_media"/>
<slider label="Chat vocal" name="Voice Volume"/>
+ <check_box label="Activé" name="enable_voice_check"/>
+ <check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="vrai"/>
+ <check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="vrai"/>
<text name="Listen from">
- Écouter à partir de :
+ Paramètres du chat vocal
</text>
<radio_group name="ear_location">
<radio_item label="Position de la caméra" name="0"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml
index 0c33a0f1e0..364426fed1 100644
--- a/indra/newview/skins/default/xui/fr/panel_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_profile.xml
@@ -28,21 +28,25 @@
</panel>
<text name="title_member_text" value="Résident depuis :"/>
<text name="title_acc_status_text" value="Statut du compte :"/>
- <text name="acc_status_text">
+ <text_editor name="acc_status_text">
Résident. Aucune info de paiement enregistrée.
Linden.
- </text>
+ </text_editor>
<text name="title_partner_text" value="Partenaire :"/>
+ <panel name="partner_data_panel">
+ <name_box initial_value="(récupération en cours)" name="partner_text"/>
+ </panel>
<text name="title_groups_text" value="Groupes :"/>
</panel>
</scroll_container>
</layout_panel>
<layout_panel name="profile_buttons_panel">
<button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
- <button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
- <button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
+ <button label="IM" name="im" tool_tip="Ouvrir une session IM" width="30"/>
+ <button label="Appeler" name="call" tool_tip="Appeler ce résident" width="60"/>
<button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/>
<button label="Téléporter" name="teleport" tool_tip="Proposez une téléportation"/>
+ <button label="▼" name="overflow_btn" tool_tip="Payer ou partager l&apos;inventaire avec le résident"/>
</layout_panel>
<layout_panel name="profile_me_buttons_panel">
<button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml
index cf9f4e0fd0..cd1d0c4886 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml
@@ -18,7 +18,7 @@
<text name="estate_cov_lbl">
Règlement :
</text>
- <text name="covenant_timestamp_text">
+ <text name="covenant_timestamp_text" width="350">
Dernière modification le mercredi 31 décembre 1969 16:00:00
</text>
<button label="?" name="covenant_help"/>
@@ -27,8 +27,8 @@
</text_editor>
<button label="Réinitialiser" name="reset_covenant"/>
<text name="covenant_help_text">
- Les changements apportés au règlement apparaîtront sur toutes
- les parcelles du domaine.
+ Les changements apportés au règlement apparaîtront sur
+toutes les parcelles du domaine.
</text>
<text bottom_delta="-31" name="covenant_instructions">
Faire glisser une note pour changer le règlement de ce domaine.
diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
index 0fabf92889..cb4a74e142 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
@@ -13,7 +13,7 @@
<check_box label="Désactiver la physique" name="disable_physics_check" tool_tip="Désactiver tous les effets liés à la physique dans cette région"/>
<button label="?" name="disable_physics_help"/>
<button bottom_delta="-38" label="Appliquer" name="apply_btn"/>
- <text bottom_delta="-42" name="objret_text_lbl">
+ <text bottom_delta="-42" name="objret_text_lbl" width="260">
Renvoi de l&apos;objet
</text>
<text name="resident_text_lbl">
diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
index a0282dd940..f9262ea478 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Domaine" name="Estate">
<text bottom="-34" name="estate_help_text">
- Les modifications des paramètres de cet onglet affecteront toutes les régions du domaine.
+ Les modifications des paramètres de cet
+onglet affecteront toutes les régions du
+domaine.
</text>
- <text bottom_delta="-34" name="estate_text">
+ <text top_pad="8" bottom_delta="-34" name="estate_text">
Domaine :
</text>
<text name="estate_name">
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml
index 8a59adbd93..711278d614 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml
@@ -32,9 +32,9 @@
<button label="?" name="parcel_changes_help"/>
<check_box label="Ne pas afficher dans la recherche" name="block_parcel_search_check" tool_tip="Afficher cette région et ses parcelles dans les résultats de recherche"/>
<button label="?" name="parcel_search_help"/>
- <spinner label="Nombre maximum d&apos;avatars" label_width="127" name="agent_limit_spin" width="190"/>
+ <spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin" label_width="160" width="240"/>
<button label="?" name="agent_limit_help"/>
- <spinner label="Bonus objet" label_width="127" name="object_bonus_spin" width="190"/>
+ <spinner label="Bonus objet" name="object_bonus_spin" label_width="160" width="240"/>
<button label="?" name="object_bonus_help"/>
<text label="Maturité" name="access_text">
Catégorie :
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
index 0e72bbc9f5..e709100fa2 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
@@ -3,19 +3,19 @@
<text name="region_text_lbl">
Région :
</text>
- <text name="region_text">
+ <text name="region_text" left_delta="56">
inconnu
</text>
<text name="version_channel_text_lbl">
Version :
</text>
- <text name="version_channel_text">
+ <text name="version_channel_text" left_delta="56">
inconnu
</text>
<text name="region_type_lbl">
Type :
</text>
- <text name="region_type">
+ <text name="region_type" left_delta="56">
inconnu
</text>
<check_box label="Interdire le terraformage" name="block_terraform_check"/>
@@ -25,8 +25,8 @@
<check_box label="Autoriser la revente de terrains" name="allow_land_resell_check"/>
<check_box label="Autoriser la fusion/division de terrains" name="allow_parcel_changes_check"/>
<check_box label="Interdire l&apos;affichage du terrain dans les recherches" name="block_parcel_search_check" tool_tip="Permettre aux autres résidents de voir cette région et ses parcelles dans les résultats de recherche"/>
- <spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin"/>
- <spinner label="Bonus objet" name="object_bonus_spin"/>
+ <spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin" label_width="160" width="240"/>
+ <spinner label="Bonus objet" name="object_bonus_spin" label_width="160" width="240"/>
<text label="Accès" name="access_text">
Catégorie :
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_texture.xml b/indra/newview/skins/default/xui/fr/panel_region_texture.xml
index a7abb49b1a..e95d911c01 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_texture.xml
@@ -39,7 +39,7 @@
<text name="height_text_lbl9">
Nord-est
</text>
- <text name="height_text_lbl10">
+ <text name="height_text_lbl10" width="460">
Ces valeurs représentent les limites de mélange pour les textures ci-dessus.
</text>
<text name="height_text_lbl11">
diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
index 24656bf379..e541fae31f 100644
--- a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
@@ -1,10 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="MON AVATAR" name="script_limits_my_avatar_panel">
+ <text name="script_memory">
+ Utilisation des scripts d&apos;avatars
+ </text>
<text name="loading_text">
Chargement...
</text>
<scroll_list name="scripts_list">
- <scroll_list.columns label="Taille (Ko)" name="size"/>
+ <scroll_list.columns label="Taille (Ko)" name="size" width="80"/>
<scroll_list.columns label="URL" name="urls"/>
<scroll_list.columns label="Nom de l&apos;objet" name="name"/>
<scroll_list.columns label="Endroit" name="location"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
index 1e5e680c09..751abd6f1d 100644
--- a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
@@ -3,20 +3,18 @@
<text name="script_memory">
Mémoire des scripts de parcelles
</text>
- <text name="parcels_listed">
- Parcelles possédées :
- </text>
- <text name="memory_used">
- Mémoire utilisée :
- </text>
+ <text name="parcels_listed"/>
+ <text name="memory_used"/>
<text name="loading_text">
Chargement...
</text>
<scroll_list name="scripts_list">
- <scroll_list.columns label="Taille (Ko)" name="size"/>
+ <scroll_list.columns label="Taille (Ko)" name="size" width="80"/>
+ <scroll_list.columns label="URL" name="urls"/>
<scroll_list.columns label="Nom de l&apos;objet" name="name"/>
- <scroll_list.columns label="Propriétaire d&apos;objet" name="owner"/>
- <scroll_list.columns label="Parcelle/emplacement" name="location"/>
+ <scroll_list.columns label="Propriétaire d&apos;objet" name="owner" width="140"/>
+ <scroll_list.columns label="Parcelle" name="parcel"/>
+ <scroll_list.columns label="Endroit" name="location"/>
</scroll_list>
<button label="Rafraîchir la liste" name="refresh_list_btn"/>
<button label="Surbrillance" name="highlight_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_side_tray.xml b/indra/newview/skins/default/xui/fr/panel_side_tray.xml
index 3ad1671921..178ae4324b 100644
--- a/indra/newview/skins/default/xui/fr/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_side_tray.xml
@@ -2,26 +2,28 @@
<!-- Side tray cannot show background because it is always
partially on screen to hold tab buttons. -->
<side_tray name="sidebar">
- <sidetray_tab description="Activer/désactiver le panneau latéral." name="sidebar_openclose"/>
- <sidetray_tab description="Domicile." name="sidebar_home">
+ <sidetray_tab description="Activer/désactiver le panneau latéral." name="sidebar_openclose" tab_title="Activer/désactiver le panneau latéral"/>
+ <sidetray_tab description="Domicile." name="sidebar_home" tab_title="Accueil">
<panel label="domicile" name="panel_home"/>
</sidetray_tab>
- <sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me">
- <panel label="Moi" name="panel_me"/>
+ <sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me" tab_title="Mon profil">
+ <panel_container name="panel_container">
+ <panel label="Moi" name="panel_me"/>
+ </panel_container>
</sidetray_tab>
- <sidetray_tab description="Trouvez vos amis, vos contacts et les personnes se trouvant près de vous." name="sidebar_people">
+ <sidetray_tab description="Trouvez vos amis, vos contacts et les personnes se trouvant près de vous." name="sidebar_people" tab_title="Personnes">
<panel_container name="panel_container">
<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>
</sidetray_tab>
- <sidetray_tab description="Trouvez de nouveaux lieux à découvrir et les lieux que vous connaissez déjà." label="Lieux" name="sidebar_places">
+ <sidetray_tab description="Trouvez de nouveaux lieux à découvrir et les lieux que vous connaissez déjà." label="Lieux" name="sidebar_places" tab_title="Endroits">
<panel label="Lieux" name="panel_places"/>
</sidetray_tab>
- <sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory">
+ <sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory" tab_title="Mon inventaire">
<panel label="Modifier l&apos;inventaire" name="sidepanel_inventory"/>
</sidetray_tab>
- <sidetray_tab description="Modifiez votre apparence actuelle." name="sidebar_appearance">
+ <sidetray_tab description="Modifiez votre apparence actuelle." name="sidebar_appearance" tab_title="Mon apparence">
<panel label="Changer d&apos;apparence" name="sidepanel_appearance"/>
</sidetray_tab>
</side_tray>
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 ae575a9fac..e58e806f99 100644
--- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
@@ -24,7 +24,8 @@
<button label="" label_selected="" name="buycurrency" tool_tip="Mon solde"/>
<button label="Acheter des L$" name="buyL" tool_tip="Cliquez pour acheter plus de L$"/>
<text name="TimeText" tool_tip="Heure actuelle (Pacifique)">
- midi
+ 00h00 PST
</text>
+ <button name="media_toggle_btn" tool_tip="Cliquer pour activer/désactiver le média"/>
<button name="volume_btn" tool_tip="Contrôle du volume global"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
index 688bed8cbf..f791877fa8 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
@@ -37,7 +37,7 @@
Vente mixte
</panel.string>
<text name="title" value="Profil de l&apos;objet"/>
- <text name="where" value="(dans le monde virtuel)"/>
+ <text name="where" value="(dans Second Life)"/>
<panel label="">
<text name="Name:">
Nom :
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 1888dc1827..f25fe09c84 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -227,9 +227,6 @@
<string name="AvatarNameMultiple">
(multiple)
</string>
- <string name="AvatarNameHippos">
- (hippos)
- </string>
<string name="GroupNameNone">
(aucun)
</string>
@@ -593,6 +590,9 @@
<string name="hang_up">
Déconnecté du chat vocal
</string>
+ <string name="reconnect_nearby">
+ Vous allez maintenant être reconnecté(e) au chat vocal près de vous.
+ </string>
<string name="ScriptQuestionCautionChatGranted">
&apos;[OBJECTNAME]&apos;, un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], a reçu le droit de : [PERMISSIONS].
</string>
@@ -642,7 +642,7 @@
Modéré
</string>
<string name="SIM_ACCESS_ADULT">
- Adult
+ Adulte
</string>
<string name="SIM_ACCESS_DOWN">
Hors ligne
@@ -741,10 +741,10 @@
Gants
</string>
<string name="undershirt">
- Sous-vêtements (homme)
+ Débardeur
</string>
<string name="underpants">
- Sous-vêtements (femme)
+ Caleçon
</string>
<string name="skirt">
Jupe
@@ -825,7 +825,7 @@
Appuyez sur ESC pour quitter la vue subjective
</string>
<string name="InventoryNoMatchingItems">
- Aucun objet correspondant dans l&apos;inventaire.
+ Aucun objet correspondant dans l&apos;inventaire. Essayer la [secondlife:///app/search/groups &quot;Recherche&quot;].
</string>
<string name="FavoritesNoMatchingItems">
Faites glisser un repère ici pour l&apos;ajouter à vos Favoris.
@@ -1324,6 +1324,9 @@
<string name="ScriptLimitsRequestError">
Une erreur est survenue pendant la requête d&apos;informations.
</string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ Aucune parcelle sélectionnée
+ </string>
<string name="ScriptLimitsRequestWrongRegion">
Erreur : les informations de script ne sont disponibles que dans votre région actuelle.
</string>
@@ -1486,8 +1489,8 @@
<string name="covenant_last_modified">
Dernière modification :
</string>
- <string name="none_text" value=" (aucun) "/>
- <string name="never_text" value=" (jamais) "/>
+ <string name="none_text" value=" (aucun)"/>
+ <string name="never_text" value=" (jamais)"/>
<string name="GroupOwned">
Propriété du groupe
</string>
@@ -1501,7 +1504,7 @@
(mise à jour après la publication)
</string>
<string name="NoPicksClassifiedsText">
- Il n&apos;y a pas de préférences/petites annonces ici
+ Vous n&apos;avez pas créé de favoris ni de petites annonces Cliquez sur le bouton Plus pour créer un favori ou une petite annonce.
</string>
<string name="PicksClassifiedsLoadingText">
Chargement...
@@ -1706,7 +1709,7 @@
Appartenant aux Lindens
</string>
<string name="Adult">
- Adult
+ Adulte
</string>
<string name="Arts&amp;Culture">
Arts et culture
@@ -1897,7 +1900,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Mèches de derrière
</string>
<string name="Baggy">
- Cernés
+ Plus
</string>
<string name="Bangs">
Frange
@@ -1924,7 +1927,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Volume : Haut
</string>
<string name="Big Head">
- Grosse tête
+ Plus
</string>
<string name="Big Pectorals">
Gros pectoraux
@@ -1960,13 +1963,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Grains de beauté
</string>
<string name="Body Thick">
- Corps épais
+ Plus
</string>
<string name="Body Thickness">
Épaisseur du corps
</string>
<string name="Body Thin">
- Corps mince
+ Moins
</string>
<string name="Bow Legged">
Jambes arquées
@@ -2098,7 +2101,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Déviation du nez
</string>
<string name="Cuff Flare">
- Jambe
+ Jambes
</string>
<string name="Dark">
Sombre
@@ -2215,7 +2218,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Jambes larges
</string>
<string name="Flat">
- Plat
+ Moins
</string>
<string name="Flat Butt">
Fesses plates
@@ -2380,7 +2383,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Saillie de la mâchoire
</string>
<string name="Jaw Shape">
- Forme de la mâchoire
+ Mâchoire
</string>
<string name="Join">
Rapprochés
@@ -2461,7 +2464,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Fente labiale
</string>
<string name="Lip Cleft Depth">
- Profondeur fente labiale
+ Fente labiale
</string>
<string name="Lip Fullness">
Volume des lèvres
@@ -2488,7 +2491,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Couleur du rouge à lèvres
</string>
<string name="Long">
- Long
+ Plus
</string>
<string name="Long Head">
Tête longue
@@ -2587,7 +2590,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Plus
</string>
<string name="More Lower Lip">
- Plus
+ Inférieure plus grosse
</string>
<string name="More Muscles">
Plus
@@ -2611,7 +2614,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Plus
</string>
<string name="More Upper Lip">
- Plus
+ Supérieure plus grosse
</string>
<string name="More Vertical">
Plus
@@ -2647,7 +2650,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Couleur du vernis
</string>
<string name="Narrow">
- Étroit
+ Moins
</string>
<string name="Narrow Back">
Arrière étroit
@@ -2827,7 +2830,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Plateforme (largeur)
</string>
<string name="Pointy">
- Pointu
+ Pointue
</string>
<string name="Pointy Heels">
Talons pointus
@@ -2845,10 +2848,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Œil droit saillant
</string>
<string name="Puffy">
- Gonflées
+ Plus
</string>
<string name="Puffy Eyelids">
- Paupières
+ Cernes
</string>
<string name="Rainbow Color">
Couleur arc en ciel
@@ -3013,10 +3016,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Petites mains
</string>
<string name="Small Head">
- Petite tête
+ Moins
</string>
<string name="Smooth">
- Lisses
+ Moins
</string>
<string name="Smooth Hair">
Cheveux lisses
@@ -3034,7 +3037,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Mèches en pointe
</string>
<string name="Square">
- Carré
+ Carrée
</string>
<string name="Square Toe">
Orteil carré
@@ -3145,7 +3148,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Menton supérieur
</string>
<string name="Upper Eyelid Fold">
- Paupière supérieure
+ Paupière sup.
</string>
<string name="Upturned">
En trompette
@@ -3163,7 +3166,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Cheveux blancs
</string>
<string name="Wide">
- Large
+ Plus
</string>
<string name="Wide Back">
Derrière large
diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml
index 0fa20ab1ac..9105c2613d 100644
--- a/indra/newview/skins/default/xui/ja/floater_about.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about.xml
@@ -8,9 +8,9 @@
コンパイラー [COMPILER] [COMPILER_VERSION] バージョン
</floater.string>
<floater.string name="AboutPosition">
- You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at [HOSTNAME] ([HOSTIP])
+ あなたの現在地は、[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] の [REGION] です。位置は &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]
@@ -61,7 +61,8 @@ Vivox バージョン: [VIVOX_VERSION]
FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
GL Copyright (C) 1999-2004 Brian Paul.
Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
- jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
+ jpeg2000 Copyright (C) 2001, David Taubman, The University of New South
+ Wales (UNSW)
jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
ogg/vorbis Copyright (C) 2001, Xiphophorus
OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index 71a38391cd..d57a81c770 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -27,13 +27,13 @@
[AREA] 平方メートル
</panel.string>
<panel.string name="auction_id_text">
- オークションID: [ID]
+ オークション ID: [ID]
</panel.string>
<panel.string name="need_tier_to_modify">
この土地を修正変更するには、購入を承認する必要があります。
</panel.string>
<panel.string name="group_owned_text">
- (グループ所有)
+ (グループ所有)
</panel.string>
<panel.string name="profile_text">
プロフィール
@@ -42,13 +42,13 @@
情報
</panel.string>
<panel.string name="public_text">
- (公共)
+ (公共)
</panel.string>
<panel.string name="none_text">
(なし)
</panel.string>
<panel.string name="sale_pending_text">
- (購入審査中)
+ (購入審査中)
</panel.string>
<panel.string name="no_selection_text">
区画が選択されていません。
@@ -95,9 +95,9 @@
販売対象外
</text>
<text name="For Sale: Price L$[PRICE].">
- 価格: L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル)
+ 価格: L$ [PRICE] (L$ [PRICE_PER_SQM] / 平方メートル)
</text>
- <button label="土地を売る" label_selected="土地を販売..." name="Sell Land..."/>
+ <button label="土地を売る" label_selected="土地を販売..." name="Sell Land..." width="100"/>
<text name="For sale to">
販売先:[BUYER]
</text>
@@ -107,7 +107,7 @@
<text name="Selling with no objects in parcel.">
オブジェクトは販売しない
</text>
- <button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale"/>
+ <button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale" width="100"/>
<text name="Claimed:">
取得日時:
</text>
@@ -126,13 +126,13 @@
<text name="DwellText">
</text>
- <button label="土地の購入" label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/>
- <button label="スクリプト情報" name="Scripts..."/>
+ <button label="土地の購入" label_selected="土地を購入..." left="130" name="Buy Land..." width="100"/>
+ <button label="スクリプト情報" name="Scripts..." width="100"/>
<button label="グループに購入" label_selected="グループ用に購入..." name="Buy For Group..."/>
- <button label="入場許可を購入" label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="125"/>
+ <button label="入場許可を購入" label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="100"/>
<button label="土地の放棄" label_selected="土地を放棄..." name="Abandon Land..."/>
<button label="土地を取り戻す" label_selected="土地の返還を要求..." name="Reclaim Land..."/>
- <button label="リンデンセール" label_selected="Lindenセール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
+ <button label="リンデンセール" label_selected="Linden セール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
</panel>
<panel label="約款" name="land_covenant_panel">
<panel.string name="can_resell">
@@ -155,7 +155,7 @@
メインランド
</text>
<text name="estate_owner_lbl">
- オーナー:
+ 所有者:
</text>
<text name="estate_owner_text">
(なし)
@@ -188,7 +188,7 @@
再販:
</text>
<text name="resellable_clause">
- この地域(リージョン)にある土地は再販できません。
+ このリージョン(地域)にある土地は再販できません。
</text>
<text name="changeable_lbl">
再分割:
@@ -200,19 +200,19 @@
</panel>
<panel label="オブジェクト" name="land_objects_panel">
<panel.string left="200" name="objects_available_text">
- [MAX]の内[COUNT]([AVAILABLE]利用可能)
+ [MAX] の内 [COUNT]([AVAILABLE] 利用可能)
</panel.string>
<panel.string left="200" name="objects_deleted_text">
- [MAX]の内[COUNT]([DELETED]を削除)
+ [MAX] の内 [COUNT]([DELETED] を削除)
</panel.string>
<text name="parcel_object_bonus">
- 地域オブジェクトボーナス要因: [BONUS]
+ オブジェクトボーナス: [BONUS]
</text>
<text name="Simulator primitive usage:" width="500">
プリム使用状況:
</text>
<text left="200" name="objects_available">
- [MAX]の内[COUNT]([AVAILABLE]利用可能)
+ [MAX] の内 [COUNT] ([AVAILABLE] 利用可能)
</text>
<text name="Primitives parcel supports:" width="200">
区画でサポートされるプリム数:
@@ -227,7 +227,7 @@
[COUNT]
</text>
<text name="Owned by parcel owner:" width="300">
- 区画オーナーによる所有:
+ 区画所有者の所有物:
</text>
<text left="200" name="owner_objects_text">
[COUNT]
@@ -243,7 +243,7 @@
<button label="表示" label_selected="表示" name="ShowGroup" right="-145"/>
<button label="返却" label_selected="返却..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
<text name="Owned by others:">
- 他人による所有:
+ 他人の所有物:
</text>
<text left="200" name="other_objects_text">
[COUNT]
@@ -251,19 +251,19 @@
<button label="表示" label_selected="表示" name="ShowOther" right="-145"/>
<button label="返却" label_selected="返却..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
<text name="Selected / sat upon:">
- 選択済み/決定済み:
+ 選択済み・決定済み:
</text>
<text left="200" name="selected_objects_text">
[COUNT]
</text>
<text name="Autoreturn" width="500">
- 他人のオブジェクトを自動返却(分単位、0で自動返却なし):
+ 他人のオブジェクトを自動返却(分単位、0 で自動返却なし):
</text>
<line_editor left_delta="5" name="clean other time" right="-80"/>
<text name="Object Owners:" width="150">
- オブジェクトのオーナー:
+ オブジェクトの所有者:
</text>
- <button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List" tool_tip="オブジェクトのリストを更新"/>
+ <button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List" tool_tip="オブジェクトのリストを更新します"/>
<button label="オブジェクトを返却する" label_selected="オブジェクトの返却..." left="256" name="Return objects..."/>
<name_list label="カウント" name="owner list">
<name_list.columns label="タイプ" name="type"/>
@@ -278,7 +278,7 @@
この区画を検索結果に表示する
</panel.string>
<panel.string name="search_disabled_small_tooltip">
- 区画面積が128平方メートルかそれ以下のため、このオプションは無効です。
+ 区画面積が 128 平方メートルかそれ以下のため、このオプションは無効です。
大きな区画のみ検索に表示させることが可能です。
</panel.string>
<panel.string name="search_disabled_permissions_tooltip">
@@ -329,12 +329,12 @@
土地オプション:
</text>
<check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/>
- <check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を妨げることができます。"/>
- <check_box label="検索に区画を表示(週 L$30)" name="ShowDirectoryCheck" tool_tip="検索結果でこの区画を表示させる"/>
+ <check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を防ぐことができます。"/>
+ <check_box label="検索に区画を表示(週 L$ 30)" name="ShowDirectoryCheck" tool_tip="この区画を検索結果に表示します"/>
<combo_box name="land category with adult">
<combo_box.item label="全カテゴリ" name="item0"/>
- <combo_box.item label="Linden所在地" name="item1"/>
- <combo_box.item label="Adult" name="item2"/>
+ <combo_box.item label="Linden 所在地" name="item1"/>
+ <combo_box.item label="アダルト" name="item2"/>
<combo_box.item label="アートとカルチャー" name="item3"/>
<combo_box.item label="ビジネス" name="item4"/>
<combo_box.item label="教育的" name="item5"/>
@@ -348,7 +348,7 @@
</combo_box>
<combo_box name="land category">
<combo_box.item label="全カテゴリー" name="item0"/>
- <combo_box.item label="Linden所在地" name="item1"/>
+ <combo_box.item label="Linden 所在地" name="item1"/>
<combo_box.item label="アート&amp;カルチャー" name="item3"/>
<combo_box.item label="ビジネス" name="item4"/>
<combo_box.item label="教育的" name="item5"/>
@@ -364,7 +364,7 @@
<text name="Snapshot:">
スナップショット:
</text>
- <texture_picker label="" left="116" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/>
+ <texture_picker label="" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/>
<text name="landing_point">
着地点: [LANDING]
</text>
@@ -383,7 +383,7 @@
<text name="with media:">
種類:
</text>
- <combo_box name="media type" tool_tip="URL が動画、ウェブ・ページ、その他のメディアの場合に指定します"/>
+ <combo_box name="media type" tool_tip="URL が動画、Webページ、その他のメディアの場合に指定します"/>
<text name="at URL:">
ホームページ:
</text>
@@ -396,20 +396,20 @@
<text name="Description:">
説明:
</text>
- <line_editor name="url_description" tool_tip="[再生]/[ロード]ボタンの隣に表示されるテキスト"/>
+ <line_editor name="url_description" tool_tip="「再生」「ロード」ボタンの隣に表示されるテキストです"/>
<text name="Media texture:">
- テクスチャの置き換え:
+ テクスチャ置き換え:
</text>
- <texture_picker label="" name="media texture" tool_tip="写真をクリックして選択"/>
+ <texture_picker label="" left="120" name="media texture" tool_tip="写真をクリックして選択"/>
<text name="replace_texture_help" width="290">
- このテクスチャを使用するオブジェクトのプレイをクリックすると、ムービーや Web ページを表示します。 テクスチャを変更するにはサムネイルを選択してください。
+ このテクスチャを使用するオブジェクトの「再生」をクリックすると、動画や Web ページを表示します。 テクスチャを変更するにはサムネイルを選択してください。
</text>
<check_box label="スケールを自動設定" name="media_auto_scale" tool_tip="このオプションをチェックすると、この区画のコンテンツのスケールが自動的に設定されます。 動作速度と画質が少し低下することがありますが、他のテクスチャーのスケーリングや整列が必要になることはありません。"/>
- <text name="media_size" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。">
+ <text name="media_size" tool_tip="レンダリングするWebメディアのサイズです。デフォルトの 0 のままにします。">
サイズ:
</text>
- <spinner name="media_size_width" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/>
- <spinner name="media_size_height" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/>
+ <spinner name="media_size_width" tool_tip="レンダリングするWebメディアのサイズです。デフォルトの 0 のままにします。"/>
+ <spinner name="media_size_height" tool_tip="レンダリングするWebメディアのサイズです。デフォルトの 0 のままにします。"/>
<text name="pixels">
ピクセル
</text>
@@ -422,35 +422,36 @@
<text name="MusicURL:">
音楽 URL:
</text>
+ <check_box label="URL を非表示にする" name="hide_music_url" tool_tip="このオプションにチェックを入れると、権限のない人が区画情報を見たときに音楽のURLが隠れます。"/>
<text name="Sound:">
サウンド:
</text>
- <check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定" name="check sound local"/>
+ <check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定する" name="check sound local"/>
<text name="Voice settings:">
ボイス:
</text>
<check_box label="ボイスを有効にする" name="parcel_enable_voice_channel"/>
<check_box label="ボイスを有効にする(不動産設定)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box label="この区画でのボイス使用を制限" name="parcel_enable_voice_channel_parcel"/>
+ <check_box label="ボイスをこの区画に限定する" name="parcel_enable_voice_channel_local"/>
</panel>
<panel label="アクセス" name="land_access_panel">
<panel.string name="access_estate_defined">
(エステートに限定)
</panel.string>
<panel.string name="estate_override">
- 1つ以上のオプションが、不動産レベルで設定されています。
+ 1 つ以上のオプションが、不動産レベルで設定されています。
</panel.string>
<text name="Limit access to this parcel to:">
- この区画にアクセス
+ この区画へのアクセス
</text>
- <check_box label="パブリックアクセスを許可 [MATURITY]" name="public_access"/>
+ <check_box label="パブリックアクセスを許可する [MATURITY]" name="public_access"/>
<text name="Only Allow">
- 次の住人のアクセス禁止:
+ 次の住人のアクセスを許可:
</text>
<check_box label="支払情報登録済 [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="未確認の住人の立入を禁止します。"/>
<check_box label="年齢確認 [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人の立入を禁止します。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/>
- <check_box label="グループ・アクセスを許可:[GROUP]" name="GroupCheck" tool_tip="[一般]タブで、グループを選択してください。"/>
- <check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可"/>
+ <check_box label="グループのアクセスを許可:[GROUP]" name="GroupCheck" tool_tip="「一般」タブで、グループを選択してください。"/>
+ <check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可します"/>
<combo_box name="pass_combo">
<combo_box.item label="誰でも" name="Anyone"/>
<combo_box.item label="グループ" name="Group"/>
@@ -467,7 +468,7 @@
</panel>
<panel name="Banned_layout_panel">
<text label="禁止" name="BanCheck">
- 立入禁止された住人
+ 立入を禁止された住人
</text>
<name_list name="BannedList" tool_tip="(合計 [LISTED] 人、最大 [MAX] 人)"/>
<button label="追加" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
index c355924f33..8c2ac17ace 100644
--- a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
@@ -106,6 +106,9 @@
<floater.string name="E_ST_NO_XLT_EMOTE">
エモート名を読みとれません。
</floater.string>
+ <floater.string name="E_ST_BAD_ROOT">
+ ルートジョイント名が無効です。「hip」を使用してください。
+ </floater.string>
<text name="name_label">
名前:
</text>
@@ -114,8 +117,8 @@
</text>
<spinner label="優先順位" name="priority" tool_tip="このアニメーションがどのアニメーションを上書きするかを決めます"/>
<check_box label="ループ" name="loop_check" tool_tip="このアニメーションをループ再生します"/>
- <spinner label="イン(%)" label_width="45" left="70" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します" width="100"/>
- <spinner label="アウト(%)" label_width="60" left="170" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します" width="100"/>
+ <spinner label="イン(%)" label_width="45" left="60" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します" width="100"/>
+ <spinner label="アウト(%)" label_width="50" left="170" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します" width="100"/>
<text name="hand_label">
手の動き
</text>
@@ -168,17 +171,17 @@
<combo_box.item label="座る" name="Sitting"/>
<combo_box.item label="飛ぶ" name="Flying"/>
</combo_box>
- <spinner label="フェーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/>
- <spinner label="フェーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンドアウト時間(秒)"/>
+ <spinner label="イーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/>
+ <spinner label="イーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンドアウト時間(秒)"/>
<button label="" name="play_btn" tool_tip="アニメーションを再生する"/>
<button name="pause_btn" tool_tip="アニメーションを一時停止する"/>
<button label="" name="stop_btn" tool_tip="アニメーションの再生を停止"/>
<slider label="" name="playback_slider"/>
<text name="bad_animation_text">
- アニメーション・ファイルを読み込めません。
+ アニメーションファイルを読み込めません。
Poser 4からエクスポートされたBVHファイルを推奨します。
</text>
- <button label="アップロードL$[AMOUNT]" name="ok_btn"/>
+ <button label="アップロードL$[AMOUNT]" name="ok_btn"/>
<button label="取り消し" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
index a199a10823..0ea913e66a 100644
--- a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
@@ -3,13 +3,13 @@
<floater.string name="InvalidAvatar">
無効なアバター
</floater.string>
- <text name="label">
+ <text name="label" width="100">
ベークドテクスチャ
</text>
<text name="composite_label" width="128">
- 合成テクスチャー
+ 合成テクスチャ
</text>
- <button label="テクスチャID一覧をコンソールに書き込む" label_selected="捨てる" name="Dump"/>
+ <button label="テクスチャID一覧をコンソールに書き込む" label_selected="捨てる" name="Dump" width="200"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
<texture_picker label="髪" name="hair-baked"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_build_options.xml b/indra/newview/skins/default/xui/ja/floater_build_options.xml
index 8d3dba3883..8cb67ca521 100644
--- a/indra/newview/skins/default/xui/ja/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/ja/floater_build_options.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="build options floater" title="グリッドオプション">
- <spinner label="グリッドユニット(メートル)" name="GridResolution"/>
- <spinner label="グリッド範囲(メートル)" name="GridDrawSize"/>
- <check_box label="サブユニットにスナップ" name="GridSubUnit"/>
+ <spinner label="グリッド単位(メートル)" name="GridResolution"/>
+ <spinner label="グリッド゙範囲(メートル)" name="GridDrawSize"/>
+ <check_box label="より細かい単位でスナップフィット" name="GridSubUnit"/>
<check_box label="横断面を表示" name="GridCrossSection"/>
- <text name="grid_opacity_label" tool_tip="グリッドの透明度">
- 透明度:
+ <text name="grid_opacity_label" tool_tip="グリッドの不透明度">
+ 不透明度:
</text>
<slider label="グリッドの不透明度" name="GridOpacity"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
index fbbbd85890..be24960c6e 100644
--- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="コンテンツ権限の編集">
+<floater name="floaterbulkperms" title="中身の権限の編集">
<floater.string name="nothing_to_modify_text">
- 選択した中に編集できないコンテンツが含まれています
+ 選択した中に編集できないものが含まれています
</floater.string>
<floater.string name="status_text">
[NAME]に権限を設定中です。
@@ -28,12 +28,12 @@
<icon name="icon_script" tool_tip="スクリプト"/>
<check_box label="サウンド" name="check_sound"/>
<icon name="icon_sound" tool_tip="サウンド"/>
- <check_box label="テクスチャー" name="check_texture"/>
+ <check_box label="テクスチャ" name="check_texture"/>
<icon name="icon_texture" tool_tip="テクスチャ"/>
<button label="すべてに √" label_selected="全て" name="check_all"/>
<button label="クリア" label_selected="なし" name="check_none"/>
<text name="newperms">
- 新しいコンテンツ権限
+ 新しい中身の権限
</text>
<text name="GroupLabel">
グループ:
@@ -43,7 +43,7 @@
全員:
</text>
<check_box label="コピー" name="everyone_copy"/>
- <text name="NextOwnerLabel">
+ <text name="NextOwnerLabel" left="160">
次の所有者:
</text>
<check_box label="修正" name="next_owner_modify"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml
index 53b7f24141..69d4faf5b8 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="340" name="floater_buy_contents" title="コンテンツの購入" width="340">
+<floater min_width="340" name="floater_buy_contents" title="中身の購入" width="340">
<text name="contains_text" width="320">
- [NAME]の内容:
+ [NAME]の中身:
</text>
<scroll_list name="item_list" width="310"/>
<text name="buy_text" width="320">
- コンテンツを[NAME]からL$[AMOUNT]で購入しますか?
+ 中身を[NAME]からL$[AMOUNT]で購入しますか?
</text>
<button label="取り消し" label_selected="取り消し" name="cancel_btn" width="73"/>
<button label="購入" label_selected="購入" left_delta="-77" name="buy_btn" width="73"/>
<check_box label="今すぐ服を着る" left_delta="-125" name="wear_check"/>
<text name="no_copy_text">
- (コピーなし)
+ (コピー不可)
</text>
<text name="no_modify_text">
- (修正なし)
+ (修正不可)
</text>
<text name="no_transfer_text">
- (転送なし)
+ (再販・プレゼント不可)
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
index ffdcf838d3..32de533dc4 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
@@ -40,13 +40,13 @@
[NAME] L$ [PRICE]
</text>
<text name="total_label">
- 新しい残高
+ 購入後の残高
</text>
<text name="total_amount">
L$ [AMT]
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP payment method] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP exchange rate]
+ [http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP 支払方法] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP 通貨] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP 換算レート]
</text>
<text name="exchange_rate_note">
金額を再入力して最新換算レートを確認します。
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_land.xml b/indra/newview/skins/default/xui/ja/floater_buy_land.xml
index 13b43d1257..a50f36b6f3 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_land.xml
@@ -1,5 +1,132 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="buy land" title="土地の購入">
+ <floater.string name="can_resell">
+ 再販可能
+ </floater.string>
+ <floater.string name="can_not_resell">
+ 再販不可能
+ </floater.string>
+ <floater.string name="can_change">
+ 統合・再分割可能
+ </floater.string>
+ <floater.string name="can_not_change">
+ 統合・再分割不可能
+ </floater.string>
+ <floater.string name="cant_buy_for_group">
+ あなたはアクティブなグループ用の土地購入を許可されていません
+ </floater.string>
+ <floater.string name="no_land_selected">
+ 土地が選択されていません
+ </floater.string>
+ <floater.string name="multiple_parcels_selected">
+ 複数の異なった区画を選択しました。
+これより小さな範囲を選択してください。
+ </floater.string>
+ <floater.string name="no_permission">
+ あなたはアクティブなグループ用の土地購入を許可されていません
+ </floater.string>
+ <floater.string name="parcel_not_for_sale">
+ 選択された区画は販売対象外です
+ </floater.string>
+ <floater.string name="group_already_owns">
+ グループはすでにこの区画を所有しています
+ </floater.string>
+ <floater.string name="you_already_own">
+ あなたはすでにこの区画を所有しています
+ </floater.string>
+ <floater.string name="set_to_sell_to_other">
+ 選択された区画は、他の人への販売が決まっています
+ </floater.string>
+ <floater.string name="no_public_land">
+ 選択された地域に、公共の土地はありません
+ </floater.string>
+ <floater.string name="not_owned_by_you">
+ 他の使用者に所有された土地が選択されています。
+これより小さな範囲を選択してください。
+ </floater.string>
+ <floater.string name="processing">
+ 購入処理中...
+
+(数分かかることがあります)
+ </floater.string>
+ <floater.string name="fetching_error">
+ 土地購入の情報入手中にエラーが起きました
+ </floater.string>
+ <floater.string name="buying_will">
+ この土地を買うと:
+ </floater.string>
+ <floater.string name="buying_for_group">
+ グループ用の土地を購入すると:
+ </floater.string>
+ <floater.string name="cannot_buy_now">
+ 現在購入不可:
+ </floater.string>
+ <floater.string name="not_for_sale">
+ 販売対象外:
+ </floater.string>
+ <floater.string name="none_needed">
+ 一切必要なし
+ </floater.string>
+ <floater.string name="must_upgrade">
+ アカウントをアップグレードしないと、土地を所有できません
+ </floater.string>
+ <floater.string name="cant_own_land">
+ あなたのアカウントで土地を所有できます
+ </floater.string>
+ <floater.string name="land_holdings">
+ あなたは、[BUYER] 平方メートルの土地を所有しています。
+ </floater.string>
+ <floater.string name="pay_to_for_land">
+ この土地の代金として、[SELLER]にL$[AMOUNT]を支払う
+ </floater.string>
+ <floater.string name="buy_for_US">
+ L$ [AMOUNT] を、約 [LOCAL_AMOUNT] で購入します。
+ </floater.string>
+ <floater.string name="parcel_meters">
+ この区画は [AMOUNT] 平方メートルです。
+ </floater.string>
+ <floater.string name="premium_land">
+ この土地は割り増し付です。 [AMOUNT] 平方メートルの料金がかかります。
+ </floater.string>
+ <floater.string name="discounted_land">
+ この土地はディスカウントされています。 [AMOUNT] 平方メートルの料金がかかります。
+ </floater.string>
+ <floater.string name="meters_supports_object">
+ [AMOUNT] 平方メートル
+オブジェクト [AMOUNT2] 個サポート
+ </floater.string>
+ <floater.string name="sold_with_objects">
+ オブジェクト込みで販売
+ </floater.string>
+ <floater.string name="sold_without_objects">
+ オブジェクトは含まれていません
+ </floater.string>
+ <floater.string name="info_price_string">
+ L$ [PRICE]
+(L$[PRICE_PER_SQM]/平方メートル)
+[SOLD_WITH_OBJECTS]
+ </floater.string>
+ <floater.string name="insufficient_land_credits">
+ この [GROUP] が区画の購入手続きを完了するには、 価格に見合うだけの寄付された土地の利用実績が必要です
+ </floater.string>
+ <floater.string name="have_enough_lindens">
+ あなたの所持する L$ [AMOUNT]で、この土地を購入できます
+ </floater.string>
+ <floater.string name="not_enough_lindens">
+ あなたの所持金は L$ [AMOUNT]だけで、あとL$ [AMOUNT2] 必要です
+ </floater.string>
+ <floater.string name="balance_left">
+ 購入後、あなたの残額はL$[AMOUNT]になります
+ </floater.string>
+ <floater.string name="balance_needed">
+ この土地を買うには、少なくとも L$ [AMOUNT] を購入する必要があります
+ </floater.string>
+ <floater.string name="no_parcel_selected">
+ (区画が選定されていません)
+ </floater.string>
+ <floater.string name="icon_PG" value="Parcel_PG_Dark"/>
+ <floater.string name="icon_M" value="Parcel_M_Dark"/>
+ <floater.string name="icon_R" value="Parcel_R_Dark"/>
<text name="region_name_label">
地域:
</text>
@@ -27,10 +154,10 @@
<text name="resellable_changeable_label">
この地域で購入した土地:
</text>
- <text name="resellable_clause">
+ <text left="460" name="resellable_clause">
再販できる場合とできない場合があります。
</text>
- <text name="changeable_clause">
+ <text left="460" name="changeable_clause">
統合または再分割できる場合とできない場合があります。
</text>
<text name="covenant_text">
@@ -67,12 +194,12 @@
<text name="error_message">
何か変です
</text>
- <button label="ウェブ・サイトに移動" name="error_web"/>
+ <button label="Webサイトに移動" name="error_web"/>
<text name="account_action">
- プレミアム・メンバーにアップグレード
+ プレミアム会員にアップグレード
</text>
<text name="account_reason">
- 土地を保有できるのはプレミアム・メンバーだけです
+ 土地を保有できるのはプレミアム会員だけです
</text>
<combo_box name="account_level">
<combo_box.item label="月額 9.95米ドル、 月払い" name="US$9.95/month,billedmonthly"/>
@@ -107,131 +234,4 @@
<check_box label="グループから [AMOUNT] 平方メートルの貢献を取り除きます。" name="remove_contribution"/>
<button label="購入" name="buy_btn"/>
<button label="取り消し" name="cancel_btn"/>
- <string name="can_resell">
- 再販可能
- </string>
- <string name="can_not_resell">
- 再販不可能
- </string>
- <string name="can_change">
- 統合/再分割可能
- </string>
- <string name="can_not_change">
- 統合/再分割不可能
- </string>
- <string name="cant_buy_for_group">
- あなたはアクティブなグループ用の土地購入を許可されていません
- </string>
- <string name="no_land_selected">
- 土地が選択されていません
- </string>
- <string name="multiple_parcels_selected">
- 複数の異なった区画を選択しました。
-これより小さなエリアを選択してください。
- </string>
- <string name="no_permission">
- あなたはアクティブなグループ用の土地購入を許可されていません
- </string>
- <string name="parcel_not_for_sale">
- 選択された区画は販売対象外です
- </string>
- <string name="group_already_owns">
- グループはすでにこの区画を所有しています
- </string>
- <string name="you_already_own">
- あなたはすでにこの区画を所有しています
- </string>
- <string name="set_to_sell_to_other">
- 選択された区画は、他の人への販売が決まっています
- </string>
- <string name="no_public_land">
- 選択された地域に、公共の土地はありません
- </string>
- <string name="not_owned_by_you">
- 他の使用者に所有された土地が選択されています。
-これより小さなエリアを選択してください。
- </string>
- <string name="processing">
- 購入処理中...
-
-(数分かかることがあります)
- </string>
- <string name="fetching_error">
- 土地購入の情報入手中にエラーが起きました
- </string>
- <string name="buying_will">
- この土地を買うと:
- </string>
- <string name="buying_for_group">
- グループ用の土地を購入すると:
- </string>
- <string name="cannot_buy_now">
- 現在購入不可:
- </string>
- <string name="not_for_sale">
- 販売対象外:
- </string>
- <string name="none_needed">
- 一切必要なし
- </string>
- <string name="must_upgrade">
- アカウントをアップグレードしないと、土地を所有できません
- </string>
- <string name="cant_own_land">
- あなたのアカウントで土地を所有できます
- </string>
- <string name="land_holdings">
- あなたは、[BUYER] 平方メートルの土地を所有しています。
- </string>
- <string name="pay_to_for_land">
- この土地の代金として、[SELLER]にL$[AMOUNT]を支払う
- </string>
- <string name="buy_for_US">
- L$ [AMOUNT] を、約 [LOCAL_AMOUNT] で購入します。
- </string>
- <string name="parcel_meters">
- この区画は [AMOUNT] 平方メートルです。
- </string>
- <string name="premium_land">
- この土地は割り増し付です。 [AMOUNT] 平方メートルの料金がかかります。
- </string>
- <string name="discounted_land">
- この土地はディスカウントされています。 [AMOUNT] 平方メートルの料金がかかります。
- </string>
- <string name="meters_supports_object">
- [AMOUNT] 平方メートル
-オブジェクト [AMOUNT2] 個サポート
- </string>
- <string name="sold_with_objects">
- オブジェクトと共に販売済み
- </string>
- <string name="sold_without_objects">
- オブジェクトは含まれていません
- </string>
- <string name="info_price_string">
- L$ [PRICE]
-(L$[PRICE_PER_SQM]/平方メートル)
-[SOLD_WITH_OBJECTS]
- </string>
- <string name="insufficient_land_credits">
- この [GROUP] が区画の購入手続きを完了するには、 価格に見合うだけの寄付された土地の利用実績が必要です
- </string>
- <string name="have_enough_lindens">
- あなたの所持する L$ [AMOUNT]で、この土地を購入できます
- </string>
- <string name="not_enough_lindens">
- あなたの所持金は L$ [AMOUNT]だけで、あとL$ [AMOUNT2] 必要です
- </string>
- <string name="balance_left">
- 購入後、あなたの残額はL$[AMOUNT]になります
- </string>
- <string name="balance_needed">
- この土地を買うには、少なくとも L$ [AMOUNT] を購入する必要があります
- </string>
- <string name="no_parcel_selected">
- (区画が選定されていません)
- </string>
- <string name="buy_currency">
- 約US$ [USD]でL$ [LINDENS]を購入
- </string>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_object.xml b/indra/newview/skins/default/xui/ja/floater_buy_object.xml
index f807e91573..7a5b7dc140 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_object.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="contents" title="オブジェクトのコピーを購入">
<text name="contents_text">
- 内容:
+ 中身:
</text>
<text name="buy_text">
[NAME]からL$[AMOUNT]で購入しますか?
@@ -12,15 +12,15 @@
購入
</text>
<string name="title_buy_copy_text">
- 次のものを買う
+ 次のものを購入
</string>
<text name="no_copy_text">
- (コピーなし)
+ (コピー不可)
</text>
<text name="no_modify_text">
- (修正なし)
+ (修正不可)
</text>
<text name="no_transfer_text">
- (転送なし)
+ (再販・プレゼント不可)
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml
index be118273fa..3730bcd385 100644
--- a/indra/newview/skins/default/xui/ja/floater_camera.xml
+++ b/indra/newview/skins/default/xui/ja/floater_camera.xml
@@ -11,7 +11,7 @@
</floater.string>
<panel name="controls">
<joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に動かします"/>
- <panel name="zoom" tool_tip="向いてる方法にカメラをズーム">
+ <panel name="zoom" tool_tip="向いている方法にカメラをズーム">
<slider_bar name="zoom_slider" tool_tip="向いている方向にカメラをズーム"/>
</panel>
<joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_color_picker.xml b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
index a98da4b8ba..dc87d27a15 100644
--- a/indra/newview/skins/default/xui/ja/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
@@ -18,7 +18,7 @@
<text name="l_val_text">
輝度:
</text>
- <check_box label="今すぐ適用" name="apply_immediate"/>
+ <check_box label="すぐ適用" name="apply_immediate"/>
<button label="" label_selected="" name="color_pipette"/>
<button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
<button label="OK" label_selected="OK" name="select_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_critical.xml b/indra/newview/skins/default/xui/ja/floater_critical.xml
index 39f6ee8e3f..f69c24622a 100644
--- a/indra/newview/skins/default/xui/ja/floater_critical.xml
+++ b/indra/newview/skins/default/xui/ja/floater_critical.xml
@@ -3,10 +3,10 @@
<button label="続行" label_selected="続行" name="Continue" />
<button label="取り消し" label_selected="取り消し" name="Cancel" />
<text name="tos_title">
- クリティカル・メッセージ
+ クリティカルメッセージ
</text>
<text name="tos_heading">
- 次のメッセージを注意深くお読みください。
+ 次のメッセージを注意してよくお読みください。
</text>
<text_editor name="tos_text">
TOS_TEXT
diff --git a/indra/newview/skins/default/xui/ja/floater_customize.xml b/indra/newview/skins/default/xui/ja/floater_customize.xml
index 7d1809f1ed..4d8b91ff99 100644
--- a/indra/newview/skins/default/xui/ja/floater_customize.xml
+++ b/indra/newview/skins/default/xui/ja/floater_customize.xml
@@ -50,7 +50,7 @@
<panel label="スキン" name="Skin">
<button label="スキンの色" label_selected="スキンの色" name="Skin Color"/>
<button label="顔の細部" label_selected="顔の細部" name="Face Detail"/>
- <button label="メイクアップ" label_selected="メイクアップ" name="Makeup"/>
+ <button label="メイク" label_selected="メイク" name="Makeup"/>
<button label="身体細部" label_selected="身体細部" name="Body Detail"/>
<text name="title">
[DESC]
@@ -156,8 +156,8 @@
<panel label="シャツ" name="Shirt">
<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="新しいシャツを作成" label_selected="新しいシャツを作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
+ <button label="新しいシャツを作成" label_selected="新しいシャツを作成" name="Create New"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
<button label="戻す" label_selected="戻す" name="Revert"/>
@@ -186,11 +186,11 @@
シャツ:
</text>
</panel>
- <panel label="ズボン" name="Pants">
+ <panel label="パンツ" name="Pants">
<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="新しいズボンを作成" label_selected="新しいズボンを作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
+ <button label="新しいパンツを作成" label_selected="新しいパンツを作成" name="Create New"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
<button label="戻す" label_selected="戻す" name="Revert"/>
@@ -216,7 +216,7 @@
あなたはこの服の修正を許されていません。
</text>
<text name="Item Action Label">
- ズボン:
+ パンツ:
</text>
</panel>
<panel label="靴" name="Shoes">
@@ -238,6 +238,7 @@
<text name="not worn instructions">
あなたの持ち物からアバターにドラッグして、新しい靴を履きます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="新しい靴を作成" label_selected="新しい靴を作成" name="Create New"/>
<text name="no modify instructions">
あなたはこの服の修正を許されていません。
</text>
@@ -246,7 +247,6 @@
</text>
<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="新しい靴を作成" label_selected="新しい靴を作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
@@ -271,6 +271,7 @@
<text name="not worn instructions">
あなたの持ち物からアバターにドラッグして、新しい靴下を履きます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="新しい靴下を作成" label_selected="新しい靴下を作成" name="Create New"/>
<text name="no modify instructions">
あなたはこの服の修正を許されていません。
</text>
@@ -279,7 +280,6 @@
</text>
<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="新しい靴下を作成" label_selected="新しい靴下を作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
@@ -304,6 +304,7 @@
<text name="not worn instructions">
持ち物からあなたのアバターに1つドラッグして、新しいジャケットを着ます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="新しい上着を作成" label_selected="新しい上着を作成" name="Create New"/>
<text name="no modify instructions">
あなたはこの服の修正を許されていません。
</text>
@@ -313,7 +314,6 @@
<texture_picker label="上半身の生地" name="Upper Fabric" tool_tip="写真をクリックして選択"/>
<texture_picker label="下層生地" name="Lower Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="新しい上着を作成" label_selected="新しい上着を作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
@@ -338,6 +338,7 @@
<text name="not worn instructions">
あなたの持ち物からアバターにドラッグして、新しい手袋をつけます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="新しい手袋を作成" label_selected="新しい手袋を作成" name="Create New"/>
<text name="no modify instructions">
あなたはこの服の修正を許されていません。
</text>
@@ -346,7 +347,6 @@
</text>
<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="新しい手袋を作成" label_selected="新しい手袋を作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
@@ -371,6 +371,7 @@
<text name="not worn instructions">
持ち物からあなたのアバターに1つドラッグして、新しい下着(上)を着ます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="新しい下着シャツを作成" label_selected="新しい下着シャツを作成" name="Create New"/>
<text name="no modify instructions">
あなたはこの服の修正を許されていません。
</text>
@@ -379,7 +380,6 @@
</text>
<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="新しい下着シャツを作成" label_selected="新しい下着シャツを作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
@@ -404,6 +404,7 @@
<text name="not worn instructions">
あなたの持ち物からアバターにドラッグして、新しい下着(下)を履きます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="新しいパンツを作成" label_selected="新しいパンツを作成" name="Create New"/>
<text name="no modify instructions">
あなたはこの服の修正を許されていません。
</text>
@@ -412,7 +413,6 @@
</text>
<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="新しいパンツを作成" label_selected="新しいパンツを作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
@@ -437,6 +437,7 @@
<text name="not worn instructions">
持ち物からあなたのアバターに1つドラッグして、新しいスカートを履きます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="スカートを作成" label_selected="スカートを作成" name="Create New"/>
<text name="no modify instructions">
あなたはこの服の修正を許されていません。
</text>
@@ -445,13 +446,12 @@
</text>
<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
- <button label="スカートを作成" label_selected="スカートを作成" name="Create New"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
<button label="戻す" label_selected="戻す" name="Revert"/>
</panel>
- <panel label="アルファ" name="Alpha">
+ <panel label="タトゥ" name="Tattoo">
<text name="title">
[DESC]
</text>
@@ -468,26 +468,24 @@
参照 [PATH]
</text>
<text name="not worn instructions">
- あなたの持ち物からアバターにドラッグして、新しいアルファマスクをつけます。 代わりに、はじめから新しく作成して着用することもできます。
+ あなたの持ち物からアバターにドラッグして、新しいタトゥをつけます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="新しいタトゥを作成" label_selected="新しいタトゥを作成" name="Create New"/>
<text name="no modify instructions">
この着用物を修正する権限がありません。
</text>
<text name="Item Action Label">
- アルファ:
+ タトゥ:
</text>
- <texture_picker label="アルファ(下)" name="Lower Alpha" tool_tip="クリックして写真を選択します"/>
- <texture_picker label="アルファ(上)" name="Upper Alpha" tool_tip="クリックして写真を選択します"/>
- <texture_picker label="頭部のアルファ" name="Head Alpha" tool_tip="クリックして写真を選択します"/>
- <texture_picker label="目のアルファ" name="Eye Alpha" tool_tip="クリックして写真を選択します"/>
- <texture_picker label="髪のアルファ" name="Hair Alpha" tool_tip="クリックして写真を選択します"/>
- <button label="新しいアルファを作成" label_selected="新しいアルファを作成" name="Create New"/>
+ <texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択します"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
<button label="元に戻す" label_selected="元に戻す" name="Revert"/>
</panel>
- <panel label="タトゥ" name="Tattoo">
+ <panel label="アルファ" name="Alpha">
<text name="title">
[DESC]
</text>
@@ -504,25 +502,27 @@
参照 [PATH]
</text>
<text name="not worn instructions">
- あなたの持ち物からアバターにドラッグして、新しいタトゥをつけます。 代わりに、はじめから新しく作成して着用することもできます。
+ あなたの持ち物からアバターにドラッグして、新しいアルファマスクをつけます。 代わりに、はじめから新しく作成して着用することもできます。
</text>
+ <button label="新しいアルファを作成" label_selected="新しいアルファを作成" name="Create New"/>
<text name="no modify instructions">
この着用物を修正する権限がありません。
</text>
<text name="Item Action Label">
- タトゥ:
+ アルファ:
</text>
- <texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択します"/>
- <texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択します"/>
- <texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択します"/>
- <button label="新しいタトゥを作成" label_selected="新しいタトゥを作成" name="Create New"/>
+ <texture_picker label="アルファ(下)" name="Lower Alpha" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="アルファ(上)" name="Upper Alpha" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="頭部のアルファ" name="Head Alpha" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="目のアルファ" name="Eye Alpha" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="髪のアルファ" name="Hair Alpha" tool_tip="クリックして写真を選択します"/>
<button label="取り外す" label_selected="取り外す" name="Take Off"/>
<button label="保存" label_selected="保存" name="Save"/>
<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
<button label="元に戻す" label_selected="元に戻す" name="Revert"/>
</panel>
</tab_container>
- <button label="スクリプト情報" label_selected="スクリプト情報" name="script_info"/>
+ <button label="スクリプト情報" label_selected="スクリプト情報" name="script_info" tool_tip="あなたのアバターに付いているスクリプトを表示する"/>
<button label="アウトフィット作成" label_selected="アウトフィット作成" name="make_outfit_btn"/>
<button label="キャンセル" label_selected="キャンセル" name="Cancel"/>
<button label="OK" label_selected="OK" name="Ok"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
index 2d8b54cdd5..3bd5ed2837 100644
--- a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
@@ -84,10 +84,10 @@
<text name="DayCycleText3">
プレビュー:
</text>
- <button label="再生" label_selected="再生" name="WLAnimSky" />
+ <button label="再生" label_selected="再生" name="WLAnimSky" left_delta="70"/>
<button label="停止!" label_selected="停止" name="WLStopAnimSky" />
<button label="不動産の時刻を使用"
- label_selected="不動産の時刻に変更" name="WLUseLindenTime" />
+ label_selected="不動産の時刻に変更" name="WLUseLindenTime" width="140"/>
<button label="デイ・テストを保存"
label_selected="デイ・テストを保存" name="WLSaveDayCycle" />
<button label="デイ・テストをロード"
diff --git a/indra/newview/skins/default/xui/ja/floater_event.xml b/indra/newview/skins/default/xui/ja/floater_event.xml
new file mode 100644
index 0000000000..306b262b70
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_event.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="イベント" name="Event" title="イベント詳細">
+ <floater.string name="none">
+ なし
+ </floater.string>
+ <floater.string name="notify">
+ 知らせる
+ </floater.string>
+ <floater.string name="dont_notify">
+ 知らせない
+ </floater.string>
+ <layout_stack name="layout">
+ <layout_panel name="profile_stack">
+ <text name="event_name">
+ Nameless Event...of Doom! De doom! Doom doom.
+ </text>
+ <text name="event_category">
+ (カテゴリなし)
+ </text>
+ <text name="event_runby_label">
+ 主催者:
+ </text>
+ <text initial_value="(取得中)" name="event_runby"/>
+ <text name="event_date">
+ 10/10/2010
+ </text>
+ <text name="event_duration">
+ 1 時間
+ </text>
+ <text name="event_cover">
+ 無料
+ </text>
+ <text name="event_location_label">
+ 場所:
+ </text>
+ <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
+ <text name="rating_label" value="レーティング区分:"/>
+ <text name="rating_value" value="不明"/>
+ </layout_panel>
+ <layout_panel name="button_panel">
+ <button name="create_event_btn" tool_tip="イベント作成"/>
+ <button name="god_delete_event_btn" tool_tip="イベント削除"/>
+ <button label="知らせる" name="notify_btn"/>
+ <button label="テレポート" name="teleport_btn"/>
+ <button label="地図" name="map_btn"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
index 18380bddc2..075cde8dec 100644
--- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
@@ -2,7 +2,7 @@
<floater name="godtools floater" title="ゴッド・ツール">
<tab_container name="GodTools Tabs">
<panel label="グリッド" name="grid">
- <button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users"/>
+ <button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users" width="160"/>
<button label="この地域の地図の表示キャッシュを消去" label_selected="この地域の地図の表示キャッシュを消去" name="Flush This Region&apos;s Map Visibility Caches"/>
</panel>
<panel label="地域" name="region">
@@ -33,13 +33,15 @@
<line_editor name="gridposx" tool_tip="これは、この地域のグリッドxの位置です。"/>
<line_editor name="gridposy" tool_tip="これは、この地域のグリッドyの位置です。"/>
<text name="Redirect to Grid: ">
- グリッドにリダイレクト:
+ グリッドにリダ
+イレクト:
</text>
<text name="billable factor text">
請求率:
</text>
<text name="land cost text">
- 平方メートル当たりL$:
+ 平方メートル当
+たりL$:
</text>
<button label="更新" label_selected="更新" name="Refresh" tool_tip="上記の情報を更新するには、ここをクリックします。"/>
<button label="適用" label_selected="適用" name="Apply" tool_tip="上記の変更を適用するには、ここをクリックします。"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_help_browser.xml b/indra/newview/skins/default/xui/ja/floater_help_browser.xml
index 0a783713d5..15200d7ef7 100644
--- a/indra/newview/skins/default/xui/ja/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/ja/floater_help_browser.xml
@@ -1,14 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_help_browser" 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 name="loading_text">
+ ローディング...
</floater.string>
<layout_stack name="stack1">
- <layout_panel name="external_controls">
- <button label="Web ブラウザで開く" name="open_browser"/>
- </layout_panel>
+ <layout_panel name="external_controls"/>
</layout_stack>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_image_preview.xml b/indra/newview/skins/default/xui/ja/floater_image_preview.xml
index 57ed139e54..2e57acf0d2 100644
--- a/indra/newview/skins/default/xui/ja/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_image_preview.xml
@@ -7,7 +7,7 @@
説明:
</text>
<text name="preview_label">
- イメージのプレビュー:
+ プレビュー:
</text>
<combo_box label="服の種類" name="clothing_type_combo">
<combo_box.item label="画像" name="Image"/>
@@ -26,7 +26,7 @@
24bitTarga(.tga)でイメージを保存してください。
</text>
- <check_box label="ロスのない圧縮を使用" name="lossless_check"/>
+ <check_box label="可逆圧縮" name="lossless_check"/>
<button label="取り消し" name="cancel_btn"/>
- <button label="アップロードL$[AMOUNT]" name="ok_btn"/>
+ <button label="アップロード゙L$[AMOUNT]" name="ok_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_inspect.xml b/indra/newview/skins/default/xui/ja/floater_inspect.xml
index b7c657c2f9..b3825c0b7f 100644
--- a/indra/newview/skins/default/xui/ja/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/ja/floater_inspect.xml
@@ -3,12 +3,12 @@
<floater.string name="timeStamp">
[year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
</floater.string>
- <scroll_list name="object_list" tool_tip="このリストからオブジェクトを選択し、この世界で強調表示します。">
- <scroll_list.columns label="オブジェクト名" name="object_name"/>
+ <scroll_list name="object_list" tool_tip="リストからオブジェクトを選択し、インワールドで強調表示します。">
+ <scroll_list.columns label="名前" name="object_name"/>
<scroll_list.columns label="所有者名" name="owner_name"/>
<scroll_list.columns label="制作者名" name="creator_name"/>
<scroll_list.columns label="作成日" name="creation_date"/>
</scroll_list>
- <button label="所有者のプロフィールを表示..." name="button owner" tool_tip="選択されたオブジェクトの所有者のプロフィールを見る"/>
- <button label="制作者のプロフィールを表示..." name="button creator" tool_tip="選択されたオブジェクトの制作者のプロフィールを見る"/>
+ <button label="所有者のプロフィールを表示..." name="button owner" tool_tip="選択したオブジェクトの所有者のプロフィールを表示します" width="180"/>
+ <button label="制作者のプロフィールを表示..." name="button creator" tool_tip="選択したオブジェクトの制作者のプロフィールを表示します" width="180"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_inventory.xml b/indra/newview/skins/default/xui/ja/floater_inventory.xml
index 7cf16b8ff2..b113fde94a 100644
--- a/indra/newview/skins/default/xui/ja/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/floater_inventory.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Inventory" title="持ち物">
<floater.string name="Title">
- インベントリ
+ 持ち物
</floater.string>
<floater.string name="TitleFetching">
持ち物 ( [ITEM_COUNT] アイテムを取得中...) [FILTER]
diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml
index 86bb5dcf62..47a63e5e20 100644
--- a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml
@@ -9,7 +9,7 @@
<check_box label="オブジェクト" name="check_object"/>
<check_box label="スクリプト" name="check_script"/>
<check_box label="サウンド" name="check_sound"/>
- <check_box label="テクスチャー" name="check_texture"/>
+ <check_box label="テクスチャ" name="check_texture"/>
<check_box label="スナップショット" name="check_snapshot"/>
<button label="すべて" label_selected="すべて" name="All"/>
<button label="なし" label_selected="なし" name="None"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_joystick.xml b/indra/newview/skins/default/xui/ja/floater_joystick.xml
index 9d91fe8db9..65eeebe4ed 100644
--- a/indra/newview/skins/default/xui/ja/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/ja/floater_joystick.xml
@@ -71,7 +71,7 @@
<spinner left="135" name="AvatarAxisDeadZone0" width="50"/>
<spinner left="205" name="BuildAxisDeadZone0" width="50"/>
<spinner left="275" name="FlycamAxisDeadZone0" width="50"/>
- <text left="0" name="PitchDeadZone" width="135">
+ <text left="0" name="PitchDeadZone" width="125">
ピッチ・デッド・ゾーン
</text>
<spinner left="135" name="AvatarAxisDeadZone4" width="50"/>
@@ -83,7 +83,7 @@
<spinner left="135" name="AvatarAxisDeadZone5" width="50"/>
<spinner left="205" name="BuildAxisDeadZone5" width="50"/>
<spinner left="275" name="FlycamAxisDeadZone5" width="50"/>
- <text left="0" name="RollDeadZone" width="135">
+ <text left="0" name="RollDeadZone" width="125">
ロール・デッド・ゾーン
</text>
<spinner left="205" name="BuildAxisDeadZone3" width="50"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
index 474bd32cb0..aca916f22f 100644
--- a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
@@ -7,17 +7,17 @@
<column label="面積" name="area"/>
<column label="" name="hidden"/>
</scroll_list>
- <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="この土地の中心にテレポート"/>
+ <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="この土地の中心にテレポートします"/>
<button label="地図" label_selected="地図" name="Show on Map" tool_tip="この土地を世界地図に表示します"/>
<text name="contrib_label">
- あなたのグループへの貢献:
+ 所属グループへの貢献:
</text>
<scroll_list name="grant list">
<column label="グループ名" name="group"/>
<column label="面積" name="area"/>
</scroll_list>
<text name="allowed_label">
- 現在の支払いプランでの許可された保有地:
+ 現在の支払いプランで許可された保有地:
</text>
<text name="allowed_text">
[AREA] 平方メートル
@@ -29,7 +29,7 @@
[AREA] 平方メートル
</text>
<text name="available_label">
- 土地購入可:
+ 購入可能な土地:
</text>
<text name="available_text">
[AREA] 平方メートル
diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml
index f3cba7e674..8d920a3c3f 100644
--- a/indra/newview/skins/default/xui/ja/floater_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_map.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map">
+<floater name="Map" title="ミニマップ">
<floater.string name="mini_map_north">
</floater.string>
@@ -25,7 +25,7 @@
北西
</floater.string>
<floater.string name="ToolTipMsg">
- [AGENT][REGION] (ダブルクリックで地図を開く)
+ [AGENT][REGION] (ダブルクリックで地図を開きます)
</floater.string>
<text label="北" name="floater_map_north" text="北">
diff --git a/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
index 4f67523eec..c4731b73a3 100644
--- a/indra/newview/skins/default/xui/ja/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
@@ -22,8 +22,8 @@
<button label="現在のページを区画に送る" name="assign"/>
</layout_panel>
<layout_panel name="external_controls">
- <button label="外部ウェブ・ブラウザで開く" name="open_browser"/>
- <check_box label="常に外部のウェブ・ブラウザで開く" name="open_always"/>
+ <button label="外部Webブラウザで開く" name="open_browser"/>
+ <check_box label="常に外部のWebブラウザで開く" name="open_always"/>
<button label="閉じる" name="close"/>
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
index 6167b6db91..f48bb94e32 100644
--- a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="MemLeak" title="メモリリークのシミュレート">
- <spinner label="リークスピード(1フレームごとのバイト数):" label_width="244" name="leak_speed"/>
- <spinner label="リークした最大メモリ数(MB):" label_width="244" name="max_leak"/>
+ <spinner label="リーク速度(1フレームごとのバイト数):" label_width="244" name="leak_speed"/>
+ <spinner label="最大メモリリーク(MB):" label_width="244" name="max_leak"/>
<text name="total_leaked_label">
- 現在のリークメモリサイズ: [SIZE] KB
+ 現在のメモリリーク: [SIZE] KB
</text>
<text name="note_label_1">
[NOTE1]
diff --git a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml
index a869b106ce..70555e6ded 100644
--- a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container">
+<floater name="modal container" title="アウトフィットを保存する">
<button label="保存" label_selected="保存" name="Save"/>
<button label="キャンセル" label_selected="キャンセル" name="Cancel"/>
<text name="Save item as:">
- アウトフィットを別名で保存:
+ 着用しているものを
+新しいアウトフィットに保存:
</text>
<line_editor name="name ed">
- [DESC]
+ [DESC] (新)
</line_editor>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml
index 8d67108b77..4ccaf1a4af 100644
--- a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml
@@ -25,10 +25,13 @@
繋がりませんでした。 あとでもう一度お試しください。
</text>
<text name="nearby">
- [VOICE_CHANNEL_NAME] への接続が切れました。 「近くのボイスチャット」に再接続されます。
+ [VOICE_CHANNEL_NAME] への接続が切れました。 [RECONNECT_NEARBY]
</text>
- <text name="nearby_P2P">
- [VOICE_CHANNEL_NAME] がコールを終了しました。 「近くのボイスチャット」に再接続されます。
+ <text name="nearby_P2P_by_other">
+ [VOICE_CHANNEL_NAME] がコールを終了しました。 [RECONNECT_NEARBY]
+ </text>
+ <text name="nearby_P2P_by_agent">
+ コールを終了しました。 [RECONNECT_NEARBY]
</text>
<text name="leaving">
[CURRENT_CHAT] を終了します。
diff --git a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml
index adbb8596d3..98cda25a81 100644
--- a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml
@@ -5,11 +5,11 @@
<check_box label="グループで共同管理" name="share_with_group"/>
<check_box label="誰に対してもコピーを許可" name="everyone_copy"/>
<text name="NextOwnerLabel">
- 次のオーナーができる操作:
+ 次の所有者ができる操作:
</text>
<check_box label="修正" name="next_owner_modify"/>
<check_box label="コピー" name="next_owner_copy"/>
- <check_box label="再販/プレゼント" name="next_owner_transfer"/>
+ <check_box label="再販・プレゼント" name="next_owner_transfer"/>
</panel>
<button label="OK" label_selected="OK" name="ok"/>
<button label="取り消し" label_selected="取り消し" name="cancel"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_postcard.xml b/indra/newview/skins/default/xui/ja/floater_postcard.xml
index b2ca059ccd..5a2b047fe0 100644
--- a/indra/newview/skins/default/xui/ja/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_postcard.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Postcard" title="スナップショットをメール">
<text name="to_label">
- 住人のEメール:
+ 住人のメール:
</text>
<line_editor left="145" name="to_form" width="125"/>
<text name="from_label">
- あなたのEメール:
+ あなたのメール:
</text>
<line_editor left="145" name="from_form" width="125"/>
<text name="name_label">
@@ -15,14 +15,14 @@
<text name="subject_label">
件名:
</text>
- <line_editor label="件名をここに入力" left="145" name="subject_form" width="125"/>
+ <line_editor label="件名を入力してください" left="145" name="subject_form" width="125"/>
<text name="msg_label">
メッセージ:
</text>
<text_editor bottom_delta="-120" height="110" name="msg_form">
メッセージをここに入力してください。
</text_editor>
- <check_box label="ウェブ上で公開" name="allow_publish_check" tool_tip="このポストカードをウェブ上で公開します。"/>
+ <check_box label="Web上で公開" name="allow_publish_check" tool_tip="このポストカードをWeb上で公開します。"/>
<check_box label="成人向けコンテンツ" name="mature_check" tool_tip="このポストカードには成人向け内容が含まれます。"/>
<button label="?" left="300" name="publish_help_btn"/>
<text name="fine_print">
diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml
index 1493219b83..6ba27b71a6 100644
--- a/indra/newview/skins/default/xui/ja/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preferences.xml
@@ -6,9 +6,9 @@
<panel label="一般" name="general"/>
<panel label="グラフィック" name="display"/>
<panel label="プライバシー" name="im"/>
- <panel label="サウンド" name="audio"/>
+ <panel label="サウンドとメディア" name="audio"/>
<panel label="チャット" name="chat"/>
- <panel label="通知" name="msgs"/>
+ <panel label="メッセージ" name="msgs"/>
<panel label="セットアップ" name="input"/>
<panel label="詳細" name="advanced1"/>
</tab_container>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
index fb2f2c7433..606dda12bd 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
@@ -6,6 +6,6 @@
<text name="desc txt">
説明:
</text>
- <button label="世界で再生" label_selected="停止" name="Anim play btn" tool_tip="他人に見えるように再生"/>
- <button label="ローカルに再生" label_selected="停止" name="Anim audition btn" tool_tip="自分だけが見えるように再生"/>
+ <button label="インワールドで再生する" label_selected="停止" name="Anim play btn" tool_tip="他人にも見えるように再生します"/>
+ <button label="ローカル再生" label_selected="停止" name="Anim audition btn" tool_tip="自分だけが見えるように再生します"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
index a378700d15..8a0aea717c 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
@@ -38,7 +38,7 @@
</text>
<line_editor name="replace_editor" tool_tip="トリガー・ワードをこれらの単語に置き換えます。 たとえば、トリガー「hello」を「Howdy」に置換すると、「I wanted to say hello」というチャット文が「I wanted to say howdy」に変わり、ジェスチャーにも置換が反映されます。"/>
<text name="key_label">
- ショートカット・キー:
+ ショートカット:
</text>
<combo_box label="なし" left="160" name="modifier_combo"/>
<combo_box label="なし" name="key_combo"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml
index 596699d6c1..e96a43d0c1 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml
@@ -6,8 +6,8 @@
<text name="key_label">
キーボード:
</text>
- <combo_box label="なし" name="modifier_combo"/>
- <combo_box label="なし" name="key_combo"/>
+ <combo_box label="なし" name="modifier_combo" width="60"/>
+ <combo_box label="なし" name="key_combo" width="60"/>
<text name="replace_text" tool_tip="これらの単語にトリガーとなる単語を置き換えます。 例えば、「howdy」と「hello」を置き換えると、「I wanted to say hello」というチャットは、ジェスチャーを交えながらの「I wanted to say howdy」に変わります。">
置き換え:
</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
index d3c06cbef4..c8375389ce 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
@@ -6,6 +6,6 @@
<text name="desc txt">
説明:
</text>
- <button label="世界で再生" label_selected="世界で再生" name="Sound play btn" tool_tip="他人が聞こえるように再生"/>
- <button label="ローカルに再生" label_selected="ローカルに再生" name="Sound audition btn" tool_tip="自分だけが聞こえるように再生"/>
+ <button label="インワールドで再生する" label_selected="インワールドで再生する" name="Sound play btn" tool_tip="他人にも聞こえるように再生します"/>
+ <button label="ローカル再生" label_selected="ローカル再生" name="Sound audition btn" tool_tip="自分だけが聞こえるように再生します"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
index c322538127..6ea1d79cfc 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
@@ -42,6 +42,6 @@
</combo_item>
</combo_box>
<button label="OK" name="Keep"/>
- <button label="キャンセル" name="Discard"/>
+ <button label="処分する" name="Discard"/>
<button label="別名で保存" name="save_tex_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
index ca6faf59c2..c66f307f23 100644
--- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
@@ -25,7 +25,7 @@
<text name="select_object_label">
ボタンをクリックしてから、悪意のあるオブジェクトをクリック:
</text>
- <button label="" label_selected="" name="pick_btn" tool_tip="オブジェクト・ピッカー - この報告の主題となるオブジェクトを特定"/>
+ <button label="" label_selected="" name="pick_btn" tool_tip="オブジェクトピッカー - 報告対象のオブジェクトを選択してください"/>
<text name="object_name_label">
オブジェクト:
</text>
@@ -33,13 +33,13 @@
Consetetur Sadipscing
</text>
<text name="owner_name_label">
- オーナー:
+ 所有者:
</text>
<text name="owner_name">
Hendrerit Vulputate Kamawashi Longname
</text>
- <combo_box name="category_combo" tool_tip="カテゴリー -- この報告に最も適したカテゴリーを選択してください">
- <combo_box.item label="カテゴリーを選択" name="Select_category"/>
+ <combo_box name="category_combo" tool_tip="カテゴリ -- この報告に最も適したカテゴリを選択してください">
+ <combo_box.item label="カテゴリを選択してください" name="Select_category"/>
<combo_box.item label="年齢>年齢偽証" name="Age__Age_play"/>
<combo_box.item label="年齢 &gt; 成人の住人が Teen Second Life にいる" name="Age__Adult_resident_on_Teen_Second_Life"/>
<combo_box.item label="年齢 &gt; 未成年の住人がTeen Second Life の外にいる" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
@@ -92,7 +92,7 @@
<text name="dscr_title">
詳細:
</text>
- <text name="bug_aviso">
+ <text name="bug_aviso" width="210">
できるだけ具体的に詳しく記入してください。
</text>
<text name="incomplete_title">
diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
index b06b16bbb3..1e884af5f2 100644
--- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
@@ -36,7 +36,7 @@
2. 特定の人に販売:
</text>
<text name="sell_to_text" right="-6">
- 販売先の指定なしか、特定の人に販売するか選択してください。
+ 販売先の指定なしか、特定の人に販売するかを選択してください。
</text>
<combo_box name="sell_to">
<combo_box.item label="- 1つ選択 -" name="--selectone--"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
index 6c84de9b19..53384aca90 100644
--- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
@@ -28,21 +28,21 @@
形式
</text>
<combo_box label="解像度" name="postcard_size_combo">
- <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+ <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
<combo_box.item label="640x480" name="640x480"/>
<combo_box.item label="800x600" name="800x600"/>
<combo_box.item label="1024x768" name="1024x768"/>
<combo_box.item label="カスタム" name="Custom"/>
</combo_box>
<combo_box label="解像度" name="texture_size_combo">
- <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+ <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
<combo_box.item label="小(128x128)" name="Small(128x128)"/>
<combo_box.item label="中(256x256)" name="Medium(256x256)"/>
<combo_box.item label="大(512x512)" name="Large(512x512)"/>
<combo_box.item label="カスタム" name="Custom"/>
</combo_box>
<combo_box label="解像度" name="local_size_combo">
- <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+ <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
<combo_box.item label="320x240" name="320x240"/>
<combo_box.item label="640x480" name="640x480"/>
<combo_box.item label="800x600" name="800x600"/>
@@ -61,12 +61,12 @@
<check_box label="縦横比の固定" name="keep_aspect_check"/>
<slider label="画質" name="image_quality_slider"/>
<text name="layer_type_label">
- キャプチャ:
+ キャプチャ:
</text>
<combo_box label="画像レイヤー" name="layer_types">
<combo_box.item label="色" name="Colors"/>
- <combo_box.item label="深さ" name="Depth"/>
- <combo_box.item label="オグジェクトのつや消し" name="ObjectMattes"/>
+ <combo_box.item label="色深度" name="Depth"/>
+ <combo_box.item label="マットオブジェクト" name="ObjectMattes"/>
</combo_box>
<check_box label="インターフェース" name="ui_check"/>
<check_box label="HUD" name="hud_check"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml
index a24ba6e075..7d83309c46 100644
--- a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml
@@ -9,7 +9,7 @@
<button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
<button label="アップロード (L$[AMOUNT])" label_selected="アップロード (L$[AMOUNT])" name="ok_btn"/>
<text name="text">
- ビットレート(kbps):
+ ビットレート(kbps):
</text>
<radio_group name="bitrate">
<radio_item label="32" name="32"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_sys_well.xml b/indra/newview/skins/default/xui/ja/floater_sys_well.xml
index a7c0a2b391..3ac2a11a97 100644
--- a/indra/newview/skins/default/xui/ja/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/ja/floater_sys_well.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="notification_chiclet" title="通知">
<string name="title_im_well_window">
- IMセッション
+ 換算
</string>
<string name="title_notification_well_window">
通知
diff --git a/indra/newview/skins/default/xui/ja/floater_telehub.xml b/indra/newview/skins/default/xui/ja/floater_telehub.xml
index bdb92c8e30..7318083771 100644
--- a/indra/newview/skins/default/xui/ja/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/ja/floater_telehub.xml
@@ -10,7 +10,7 @@
「切断」をクリックして削除します。
</text>
<text name="help_text_not_connected">
- 物体を選択し「テレハブの接続」をクリックする
+ 物体を選択して「テレハブの接続」をクリックしてください。
</text>
<button label="テレハブの接続" name="connect_btn"/>
<button label="切断" name="disconnect_btn"/>
@@ -20,9 +20,6 @@
<button label="出現位置を追加" name="add_spawn_point_btn"/>
<button label="出現地点を削除" name="remove_spawn_point_btn"/>
<text name="spawn_point_help">
- オブジェクトを選び、「出現地点を追加」をクリックして位置を指定します。
-そうするとそのオブジェクトを移動させたり削除できます。
-位置はテレハブセンターに関連します。
-リストのアイテムを選択してインワールドでハイライトさせます。
+ オブジェクトを選び、「出現地点を追加」をクリックして位置を指定します。そうするとそのオブジェクトを移動させたり削除できます。位置はテレハブセンターに関連します。リストのアイテムを選択してインワールドでハイライトさせます。
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
index 1500808e60..399cffcce5 100644
--- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="texture picker" title="選択: テクスチャ">
+<floater name="texture picker" title="テクスチャの選択">
<string name="choose_picture">
クリックして写真を選択
</string>
@@ -9,12 +9,12 @@
<text name="unknown">
サイズ: [DIMENSIONS]
</text>
- <button label="デフォルト" label_selected="デフォルト" name="Default"/>
+ <button label="デフォルト" label_selected="デフォルト" name="Default"/>
<button label="なし" label_selected="なし" name="None"/>
<button label="ブランク" label_selected="ブランク" name="Blank"/>
<check_box label="フォルダを表示" name="show_folders_check"/>
<search_editor label="テクスチャをフィルター" name="inventory search editor"/>
- <check_box label="今すぐ適用" name="apply_immediate_check"/>
+ <check_box label="すぐ適用" name="apply_immediate_check"/>
<button label="" label_selected="" name="Pipette"/>
<button label="取り消し" label_selected="取り消し" name="Cancel"/>
<button label="OK" label_selected="OK" name="Select"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index 52d3537d9a..24bb5b614c 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -7,16 +7,16 @@
選択した側をクリックし、ドラッグして引き伸ばす
</floater.string>
<floater.string name="status_move">
- 移動:ドラッグ、コピー:Shiftを押しながらドラッグ
+ 移動:ドラッグ、コピー:Shift + ドラッグ
</floater.string>
<floater.string name="status_modifyland">
土地をクリックし、ボタンを押したまま入力して修正変更
</floater.string>
<floater.string name="status_camera">
- クリック・ドラッグで視界移動
+ クリック + ドラッグで視界移動
</floater.string>
<floater.string name="status_grab">
- ドラッグで移動、Ctrlで持ち上げ、Ctrl+Shiftで回転
+ ドラッグで移動、Ctrlで持ち上げ、Ctrl + Shiftで回転
</floater.string>
<floater.string name="status_place">
インワールドでクリックして作成
@@ -31,10 +31,10 @@
ローカル
</floater.string>
<floater.string name="grid_world_text">
- 世界
+ インワールド
</floater.string>
<floater.string name="grid_reference_text">
- 参照
+ レファレンス
</floater.string>
<floater.string name="grid_attachment_text">
アタッチメント
@@ -50,12 +50,12 @@
<radio_group name="focus_radio_group">
<radio_item label="ズーム" name="radio zoom"/>
<radio_item label="軌跡(Ctrl)" name="radio orbit"/>
- <radio_item label="水平・垂直移動 (Ctrl+Shift)" name="radio pan"/>
+ <radio_item label="水平・垂直移動 (Ctrl + Shift)" name="radio pan"/>
</radio_group>
<radio_group name="move_radio_group">
<radio_item label="移動" name="radio move"/>
<radio_item label="持ち上げる(Ctrl)" name="radio lift"/>
- <radio_item label="回転 (Ctrl+Shift)" name="radio spin"/>
+ <radio_item label="回転 (Ctrl + Shift)" name="radio spin"/>
</radio_group>
<radio_group name="edit_radio_group">
<radio_item label="移動" name="radio position"/>
@@ -68,14 +68,14 @@
þ: [COUNT]
</text>
<check_box label="両側を引伸ばす" left="116" name="checkbox uniform"/>
- <check_box initial_value="true" label="テクスチャーを引伸ばす" name="checkbox stretch textures"/>
+ <check_box initial_value="true" label="テクスチャを引伸ばす" name="checkbox stretch textures"/>
<check_box initial_value="true" label="グリッドポイントにスナップ" left_delta="27" name="checkbox snap to grid"/>
<combo_box left_delta="60" name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択" width="76">
- <combo_box.item label="ワールドグリッド" name="World"/>
+ <combo_box.item label="インワールドグリッド" name="World"/>
<combo_box.item label="ローカルグリッド" name="Local"/>
<combo_box.item label="リファレンスグリッド" name="Reference"/>
</combo_box>
- <button label="オプション" label_selected="オプション" name="Options..." tool_tip="グリッドオプションをもっと見る"/>
+ <button label="オプション" label_selected="オプション" name="Options..." tool_tip="グリッドオプションを表示します"/>
<button label="" label_selected="" name="ToolCube" tool_tip="キューブ"/>
<button label="" label_selected="" name="ToolPrism" tool_tip="プリズム"/>
<button label="" label_selected="" name="ToolPyramid" tool_tip="ピラミッド"/>
@@ -150,7 +150,7 @@
合計: L$
</panel.string>
<panel.string name="Cost Per Unit">
- Price Per: L$
+ 単価: L$
</panel.string>
<panel.string name="Cost Mixed">
混合価格
@@ -165,13 +165,13 @@
説明:
</text>
<text name="Creator:">
- クリエーター
+ 制作者:
</text>
<text name="Creator Name">
Esbee Linden
</text>
<text name="Owner:">
- オーナー:
+ 所有者:
</text>
<text name="Owner Name">
Erica Linden
@@ -197,11 +197,11 @@
<check_box label="販売対象:" name="checkbox for sale"/>
<combo_box name="sale type">
<combo_box.item label="コピー" name="Copy"/>
- <combo_box.item label="コンテンツ" name="Contents"/>
+ <combo_box.item label="中身" name="Contents"/>
<combo_box.item label="オリジナル" name="Original"/>
</combo_box>
<spinner label="価格: L$" name="Edit Cost"/>
- <check_box label="検索に表示" name="search_check" tool_tip="検索結果で、このオブジェクトを人に見せる"/>
+ <check_box label="検索に表示" name="search_check" tool_tip="検索結果にこのオブジェクトを表示します"/>
<panel name="perms_build">
<text name="perm_modify">
あなたはこのオブジェクトを修正できます
@@ -216,7 +216,7 @@
</text>
<check_box label="修正" name="checkbox next owner can modify"/>
<check_box label="コピー" name="checkbox next owner can copy"/>
- <check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
+ <check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販できます"/>
<text name="B:">
B:
</text>
@@ -238,10 +238,10 @@
</panel>
</panel>
<panel label="形状" name="Object">
- <check_box label="ロック済み" name="checkbox locked" tool_tip="オブジェクトの移動と削除を禁止します。 この機能を使うと、構築中に意図しない編集を防ぐことができます。"/>
- <check_box label="物理" name="Physical Checkbox Ctrl" tool_tip="オブジェクトに対する重力の作用と影響を有効にする"/>
+ <check_box label="ロック済み" name="checkbox locked" tool_tip="オブジェクトの移動と削除を禁止します。 この機能を使うと、制作中の意図せぬ編集を防ぐことができます。"/>
+ <check_box label="物理" name="Physical Checkbox Ctrl" tool_tip="オブジェクトに対する重力の作用と影響を有効にします"/>
<check_box label="臨時" name="Temporary Checkbox Ctrl" tool_tip="制作後 1 分でオブジェクトは削除されます"/>
- <check_box label="ファントム" name="Phantom Checkbox Ctrl" tool_tip="オブジェクト同士の衝突またはオブジェクトとアバターの衝突を回避"/>
+ <check_box label="ファントム" name="Phantom Checkbox Ctrl" tool_tip="オブジェクト同士の衝突またはオブジェクトとアバターの衝突を回避します"/>
<text name="label position">
位置(メートル)
</text>
@@ -280,7 +280,7 @@
<combo_box.item label="ゴム" name="Rubber"/>
</combo_box>
<text name="text cut">
- パスカット (始点/終点)
+ パスカット(始点と終点)
</text>
<spinner label="B" name="cut begin"/>
<spinner label="E" name="cut end"/>
@@ -300,7 +300,7 @@
<combo_box.item label="三角形" name="Triangle"/>
</combo_box>
<text name="text twist">
- ひねり (始点/終点)
+ ひねり(始点と終点)
</text>
<spinner label="B" name="Twist Begin"/>
<spinner label="E" name="Twist End"/>
@@ -318,13 +318,13 @@
<spinner label="X" name="Shear X"/>
<spinner label="Y" name="Shear Y"/>
<text name="advanced_cut">
- プロフィールカット (始点/終点)
+ プロフィールカット(始点と終点)
</text>
<text name="advanced_dimple">
- くぼみ (始点/終点)
+ くぼみ(始点と終点)
</text>
<text name="advanced_slice">
- 切り取り (始点/終点)
+ 切り取り(始点と終点)
</text>
<spinner label="B" name="Path Limit Begin"/>
<spinner label="E" name="Path Limit End"/>
@@ -339,9 +339,9 @@
<text name="text revolutions">
回転体
</text>
- <texture_picker label="スカルプトテクスチャー" name="sculpt texture control" tool_tip="クリックして写真を選択してください。"/>
- <check_box label="ミラー" name="sculpt mirror control" tool_tip="スカルプトプリムを X 軸上で反転させる"/>
- <check_box label="裏返し" name="sculpt invert control" tool_tip="スカルプトプリムを反転させて裏返す"/>
+ <texture_picker label="スカルプトテクスチャ" name="sculpt texture control" tool_tip="クリックして写真を選択してください。"/>
+ <check_box label="ミラー" name="sculpt mirror control" tool_tip="スカルプトプリムを X 軸上で反転させます"/>
+ <check_box label="裏返し" name="sculpt invert control" tool_tip="スカルプトプリムを反転させて裏返します"/>
<text name="label sculpt type">
縫い目のタイプ
</text>
@@ -355,23 +355,23 @@
</panel>
<panel label="特徴" name="Features">
<text name="select_single">
- プリムを1つだけ選択して編集してください
+ プリムを 1 つだけ選択して編集してください
</text>
<text name="edit_object">
オブジェクトの特徴を編集:
</text>
- <check_box label="フレキシブル・パス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸を中心にオブジェクトの屈曲を有効にする(クライアント側のみ)"/>
+ <check_box label="フレキシブルパス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸を中心にオブジェクトの屈曲を有効にします(クライアント側のみ)"/>
<spinner label="柔軟性" label_width="72" name="FlexNumSections" width="135"/>
<spinner label="重力" label_width="72" name="FlexGravity" width="135"/>
<spinner label="ドラッグ" label_width="72" name="FlexFriction" width="135"/>
<spinner label="風" label_width="72" name="FlexWind" width="135"/>
<spinner label="緊張" label_width="72" name="FlexTension" width="135"/>
- <spinner label="X軸方向の力" label_width="72" name="FlexForceX" width="135"/>
- <spinner label="Y軸方向の力" label_width="72" name="FlexForceY" width="135"/>
- <spinner label="Z軸方向の力" label_width="72" name="FlexForceZ" width="135"/>
- <check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光"/>
+ <spinner label="X 軸方向の力" label_width="72" name="FlexForceX" width="135"/>
+ <spinner label="Y 軸方向の力" label_width="72" name="FlexForceY" width="135"/>
+ <spinner label="Z 軸方向の力" label_width="72" name="FlexForceZ" width="135"/>
+ <check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光します"/>
<color_swatch label="" left_delta="74" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/>
- <texture_picker label="" name="light texture control" tool_tip="クリックで投影画を選択(遅延レンダリング有効時のみ)"/>
+ <texture_picker label="" name="light texture control" tool_tip="クリックで投影画を選択します(遅延レンダリング有効時のみ)"/>
<spinner label="輝度" label_width="72" name="Light Intensity" width="135"/>
<spinner label="FOV" name="Light FOV"/>
<spinner label="半径" label_width="72" name="Light Radius" width="135"/>
@@ -381,7 +381,7 @@
</panel>
<panel label="材質" name="Texture">
<panel.string name="string repeats per meter">
- メートルごとに繰返す
+ メートルごとに繰り返す
</panel.string>
<panel.string name="string repeats per face">
面ごとに繰り返す
@@ -453,10 +453,10 @@
<text name="media_tex">
メディア
</text>
- <button name="add_media" tool_tip="メディアを追加"/>
- <button name="delete_media" tool_tip="このメディアテクスチャを削除"/>
- <button name="edit_media" tool_tip="このメディアを編集"/>
- <button label="揃える" label_selected="メディアを一列に揃える" name="button align" tool_tip="メディアテクスチャを一列に揃える(最初に読み込む必要があります)"/>
+ <button name="add_media" tool_tip="メディアを追加します"/>
+ <button name="delete_media" tool_tip="このメディアテクスチャを削除します"/>
+ <button name="edit_media" tool_tip="このメディアを編集します"/>
+ <button label="揃える" label_selected="メディアを一列に揃えます" name="button align" tool_tip="メディアテクスチャを一列に揃えます(最初に読み込む必要があります)"/>
</panel>
</panel>
<panel label="中身" name="Contents">
@@ -475,7 +475,7 @@
面積: [AREA] 平方メートル
</text>
<button label="土地情報" label_selected="土地情報" name="button about land"/>
- <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけ: 緑 = あなたの土地 アクア = あなたのグループ所有地 赤 = 他人が所有する土地 黄色 = 売り出し中 紫 = オークション グレー = パブリック"/>
+ <check_box label="所有者を表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけます: 緑 = あなたの土地 アクア = あなたのグループ所有地 赤 = 他人が所有する土地 黄色 = 売り出し中 紫 = オークション グレー = パブリック"/>
<text name="label_parcel_modify">
区画の編集
</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_url_entry.xml b/indra/newview/skins/default/xui/ja/floater_url_entry.xml
index 9d3ca20c7c..8e09e4748a 100644
--- a/indra/newview/skins/default/xui/ja/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/ja/floater_url_entry.xml
@@ -3,11 +3,11 @@
<text name="media_label">
メディア URL:
</text>
- <combo_box left="100" name="media_entry" width="360" />
- <button label="OK" name="ok_btn" width="78"/>
+ <combo_box name="media_entry"/>
+ <button label="OK" name="ok_btn" width="38"/>
<button label="キャンセル" name="cancel_btn" width="80"/>
- <button label="クリア" name="clear_btn" />
- <text name="loading_label">
+ <button label="クリア" name="clear_btn" left_pad="76"/>
+ <text name="loading_label" left="140">
ロード中...
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml
index fc9ddf5096..de8b590a80 100644
--- a/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="modal container" title=" ">
- <button label="保存" label_selected="保存" name="Save" />
- <button label="取り消し" label_selected="取り消し" name="Cancel" />
+ <button label="保存" label_selected="保存" name="Save"/>
+ <button label="取り消し" label_selected="取り消し" name="Cancel"/>
<text name="Save item as:">
- アイテムを別名で保存:
+ アイテムを別名で持ち物に保存:
</text>
<line_editor name="name ed">
New [DESC]
diff --git a/indra/newview/skins/default/xui/ja/floater_window_size.xml b/indra/newview/skins/default/xui/ja/floater_window_size.xml
index a31336c0f8..152a5f4806 100644
--- a/indra/newview/skins/default/xui/ja/floater_window_size.xml
+++ b/indra/newview/skins/default/xui/ja/floater_window_size.xml
@@ -4,7 +4,7 @@
[RES_X] x [RES_Y]
</string>
<text name="windowsize_text">
- ウィンドウのサイズの設定:
+ ウィンドウのサイズを設定:
</text>
<combo_box name="window_size_combo" tool_tip="横幅 x 高さ">
<combo_box.item label="1000 x 700 (標準)" name="item0"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml
index a0f2d98adf..c44c6b3fd3 100644
--- a/indra/newview/skins/default/xui/ja/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml
@@ -2,13 +2,13 @@
<floater name="worldmap" title="世界地図">
<panel name="layout_panel_1">
<text name="events_label">
- レジェンド
+ 表記・記号
</text>
</panel>
<panel>
- <button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="マップを中央に表示する"/>
+ <button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="アバターの位置を地図の中心に表示します"/>
<text name="me_label">
- ミー
+ 自分
</text>
<check_box label="住人" name="people_chk"/>
<text name="person_label">
@@ -23,12 +23,12 @@
土地販売
</text>
<text name="by_owner_label">
- by owner
+ 所有者の販売
</text>
<text name="auction_label">
土地オークション
</text>
- <button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="「ホーム」にテレポート"/>
+ <button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="「ホーム」にテレポートします"/>
<text name="Home_label">
ホーム
</text>
@@ -50,25 +50,26 @@
</panel>
<panel>
<text name="find_on_map_label">
- 地図で探す
+ 地図上で探す
</text>
</panel>
<panel>
- <combo_box label="オンラインのフレンド" name="friend combo" tool_tip="フレンドを地図に表示">
+ <combo_box label="オンラインのフレンド" name="friend combo" tool_tip="フレンドを地図上に表示します">
<combo_box.item label="オンラインのフレンド" name="item1"/>
</combo_box>
- <combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図に表示するランドマーク">
+ <combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図上に表示するランドマーク">
<combo_box.item label="マイ ランドマーク" name="item1"/>
</combo_box>
<search_editor label="リージョン名" name="location" tool_tip="地域名を入力してください。"/>
<button label="検索" name="DoSearch" tool_tip="地域検索"/>
+ <button name="Clear" tool_tip="追跡ラインをクリアして地図をリセットします"/>
<scroll_list name="search_results">
<scroll_list.columns label="" name="icon"/>
<scroll_list.columns label="" name="sim_name"/>
</scroll_list>
- <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択されたロケーションにテレポート"/>
- <button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地を SLurl としてコピーして、Webで使用します。"/>
- <button label="選択したリージョンを表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択したロケーションを地図の中心にする"/>
+ <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択した場所にテレポートします"/>
+ <button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地を SLurl でコピーして Web で使用します。"/>
+ <button label="選択をを表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択した場所を地図の中心に表示します"/>
</panel>
<panel>
<text name="zoom_label">
diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
index 9371b80af5..aeac0a8328 100644
--- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
@@ -18,7 +18,7 @@
<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"/>
+ <button label="プロフィール" name="view_profile_btn"/>
<panel name="moderator_panel">
<button label="ボイスを無効にする" name="disable_voice"/>
<button label="ボイスを有効にする" name="enable_voice"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
index 1bfadf8d45..a638bed36f 100644
--- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Self Pie">
<menu_item_call label="立ち上がる" name="Stand Up"/>
- <context_menu label="脱ぐ>" name="Take Off &gt;">
- <context_menu label="衣類 &gt;" name="Clothes &gt;">
+ <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"/>
@@ -16,12 +16,12 @@
<menu_item_call label="アルファ" name="Self Alpha"/>
<menu_item_call label="すべての衣類" name="All Clothes"/>
</context_menu>
- <context_menu label="HUD &gt;" name="Object Detach HUD"/>
- <context_menu label="取り外す &gt;" name="Object Detach"/>
+ <context_menu label="HUD ▶" name="Object Detach HUD"/>
+ <context_menu label="取り外す ▶" name="Object Detach"/>
<menu_item_call label="すべて取り外す" name="Detach All"/>
</context_menu>
<menu_item_call label="容姿" name="Appearance..."/>
<menu_item_call label="フレンド" name="Friends..."/>
<menu_item_call label="グループ" name="Groups..."/>
- <menu_item_call label="マイ プロフィール" name="Profile..."/>
+ <menu_item_call label="プロフィール" name="Profile..."/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml
index 3d5086c52a..93f75f3ce1 100644
--- a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml
@@ -15,4 +15,5 @@
<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"/>
</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml
index 76c01d6109..d02701b400 100644
--- a/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<menu name="Gear Menu">
<menu_item_call label="立ち上がる" name="stand_up"/>
- <menu_item_call label="マイ 容姿" name="my_appearance"/>
+ <menu_item_call label="容姿" name="my_appearance"/>
<menu_item_call label="プロフィール" name="my_profile"/>
<menu_item_call label="フレンド" name="my_friends"/>
<menu_item_call label="グループ" name="my_groups"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml
index 78c0dd0a78..a2dbc34270 100644
--- a/indra/newview/skins/default/xui/ja/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml
@@ -62,13 +62,13 @@
<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="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="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"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index 42a95ac3d3..d6f13f0e59 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -24,7 +24,7 @@
<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="Set Window Size..."/>
<menu_item_call label="利用規約を表示" name="TOS"/>
<menu_item_call label="クリティカルメッセージを表示" name="Critical"/>
<menu_item_call label="Web ブラウザのテスト" name="Web Browser Test"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml
index a161c01514..888d382e7e 100644
--- a/indra/newview/skins/default/xui/ja/menu_object.xml
+++ b/indra/newview/skins/default/xui/ja/menu_object.xml
@@ -7,18 +7,18 @@
<menu_item_call label="ここに座る" name="Object Sit"/>
<menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
<menu_item_call label="ズームイン" name="Zoom In"/>
- <context_menu label="装着 &gt;" name="Put On">
+ <context_menu label="装着 ▶" name="Put On">
<menu_item_call label="装着" name="Wear"/>
- <context_menu label="取り付け &gt;" name="Object Attach"/>
- <context_menu label="HUD を取り付け &gt;" name="Object Attach HUD"/>
+ <context_menu label="取り付ける ▶" name="Object Attach"/>
+ <context_menu label="HUD を取り付ける ▶" name="Object Attach HUD"/>
</context_menu>
- <context_menu label="削除 &gt;" name="Remove">
- <menu_item_call label="取る" name="Pie Object Take"/>
+ <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..."/>
<menu_item_call label="削除" name="Delete"/>
</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..."/>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml
index e4ccbf43ad..5eaad31898 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml
@@ -1,7 +1,7 @@
<?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="sort_status"/>
<menu_item_check label="人のアイコン表示" name="view_icons"/>
<menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
index 4e5dc60a3d..842d79dc4b 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
@@ -3,6 +3,6 @@
<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="Activate"/>
<menu_item_call label="脱退" name="Leave"/>
</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
index 2c8a346d1a..4788803789 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
@@ -2,6 +2,7 @@
<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="Share"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
index bcd562e3ed..238bfc4af9 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
@@ -1,6 +1,7 @@
<?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"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml
index bb93990efe..d7107dc153 100644
--- a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml
@@ -2,6 +2,8 @@
<toggleable_menu name="profile_overflow_menu">
<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"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml
index 2e06c53494..61ba3085d9 100644
--- a/indra/newview/skins/default/xui/ja/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/ja/menu_slurl.xml
@@ -1,6 +1,6 @@
<?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="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/default/xui/ja/menu_url_http.xml b/indra/newview/skins/default/xui/ja/menu_url_http.xml
index c2f4f24db6..c3da8a8686 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_http.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_http.xml
@@ -1,7 +1,7 @@
<?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_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/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index db8583ca15..ff5f68c867 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -5,12 +5,12 @@
<menu_item_call label="マイアカウント" name="Manage My Account">
<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/>
</menu_item_call>
- <menu_item_call label="L$の購入" name="Buy and Sell L$"/>
+ <menu_item_call label="L$ の購入" name="Buy and Sell L$"/>
<menu_item_call label="マイ プロフィール" name="Profile"/>
<menu_item_call label="マイ 容姿" name="Appearance"/>
<menu_item_check label="マイ 持ち物" name="Inventory"/>
- <menu_item_call label="持ち物をサイドトレイに表示" name="ShowSidetrayInventory"/>
- <menu_item_call label="マイ ジェスチャー" name="Gestures"/>
+ <menu_item_check label="持ち物" name="ShowSidetrayInventory"/>
+ <menu_item_check label="マイ ジェスチャー" name="Gestures"/>
<menu label="マイ ログイン状態" name="Status">
<menu_item_call label="一時退席中" name="Set Away"/>
<menu_item_call label="取り込み中" name="Set Busy"/>
@@ -24,7 +24,6 @@
<menu_item_call label="所属グループ" name="My Groups"/>
<menu_item_check label="近くのチャット" name="Nearby Chat"/>
<menu_item_call label="近くにいる人" name="Active Speakers"/>
- <menu_item_check label="近くのメディア" name="Nearby Media"/>
</menu>
<menu label="世界" name="World">
<menu_item_check label="ミニマップ" name="Mini-Map"/>
@@ -40,6 +39,10 @@
<menu label="表示" name="LandShow">
<menu_item_check label="移動コントロール" name="Movement Controls"/>
<menu_item_check label="コントロールを表示" name="Camera Controls"/>
+ <menu_item_check label="立入禁止ライン" name="Ban Lines"/>
+ <menu_item_check label="ビーコン(標識)" name="beacons"/>
+ <menu_item_check label="プロパティ境界線" name="Property Lines"/>
+ <menu_item_check label="土地所有者" name="Land Owners"/>
</menu>
<menu_item_call label="ホームにテレポート" name="Teleport Home"/>
<menu_item_call label="現在地をホームに設定" name="Set Home to Here"/>
@@ -49,12 +52,12 @@
<menu_item_call label="日没" name="Sunset"/>
<menu_item_call label="深夜" name="Midnight"/>
<menu_item_call label="エステートタイム" name="Revert to Region Default"/>
- <menu_item_call label="環境編集" name="Environment Editor"/>
+ <menu_item_call label="自然環境エディター" name="Environment Editor"/>
</menu>
</menu>
<menu label="制作" name="BuildTools">
<menu_item_check label="制作" name="Show Build Tools"/>
- <menu label="制作ツールを選択" name="Select Tool">
+ <menu label="制作ツールを選択する" name="Select Tool">
<menu_item_call label="フォーカスツール" name="Focus"/>
<menu_item_call label="移動ツール" name="Move"/>
<menu_item_call label="編集ツール" name="Edit"/>
@@ -74,12 +77,13 @@
</menu>
<menu_item_call label="リンク" name="Link"/>
<menu_item_call label="リンクを外す" name="Unlink"/>
+ <menu_item_check label="リンクした部分を編集" name="Edit Linked Parts"/>
<menu_item_call label="選択したものに焦点を合わせる" name="Focus on Selection"/>
<menu_item_call label="選択したものをズームする" name="Zoom to Selection"/>
<menu label="オブジェクト" name="Object">
- <menu_item_call label="買う" name="Menu Object Take"/>
+ <menu_item_call label="取る" name="Menu Object Take"/>
<menu_item_call label="コピーを取る" name="Take Copy"/>
- <menu_item_call label="「マイ 持ち物」に保存" name="Save Object Back to My Inventory"/>
+ <menu_item_call label="「持ち物」に保存" name="Save Object Back to My Inventory"/>
<menu_item_call label="オブジェクトの中身に保存" name="Save Object Back to Object Contents"/>
</menu>
<menu label="スクリプト" name="Scripts">
@@ -90,25 +94,18 @@
<menu_item_call label="スクリプトを実行停止にする" name="Set Scripts to Not Running"/>
</menu>
<menu label="オプション" name="Options">
- <menu_item_check label="リンク部位を編集" name="Edit Linked Parts"/>
<menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/>
<menu_item_check label="権限の詳細を表示" name="DebugPermissions"/>
- <menu label="選択" name="Selection">
- <menu_item_check label="私のオブジェクトだけを選択" name="Select Only My Objects"/>
- <menu_item_check label="動的オブジェクトのみ選択" name="Select Only Movable Objects"/>
- <menu_item_check label="環境で選択" name="Select By Surrounding"/>
- </menu>
- <menu label="表示" name="Show">
- <menu_item_check label="非表示の選択を表示" name="Show Hidden Selection"/>
- <menu_item_check label="選択した光の半径範囲を表示" name="Show Light Radius for Selection"/>
- <menu_item_check label="選択ビームを表示" name="Show Selection Beam"/>
- </menu>
- <menu label="グリッド" name="Grid">
- <menu_item_check label="グリッドポイントにスナップ" name="Snap to Grid"/>
- <menu_item_call label="オブジェクトのXY軸をグリッドにスナップ" name="Snap Object XY to Grid"/>
- <menu_item_call label="選択をグリッドに使用" name="Use Selection for Grid"/>
- <menu_item_call label="グリッドオプション" name="Grid Options"/>
- </menu>
+ <menu_item_check label="私のオブジェクトだけを選択" name="Select Only My Objects"/>
+ <menu_item_check label="動的オブジェクトのみ選択" name="Select Only Movable Objects"/>
+ <menu_item_check label="範囲内を選択" name="Select By Surrounding"/>
+ <menu_item_check label="隠れた位置の選択も表示" name="Show Hidden Selection"/>
+ <menu_item_check label="選択した光の半径範囲を表示" name="Show Light Radius for Selection"/>
+ <menu_item_check label="選択ビームを表示" name="Show Selection Beam"/>
+ <menu_item_check label="グリッドポイントにスナップ" name="Snap to Grid"/>
+ <menu_item_call label="オブジェクトの XY 軸をグリッドにスナップ" name="Snap Object XY to Grid"/>
+ <menu_item_call label="選択をグリッドに使用" name="Use Selection for Grid"/>
+ <menu_item_call label="グリッドオプション" name="Grid Options"/>
</menu>
<menu label="リンクした部分を選択" name="Select Linked Parts">
<menu_item_call label="次の部位を選択" name="Select Next Part"/>
@@ -119,15 +116,15 @@
</menu>
<menu label="ヘルプ" name="Help">
<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
- <menu_item_call label="嫌がらせを報告" name="Report Abuse"/>
- <menu_item_call label="バグ報告" name="Report Bug"/>
+ <menu_item_call label="嫌がらせを報告する" name="Report Abuse"/>
+ <menu_item_call label="バグを報告する" name="Report Bug"/>
<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
</menu>
<menu label="アドバンス" name="Advanced">
<menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/>
<menu_item_call label="テクスチャのリベーク" name="Rebake Texture"/>
<menu_item_call label="UI のサイズをデフォルトに設定する" name="Set UI Size to Default"/>
- <menu_item_call label="ウィンドウのサイズの設定:" name="Set Window Size..."/>
+ <menu_item_call label="ウィンドウのサイズを設定..." name="Set Window Size..."/>
<menu_item_check label="遠くのオブジェクトを選択しない" name="Limit Select Distance"/>
<menu_item_check label="カメラの距離移動を制限しない" name="Disable Camera Distance"/>
<menu_item_check label="高解像度スナップショット" name="HighResSnapshot"/>
@@ -175,8 +172,8 @@
<menu_item_check label="マルチスレッド処理" name="Run Multiple Threads"/>
<menu_item_call label="グループキャッシュのクリア" name="ClearGroupCache"/>
<menu_item_check label="マウスの平滑化" name="Mouse Smoothing"/>
- <menu_item_check label="近くのチャットに IM を表示" name="IMInChat"/>
<menu label="ショートカット" name="Shortcuts">
+ <menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/>
<menu_item_check label="検索" name="Search"/>
<menu_item_call label="キーをリリース" name="Release Keys"/>
<menu_item_call label="UI のサイズをデフォルトに設定" name="Set UI Size to Default"/>
@@ -219,6 +216,7 @@
<menu_item_check label="カメラ" name="Camera"/>
<menu_item_check label="風" name="Wind"/>
<menu_item_check label="FOV" name="FOV"/>
+ <menu_item_check label="バッジ" name="Badge"/>
</menu>
<menu label="情報を表示" name="Display Info">
<menu_item_check label="時間を表示" name="Show Time"/>
@@ -276,7 +274,7 @@
<menu_item_check label="テクスチャアトラス" name="Texture Atlas"/>
<menu_item_check label="装着された光源を描画する" name="Render Attached Lights"/>
<menu_item_check label="取り付けられたパーティクルを描画する" name="Render Attached Particles"/>
- <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/>
+ <menu_item_check label="マウスオーバーで強調表示" name="Hover Glow Objects"/>
</menu>
<menu label="ネットワーク" name="Network">
<menu_item_check label="エージェントを一時停止" name="AgentPause"/>
@@ -358,7 +356,7 @@
<menu_item_call label="アバターテクスチャをデバッグ" name="Debug Avatar Textures"/>
<menu_item_call label="ローカルテクスチャをダンプ" name="Dump Local Textures"/>
</menu>
- <menu_item_check label="HTTP Texture" name="HTTP Textures"/>
+ <menu_item_check label="HTTP テクスチャ" name="HTTP Textures"/>
<menu_item_call label="圧縮画像" name="Compress Images"/>
<menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/>
<menu_item_check label="次回の起動時にコンソールウィンドウを表示" name="Console Window"/>
diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml
index 2f945b2010..54663a0367 100644
--- a/indra/newview/skins/default/xui/ja/mime_types.xml
+++ b/indra/newview/skins/default/xui/ja/mime_types.xml
@@ -2,13 +2,13 @@
<mimetypes name="default">
<widgetset name="web">
<label name="web_label">
- ウェブ・コンテンツ
+ Webコンテンツ
</label>
<tooltip name="web_tooltip">
- ここにウェブ・コンテンツがあります。
+ ここにWebコンテンツがあります。
</tooltip>
<playtip name="web_playtip">
- ウェブ・コンテンツを表示
+ Webコンテンツを表示
</playtip>
</widgetset>
<widgetset name="movie">
@@ -119,7 +119,7 @@
</mimetype>
<mimetype name="application/xhtml+xml">
<label name="application/xhtml+xml_label">
- ウェブ・ページ (XHTML)
+ Webページ (XHTML)
</label>
</mimetype>
<mimetype name="application/x-director">
@@ -184,7 +184,7 @@
</mimetype>
<mimetype menu="1" name="text/html">
<label name="text/html_label">
- ウェブ・ページ
+ Webページ
</label>
</mimetype>
<mimetype menu="1" name="text/plain">
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index b502fb2e6e..f4c46f82ac 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -11,18 +11,29 @@
</global>
<template name="okbutton">
<form>
- <button name="OK" text="$yestext"/>
+ <button name="OK_okbutton" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore">
+ <form>
+ <button name="OK_okignore" text="$yestext"/>
</form>
</template>
- <template name="okignore"/>
<template name="okcancelbuttons">
<form>
- <button name="Cancel" text="$notext"/>
+ <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="okcancelignore"/>
<template name="okhelpbuttons">
<form>
+ <button name="OK_okhelpbuttons" text="$yestext"/>
<button name="Help" text="$helptext"/>
</form>
</template>
@@ -30,16 +41,17 @@
<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 にありませんでした。
+エラー詳細: 「 [_NAME] 」という通知は notifications.xml にありませんでした。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="FloaterNotFound">
- フロータ・エラー:下記のコントロールが見つかりませんでした:
+ フロータエラー:下記のコントロールが見つかりませんでした:
[CONTROLS]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
@@ -69,29 +81,38 @@
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="WearableSave">
- 現在の衣服/ボディーパーツの変更を保存しますか?
+ 現在の衣類、身体部位の変更を保存しますか?
<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
</notification>
<notification name="CompileQueueSaveText">
- 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。 [REASON] 後でもう一度試してください。
+ 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。
+[REASON]
+後でもう一度お試しください。
</notification>
<notification name="CompileQueueSaveBytecode">
- 次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。 [REASON]後でもう一度試してください。
+ 次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。
+[REASON]
+後でもう一度お試しください。
</notification>
<notification name="WriteAnimationFail">
アニメーションデータの書き込みに問題があります。後でもう一度お試しください。
</notification>
<notification name="UploadAuctionSnapshotFail">
- 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。 [REASON]
+ 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。
+[REASON]
</notification>
<notification name="UnableToViewContentsMoreThanOne">
- 一度に複数のアイテムのコンテンツは表示できません。
-選択するアイテムを1つだけにして、もう一度試してください。
+ 一度に複数のアイテムの中身を表示できません。
+アイテムを 1 つだけ選択して、もう一度お試しください。
</notification>
<notification name="SaveClothingBodyChanges">
- 衣服/身体部位に対する変更をすべて保存しますか?
+ 衣服、身体部位に対する変更をすべて保存しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/>
</notification>
+ <notification name="FriendsAndGroupsOnly">
+ フレンド以外からのコールやインスタントメッセージを無視する設定にしたことを、相手に知られることはありません。
+ <usetemplate name="okbutton" yestext="はい"/>
+ </notification>
<notification name="GrantModifyRights">
他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。 この権限を与える際には十分に注意してください。
[FIRST_NAME] [LAST_NAME] に修正権限を与えますか?
@@ -103,7 +124,7 @@
<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification name="RevokeModifyRights">
- [FIRST_NAME] [LAST_NAME]に対して変更権限を取り消しますか?
+ [FIRST_NAME] [LAST_NAME] に対して変更権限を取り消しますか?
<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification name="RevokeModifyRightsMultiple">
@@ -125,28 +146,27 @@
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="AddGroupOwnerWarning">
- あなたは [ROLE_NAME]の役割にメンバーを与えようとしています。
+ あなたは [ROLE_NAME] の役割にメンバーを与えようとしています。
任命されたメンバーが自ら退任しない限り、
-彼らを役柄から削除できません。
+役柄から削除できません。
操作を続行しますか?
- <usetemplate ignoretext="グループオーナーを新しく追加する前に確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ <usetemplate ignoretext="グループオーナーを新しく追加する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
</notification>
<notification name="AssignDangerousActionWarning">
- あなたは[ROLE_NAME]に [ACTION_NAME]の能力を
+ あなたは [ROLE_NAME] に [ACTION_NAME] の能力を
与えようとしています。
*警告*
この能力を持つ役割のメンバーは、
自分と他のメンバーに現在より強力な権限を割り当て、
-自分をオーナーとほぼ同様の立場に
-任命することもできるようになります。 この行為の意味をよく理解してから
-実行してください。
+自分をオーナーとほぼ同様の立場に任命することもできるようになります。
+この行為の意味をよく理解してから実行してください。
-この能力を[ROLE_NAME]に割り当てますか?
+この能力を [ROLE_NAME] に割り当てますか?
<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification name="AssignDangerousAbilityWarning">
- あなたは[ROLE_NAME]に [ACTION_NAME]の能力を
+ あなたは [ROLE_NAME] に [ACTION_NAME] の能力を
与えようとしています。
*警告*
@@ -154,97 +174,99 @@
自分と他のメンバーにすべての能力を割り当て、
自分をオーナーとほぼ同様の立場に任命できます。
-この能力を[ROLE_NAME]に割り当てますか?
+この能力を [ROLE_NAME] に割り当てますか?
<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification name="AttachmentDrop">
アタッチメントを下に置こうとしています。
続けますか?
- <usetemplate ignoretext="アタッチメントを下に落とす前に確認する" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="ClickUnimplemented">
- 申し訳ありませんが、まだ未実装です。
+ <usetemplate ignoretext="アタッチメントを下に落とす前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
</notification>
<notification name="JoinGroupCanAfford">
- このグループに参加するには、L$[COST]かかります。
+ このグループに参加するには、L$ [COST] かかります。
続行しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="参加"/>
</notification>
+ <notification name="JoinGroupNoCost">
+ [NAME] というグループに入ろうとしています。
+続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="参加"/>
+ </notification>
<notification name="JoinGroupCannotAfford">
- このグループに加入するには、L$[COST]必要です。
-L$が不足しているのでこのグループに参加することができません。
+ このグループに加入するには、L$ [COST] 必要です。
+L$ が不足しているのでこのグループに参加することができません。
</notification>
<notification name="CreateGroupCost">
- このグループを作るには L$100 かかります。
+ このグループを作るには L$ 100 かかります。
一人ではグループにならないので、永久に削除されてしまいます。
48 時間以内にメンバーを勧誘し、入会してもらってください。
<usetemplate canceltext="キャンセル" name="okcancelbuttons" notext="キャンセル" yestext="L$100 でグループを作成"/>
</notification>
<notification name="LandBuyPass">
- L$[COST]で [TIME]時間この土地[PARCEL_NAME]に入ることができます。
+ L$ [COST] で [TIME] 時間 [PARCEL_NAME] に入ることができます。
入場許可を購入しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="SalePriceRestriction">
不特定の人に売却する場合には、
-売却価格はL$0以上に設定する必要があります。
-売却価格をL$0に設定する場合は、
+売却価格はL$ 0 以上に設定する必要があります。
+売却価格をL$ 0 に設定する場合は、
売却する個人を選択してください。
</notification>
<notification name="ConfirmLandSaleChange">
- 選択された[LAND_SIZE]平方メートルの土地は、売り出し中に設定されています。
-売却価格L$[SALE_PRICE]で、[NAME]に売却を認可します。
+ 選択した [LAND_SIZE] 平方メートルの土地は、売り出し中に設定されています。
+売却価格 L$ [SALE_PRICE] で、[NAME] に売却を認可します。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="ConfirmLandSaleToAnyoneChange">
注意: 「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず [SECOND_LIFE] コミュニティ全体で利用可能となります。
選択した [LAND_SIZE] 平方メートルの土地は、販売対象に設定されました。
-販売価格 L$[SALE_PRICE] で、[NAME] が販売対象者となります。
+販売価格 L$ [SALE_PRICE] で、[NAME] が販売対象者となります。
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ReturnObjectsDeededToGroup">
- この区画のグループ[NAME]共有のすべてのオブジェクトを、以前のオーナーの持ち物に戻そうとしています。
+ この区画のグループ [NAME] 共有のすべてのオブジェクトを、以前の所有者の「持ち物」に戻そうとしています。
操作を続行しますか?
*警告* これにより、
-グループに譲渡された譲渡不可能なオブジェクトは削除されます!
+グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
オブジェクト: [N]
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="ReturnObjectsOwnedByUser">
この区画で、
-住人[NAME]が所有する全てのオブジェクトを
-彼らの持ち物に本当に返却してもよいですか?
+住人 [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]以外による所有のオブジェクトをすべてそれぞれのオーナーの持ち物に返却しようとしています。
-操作を続行しますか?グループに譲渡された譲渡可能オブジェクトは、以前のオーナーに返却されます。
+[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者の「持ち物」に返却しようとしています。
+操作を続行しますか?グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。
*警告* これにより、
-グループに譲渡された譲渡不可能なオブジェクトは削除されます!
+グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
オブジェクト: [N]
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
@@ -253,43 +275,42 @@ L$が不足しているのでこのグループに参加することができま
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="DisableAllTopObjects">
- この地域内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか?
+ このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="ReturnObjectsNotOwnedByGroup">
- この土地の区画上のオブジェクトのうち、グループ[NAME]
-との間で共有していないオブジェクトをオーナーに返却しますか?
+ この土地の区画上のオブジェクトのうち、グループ [NAME] との間で共有していないオブジェクトを所有者に返却しますか?
オブジェクト: [N]
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="UnableToDisableOutsideScripts">
スクリプトを無効にできません。
-この地域全体が「ダメージ有効」に設定されています。
+このリージョン(地域)全体が「ダメージ有効」に設定されています。
武器を使用するにはスクリプトの実行を許可する必要があります。
</notification>
<notification name="MultipleFacesSelected">
現在複数の面が選択されています。
このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。
メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。
- <usetemplate ignoretext="メディアは選択した複数の面にセットされます。" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ <usetemplate ignoretext="メディアが選択した複数の面にセットされるとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="MustBeInParcel">
着地点を設定するには、この区画の内側に
立ってください。
</notification>
<notification name="PromptRecipientEmail">
- 受信者の有効なEメールアドレスを入力してください。
+ 受信者の有効なメールアドレスを入力してください。
</notification>
<notification name="PromptSelfEmail">
- あなたのEメール・アドレスを入力してください。
+ あなたのメールアドレスを入力してください。
</notification>
<notification name="PromptMissingSubjMsg">
デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか?
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ErrorProcessingSnapshot">
- スナップショット・データの処理エラー
+ スナップショットデータの処理エラー
</notification>
<notification name="ErrorEncodingSnapshot">
スナップショットのエンコード化でエラーが出ました!
@@ -304,11 +325,11 @@ L$が不足しているのでこのグループに参加することができま
[SECOND_LIFE] へのログインを続けるには、利用規約に同意してください。
</notification>
<notification name="CouldNotPutOnOutfit">
- 服装を装着できません。
-服装フォルダに衣服、身体部位、付属品がありません。
+ アウトフィットを装着できません。
+アウトフィットフォルダに衣類、身体部位、アタッチメントがありません。
</notification>
<notification name="CannotWearTrash">
- ゴミ箱にある服やボディーパーツの着用はできません。
+ ごみ箱にある衣類や身体部位の着用はできません。
</notification>
<notification name="MaxAttachmentsOnOutfit">
オブジェクトを付けられませんでした。
@@ -335,25 +356,29 @@ L$が不足しているのでこのグループに参加することができま
<usetemplate ignoretext="新規クラシファイド広告作成方法" name="okcancelignore" notext="取り消し" yestext="OK"/>
</notification>
<notification name="DeleteClassified">
- クラシファイド広告[NAME]の削除をしますか?
+ クラシファイド広告 [NAME] を削除しますか?
支払い済みの料金は返金されません。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="DeleteMedia">
この面にあるメディアを削除する選択をしました。
続けますか?
- <usetemplate ignoretext="オブジェクトからメディアを削除する前に確認する" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ <usetemplate ignoretext="オブジェクトからメディアを削除する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
</notification>
<notification name="ClassifiedSave">
- クラシファイド広告[NAME]への変更を保存しますか?
+ クラシファイド広告 [NAME] への変更を保存しますか?
<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
</notification>
+ <notification name="ClassifiedInsufficientFunds">
+ クラシファイド広告を出すには、資金が足りません。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
<notification name="DeleteAvatarPick">
- ピック[PICK]を削除しますか?
+ ピック「 [PICK] 」を削除しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="PromptGoToEventsPage">
- [SECOND_LIFE]イベント・ウェブ・ページに移動しますか?
+ [SECOND_LIFE] イベント Web ページに移動しますか?
<url name="url">
http://secondlife.com/events/?lang=ja-JP
</url>
@@ -379,7 +404,7 @@ L$が不足しているのでこのグループに参加することができま
新しいスキンは [APP_NAME] を再起動後に表示されます。
</notification>
<notification name="GoToAuctionPage">
- [SECOND_LIFE]ウェブ・ページに移動し、 入札あるいはオークションの詳細を確認しますか?
+ [SECOND_LIFE]の Web ページに移動し、入札あるいはオークションの詳細を確認しますか?
<url name="url">
http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
</url>
@@ -429,7 +454,7 @@ L$が不足しているのでこのグループに参加することができま
</notification>
<notification name="StartRegionEmpty">
ログイン位置が指定されていません。
-ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「自宅(ホーム)」を選択してください。
+ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「ホーム」を選択してください。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="CouldNotStartStopScript">
@@ -440,40 +465,38 @@ L$が不足しているのでこのグループに参加することができま
ファイルをダウンロードできません。
</notification>
<notification name="CannotWriteFile">
- ファイル[[FILE]]を書き込めません。
+ ファイル [[FILE]] を書き込めません。
</notification>
<notification name="UnsupportedHardware">
- 警告: お使いのシステムは [APP_NAME] の必要最低限の動作環境を満たしていません。 このまま [APP_NAME] を使用すると、パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。
+ お使いのコンピューターは [APP_NAME] の必要最低限の動作環境を満たしていません。 パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。
最低動作環境
-[_URL] を開いて詳しい情報を確認しますか?
+[_URL] に移動して確認をしますか?
<url name="url" option="0">
http://secondlife.com/support/sysreqs.php?lang=ja
</url>
- <usetemplate ignoretext="使用しているコンピューターのハードウェアがサポートされていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ <usetemplate ignoretext="使用中のコンピューターのハードウェアがサポートされていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
</notification>
<notification name="UnknownGPU">
- お使いのシステムには、現在 [APP_NAME] が認識できないグラフィックカードが搭載されています。
-[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 [APP_NAME] は正常に実行される可能性が高いですが、表示設定を調整する必要があるかもしれません。
+ お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。
+[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。
(ミー > 環境設定 > グラフィック)
<form name="form">
- <ignore name="ignore" text="使用中のグラフックカードが認識されませんでした"/>
+ <ignore name="ignore" text="使用中のグラフックカードが認識されないとき"/>
</form>
</notification>
<notification name="DisplaySettingsNoShaders">
グラフィックドライバを初期化中に [APP_NAME] がクラッシュしました。
-ドライバの一般的なエラーを防ぐために、グラフィックのクオリティが低に設定されます。 そのため、一部のグラフィック特性に制限が出ます。
+ドライバの一般的なエラーを防ぐために、画質が低に設定されます。 そのため、一部のグラフィック特性に制限が出ます。
お使いのグラフィックカードのドライバをアップデートするようおすすめします。
-グラフィックのクオリティは、環境設定 > グラフィック で設定できます。
+画質は、環境設定 > グラフィック で設定できます。
</notification>
<notification name="RegionNoTerraforming">
- この地域[REGION] は、テラフォーミングができません。
+ [REGION] では、地形の変更ができません。
</notification>
<notification name="CannotCopyWarning">
- あなたはこのアイテムのコピーを
-許されていないので、人にあげると
-持ち物から失われます。 本当に
-これをあげたいですか?
+ あなたはこのアイテムのコピーを許されていないので、人にあげると「持ち物」からなくなります。
+本当にこれを渡しますか?
<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification name="CannotGiveItem">
@@ -483,34 +506,32 @@ L$が不足しているのでこのグループに参加することができま
取引がキャンセルされました。
</notification>
<notification name="TooManyItems">
- 一度のインベントリ交換で、42以上のアイテムは送れません。
+ 一度に 42 個以上のアイテムは渡せません。
</notification>
<notification name="NoItems">
- 選択したアイテムを譲渡できる権限がありません。
+ 選択したアイテムを渡す権限がありません。
</notification>
<notification name="CannotCopyCountItems">
- あなたは選択したアイテムの[COUNT]のコピーを
-許されていません。
-これらのアイテムはあなたの持ち物から失われます。
-本当にアイテムをあげたいですか?
+ あなたは選択した [COUNT] 個のアイテムののコピーを許されていません。
+これらのアイテムはあなたの「持ち物」から失われます。
+本当にアイテムを渡したいですか?
<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification name="CannotGiveCategory">
- 選択したフォルダを譲渡できる権限がありません
+ 選択したフォルダを渡す権限がありません
</notification>
<notification name="FreezeAvatar">
このアバターをフリーズしますか?
-アバターは一時的に動けなくなり、
-チャットなど、この世界に対する関わりを持つことができなくなります。
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解凍" yestext="フリーズ"/>
+アバターは一時的に動けなくなり、チャットを含めインワールドで何もできなくなります。
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/>
</notification>
<notification name="FreezeAvatarFullname">
[AVATAR_NAME]をフリーズしますか?
フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解凍" yestext="フリーズ"/>
+ <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/>
</notification>
<notification name="EjectAvatarFullname">
- あなたの土地から[AVATAR_NAME]を追放しますか?
+ あなたの土地から [AVATAR_NAME] を追放しますか?
<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="追放と禁止" yestext="追放"/>
</notification>
<notification name="EjectAvatarNoBan">
@@ -529,9 +550,8 @@ L$が不足しているのでこのグループに参加することができま
</notification>
<notification name="AcquireErrorObjectSpan">
取得エラー:
-オブジェクトが複数の地域にまたがって存在しています。
-取得するオブジェクトは、
-すべて同じ地域内に移動させてください。
+オブジェクトが複数のリージョン(地域)にまたがって存在しています。
+すべて同じリージョン内に移動させてから取得してください。
</notification>
<notification name="PromptGoToCurrencyPage">
[EXTRA]
@@ -543,32 +563,30 @@ L$が不足しているのでこのグループに参加することができま
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="UnableToLinkObjects">
- これらの[COUNT]オブジェクトをリンクできません。
-最大[MAX]オブジェクトをリンクすることができます。
+ [COUNT] 個のオブジェクトをリンクできません。
+リンクできるのは最大 [MAX] 個です。
</notification>
<notification name="CannotLinkIncompleteSet">
- セットとして揃っているオブジェクトのみリンクできます。複数の
-オブジェクトを選択してください。
+ セットで揃っているオブジェクトのみリンクできます。
+複数のオブジェクトを選択してください。
</notification>
<notification name="CannotLinkModify">
- すべてのオブジェクトに対する修正許可があなたにないため、
-リンクできません。
+ すべてのオブジェクトの修正許可がないためリンクできません。
-オブジェクトがすべてロックされておらず、あなたのものであることを確認してください。
+どのオブジェクトもロックされておらず、あなたのものであることを確認してください。
</notification>
<notification name="CannotLinkDifferentOwners">
- 所有者が異なるため、すべてのオブジェクトを
-リンクできません。
+ 所有者が異なるため、オブジェクトをリンクできません。
自分が所有しているオブジェクトだけを選択してください。
</notification>
<notification name="NoFileExtension">
- ファイル「[FILE]」の拡張子が無効です。
+ 「 [FILE] 」の拡張子が無効です。
このファイルの拡張子が正しいかどうかを確認してください。
</notification>
<notification name="InvalidFileExtension">
- ファイル拡張子[EXTENSION]は無効です
+ [EXTENSION]は無効です。
正しい拡張子:[VALIDS]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
@@ -577,11 +595,11 @@ L$が不足しているのでこのグループに参加することができま
[FILE]
</notification>
<notification name="SoundFileNotRIFF">
- ファイルがRIFF WAVEファイルとして認識されません:
+ RIFF WAVE ファイルとして認識されません:
[FILE]
</notification>
<notification name="SoundFileNotPCM">
- ファイルがPCM WAVEオーディオ・ファイルとして認識されません:
+ PCM WAVE オーディオファイルとして認識されません:
[FILE]
</notification>
<notification name="SoundFileInvalidChannelCount">
@@ -589,31 +607,31 @@ L$が不足しているのでこのグループに参加することができま
[FILE]
</notification>
<notification name="SoundFileInvalidSampleRate">
- ファイルのサンプル・レートがサポート外です(44.1kを指定する必要があります):
+ ファイルのサンプルレートがサポートされていません(44.1k である必要があります):
[FILE]
</notification>
<notification name="SoundFileInvalidWordSize">
- ファイルのワード・サイズがサポート外です(8または16ビットを指定する必要があります):
+ ファイルのワードサイズがサポートされていません(8 または 16 ビットである必要があります):
[FILE]
</notification>
<notification name="SoundFileInvalidHeader">
- WAVヘッダーにデータ・チャンクが見つかりません:
+ WAV ヘッダーにデータチャンクが見つかりません:
[FILE]
</notification>
<notification name="SoundFileInvalidTooLong">
- オーディオ・ファイルが長すぎます。(最大10秒):
+ オーディオファイルが長すぎます。(最大 10 秒):
[FILE]
</notification>
<notification name="ProblemWithFile">
- ファイル[FILE]にエラーがあります。
+ 「 [FILE] 」に問題があります。
[ERROR]
</notification>
<notification name="CannotOpenTemporarySoundFile">
- 書き込み用の一時圧縮サウンド・ファイルを開くことができません:[FILE]
+ 書き込み用の一時圧縮サウンドファイルを開くことができません:[FILE]
</notification>
<notification name="UnknownVorbisEncodeFailure">
- 未知のVorbis 暗号化に失敗: [FILE]
+ 不明の Vorbis のエンコードに失敗: [FILE]
</notification>
<notification name="CannotEncodeFile">
次のファイルのエンコードができません: [FILE]
@@ -622,65 +640,62 @@ L$が不足しているのでこのグループに参加することができま
破損したリソースファイル: [FILE]
</notification>
<notification name="UnknownResourceFileVersion">
- 未知のlindenリソースファイルのバージョン: [FILE]
+ 不明のリンデンリソースファイルのバージョン: [FILE]
</notification>
<notification name="UnableToCreateOutputFile">
- 服装ファイルを作成できません: [FILE]
+ 出力ファイルを作成できません: [FILE]
</notification>
<notification name="DoNotSupportBulkAnimationUpload">
現在 [APP_NAME] では、アニメーションの一括アップロードはサポートされていません。
</notification>
<notification name="CannotUploadReason">
- 次の理由で、[FILE] をアップロードできません: [REASON]
+ 次の理由で、「 [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フロータがありません。
+ 保存する frontmost フロータがありません。
</notification>
<notification name="SeachFilteredOnShortWords">
指定した検索クエリは変更され、短すぎる語句は取り除かれています。
@@ -703,35 +718,35 @@ L$が不足しているのでこのグループに参加することができま
このメッセージが何度も出る場合は、[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">
持ち物システムは現在利用できません。
@@ -741,9 +756,8 @@ L$が不足しているのでこのグループに参加することができま
区画が選定されていません。
</notification>
<notification name="CannotSetLandOwnerMultipleRegions">
- 複数の地域が選択されたため、
-土地の所有権を取得できません。
-選択する面積を小さくして、もう一度試してください。
+ 複数のリージョンが選択されたため、土地の所有権を取得できません。
+選択する面積を小さくして、もう一度お試しください。
</notification>
<notification name="ForceOwnerAuctionWarning">
この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。
@@ -759,12 +773,12 @@ L$が不足しているのでこのグループに参加することができま
土地が選択されていません。
</notification>
<notification name="CannotReleaseLandNothingSelected">
- 土地を破棄することができません:
+ 土地を破棄できません:
区画が選定されていません。
</notification>
<notification name="CannotReleaseLandNoRegion">
土地を破棄できません:
-地域が見つかりません。
+リージョンが見つかりません。
</notification>
<notification name="CannotBuyLandNothingSelected">
土地を購入できません:
@@ -772,7 +786,7 @@ L$が不足しているのでこのグループに参加することができま
</notification>
<notification name="CannotBuyLandNoRegion">
土地を購入できません:
-この土地がある地域を見つけることができません
+この土地があるリージョンを見つけることができません
</notification>
<notification name="CannotCloseFloaterBuyLand">
[APP_NAME] がこの取引価格を見積もるまでは、土地の購入ウィンドウを閉じることはできません。
@@ -793,15 +807,7 @@ L$が不足しているのでこのグループに参加することができま
土地を譲渡できません:
複数の区画が選択されています。
-これより1つの区画を選択してください。
- </notification>
- <notification name="ParcelCanPlayMedia">
- この場所では、ストリーミングメディアの再生が可能です。
-ストリーミングメディアには、高速インターネット接続を要します。
-
-利用可能なときにストリーミングメディアを再生しますか?
-(このオプションは、「環境設定」 &gt; 「プライバシー」であとからでも変更できます。)
- <usetemplate name="okcancelbuttons" notext="無効化" yestext="メディアを再生"/>
+区画を 1 つ選択してください。
</notification>
<notification name="CannotDeedLandWaitingForServer">
土地を譲渡できません:
@@ -811,7 +817,7 @@ L$が不足しているのでこのグループに参加することができま
</notification>
<notification name="CannotDeedLandNoTransfer">
土地を譲渡できません:
-この地域 [REGION] では土地の譲渡が許されていません。
+[REGION] では土地の譲渡が許されていません。
</notification>
<notification name="CannotReleaseLandWatingForServer">
土地を破棄できません:
@@ -821,9 +827,9 @@ L$が不足しているのでこのグループに参加することができま
</notification>
<notification name="CannotReleaseLandSelected">
土地を破棄できません:
-あなたは、選択したすべての区画を所有していません。
+あなたは、選択した区画のすべてを所有していません。
-1つの区画を選択してください。
+区画を 1 つ選択してください。
</notification>
<notification name="CannotReleaseLandDontOwn">
土地を破棄できません:
@@ -836,7 +842,7 @@ L$が不足しているのでこのグループに参加することができま
</notification>
<notification name="CannotReleaseLandNoTransfer">
土地を破棄できません:
-この [REGION] では土地の譲渡が許されていません。
+[REGION] では土地の譲渡が許されていません。
</notification>
<notification name="CannotReleaseLandPartialSelection">
土地を破棄できません:
@@ -845,9 +851,9 @@ L$が不足しているのでこのグループに参加することができま
区画全体を選択するか、または、まず最初に区画を分割してください。
</notification>
<notification name="ReleaseLandWarning">
- あなたは、[AREA]平方メートルの土地を破棄しようとしています。
+ あなたは、[AREA] 平方メートルの土地を破棄しようとしています。
この区画を破棄するとあなたの土地ではなくなりますが、
-L$は返金されません。
+L$ は返金されません。
土地を破棄しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
@@ -864,7 +870,7 @@ L$は返金されません。
区画の一部を選択してください。
</notification>
<notification name="LandDivideWarning">
- この土地を分割すると、2つの区画に別れます。
+ この土地を分割すると、2 つの区画に別れます。
区画ごとの設定が可能になります。 この操作を行うと、一部の設定がデフォルトにリセットされます。
土地の分割操作を続行しますか?
@@ -884,19 +890,18 @@ L$は返金されません。
</notification>
<notification name="CannotJoinLandEntireParcelSelected">
土地を統合できません:
-1つの区画しか選択されていません。
+区画が 1 つしか選択されていません。
両方の区画をまたいで土地を選択してください。
</notification>
<notification name="CannotJoinLandSelection">
土地を統合できません:
-1つ以上の区画を選択する必要があります。
+区画を 1 つ以上選択する必要があります。
両方の区画をまたいで土地を選択してください。
</notification>
<notification name="JoinLandWarning">
- この土地を統合すると、選択された長方形に交差する
-全ての区画を基にして1つの大きな区画が作成されます。
+ この土地を統合すると、選択された長方形に交差する全ての区画を基にして、大きな区画が 1 つ作成されます。
新しい区画の名前とオプションを再設定する必要があります。
土地を統合しますか?
@@ -911,7 +916,7 @@ L$は返金されません。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="コピー"/>
</notification>
<notification name="ResolutionSwitchFail">
- 解像度を [RESX]x[RESY]に切り替えることができませんでした。
+ 解像度を [RESX]x[RESY] に切り替えることができませんでした。
</notification>
<notification name="ErrorUndefinedGrasses">
エラー:未定義の植物:[SPECIES]
@@ -920,44 +925,42 @@ L$は返金されません。
エラー:未定義の樹木:[SPECIES]
</notification>
<notification name="CannotSaveWearableOutOfSpace">
- 「[NAME]」を服のファイルに保存できません。 コンピューターの
-ディスクスペースを少し増やしてから、もう一度
-保存してみてください。
+ 「 [NAME] 」を衣類のファイルに保存できません。
+コンピューターのディスクスペースを少し増やしてから、もう一度保存してみてください。
</notification>
<notification name="CannotSaveToAssetStore">
- [NAME] を保存できません。
+ 「 [NAME] 」を保存できません。
通常これは一時的なエラーです。 数分後にもう一度着用物をカスタマイズ・保存してください。
</notification>
<notification name="YouHaveBeenLoggedOut">
- [SECOND_LIFE] からログアウトしました:
+ しまった、 [SECOND_LIFE] からログアウトされてしまいました。
[MESSAGE]
-「IMとチャットを見る」をクリックすると、引き続き既に開いている IM とチャットを見ることができます。 「終了」をクリックすると [APP_NAME] をすぐに終了します。
<usetemplate name="okcancelbuttons" notext="終了" yestext="IMとチャットを表示"/>
</notification>
<notification name="OnlyOfficerCanBuyLand">
グループ用の土地の購入ができません:
あなたにはアクティブなグループのために土地を購入する権限がありません。
</notification>
- <notification label="フレンドを追加" name="AddFriend">
- フレンドとして追加すると、お互いの現在地の地図への表示許可、オンラインステータス表示の設定をすることができます。
+ <notification label="フレンド登録" name="AddFriend">
+ フレンド登録すると、お互いの現在地の地図への表示許可、オンライン状態の表示設定ができます。
[NAME] にフレンドシップを送りますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
- <notification label="フレンドを追加" name="AddFriendWithMessage">
- フレンドとして追加すると、お互いの現在地の地図への表示許可、オンラインステータス表示の設定をすることができます。
+ <notification label="フレンド登録" name="AddFriendWithMessage">
+ フレンド登録すると、お互いの現在地の地図への表示許可、オンライン状態の表示設定ができます。
-[NAME] にフレンドシップのオファーをしますか?
+[NAME] にフレンドシップを申し出ますか?
<form name="form">
<input name="message">
- フレンドとして登録してくれますか?
+ フレンド登録してくれますか?
</input>
<button name="Offer" text="OK"/>
<button name="Cancel" text="キャンセル"/>
</form>
</notification>
<notification name="RemoveFromFriends">
- [FIRST_NAME] [LAST_NAME]をフレンドリストから削除しますか?
+ [FIRST_NAME] [LAST_NAME] をフレンドリストから削除しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -966,135 +969,134 @@ L$は返金されません。
</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]が下限です。
+ 広告料は最低 L$ [MIN_PRICE] 必要です。
金額を増やしてください。
</notification>
<notification name="ConfirmObjectDeleteLock">
- 選択したアイテムの1つ以上がロックされています。
+ 選択したアイテムのうち、少なくとも 1 つがロックされています。
-本当にこれらのアイテムの削除を続けますか?
+本当に削除しますか?
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ConfirmObjectDeleteNoCopy">
- 選択したアイテムの1つ以上がコピーできません。
+ 選択したアイテムのうち、少なくとも 1 つがコピーできません。
-本当にこれらのアイテムの削除を続けますか?
+本当に削除しますか?
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ConfirmObjectDeleteNoOwn">
- 選択したアイテムの1つ以上を、あなたは所有していません。
+ 選択したアイテムのうち、少なくとも 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 つのオブジェクトがロックされています。
+少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-本当にこれらのアイテムの削除を続けますか?
+本当に削除しますか?
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ConfirmObjectDeleteNoCopyNoOwn">
- 一つ以上のオブジェクトがコピーできません。
-1つ以上のオブジェクトを、あなたは所有していません。
+ 少なくとも 1 つのオブジェクトがコピーできません。
+少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-本当にこれらのアイテムの削除を続けますか?
+本当に削除しますか?
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- 一つ以上のオブジェクトがロックされています。
-一つ以上のオブジェクトがコピーできません。
-1つ以上のオブジェクトを、あなたは所有していません。
+ 少なくとも 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つ以上のオブジェクトがロックされています。
-取得しようとしているオブジェクトには、あなたの所有物でないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次のオーナーの権限がそのオブジェクトに適用されます。
-そのため、将来、変更やコピーの能力が制限される可能性があります。
+ 少なくとも 1 つのオブジェクトがロックされています。
+取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。
+あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。
+そのため、将来、編集やコピーの能力が制限される可能性があります。
この選択内容のままで続行することは可能ですが、
-これらのアイテムの取得を続けますか?
+本当にこのまま取得を続けますか?
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="CantBuyLandAcrossMultipleRegions">
- 複数の地域が選択されたため、土地を購入できません。
+ 複数のリージョンが選択されたため、土地を購入できません。
選択する面積を小さくしてもう一度試してください。
</notification>
<notification name="DeedLandToGroup">
この区画の譲渡に際しては、
-このグループが十分な土地クレジットを保有および維持していることが必要です。
-土地の購入価格は、オーナーに返金されません。譲渡された区画が売れると、販売価格はグループ・メンバーに均等に分配されます。
+このグループが十分な土地クレジットを保有および維持している必要があります。
+土地の購入価格は、所有者に返金されません。譲渡された区画が売れると、売上金額はグループメンバーに均等に分配されます。
-この[AREA]平方メートルの土地を、グループ
-「[GROUP_NAME]」に譲渡しますか?
+この [AREA] 平方メートルの土地を、グループ
+「 [GROUP_NAME] 」に譲渡しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="DeedLandToGroupWithContribution">
- この区画の譲渡に際しては、このグループが
-十分な土地クレジットを保有および維持していることが必要です。
+ この区画の譲渡に際しては、このグループが十分な土地クレジットを保有および維持している必要があります。
この譲渡により、
-「[FIRST_NAME] [LAST_NAME]」から
+「 [FIRST_NAME] [LAST_NAME] 」から
グループに対して土地が同時に提供されます。
-土地の購入価格は、オーナーに返金されません。
-譲渡された区画が売れると、販売料金はグループ・メンバーに均等に分配されます。
+土地の購入価格は、所有者には返金されません。
+譲渡された区画が売れると、売上金額はグループメンバーに均等に分配されます。
-この[AREA]平方メートルの土地を、グループ「[GROUP_NAME]」に譲渡しますか?
+この [AREA] 平方メートルの土地を、「 [GROUP_NAME] 」に譲渡しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="DisplaySetToSafe">
- -safeオプションを指定したので、
-表示設定はセーフ・レベルに設定されています。
+ -safe オプションを指定したので、
+表示設定はセーフレベルに設定されています。
</notification>
<notification name="DisplaySetToRecommended">
- 表示設定は、あなたのシステム構成に
-基づいて推奨されたレベルに設定されています。
+ 表示設定は、あなたのシステム構成に基づいて推奨されたレベルに設定されています。
</notification>
<notification name="ErrorMessage">
[ERROR_MESSAGE]
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="AvatarMovedDesired">
目的地は現在ご利用いただけません。
@@ -1107,13 +1109,13 @@ L$は返金されません。
<notification name="AvatarMovedHome">
ホームロケーションは現在ご利用いただけません。
近くのリージョンに移動しました。
-新たにホームを設定しなおしたほうがいいかもしれません。
+新たにホームを設定し直す必要があるかもしれません。
</notification>
<notification name="ClothingLoading">
現在衣類をダウンロード中です。
このまま [SECOND_LIFE] を通常通りご使用いただけます。他人からはあなたは正しく表示されます。
<form name="form">
- <ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっています"/>
+ <ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっているとき"/>
</form>
</notification>
<notification name="FirstRun">
@@ -1140,8 +1142,8 @@ L$は返金されません。
まもなくあなたのアバターが表示されます。
矢印キーを使用して歩きます。
-ヘルプが必要なときや[SECOND_LIFE]について知りたいときは、
-F1キーを押してください。
+ヘルプが必要なときや [SECOND_LIFE] について知りたいときは、
+F1 キーを押してください。
男性あるいは女性のアバターを選択してください。
あなたの決定は後で変更できます。
<usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/>
@@ -1153,29 +1155,28 @@ F1キーを押してください。
[NAME] は、あなたにオブジェクトの編集権限を与えました。
</notification>
<notification name="RevokedModifyRights">
- [NAME] のオブジェクトを編集する権限は取り消されました
+ [NAME] のオブジェクトを編集する権限は取り消されました。
</notification>
<notification name="FlushMapVisibilityCaches">
- この手順は、この地域の地図のキャッシュを消去します。
-これが便利なのはデバッグ時のみです。
-(作成中は5分間経つと、全員の地図が再度ログイン後に
-更新されます)
+ このリージョンの地図のキャッシュを消去します。
+デバッグ目的のみに便利な操作です。
+(作成中は 5 分間経つと、全員の地図が再度ログイン後に更新されます)
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="BuyOneObjectOnly">
- 一度に一つ以上のオブジェクトをと買うことはできません。 オブジェクトを一つだけ選んでもう一度お試しください。
+ 一度に 1 つ以上のオブジェクトを買うことはできません。 オブジェクトを 1 つだけ選んでもう一度お試しください。
</notification>
<notification name="OnlyCopyContentsOfSingleItem">
- 一度に複数のアイテムのコンテンツはコピーできません。
-選択するオブジェクトを1つだけにして、もう一度試してください。
+ 一度に複数のアイテムの中身をコピーできません。
+オブジェクトを 1 つだけ選択して、もう一度お試しください。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="KickUsersFromRegion">
- この地域の全ての住人をホームにテレポートしますか?
+ このリージョンにいる全ての住人をホームにテレポートしますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="EstateObjectReturn">
- [USER_NAME]が所有しているオブジェクトを返却しますか?
+ [USER_NAME] が所有しているオブジェクトを返却しますか?
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="InvalidTerrainBitDepth">
@@ -1186,17 +1187,16 @@ F1キーを押してください。
</notification>
<notification name="InvalidTerrainSize">
地域テクスチャを設定できませんでした:
-地形テクスチャ[TEXTURE_NUM]は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]では大きすぎます。
+地形テクスチャ「 [TEXTURE_NUM] 」は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] では大きすぎます。
-テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
+「 [TEXTURE_NUM] 」を 24 ビット 512x512 かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
</notification>
<notification name="RawUploadStarted">
- アップロード開始。 接続速度によっては、
-最大2分間かかります。
+ アップロードを開始しました。 接続速度によっては、最大 2 分間かかります。
</notification>
<notification name="ConfirmBakeTerrain">
現在の地形を構築しようとしています。
-この操作を行うと、現在の地形が上昇/下降の制限範囲の中心になり、「復帰」ツールのデフォルトになります。
+この操作を行うと、現在の地形が上昇・下降の制限範囲の中心となり、「復元」ツールのデフォルトになります。
操作を続行しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
@@ -1204,35 +1204,34 @@ F1キーを押してください。
許可住人は [MAX_AGENTS] 人までです。
</notification>
<notification name="MaxBannedAgentsOnRegion">
- 禁止住人は[MAX_BANNED]人までです。
+ 禁止住人は [MAX_BANNED] 人までです。
</notification>
<notification name="MaxAgentOnRegionBatch">
[NUM_ADDED] 個のエージェントを追加しようとして失敗しました: [MAX_AGENTS] [LIST_TYPE] 制限を [NUM_EXCESS] 個超過しています。
</notification>
<notification name="MaxAllowedGroupsOnRegion">
- 許可グループは[MAX_GROUPS]グループまでです。
+ 許可グループは [MAX_GROUPS] グループまでです。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="構築する"/>
</notification>
<notification name="MaxManagersOnRegion">
- 不動産マネージャーは[MAX_MANAGER]人までです。
+ 不動産マネージャーは [MAX_MANAGER] 人までです。
</notification>
<notification name="OwnerCanNotBeDenied">
- 不動産オーナーを不動産「禁止住人」リストに追加できません。
+ 不動産オーナーを不動産の「禁止住人」リストに追加できません。
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
- 服および形がロードされるまで、容姿の変更はできません。
+ 衣類およびシェイプが読み込まれるまでは、容姿の変更はできません。
</notification>
<notification name="ClassifiedMustBeAlphanumeric">
- クラシファイド広告の名前は、アルファベットか
-数字で始めます。 句読点では始められません。
+ クラシファイド広告の名前は、アルファベットか数字で始めます。句読点では始められません。
</notification>
<notification name="CantSetBuyObject">
- オブジェクトが販売対象ではないため、オブジェクトの購入が設定できません。
-販売対象のオブジェクトを設定し、もう一度試してください。
+ オブジェクトが販売対象ではないため、オブジェクトの購入ができません。
+販売対象のオブジェクトを指定してもう一度試してください。
</notification>
<notification name="FinishedRawDownload">
- 未加工の地形ファイルを次へとダウンロードしました:
-[DOWNLOAD_PATH]。
+ 未加工の地形ファイルをダウンロードしました:
+[DOWNLOAD_PATH]
</notification>
<notification name="DownloadWindowsMandatory">
[APP_NAME] の最新バージョンがご利用可能です。
@@ -1296,58 +1295,56 @@ F1キーを押してください。
</notification>
<notification name="DeedObjectToGroup">
このオブジェクトを譲渡するとグループは以下のことが可能です:
-* オブジェクトに支払われたL$を受領します。
- <usetemplate ignoretext="オブジェクトをグループに譲渡する前に確認する" name="okcancelignore" notext="取り消し" yestext="譲渡"/>
+* オブジェクトに支払われた L$ を受領します。
+ <usetemplate ignoretext="オブジェクトをグループに譲渡する前の確認" name="okcancelignore" notext="取り消し" yestext="譲渡"/>
</notification>
<notification name="WebLaunchExternalTarget">
Web ブラウザを開いてこのコンテンツを表示しますか?
- <usetemplate ignoretext="ブラウザを起動して Web ページを見る" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ <usetemplate ignoretext="ブラウザを起動して Web ページを見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="WebLaunchJoinNow">
[http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウントを管理しますか?
- <usetemplate ignoretext="ブラウザを起動してアカウントを管理する" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ <usetemplate ignoretext="ブラウザを起動してアカウントを管理するとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
</notification>
<notification name="WebLaunchSecurityIssues">
- [SECOND_LIFE] Wikiで、
-セキュリティ問題を報告する方法をご覧ください。
- <usetemplate ignoretext="ブラウザを起動してセキュリティ問題の報告の仕方を確認する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ [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"/>
+ [SECOND_LIFE] 品質保証関連 Wiki をご覧ください。
+ <usetemplate ignoretext="ブラウザを起動して QA Wiki を見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="WebLaunchPublicIssue">
- [SECOND_LIFE]のパブリック問題トラッカーで、
+ [SECOND_LIFE] のパブリック問題トラッカーで、
バグやその他の問題を報告できます。
- <usetemplate ignoretext="ブラウザを確認してパブリック問題トラッカーを使用する" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/>
+ <usetemplate ignoretext="ブラウザを起動してパブリック問題トラッカーを使用するとき" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/>
</notification>
<notification name="WebLaunchSupportWiki">
- Linden公式ブログで、最新のニュースや情報を入手してください。
- <usetemplate ignoretext="ブラウザを起動して公式ブログを見る" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ Linden 公式ブログで、最新のニュースや情報を入手してください。
+ <usetemplate ignoretext="ブラウザを起動して公式ブログを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
</notification>
<notification name="WebLaunchLSLGuide">
スクリプトガイドを開きますか?
- <usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見る" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ <usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
</notification>
<notification name="WebLaunchLSLWiki">
LSL ポータルでスクリプトに関する情報を確認しますか?
- <usetemplate ignoretext="ブラウザを起動して LSL ポータルを見る" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
+ <usetemplate ignoretext="ブラウザを起動して LSL ポータルを見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
</notification>
<notification name="ReturnToOwner">
選択したオブジェクトを、所有者に返却しますか?
-譲渡可能なオブジェクトは
-以前の所有者に返却されます。
+「再販・プレゼント可」の譲渡されたオブジェクトは、以前の所有者に返却されます。
-*警告* 移転が不可能の譲渡されたオブジェクトは削除されます!
- <usetemplate ignoretext="オブジェクトを所有者に返却する前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/>
+*警告* 「再販・プレゼント不可」の譲渡されたオブジェクトは、削除されます!
+ <usetemplate ignoretext="オブジェクトを所有者に返却する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
</notification>
<notification name="GroupLeaveConfirmMember">
- 現在あなたは [GROUP]のメンバーです。
-ここから抜けますか?
+ 現在あなたは [GROUP] のメンバーです。
+このグループを抜けますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="ConfirmKick">
- すべてのユーザーをグリッド外にキックしようとしています。操作を続行しますか?
+ すべてのユーザーをグリッドの外にキックしようとしています。操作を続行しますか?
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="全てのユーザを追い出す"/>
</notification>
<notification name="MuteLinden">
@@ -1362,27 +1359,26 @@ F1キーを押してください。
<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"/>
+ <usetemplate ignoretext="ログイン状態を取り込み中モードに変更するとき" name="okignore" yestext="OK"/>
</notification>
<notification name="JoinedTooManyGroupsMember">
加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
[NAME] があなたをグループのメンバーとして勧誘しています。
-[INVITE]
<usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/>
</notification>
<notification name="JoinedTooManyGroups">
@@ -1390,7 +1386,7 @@ F1キーを押してください。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="KickUser">
- どんなメッセージを表示して、このユーザーを追い出しますか?
+ どのようなメッセージをつけてこのユーザーを追い出しますか?
<form name="form">
<input name="message">
あなたは管理者によりログオフされました。
@@ -1400,7 +1396,7 @@ F1キーを押してください。
</form>
</notification>
<notification name="KickAllUsers">
- どんなメッセージを表示して、グリッドにいる全員を追い出しますか?
+ どのようなメッセージをつけてグリッドにいる全員を追い出しますか?
<form name="form">
<input name="message">
あなたは管理者によりログオフされました。
@@ -1410,17 +1406,17 @@ F1キーを押してください。
</form>
</notification>
<notification name="FreezeUser">
- どんなメッセージを表示して、このユーザーをフリーズしますか?
+ どのようなメッセージをつけてこのユーザーをフリーズしますか?
<form name="form">
<input name="message">
- あなたはフリーズされています。 動くこともチャットすることもできません。 管理者がIMを通じてあなたに連絡します。
+ あなたはフリーズされています。 動くこともチャットすることもできません。 管理者が IM であなたに連絡します。
</input>
<button name="OK" text="OK"/>
<button name="Cancel" text="取り消し"/>
</form>
</notification>
<notification name="UnFreezeUser">
- どんなメッセージを表示して、このユーザーのフリーズを解除しますか?
+ どのようなメッセージをつけてこのユーザーのフリーズを解除しますか?
<form name="form">
<input name="message">
もうフリーズされていません。
@@ -1430,40 +1426,39 @@ F1キーを押してください。
</form>
</notification>
<notification name="OfferTeleport">
- 次のメッセージを添えてあなたが今いる場所へのテレポートを送りますか?
+ 次のメッセージを添えて現在地にテレポートを送りますか?
<form name="form">
<input name="message">
- [REGION]に来ませんか?
+ [REGION] に来ませんか?
</input>
<button name="OK" text="OK"/>
<button name="Cancel" text="取り消し"/>
</form>
</notification>
<notification name="OfferTeleportFromGod">
- ユーザーをゴッド・コールで呼び寄せますか?
+ ユーザーをゴッドサモンで呼び寄せますか?
<form name="form">
<input name="message">
- [REGION]に来ませんか?
+ [REGION] に来ませんか?
</input>
<button name="OK" text="OK"/>
<button name="Cancel" text="取り消し"/>
</form>
</notification>
<notification name="TeleportFromLandmark">
- 本当にテレポートしますか?
- <usetemplate ignoretext="ランドマークにテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
+ このまま &lt;nolink&gt;[LOCATION]&lt;/nolink&gt; にテレポートしますか?
+ <usetemplate ignoretext="ランドマークにテレポートしたいかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
</notification>
<notification name="TeleportToPick">
[PICK] にテレポートしますか?
- <usetemplate ignoretext="ピックの場所にテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
+ <usetemplate ignoretext="ピックの場所にテレポートしたいかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
</notification>
<notification name="TeleportToClassified">
[CLASSIFIED] にテレポートしますか?
- <usetemplate ignoretext="クラシファイド広告の場所にテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
+ <usetemplate ignoretext="クラシファイド広告の場所にテレポートしたいかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
</notification>
<notification label="あなたの不動産内の全員にメッセージを送信" name="MessageEstate">
- 今あなたの不動産にいる人全員に送る
-短いメッセージを入力してください。
+ 今あなたの不動産にいる人全員に送る、短いメッセージを入力してください。
<form name="form">
<input name="message"/>
<button name="OK" text="OK"/>
@@ -1471,86 +1466,86 @@ F1キーを押してください。
</form>
</notification>
<notification label="Lindenの不動産を変更" name="ChangeLindenEstate">
- あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
+ あなたはリンデン所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
-これはユーザーの経験を根本から揺るがしかねない「非常に危険な行為」です。これにより、メインランドで多数の地域が変更され、スペースサーバーに悪影響が生じます。
+これはユーザーの経験を根本から揺るがしかねない「非常に危険な行為」です。これにより、メインランドで多数のリージョン(地域)が変更され、スペースサーバーに悪影響が生じます。
操作を続行しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess">
- あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。
+ あなたはリンデン所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。
この行為は「危険」であり、グリッドからオブジェクトやお金の転送をもたらすハッキングを引き起こす可能性があるため、完全にそれを意図した場合のみ行うべきものです。
-これにより多数の地域が変更され、スペースサーバーに悪影響が生じます。
+これにより多数のリージョン(地域)が変更され、スペースサーバーに悪影響が生じます。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification label="不動産を選択" name="EstateAllowedAgentAdd">
- この不動産の許可リストだけに追加しますか? それとも[ALL_ESTATES]のすべての許可リストに追加しますか?
+ この不動産限定の許可リストに追加しますか? それとも [ALL_ESTATES] の許可リストに追加しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateAllowedAgentRemove">
- 許可リストからの削除をこの不動産についてのみ行いますか? それとも、[ALL_ESTATES]について行いますか?
+ この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateAllowedGroupAdd">
- この不動産のグループ許可リストだけに追加しますか? それとも[ALL_ESTATES]のグループ許可リストに追加しますか?
+ この不動産限定のグループ許可リストに追加しますか? それとも [ALL_ESTATES] のグループ許可リストに追加しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateAllowedGroupRemove">
- 許可リストからの削除をこの不動産についてのみ行いますか? それとも、[ALL_ESTATES]について行いますか?
+ この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateBannedAgentAdd">
- この不動産についてのみアクセスを拒否しますか? それとも[ALL_ESTATE]へのアクセスを拒否しますか?
+ この不動産限定でアクセスを拒否しますか? それとも [ALL_ESTATE] へのアクセスを拒否しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateBannedAgentRemove">
- この住人を、この不動産のみ、または[ALL_ESTATES]へとアクセスできるように、禁止リストから削除しますか?
+ この住人が、この不動産限定、または [ALL_ESTATES] にアクセスできるように、禁止リストから削除しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateManagerAdd">
- この不動産のみ、または[ALL_ESTATES]に対して、不動産マネージャーを追加しますか?
+ この不動産限定、または [ALL_ESTATES] の不動産マネージャーを追加しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateManagerRemove">
- 不動産マネージャーを、この不動産のみ、または[ALL_ESTATES]から、削除しますか?
+ 不動産マネージャーを、この不動産限定、または [ALL_ESTATES] から、削除しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="キックを確認" name="EstateKickUser">
- この不動産から[EVIL_USER]を追い出しますか?
+ この不動産から [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="ナレッジベースを開く"/>
+ <usetemplate ignoretext="レーティング区分の制限のため、リージョンに入ることができないとき" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
</notification>
<notification name="RegionEntryAccessBlocked_Notify">
- あなたのレーティング区分により、その地域(リージョン)へは入ることができません。
+ あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。
</notification>
<notification name="RegionEntryAccessBlocked_Change">
- あなたのレーティング区分設定により、その地域(リージョン)へは入ることができません。
+ あなたのレーティング区分設定により、そのリージョン(地域)へは入ることができません。
「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
<form name="form">
<button name="OK" text="環境設定の変更"/>
<button default="true" name="Cancel" text="閉じる"/>
- <ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入ることができません"/>
+ <ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入れないとき"/>
</form>
</notification>
<notification name="LandClaimAccessBlocked">
@@ -1575,7 +1570,7 @@ F1キーを押してください。
あなたのレーティング区分設定により、この土地を取得することはできません。
「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
- <usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できません" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
+ <usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
</notification>
<notification name="LandBuyAccessBlocked">
あなたのレーティング区分により、この土地を購入することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
@@ -1599,40 +1594,40 @@ F1キーを押してください。
あなたのレーティング区分設定により、この土地を購入することができません。
「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
- <usetemplate ignoretext="選択したレーティング区分が原因で、土地を購入できません" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
+ <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">
新しい不動産マネージャーの追加に関する問題:
-1つ以上の不動産で、マネージャーリストが満杯になっています。
+いずれかの不動産のマネージャーリストが満杯になっています。
</notification>
<notification name="ProblemAddingEstateGeneric">
不動産リストの追加に関する問題:
-1つ以上の不動産で、リストが満杯になっています。
+いずれかの不動産のリストが満杯になっています。
</notification>
<notification name="UnableToLoadNotecardAsset">
- 現在ノートカードの資産IDを読み込むことができません。
+ 現在ノートカードのアセット ID を読み込むことができません。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="NotAllowedToViewNotecard">
- 要求された資産IDに関するノートカードを閲覧するには権限が不十分です。
+ 要求したアセット ID に関するノートカードを閲覧するには、権限が不十分です。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MissingNotecardAssetID">
- ノートカード用資産IDがデータベースに登録されていません。
+ ノートカード用のアセット ID がデータベースに登録されていません。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="PublishClassified">
注意:クラシファイド広告の料金は払い戻しされません。
-L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか?
+L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="SetClassifiedMature">
@@ -1644,13 +1639,12 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification label="再起動を確認" name="ConfirmRestart">
- この地域を2分後に再起動しようとしています。
-操作を続行しますか?
+ このリージョンを 2 分後に再起動しようとしています。
+続けますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
- <notification label="この地域内の全員にメッセージを送信" name="MessageRegion">
- この地域にいる人全員に送る
-短いメッセージを入力してください。
+ <notification label="このリージョンにメッセージを送信" name="MessageRegion">
+ このリージョンにいる人全員に送る短いメッセージを入力してください。
<form name="form">
<input name="message"/>
<button name="OK" text="OK"/>
@@ -1658,7 +1652,7 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
</form>
</notification>
<notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange">
- このリージョンのレーティング区分がアップデートされました。
+ このリージョン(地域)のレーティング区分がアップデートされました。
地図に変更が反映されるまで数分かかることがあります。
アダルト専用リージョンに入るには、住人のアカウントが年齢確認か支払方法のいずれかで「確認済み」でなければなりません。
@@ -1667,7 +1661,7 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
[APP_NAME] のこのバージョンは、このリージョンにおけるボイスチャットの互換性がありません。 ボイスチャットを正常に行うためには、[APP_NAME] のアップデートが必要です。
</notification>
<notification label="オブジェクトを購入できません" name="BuyObjectOneOwner">
- 複数のオーナーから同時にオブジェクトを購入することはできません。
+ 複数の所有者から同時にオブジェクトを購入することはできません。
単一のオブジェクトを選択し、もう一度試してください。
</notification>
<notification label="コンテンツを購入できません" name="BuyContentsOneOnly">
@@ -1675,62 +1669,64 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
選択するオブジェクトを1つだけにして、もう一度試してください。
</notification>
<notification label="コンテンツを購入できません" name="BuyContentsOneOwner">
- 複数のオーナーから同時にオブジェクトを購入することはできません。
+ 複数の所有者から同時にオブジェクトを購入することはできません。
単一のオブジェクトを選択し、もう一度試してください。
</notification>
<notification name="BuyOriginal">
- オリジナルのオブジェクトを[OWNER]からL$[PRICE]で購入しますか?
-これにより、あなたがオブジェクトのオーナーになります。
+ オリジナルのオブジェクトを [OWNER] から L$ [PRICE] で購入しますか?
+購入すると、あなたがオブジェクトの所有者となります。
可能な操作は、
-変更:[MODIFYPERM]、コピー:[COPYPERM]、
-再販/プレゼント[RESELLPERM]です。
+修正:[MODIFYPERM]、コピー:[COPYPERM]、
+再販・プレゼント:[RESELLPERM] です。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="BuyOriginalNoOwner">
- L$[PRICE]でオリジナルのオブジェクトを購入しますか?
-これにより、あなたがオブジェクトのオーナーになります。
+ L$ [PRICE] でオリジナルのオブジェクトを購入しますか?
+購入すると、あなたがオブジェクトの所有者となります。
可能な操作は、
-変更:[MODIFYPERM]、コピー:[COPYPERM]、
-再販/プレゼント[RESELLPERM]です。
+修正:[MODIFYPERM]、コピー:[COPYPERM]、
+再販・プレゼント:[RESELLPERM] です。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="BuyCopy">
- コピーを[OWNER]からL$[PRICE]で購入しますか?
-購入したオブジェクトは、あなたの持ち物にコピーされます。
-可能な操作は、変更:[MODIFYPERM]、コピー:[COPYPERM]、
-再販/プレゼント[RESELLPERM]です。
+ コピーを [OWNER] から L$ [PRICE] で購入しますか?
+購入したオブジェクトは、あなたの「持ち物」にコピーされます。
+可能な操作は、
+修正:[MODIFYPERM]、コピー:[COPYPERM]、
+再販・プレゼント:[RESELLPERM] です。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="BuyCopyNoOwner">
- L$[PRICE]でコピーを購入しますか?
-購入したオブジェクトは、あなたの持ち物にコピーされます。
-可能な操作は、変更:[MODIFYPERM]、コピー:[COPYPERM]、
-再販/プレゼント[RESELLPERM]です。
+ L$ [PRICE] でコピーを購入しますか?
+購入したオブジェクトは、あなたの「持ち物」にコピーされます。
+可能な操作は、
+修正:[MODIFYPERM]、コピー:[COPYPERM]、
+再販・プレゼント:[RESELLPERM] です。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="BuyContents">
- コンテンツを[OWNER]からL$[PRICE]で購入しますか?
-購入したコンテンツは、あなたの持ち物にコピーされます。
+ 中身を [OWNER] から L$ [PRICE] で購入しますか?
+購入した中身は、あなたの「持ち物」にコピーされます。
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="BuyContentsNoOwner">
- L$[PRICE]でコンテンツを購入しますか?
-購入したコンテンツは、あなたの持ち物にコピーされます。
+ 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」をクリックしてください。
+購入を続けますか?
+パスワードを再入力し、「 OK 」をクリックしてください。
<form name="form">
<input name="message"/>
<button name="ConfirmPurchase" text="OK"/>
@@ -1739,31 +1735,31 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
</notification>
<notification name="SetPickLocation">
メモ:
-本ピックのロケーションを更新しましたが、
+本ピックの位置を更新しましたが、
他の詳細は元の値のままになります。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MoveInventoryFromObject">
- 「コピー禁止」の持ち物アイテムが選択されました。
-これらのアイテムはコピーされないまま、あなたの持ち物に移動されます。
+ 「コピー不可」の持ち物アイテムを選択しました。
+これらのアイテムはコピーされないまま、あなたの「持ち物」に移動されます。
アイテムを動かしますか?
- <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前に警告する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="MoveInventoryFromScriptedObject">
- 「コピー禁止」の持ち物アイテムが選択されました。
-これらのアイテムはコピーされるのではなく、あなたの持ち物に移動されます。
-このオブジェクトはスクリプト付きなので、持ち物に移動させると
+ 「コピー不可」の持ち物アイテムを選択しました。
+これらのアイテムはコピーされずに、あなたの「持ち物」に移動されます。
+このオブジェクトはスクリプト付きなので、「持ち物」に移動させると
スクリプトに誤動作が起きる可能性があります。
持ち物アイテムを移動しますか?
- <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前に警告する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ClickActionNotPayable">
警告: クリックで「オブジェクトに支払う」設定をしました。スクリプトに money()イベントが追加されると動作します。
<form name="form">
- <ignore name="ignore" text="money() スクリプトを入れずにオブジェクトを制作中に、「オブジェクトに支払う」アクションを設定"/>
+ <ignore name="ignore" text="オブジェクトを作成中に、money() スクリプトを入れずに「オブジェクトに支払う」アクションを設定したとき"/>
</form>
</notification>
<notification name="OpenObjectCannotCopy">
@@ -1771,16 +1767,16 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
</notification>
<notification name="WebLaunchAccountHistory">
[http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウント履歴を確認しますか?
- <usetemplate ignoretext="ブラウザを起動してアカウント履歴を見る" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
+ <usetemplate ignoretext="ブラウザを起動してアカウント履歴を見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
</notification>
<notification name="ConfirmQuit">
- 終了しようとしています。操作を続行しますか?
- <usetemplate ignoretext="終了時に確認する" name="okcancelignore" notext="終了しない" yestext="終了"/>
+ 終了しようとしています。続けますか?
+ <usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
</notification>
<notification name="HelpReportAbuseEmailLL">
このツールを利用して [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] の違反を報告してください。
-報告された嫌がらせはすべて調査・解決されます。 解決されたものは [http://secondlife.com/support/incidentreport.php Incident Report] で見ることができます。
+報告された嫌がらせはすべて調査・解決されます。
</notification>
<notification name="HelpReportAbuseSelectCategory">
嫌がらせ報告のカテゴリを選択してください。
@@ -1815,44 +1811,42 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
(2) DMCA またはコンテンツの撤去の手順 コンテンツを [SECOND_LIFE] から削除して欲しいというリクエストをするには、弊社 [http://secondlife.com/corporate/dmca.php DMCA ポリシー] で提示されているとおり、有効な侵害の通知を提出しなければなりません。.
-このまま嫌がらせの報告を続けたい場合は、このウィンドウを閉じて報告を送ってください。 「コピーBot及び権限の悪用」のカテゴリを選んだ方が適切の場合があります。
+このまま嫌がらせの報告を続けたい場合は、このウィンドウを閉じて報告を送ってください。 「コピー Bot 及び権限の悪用」のカテゴリを選んだ方が適切の場合があります。
ご協力ありがとうございます。
Linden Lab
</notification>
<notification name="FailedRequirementsCheck">
- 以下の必要なコンポーネントが、[FLOATER]から抜け落ちています
+ 以下の必要なコンポーネントが、[FLOATER] から抜け落ちています
[COMPONENTS]
</notification>
<notification label="既存の付属品を置換" name="ReplaceAttachment">
- 体のこの部位にはオブジェクトが装着されています。
+ 体のこの部位には既にオブジェクトが装着されています。
選択されたオブジェクトと置き換えますか?
<form name="form">
- <ignore name="ignore" save_option="true" text="装着しているアイテムと選択したアイテムを入れ替える"/>
+ <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="キャンセル"/>
+ <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"/>
+ <usetemplate ignoretext="システムフォルダを削除する前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ConfirmEmptyTrash">
- ごみ箱の項目をすべて削除しますか?
- <usetemplate ignoretext="持ち物のごみ箱フォルダを空にする前に確認する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ ごみ箱の中身をすべて削除しますか?
+ <usetemplate ignoretext="持ち物のごみ箱フォルダを空にする前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
</notification>
<notification name="ConfirmClearBrowserCache">
トラベル、Web、検索の履歴をすべて削除しますか?
@@ -1867,16 +1861,16 @@ Linden Lab
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
</notification>
<notification name="ConfirmEmptyLostAndFound">
- 紛失物の項目をすべて削除しますか?
- <usetemplate ignoretext="紛失物フォルダを空にする前に確認する" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ 紛失物の中身をすべて削除しますか?
+ <usetemplate ignoretext="紛失物フォルダを空にする前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
</notification>
<notification name="CopySLURL">
次の SLurl がクリップボードにコピーされました:
[SLURL]
-Webページにこれをリンクすると、他人がこの場所に簡単にアクセスできます。Webブラウザのアドレスバーに貼り付けて試してみてください。
+Web ページにリンクすると、他人がこの場所に簡単にアクセスできます。Web ブラウザのアドレスバーに貼り付けて試してみてください。
<form name="form">
- <ignore name="ignore" text="クリップボードに SLurl がコピーされる"/>
+ <ignore name="ignore" text="クリップボードに SLurl をコピーするとき"/>
</form>
</notification>
<notification name="WLSavePresetAlert">
@@ -1884,14 +1878,14 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification name="WLDeletePresetAlert">
- [SKY] を削除しますか?
+ 「 [SKY] 」を削除しますか?
<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
</notification>
<notification name="WLNoEditDefault">
デフォルトの設定を編集したり削除したりすることはできません。
</notification>
<notification name="WLMissingSky">
- このデイ・サイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。
+ このデイサイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。
</notification>
<notification name="PPSaveEffectAlert">
ポストプロセス効果が存在します。 上書きしますか?
@@ -1927,7 +1921,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
デフォルトの設定を編集したり削除したりすることはできません。
</notification>
<notification name="ChatterBoxSessionStartError">
- [RECIPIENT]との新しいチャットを開始することができません
+ [RECIPIENT] と新しいチャットを開始することができません。
[REASON]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
@@ -1942,16 +1936,16 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="Cannot_Purchase_an_Attachment">
- オブジェクトが取り付けられているときは購入することができません。
+ オブジェクトが取り付けられているままでは購入できません。
</notification>
- <notification label="デビット許可のリクエストについて" name="DebitPermissionDetails">
- この要求を許可すると、スクリプトからあなたのアカウントにリンデンドルを課金できるようになります。
-この許可を取り消すには、オブジェクトのオーナーはオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。
+ <notification label="引き出し許可のリクエストについて" name="DebitPermissionDetails">
+ このリクエストを許可すると、スクリプトであなたのアカウントからリンデンドルを引き出せるようになります。
+この許可を取り消すには、オブジェクトの所有者がオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="AutoWearNewClothing">
作成しようとしている衣類を自動的に装着しますか?
- <usetemplate ignoretext="「マイ 容姿」を編集中に、作成する衣類を装着する" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ <usetemplate ignoretext="「マイ 容姿」を編集中に、作成する衣類を装着するとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
</notification>
<notification name="NotAgeVerified">
年齢確認を済ませていないとこの区画を訪れることができません。 [SECOND_LIFE] サイトで年齢の確認を行いますか?
@@ -1960,7 +1954,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
<url name="url" option="0">
https://secondlife.com/account/verification.php?lang=ja
</url>
- <usetemplate ignoretext="年齢の確認を済ませていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ <usetemplate ignoretext="年齢の確認を済ませていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
</notification>
<notification name="Cannot enter parcel: no payment info on file">
支払情報が登録されていないとこのエリアを訪れることができません。 [SECOND_LIFE] サイトで登録を行いますか?
@@ -1969,53 +1963,53 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
<url name="url" option="0">
https://secondlife.com/account/index.php?lang=ja
</url>
- <usetemplate ignoretext="支払情報が登録されていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ <usetemplate ignoretext="支払情報が登録されていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
</notification>
<notification name="MissingString">
- 文字列[STRING_NAME]がstrings.xmlに含まれていません
+ 文字列 [STRING_NAME] が strings.xml に含まれていません。
</notification>
<notification name="SystemMessageTip">
[MESSAGE]
</notification>
<notification name="Cancelled">
- 取り消されました
+ 取り消されました。
</notification>
<notification name="CancelledSit">
- 座るのを取り消されました
+ 座るのをやめました。
</notification>
<notification name="CancelledAttach">
- 添付は取り消されました
+ 添付が取り消されました。
</notification>
<notification name="ReplacedMissingWearable">
- 欠落している服/身体部位をデフォルトに置換します。
+ 欠落している衣類や身体部位をデフォルトに置き換えます。
</notification>
<notification name="GroupNotice">
- 件名: [SUBJECT], メッセージ: [MESSAGE]
+ 件名: [SUBJECT]、メッセージ: [MESSAGE]
</notification>
<notification name="FriendOnline">
- [FIRST] [LAST] はオンラインです。
+ [FIRST] [LAST] はオンラインです
</notification>
<notification name="FriendOffline">
- [FIRST] [LAST] はオフラインです。
+ [FIRST] [LAST] はオフラインです
</notification>
<notification name="AddSelfFriend">
残念ながら自分自身をフレンド登録することはできません。
</notification>
<notification name="UploadingAuctionSnapshot">
- インワールドとウェブ・サイトのスナップショットをアップロード中です...
-(所要時間:約5分)
+ インワールドと Web サイトのスナップショットをアップロード中です...
+(所要時間:約 5 分)
</notification>
<notification name="UploadPayment">
- アップロードに L$[AMOUNT] 支払いました。
+ アップロードに L$ [AMOUNT] 支払いました。
</notification>
<notification name="UploadWebSnapshotDone">
- Webサイトのスナップショットがアップロードされました。
+ Web サイトのスナップショットがアップロードされました。
</notification>
<notification name="UploadSnapshotDone">
インワールドでのスナップショットのアップロードが完了しました。
</notification>
<notification name="TerrainDownloaded">
- raw地形がダウンロードされました
+ raw 地形がダウンロードされました
</notification>
<notification name="GestureMissing">
ジェスチャーの [NAME] がデータベースに見つかりません。
@@ -2027,11 +2021,11 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
データベースにランドマークがありません。
</notification>
<notification name="UnableToLoadLandmark">
- ランドマークをロードできません。 もう一度試してください。
+ ランドマークを読み込めません。 もう一度お試しください。
</notification>
<notification name="CapsKeyOn">
CapsLock キーが有効になっています。
-パスワードに影響があるかもしれません。
+パスワードに影響するかもしれません。
</notification>
<notification name="NotecardMissing">
ノートカードがデータベースにありません。
@@ -2040,10 +2034,10 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
このノートカードを見る権限がありません。
</notification>
<notification name="RezItemNoPermissions">
- オブジェクトをrezするにはパーミッション(承認)が不足してます。
+ オブジェクトを Rez するには権限が不足しています。
</notification>
<notification name="UnableToLoadNotecard">
- 現在ノートカードの資産をロードできません。
+ ノートカードを読み込めません。あとで再度お試しください。
</notification>
<notification name="ScriptMissing">
データベースにスクリプトがありません。
@@ -2055,36 +2049,35 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
スクリプトをロードできません。 もう一度試してください。
</notification>
<notification name="IncompleteInventory">
- あなたの提供するコンテンツは、この場所ではまだ全部揃いません。
-少ししてからもう一度試してください。
+ あなたの提供するコンテンツは、ローカルではまだ全部揃っていません。
+しばらくしてからもう一度お試しください。
</notification>
<notification name="CannotModifyProtectedCategories">
- 保護されたカテゴリーは修正できません。
+ 保護されたカテゴリは修正できません。
</notification>
<notification name="CannotRemoveProtectedCategories">
- 保護されたカテゴリーは削除できません。
+ 保護されたカテゴリは削除できません。
</notification>
<notification name="OfferedCard">
- あなたは[FIRST] [LAST] に
-コーリング・カードを送りました。
+ [FIRST] [LAST] にコーリングカードを送りました。
</notification>
<notification name="UnableToBuyWhileDownloading">
オブジェクトデータのダウンロード中は購入できません。
-もう一度試してください。
+もう一度お試しください。
</notification>
<notification name="UnableToLinkWhileDownloading">
オブジェクトデータのウンロード中はリンクできません。
-もう一度試してください。
+もう一度お試しください。
</notification>
<notification name="CannotBuyObjectsFromDifferentOwners">
- オブジェクトは一度につき一人の所有者から購入できます。
+ オブジェクトは一度に一人の所有者から購入できます。
オブジェクトを 1 つだけ選んでください。
</notification>
<notification name="ObjectNotForSale">
このオブジェクトは販売対象ではありません。
</notification>
<notification name="EnteringGodMode">
- レベル[LEVEL]のゴッド・モードに入ります
+ レベル [LEVEL] のゴッドモードに入ります
</notification>
<notification name="LeavingGodMode">
レベル [LEVEL] のゴッドモードを解除します
@@ -2093,19 +2086,19 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
これをコピーする権限がありません。
</notification>
<notification name="InventoryAccepted">
- [NAME] があなたが渡したアイテムを受け取りました。
+ [NAME] は、あなたが渡したアイテムを受け取りました。
</notification>
<notification name="InventoryDeclined">
- [NAME]は、持ち物の提供を断りました。
+ [NAME] は、持ち物の提供を断りました。
</notification>
<notification name="ObjectMessage">
[NAME]: [MESSAGE]
</notification>
<notification name="CallingCardAccepted">
- コーリング・カードが受理されました。
+ コーリングカードが受理されました。
</notification>
<notification name="CallingCardDeclined">
- コーリング・カードが拒否されました。
+ コーリングカードが拒否されました。
</notification>
<notification name="TeleportToLandmark">
画面右の「場所」パネルを開いて、「ランドマーク」タブを選ぶと、[NAME] といった場所にテレポートできます。
@@ -2153,10 +2146,10 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
</form>
</notification>
<notification name="TransferObjectsHighlighted">
- この区画上に存在するオブジェクトのうち、この区画の購入者に譲渡されるオブジェクトがすべて強調表示されます。
+ この区画の購入者に受け渡されるオブジェクトは、すべて区画上で強調表示されています。
-*譲渡される樹木や植物は、強調表示されません。
+*受け渡される樹木や植物は、強調表示されていません。
<form name="form">
<button name="Done" text="完了"/>
</form>
@@ -2178,35 +2171,35 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
プラグインをインストールしなおすか、問題が解決しない場合はメーカーにお問い合わせください。
<form name="form">
- <ignore name="ignore" text="メディアプラグインの実行に失敗"/>
+ <ignore name="ignore" text="メディアプラグインの実行に失敗したとき"/>
</form>
</notification>
<notification name="OwnedObjectsReturned">
- 選択した土地の区画上にあったあなたのオブジェクトは、あなたの持ち物に返却されました。
+ 選択した土地の区画上にあったあなたのオブジェクトは、すべてあなたの「持ち物」に返却されました。
</notification>
<notification name="OtherObjectsReturned">
- 選択されている土地の区画上にあった
+ 選択した土地の区画上にあった
[FIRST] [LAST]
- が所有するオブジェクトは、オーナーの持ち物に返却されました。
+ が所有するオブジェクトは、すべて所有者の「持ち物」に返却されました。
</notification>
<notification name="OtherObjectsReturned2">
- 「[NAME]」という名前の住人が所有する、選択した区画にあるオブジェクトは、所有者に返却されました。
+ 「 [NAME] 」という名前の住人が所有する、選択した区画上のオブジェクトは、本人に返却されました。
</notification>
<notification name="GroupObjectsReturned">
- 選択されている区画上にあり、[GROUPNAME] というグループと共有だったオブジェクトは、オーナーの持ち物に返却されました。
-譲渡されていた譲渡可能なオブジェクトは、前のオーナーに返却されました。
-グループに譲渡されていた譲渡不可能なオブジェクトは、削除されました。
+ 選択した区画上の、[GROUPNAME] というグループと共有していたオブジェクトは、それぞれの所有者の「持ち物」に返却されました。
+譲渡されていた「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されました。
+グループに譲渡されていた「再販・プレゼント不可」のオブジェクトは、削除されました。
</notification>
<notification name="UnOwnedObjectsReturned">
- 選択された土地の区画上にあり、あなたの所有で「なかった」オブジェクトは、本来のオーナーに返却されました。
+ 選択した土地の区画上の、あなたの所有物では「なかった」オブジェクトは、本来の所有者に返却されました。
</notification>
<notification name="ServerObjectMessage">
[NAME] からのメッセージ:
-[MSG]
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
</notification>
<notification name="NotSafe">
この土地ではダメージが有効です。
-ケガをするかもしれません。 死んでしまった場合はホームにテレポートされます。
+ケガをするかもしれません。 死んでしまった場合は「ホーム」にテレポートされます。
</notification>
<notification name="NoFly">
このエリアでは飛行が禁止されています。
@@ -2222,41 +2215,41 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
このエリアでは制作が禁止されています。 オブジェクトを制作したり 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">
目的地に入る許可がありません。
@@ -2274,20 +2267,20 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
テレポートがキャンセルされました。
</notification>
<notification name="FullRegionTryAgain">
- 入ろうとしている地域(リージョン)は現在満員です。
+ 入ろうとしているリージョン(地域)は現在満員です。
しばらくしてから再度お試しください。
</notification>
<notification name="GeneralFailure">
よくある失敗
</notification>
<notification name="RoutedWrongRegion">
- 異なる地域(リージョン)に迂回されました。 もう一度お試しください。
+ 異なるリージョン(地域)に迂回されました。 もう一度お試しください。
</notification>
<notification name="NoValidAgentID">
- エージェントIDが無効です。
+ エージェント ID が無効です。
</notification>
<notification name="NoValidSession">
- セッションIDが無効です。
+ セッション ID が無効です。
</notification>
<notification name="NoValidCircuit">
回路コードが無効です。
@@ -2302,7 +2295,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
内部エラーが発生しました。
</notification>
<notification name="NoGoodTPDestination">
- この地域(リージョン)では適切なテレポート目的地が見つかりませんでした。
+ このリージョン(地域)では適切なテレポート目的地が見つかりませんでした。
</notification>
<notification name="InternalErrorRegionResolver">
内部エラーが発生しました。
@@ -2314,7 +2307,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
有効な区画が見つかりませんでした。
</notification>
<notification name="ObjectGiveItem">
- [NAME_SLURL] が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたにこの [OBJECTTYPE] を渡しました:
+ [NAME_SLURL] が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたに [OBJECTTYPE] を渡しました:
[ITEM_SLURL]
<form name="form">
<button name="Keep" text="受け取る"/>
@@ -2323,7 +2316,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
</form>
</notification>
<notification name="ObjectGiveItemUnknownUser">
- (不明の住人)が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたにこの [OBJECTTYPE] を渡しました:
+ (不明の住人)が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたに [OBJECTTYPE] を渡しました:
[ITEM_SLURL]
<form name="form">
<button name="Keep" text="受け取る"/>
@@ -2332,7 +2325,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
</form>
</notification>
<notification name="UserGiveItem">
- [NAME_SLURL] があなたにこの [OBJECTTYPE] を渡しました:
+ [NAME_SLURL] があなたに [OBJECTTYPE] を渡しました:
[ITEM_SLURL]
<form name="form">
<button name="Show" text="表示"/>
@@ -2379,11 +2372,10 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
[MESSAGE]
-(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。)
+(デフォルトでお互いのオンライン状態を見ることができるようになります。)
<form name="form">
<button name="Accept" text="受け入れる"/>
<button name="Decline" text="辞退"/>
- <button name="Send IM" text="IMを送信"/>
</form>
</notification>
<notification name="FriendshipOffered">
@@ -2393,21 +2385,21 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
[NAME]は、
フレンド登録を申し込んでいます。
-(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。)
+(デフォルトでお互いのオンライン状態を見ることができるようになります。)
<form name="form">
<button name="Accept" text="受け入れる"/>
<button name="Decline" text="拒否"/>
</form>
</notification>
<notification name="FriendshipAccepted">
- [NAME]は、フレンド 登録を受け入れました。
+ [NAME]は、フレンド登録を受け入れました。
</notification>
<notification name="FriendshipDeclined">
- [NAME]は、フレンド 登録を断りました。
+ [NAME]は、フレンド登録を断りました。
</notification>
<notification name="OfferCallingCard">
[FIRST] [LAST] がコーリングカードを渡そうとしています。
-あなたの持ち物にブックマークが追加され、この住人に素早く IM を送ることができます。
+あなたの「持ち物」にブックマークが追加され、この住人に素早く IM を送ることができます。
<form name="form">
<button name="Accept" text="受け入れる"/>
<button name="Decline" text="辞退"/>
@@ -2422,27 +2414,27 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
このままここにいるとログアウトされます。
</notification>
<notification name="LoadWebPage">
- ウェブ・ページ[URL]をロードしますか?
+ Web ページ [URL] を読み込みますか?
[MESSAGE]
-ロード元のオブジェクト:[OBJECTNAME]、オーナー:[NAME]?
+読み込み元のオブジェクト:[OBJECTNAME]、所有者:[NAME]?
<form name="form">
<button name="Gotopage" text="移動"/>
<button name="Cancel" text="取り消し"/>
</form>
</notification>
<notification name="FailedToFindWearableUnnamed">
- データベースに[TYPE]が見つかりませんでした
+ データベースに [TYPE] が見つかりませんでした
</notification>
<notification name="FailedToFindWearable">
- データベースに[DESC]という名前の[TYPE]が見つかりませんでした。
+ データベースに [DESC] という名前の [TYPE] が見つかりませんでした。
</notification>
<notification name="InvalidWearable">
着用しようとしているアイテムはあなたのビューワでは読み込むことができません。 [APP_NAME] のバージョンをアップグレードしてからこのアイテムを着用してください。
</notification>
<notification name="ScriptQuestion">
- 「[NAME]」が所有するオブジェクト「[OBJECTNAME]」を:
+ [NAME] が所有するオブジェクト「 [OBJECTNAME] 」を:
[QUESTIONS]
よろしいですか?
@@ -2466,14 +2458,14 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
</form>
</notification>
<notification name="ScriptDialog">
- [FIRST] [LAST]の「[TITLE]」
+ [FIRST] [LAST] の「 [TITLE] 」
[MESSAGE]
<form name="form">
<button name="Ignore" text="無視する"/>
</form>
</notification>
<notification name="ScriptDialogGroup">
- [GROUPNAME]の「[TITLE]」
+ [GROUPNAME] の「 [TITLE] 」
[MESSAGE]
<form name="form">
<button name="Ignore" text="無視する"/>
@@ -2496,9 +2488,9 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
</notification>
<notification name="FirstOverrideKeys">
あなたの移動キーをオブジェクトが操作しています。
-矢印かAWSDのキーで動作を確認してください。
-銃などのオブジェクトだと、一人称視点(マウスルック)に変更する必要があります。
-Mキーを押して変更します。
+矢印か AWSD のキーで動作を確認してください。
+銃などのオブジェクトだと、一人称視点に変更する必要があります。
+M キーを押して変更します。
</notification>
<notification name="FirstSandbox">
ここはサンドボックスエリアです。住人が制作を学ぶことができます。
@@ -2506,7 +2498,7 @@ Mキーを押して変更します。
ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。
</notification>
<notification name="MaxListSelectMessage">
- このリストから[MAX_SELECT]個までのアイテムを選択できます。
+ このリストから [MAX_SELECT] 個までのアイテムを選択できます。
</notification>
<notification name="VoiceInviteP2P">
[NAME] があなたをボイスチャットコールに招待しています。
@@ -2527,7 +2519,7 @@ Mキーを押して変更します。
[FIRST] [LAST] はアイテムを受け取り、自動的にブロックが解除されました。
</notification>
<notification name="VoiceInviteGroup">
- [NAME] は [GROUP]. のボイスチャットコールに参加しました。
+ [NAME] は [GROUP] のボイスチャットコールに参加しました。
受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
<form name="form">
<button name="Accept" text="受け入れる"/>
@@ -2554,7 +2546,7 @@ Mキーを押して変更します。
</form>
</notification>
<notification name="VoiceChannelFull">
- あなたが参加しようとしているボイスコール[VOICE_CHANNEL_NAME]は、参加者が最大限に達しました。後でもう一度お試しください。
+ あなたが参加しようとしているボイスコール [VOICE_CHANNEL_NAME] は、参加者が最大限に達しました。後でもう一度お試しください。
</notification>
<notification name="ProximalVoiceChannelFull">
このエリアのボイスチャットは、混雑のため容量を超えてしまっています。申し訳ありませんが、他のエリアでボイスチャットをお試しください。
@@ -2575,7 +2567,7 @@ Mキーを押して変更します。
[VOICE_CHANNEL_NAME] への接続に失敗しました。あとで再度お試しください。 「近くのボイスチャット」に再接続されます。
</notification>
<notification name="VoiceLoginRetry">
- あなた用のボイスチャンネルを作成しています。1分ほどかかります。
+ ボイスチャンネルを作成しています。1 分ほどかかります。
</notification>
<notification name="Cannot enter parcel: not a group member">
特定のグループメンバーのみこのエリアを訪問することができます。
@@ -2584,13 +2576,13 @@ Mキーを押して変更します。
立入禁止されているため、区画に入ることができません。
</notification>
<notification name="Cannot enter parcel: not on access list">
- アクセス・リストに含まれていないため、区画に入ることができません。
+ アクセスリストに含まれていないため、区画に入ることができません。
</notification>
<notification name="VoiceNotAllowed">
- あなたには[VOICE_CHANNEL_NAME]のボイス・チャットに接続する権限がありません。
+ あなたには [VOICE_CHANNEL_NAME] のボイスチャットに接続する権限がありません。
</notification>
<notification name="VoiceCallGenericError">
- [VOICE_CHANNEL_NAME]のボイス・チャットに接続中に、エラーが発生しました。後でもう一度お試しください。
+ [VOICE_CHANNEL_NAME] のボイスチャットに接続中に、エラーが発生しました。後でもう一度お試しください。
</notification>
<notification name="ServerVersionChanged">
異なるサーバーバージョンのリージョンに来ました。パフォーマンスに影響することがあります。 [[URL] リリースノートを確認]
@@ -2657,13 +2649,13 @@ Mキーを押して変更します。
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>
</notifications>
diff --git a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
index 414413a980..f12f07f3e9 100644
--- a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
@@ -7,6 +7,11 @@
ボイスコントロールパネルの表示・非表示
</string>
<layout_stack name="toolbar_stack">
+ <layout_panel name="speak_panel">
+ <talk_button name="talk">
+ <speak_button label="話す" label_selected="話す" name="speak_btn"/>
+ </talk_button>
+ </layout_panel>
<layout_panel name="gesture_panel">
<gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/>
</layout_panel>
@@ -17,11 +22,11 @@
<button label="視界" name="camera_btn" tool_tip="カメラコントロールの表示・非表示"/>
</layout_panel>
<layout_panel name="snapshot_panel">
- <button label="" name="snapshots" tool_tip="スナップショットを撮る"/>
+ <button label="" name="snapshots" tool_tip="スナップショットを撮ります"/>
</layout_panel>
<layout_panel name="im_well_panel">
<chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversations"/>
+ <button name="Unread IM messages" tool_tip="会話"/>
</chiclet_im_well>
</layout_panel>
<layout_panel name="notification_well_panel">
diff --git a/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml
new file mode 100644
index 0000000000..6eca8adfe5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray_lite">
+ <layout_stack name="toolbar_stack_lite">
+ <layout_panel name="gesture_panel">
+ <gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_classified_info.xml b/indra/newview/skins/default/xui/ja/panel_classified_info.xml
index 7fc4e6f674..14e04d5691 100644
--- a/indra/newview/skins/default/xui/ja/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/ja/panel_classified_info.xml
@@ -6,18 +6,19 @@
<panel.string name="type_pg">
一般コンテンツ
</panel.string>
+ <panel.string name="l$_price">
+ L$ [PRICE]
+ </panel.string>
<text name="title" value="クラシファイド広告情報"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
- <text name="classified_name" value="[name]"/>
- <text name="classified_location" value="[loading...]"/>
- <text name="content_type" value="[content type]"/>
- <text name="category" value="[category]"/>
+ <text_editor name="classified_name" value="[name]"/>
+ <text_editor name="classified_location" value="[loading...]"/>
+ <text_editor name="content_type" value="[content type]"/>
+ <text_editor name="category" value="[category]"/>
<check_box label="毎週自動更新" name="auto_renew"/>
- <text name="price_for_listing" tool_tip="掲載価格">
- L$ [PRICE]
- </text>
- <text name="classified_desc" value="[description]"/>
+ <text_editor name="price_for_listing" tool_tip="掲載価格"/>
+ <text_editor name="classified_desc" value="[description]"/>
</panel>
</scroll_container>
<panel name="buttons">
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml
index 7825d81c53..f2e3e6e993 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="edit_alpha_panel">
<panel name="avatar_alpha_color_panel">
- <texture_picker label="アルファ(下)" name="Lower Alpha" tool_tip="クリックして写真を選択します"/>
- <texture_picker label="アルファ(上)" name="Upper Alpha" tool_tip="クリックして写真を選択します"/>
- <texture_picker label="頭部のアルファ" name="Head Alpha" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="アルファ&#10;(下)" name="Lower Alpha" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="アルファ&#10;(上)" name="Upper Alpha" tool_tip="クリックして写真を選択します"/>
+ <texture_picker label="頭部のア&#10;ルファ" name="Head Alpha" tool_tip="クリックして写真を選択します"/>
<texture_picker label="目のアルファ" name="Eye Alpha" tool_tip="クリックして写真を選択します"/>
<texture_picker label="髪のアルファ" name="Hair Alpha" tool_tip="クリックして写真を選択します"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
index 2a850ab29c..cd81565acb 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
@@ -42,13 +42,13 @@
<line_editor name="homepage_edit" value="http://"/>
<check_box label="検索結果に表示" name="show_in_search_checkbox"/>
<text name="title_acc_status_text" value="マイアカウント:"/>
+ <text_editor name="acc_status_text" value="住人。 支払情報未登録。"/>
<text name="my_account_link" value="[[URL] マイアカウントに移動]"/>
- <text name="acc_status_text" value="住人。 支払情報未登録。"/>
<text name="title_partner_text" value="マイパートナー:"/>
- <text name="partner_edit_link" value="[[URL] 編集]"/>
<panel name="partner_data_panel">
- <name_box name="partner_text" value="[FIRST] [LAST]"/>
+ <name_box initial_value="(取得中)" name="partner_text" value="[FIRST] [LAST]"/>
</panel>
+ <text name="partner_edit_link" value="[[URL] 編集]" width="100"/>
</panel>
</panel>
</scroll_container>
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
index d6aec87b45..78ddae47f9 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="edit_tattoo_panel">
<panel name="avatar_tattoo_color_panel">
- <texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択"/>
- <texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択"/>
- <texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択"/>
+ <texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択" width="70"/>
+ <texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択" width="70"/>
+ <texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択" width="70"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_friends.xml b/indra/newview/skins/default/xui/ja/panel_friends.xml
index 80a68f8258..0c7114dbb7 100644
--- a/indra/newview/skins/default/xui/ja/panel_friends.xml
+++ b/indra/newview/skins/default/xui/ja/panel_friends.xml
@@ -3,8 +3,8 @@
<string name="Multiple">
複数のフレンド
</string>
- <scroll_list name="friend_list" tool_tip="複数のフレンドを選択するには、ShiftキーまたはCtrlキーを押しながら名前をクリックします。">
- <column name="icon_online_status" tool_tip="オンライン・ステータス"/>
+ <scroll_list name="friend_list" tool_tip="複数のフレンドを選択するには、Shift キーまたは Ctrl キーを押しながら名前をクリックします。">
+ <column name="icon_online_status" tool_tip="オンライン状態"/>
<column label="名前" name="friend_name" tool_tip="名前"/>
<column name="icon_visible_online" tool_tip="フレンドは、あなたがオンラインかどうか確認することができます。"/>
<column name="icon_visible_map" tool_tip="フレンドは、地図であなたの居場所を見つけることができます。"/>
@@ -15,18 +15,18 @@
<text name="friend_name_label" right="-10">
フレンドを選択して権利を変更...
</text>
- <check_box label="オンライン・ステータスの確認を許可する" name="online_status_cb" tool_tip="コーリングカードあるいはフレンドリストでこのフレンドがオンライン状態を確認できるよう設定"/>
- <check_box label="世界地図上であなたの居場所を検索可能にする" name="map_status_cb" tool_tip="このフレンドが地図で私の位置を発見できるように設定"/>
- <check_box label="オブジェクトの修正を許可する" name="modify_status_cb" tool_tip="このフレンドがオブジェクトを改造できる許可を与える"/>
+ <check_box label="オンライン状態の確認を許可する" name="online_status_cb" tool_tip="コーリングカードあるいはフレンドリストでこのフレンドがオンライン状態を確認できるよう設定します"/>
+ <check_box label="世界地図上であなたの居場所を検索可能にする" name="map_status_cb" tool_tip="このフレンドが地図で私の位置を発見できるように設定します"/>
+ <check_box label="オブジェクトの修正を許可する" name="modify_status_cb" tool_tip="このフレンドに私のオブジェクトを改造する許可を与えます"/>
<text name="process_rights_label">
権利変更をプロセス中...
</text>
</panel>
<pad left="-95"/>
- <button label="IM/コール" name="im_btn" tool_tip="インスタントメッセージ・セッションを開く" width="90"/>
+ <button label="IM・コール" name="im_btn" tool_tip="インスタントメッセージセッションを開きます。" width="90"/>
<button label="プロフィール" name="profile_btn" tool_tip="写真、グループ、およびその他の情報を表示します。" width="90"/>
- <button label="テレポート" name="offer_teleport_btn" tool_tip="このフレンドに、あなたの現在のロケーションまでのテレポートを申し出ます。" width="90"/>
- <button label="支払う" name="pay_btn" tool_tip="リンデンドル (L$) をこのフレンドにあげる" width="90"/>
+ <button label="テレポート" name="offer_teleport_btn" tool_tip="このフレンドに、あなたの現在地へのテレポートを申し出ます。" width="90"/>
+ <button label="支払う" name="pay_btn" tool_tip="リンデンドル (L$) をこのフレンドにあげます。" width="90"/>
<button label="削除" name="remove_btn" tool_tip="この人物をフレンドリストから外します。" width="90"/>
- <button label="追加" name="add_btn" tool_tip="フレンド登録を申し出る" width="90"/>
+ <button label="追加" name="add_btn" tool_tip="フレンド登録を申し出ます。" width="90"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
index 1c89675c1e..f7f575206a 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
@@ -5,7 +5,7 @@
<button label="グループ情報" name="group_info_btn"/>
</layout_panel>
<layout_panel name="call_btn_panel">
- <button label="グループにコール" name="call_btn"/>
+ <button label="グループコール" name="call_btn"/>
</layout_panel>
<layout_panel name="end_call_btn_panel">
<button label="コール終了" name="end_call_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml
index 538f3800bd..a8df9aef80 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml
@@ -9,29 +9,47 @@
一般的なグループ情報が変更されました。
</panel.string>
<panel.string name="incomplete_member_data_str">
- メンバー・データを検索
+ メンバーのデータを検索
</panel.string>
+ <panel name="group_info_top">
+ <texture_picker label="" name="insignia" tool_tip="クリックして写真を選択します"/>
+ <text name="prepend_founded_by">
+ 創設者:
+ </text>
+ <name_box initial_value="(取得中)" name="founder_name"/>
+ <text name="join_cost_text">
+ 無料
+ </text>
+ <button label="参加します!" name="btn_join"/>
+ </panel>
<text_editor name="charter">
グループの理念、指針を記入してください
</text_editor>
<name_list name="visible_members">
<name_list.columns label="メンバー" name="name"/>
<name_list.columns label="タイトル" name="title"/>
+ <name_list.columns label="ログイン" name="status"/>
</name_list>
+ <text name="my_group_settngs_label">
+ 個人の設定
+ </text>
<text name="active_title_label">
- 私のタイトル
+ 私のタイトル:
</text>
<combo_box name="active_title" tool_tip="このグループをアクティブにしたときに、アバター名の上に表示されるタイトルを設定します。"/>
<check_box label="グループ通知を受信" name="receive_notices" tool_tip="このグループからの通知を受信するかどうかの設定を行います。 グループからスパムが送られてくる場合はこのボックスのチェックを外してください。"/>
<check_box label="プロフィールに表示" name="list_groups_in_profile" tool_tip="あなたのプロフィールにこのグループを表示するかどうかの設定を行います。"/>
<panel name="preferences_container">
- <check_box label="会員募集" name="open_enrollement" tool_tip="招待されなくても新規メンバーが加入できるかどうかを設定します。"/>
- <check_box label="入会費" name="check_enrollment_fee" tool_tip="入会費が必要かどうかを設定します。"/>
+ <text name="group_settngs_label">
+ グループの設定
+ </text>
+ <check_box label="誰でも入会できます" name="open_enrollement" tool_tip="招待されなくても新規メンバーが加入できるかどうかを設定します。"/>
+ <check_box label="入会費がかかります" name="check_enrollment_fee" tool_tip="入会費が必要かどうかを設定します。"/>
<spinner label="L$" name="spin_enrollment_fee" tool_tip="「入会費」にチェックが入っている場合、新規メンバーは指定された入会費を支払わなければグループに入れません。"/>
- <check_box initial_value="true" label="検索に表示" name="show_in_group_list" tool_tip="このグループを検索結果に表示させます"/>
<combo_box name="group_mature_check" tool_tip="あなたのグループに「控えめ」にレート設定された情報があるかどうかを設定します">
<combo_box.item label="一般コンテンツ" name="pg"/>
<combo_box.item label="控えめコンテンツ" name="mature"/>
</combo_box>
+ <check_box initial_value="true" label="検索に表示" name="show_in_group_list" tool_tip="このグループを検索結果に表示させます"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
index 0af1ce2ef2..4166108472 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="グループ情報" name="GroupInfo">
<panel.string name="default_needs_apply_text">
- 現在のタブには、保存されていない変更があります。
+ 保存していない変更があります
</panel.string>
<panel.string name="want_apply_text">
変更を保存しますか?
@@ -12,27 +12,24 @@
<panel.string name="group_join_free">
無料
</panel.string>
- <text name="group_name" value="(ローディング...)"/>
- <line_editor label="新しいグループの名前を入力" name="group_name_editor"/>
- <texture_picker label="" name="insignia" tool_tip="クリックして写真を選択します"/>
- <text name="prepend_founded_by">
- 創始者:
- </text>
- <name_box initial_value="(取得中)" name="founder_name"/>
- <text name="join_cost_text">
- 無料
- </text>
- <button label="参加します!" name="btn_join"/>
- <accordion name="groups_accordion">
- <accordion_tab name="group_general_tab" title="一般"/>
- <accordion_tab name="group_roles_tab" title="役割"/>
- <accordion_tab name="group_notices_tab" title="通知"/>
- <accordion_tab name="group_land_tab" title="土地・資産"/>
- </accordion>
- <panel name="button_row">
- <button label="作成" label_selected="新しいグループ" name="btn_create"/>
- <button label="グループチャット" name="btn_chat"/>
- <button label="グループコール" name="btn_call"/>
- <button label="保存" label_selected="保存" name="btn_apply"/>
+ <panel name="group_info_top">
+ <text name="group_name" value="(ローディング...)"/>
+ <line_editor label="新しいグループの名前を入力してください" name="group_name_editor"/>
</panel>
+ <layout_stack name="layout">
+ <layout_panel name="group_accordions">
+ <accordion name="groups_accordion">
+ <accordion_tab name="group_general_tab" title="一般"/>
+ <accordion_tab name="group_roles_tab" title="役割"/>
+ <accordion_tab name="group_notices_tab" title="通知"/>
+ <accordion_tab name="group_land_tab" title="土地・資産"/>
+ </accordion>
+ </layout_panel>
+ <layout_panel name="button_row">
+ <button label="チャット" name="btn_chat"/>
+ <button label="グループコール" name="btn_call" tool_tip="このグループにコールする"/>
+ <button label="保存" label_selected="保存" name="btn_apply"/>
+ <button label="グループを作成" name="btn_create" tool_tip="新しいグループを作成"/>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_invite.xml b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
index dc58359133..a21b340fdd 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="メンバーを招待" name="invite_panel">
<panel.string name="confirm_invite_owner_str">
- 本当に新しい所有者を招待しますか?この操作は取り消しできません。
+ 本当に新しい所有者を招待しますか?この操作は取り消しできません。
</panel.string>
<panel.string name="loading">
(ローディング...)
diff --git a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
index cfbc51a44e..c0449f1221 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
@@ -1,65 +1,62 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="土地とL$" name="land_money_tab">
- <string name="help_text">
+ <panel.string name="help_text">
「土地利用の合計」が「寄付総額」以下、または同じになるまで警告が表示されます。
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
+ </panel.string>
+ <panel.string name="cant_view_group_land_text">
グループ所有地を確認する権限がありません。
- </string>
- <string name="cant_view_group_accounting_text">
+ </panel.string>
+ <panel.string name="cant_view_group_accounting_text">
グループの会計情報を確認する権限がありません。
- </string>
- <string name="loading_txt">
+ </panel.string>
+ <panel.string name="loading_txt">
ロード中...
- </string>
- <text name="group_land_heading">
- グループの保有地
- </text>
- <scroll_list name="group_parcel_list">
- <column label="区画" name="name"/>
- <column label="地域(リージョン)" name="location"/>
- <column label="種類" name="type"/>
- <column label="面積" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="地図" label_selected="地図" name="map_button"/>
- <text name="total_contributed_land_label">
- 寄付合計:
- </text>
- <text name="total_contributed_land_value" width="150">
- [AREA] 平方メートル
- </text>
- <text name="total_land_in_use_label">
- 土地利用の合計:
- </text>
- <text name="total_land_in_use_value" width="150">
- [AREA] 平方メートル
- </text>
- <text name="land_available_label">
- 利用可能の土地:
- </text>
- <text name="land_available_value" width="150">
- [AREA] 平方メートル
- </text>
- <text name="your_contribution_label">
- あなたの貢献:
- </text>
- <string name="land_contrib_error">
+ </panel.string>
+ <panel.string name="land_contrib_error">
土地の貢献を設定することができません
- </string>
- <text name="your_contribution_units">
- 平方メートル
- </text>
- <text name="your_contribution_max_value">
- (最大 [AMOUNT])
- </text>
- <text name="group_over_limit_text">
- 土地を使用するには、土地クレジットがもっと必要です
- </text>
- <text name="group_money_heading">
- グループL$
- </text>
+ </panel.string>
+ <panel name="layout_panel_landmoney">
+ <scroll_list name="group_parcel_list">
+ <scroll_list.columns label="区画" name="name"/>
+ <scroll_list.columns label="地域" name="location"/>
+ <scroll_list.columns label="種類" name="type"/>
+ <scroll_list.columns label="面積" name="area"/>
+ </scroll_list>
+ <text name="total_contributed_land_label">
+ 寄付合計:
+ </text>
+ <text name="total_contributed_land_value">
+ [AREA] 平方メートル
+ </text>
+ <button label="地図" label_selected="地図" name="map_button"/>
+ <text name="total_land_in_use_label">
+ 土地利用の合計:
+ </text>
+ <text name="total_land_in_use_value">
+ [AREA] 平方メートル
+ </text>
+ <text name="land_available_label">
+ 利用可能の土地:
+ </text>
+ <text name="land_available_value">
+ [AREA] 平方メートル
+ </text>
+ <text name="your_contribution_label">
+ あなたの貢献:
+ </text>
+ <text name="your_contribution_units">
+ 平方メートル
+ </text>
+ <text name="your_contribution_max_value">
+ (最大 [AMOUNT])
+ </text>
+ <text name="group_over_limit_text">
+ 土地利用をサポートするための土地クレジットが足りません
+ </text>
+ <text name="group_money_heading">
+ グループの L$
+ </text>
+ </panel>
<tab_container name="group_money_tab_container">
<panel label="計画" name="group_money_planning_tab">
<text_editor name="group_money_planning_text">
diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
index c5168c4d7c..a0c50c6122 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
@@ -21,8 +21,8 @@
<text name="notice_list_none_found">
見つかりませんでした
</text>
- <button label="新しい通知を作成" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成"/>
- <button label="更新" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新"/>
+ <button label="新しい通知を作成" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成します"/>
+ <button label="更新" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新します"/>
<panel label="新しい通知を作成" name="panel_create_new_notice">
<text name="lbl">
通知を作成
@@ -31,7 +31,7 @@
件名:
</text>
<text name="lbl4">
- メッセージ:
+ 内容:
</text>
<text name="lbl5">
添付:
@@ -39,7 +39,7 @@
<text name="string">
ここにアイテムをドラッグ&ドロップして添付してください:
</text>
- <button label="取り外す" label_selected="添付物を削除" name="remove_attachment"/>
+ <button label="取り外す" label_selected="添付物を削除" name="remove_attachment" tool_tip="あなたの通知から添付されたアイテムを削除します"/>
<button label="送信" label_selected="送信" name="send_notice"/>
<group_drop_target name="drop_target" tool_tip="持ち物のアイテムをこのボックスにドラッグして、通知と一緒に送ります。 添付するには、そのアイテムのコピーと再販・プレゼントの権限があなたにある必要があります。"/>
</panel>
@@ -54,7 +54,7 @@
件名:
</text>
<text name="lbl4">
- メッセージ:
+ 内容:
</text>
<button label="添付アイテムを開く" label_selected="添付物を開く" name="open_attachment"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_roles.xml b/indra/newview/skins/default/xui/ja/panel_group_roles.xml
index 1f2d28ca4f..db6fe268c7 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_roles.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="メンバーと役割" name="roles_tab">
<panel.string name="default_needs_apply_text">
- 現在のタブには、保存されていない変更があります。
+ 保存していない変更があります
</panel.string>
<panel.string name="want_apply_text">
変更を保存しますか?
diff --git a/indra/newview/skins/default/xui/ja/panel_groups.xml b/indra/newview/skins/default/xui/ja/panel_groups.xml
index 785fd868ab..de81a6431a 100644
--- a/indra/newview/skins/default/xui/ja/panel_groups.xml
+++ b/indra/newview/skins/default/xui/ja/panel_groups.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel name="groups">
<text name="groupdesc">
- アクティブなグループ名は太字で表示されています
+ アクティブなグループは太字で表示されています
</text>
- <text name="groupcount">
- あなたは[COUNT] グループに所属しています (最大[MAX])
+ <text name="groupcount" width="270">
+ [COUNT] のグループに所属しています (最大[MAX])
</text>
- <button label="IM/コール" name="IM"
+ <button label="IM・コール" name="IM"
tool_tip="インスタントメッセージ・セッションを開く" />
<button label="情報" name="Info" />
<button label="アクティブ" name="Activate" />
diff --git a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
index bfadcb13d3..be15e92aa1 100644
--- a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
@@ -9,11 +9,14 @@
<button label="フレンド登録" name="add_friend_btn"/>
</layout_panel>
<layout_panel name="teleport_btn_panel">
- <button label="テレポート" name="teleport_btn"/>
+ <button label="テレポート" name="teleport_btn" tool_tip="この人にテレポートを送ります"/>
</layout_panel>
<layout_panel name="share_btn_panel">
<button label="共有" name="share_btn"/>
</layout_panel>
+ <layout_panel name="share_btn_panel">
+ <button label="支払う" name="pay_btn"/>
+ </layout_panel>
<layout_panel name="call_btn_panel">
<button label="コール" name="call_btn"/>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
index 9129c66a45..87477c2651 100644
--- a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
@@ -36,7 +36,7 @@
</panel>
<panel name="landmark_edit_panel">
<text name="title_label" value="タイトル:"/>
- <text name="notes_label" value="個人的メモ:"/>
+ <text name="notes_label" value="メモ:"/>
<text name="folder_label" value="ランドマークの位置:"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_landmarks.xml b/indra/newview/skins/default/xui/ja/panel_landmarks.xml
index 45767e8c50..993c52b561 100644
--- a/indra/newview/skins/default/xui/ja/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/ja/panel_landmarks.xml
@@ -2,13 +2,13 @@
<panel name="Landmarks">
<accordion name="landmarks_accordion">
<accordion_tab name="tab_favorites" title="お気に入りバー"/>
- <accordion_tab name="tab_landmarks" title="ランドマーク"/>
+ <accordion_tab name="tab_landmarks" title="マイ ランドマーク"/>
<accordion_tab name="tab_inventory" title="持ち物"/>
<accordion_tab name="tab_library" title="ライブラリ"/>
</accordion>
<panel name="bottom_panel">
- <button name="options_gear_btn" tool_tip="その他のオプションを表示"/>
- <button name="add_btn" tool_tip="新しいランドマークを追加"/>
- <dnd_button name="trash_btn" tool_tip="選択したランドマークを削除"/>
+ <button name="options_gear_btn" tool_tip="その他のオプションを表示します"/>
+ <button name="add_btn" tool_tip="新しいランドマークを追加します"/>
+ <dnd_button name="trash_btn" tool_tip="選択したランドマークを削除します"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml
index 82c52abf38..c217af38ba 100644
--- a/indra/newview/skins/default/xui/ja/panel_login.xml
+++ b/indra/newview/skins/default/xui/ja/panel_login.xml
@@ -19,16 +19,16 @@
<text name="password_text">
パスワード:
</text>
- <check_box label="記憶する" name="remember_check"/>
+ <check_box label="パスワードを記憶" name="remember_check"/>
<text name="start_location_text">
開始地点:
</text>
- <combo_box name="start_location_combo">
+ <combo_box name="start_location_combo" width="160">
<combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/>
<combo_box.item label="ホーム" name="MyHome"/>
<combo_box.item label="<地域名を入力>" name="Typeregionname"/>
</combo_box>
- <button label="ログイン" name="connect_btn"/>
+ <button label="ログイン" left_pad="30" name="connect_btn" width="60"/>
</layout_panel>
<layout_panel name="links">
<text name="create_new_account_text">
diff --git a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
index d533ce5e0d..36c7b75f97 100644
--- a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
@@ -9,9 +9,9 @@
<inventory_panel label="最新" name="Recent Items"/>
</tab_container>
<panel name="bottom_panel">
- <button name="options_gear_btn" tool_tip="その他のオプションを表示"/>
- <button name="add_btn" tool_tip="新しいアイテムの追加"/>
- <dnd_button name="trash_btn" tool_tip="選択したアイテムを削除"/>
+ <button name="options_gear_btn" tool_tip="その他のオプションを表示します"/>
+ <button name="add_btn" tool_tip="新しいアイテムを追加します"/>
+ <dnd_button name="trash_btn" tool_tip="選択したアイテムを削除します"/>
</panel>
<menu_bar name="Inventory Menu">
<menu label="ファイル" name="File">
@@ -32,7 +32,7 @@
<menu label="新規作成" name="Create">
<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 Note"/>
<menu_item_call label="ジェスチャー" name="New Gesture"/>
<menu label="衣類" name="New Clothes">
<menu_item_call label="シャツ" name="New Shirt"/>
@@ -40,7 +40,7 @@
<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 Skirt"/>
<menu_item_call label="手袋" name="New Gloves"/>
<menu_item_call label="下着(上)" name="New Undershirt"/>
<menu_item_call label="下着(下)" name="New Underpants"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml
index fe51d8507d..dda5bc0009 100644
--- a/indra/newview/skins/default/xui/ja/panel_me.xml
+++ b/indra/newview/skins/default/xui/ja/panel_me.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="マイ プロフィール" name="panel_me">
<tab_container name="tabs">
- <panel label="プロフィール" name="panel_profile"/>
- <panel label="ピック" name="panel_picks"/>
+ <panel label="マイ プロフィール" name="panel_profile"/>
+ <panel label="マイ ピック" name="panel_picks"/>
</tab_container>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
index 74e414c381..6321dbb048 100644
--- a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
@@ -15,14 +15,14 @@
</text>
<text name="current_url" tool_tip="メディアソースの現在のページ" value=""/>
<button label="リセット" name="current_url_reset_btn"/>
- <check_box initial_value="false" label="自動ループ" name="auto_loop"/>
- <check_box initial_value="false" label="最初のクリック" name="first_click_interact"/>
+ <check_box initial_value="false" label="ループ再生" name="auto_loop"/>
+ <check_box initial_value="false" label="最初にクリックしたときの動作" name="first_click_interact"/>
<check_box initial_value="false" label="自動ズーム" name="auto_zoom"/>
<check_box initial_value="false" label="自動メディア再生" name="auto_play"/>
<text name="media_setting_note">
- 注: 住人はこの設定を無視できます
+ 注意: 住人はこの設定を無視できます
</text>
- <check_box initial_value="false" label="オブジェクトの表面のメディアの自動スケール" name="auto_scale"/>
+ <check_box initial_value="false" label="オブジェクトの表面サイズに合わせて自動調整" name="auto_scale"/>
<text name="size_label">
サイズ:
</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
index 7822123a30..ea4fdb9ce5 100644
--- a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="セキュリティ" name="Media Settings Security">
- <check_box initial_value="false" label="指定したURLパターンにのみアクセスを許可する" name="whitelist_enable"/>
+ <check_box initial_value="false" label="指定した URL パターンから始まる接続を許可する" name="whitelist_enable"/>
<text name="home_url_fails_some_items_in_whitelist">
- ホームページに失敗したエントリーがマークされました:
+ ホームページに失敗したエントリーがありました:
</text>
<button label="追加" name="whitelist_add"/>
<button label="削除" name="whitelist_del"/>
<text name="home_url_fails_whitelist">
- 警告: 「一般」タブで指定されたホームページは、このホワイトリストをパスできませんでした。 有効なエントリーが追加されるまでは、無効になります。
+ 警告: 「一般」タブで指定されたホームページは、ホワイトリストに掲載されていません。 正しい機能が設定されるまで、この機能は一時停止します。
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_my_profile.xml b/indra/newview/skins/default/xui/ja/panel_my_profile.xml
index 4cce3798cf..17461ef771 100644
--- a/indra/newview/skins/default/xui/ja/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_my_profile.xml
@@ -28,13 +28,16 @@
<icon label="" name="real_world_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/>
<text name="title_rw_descr_text" value="現実世界:"/>
</panel>
- <text name="title_member_text" value="住人となった日:"/>
+ <text name="title_member_text" value="メンバー登録:"/>
<text name="title_acc_status_text" value="アカウントの状態:"/>
- <text name="acc_status_text">
+ <text_editor name="acc_status_text">
住人。 支払情報未登録。
リンデン。
- </text>
+ </text_editor>
<text name="title_partner_text" value="パートナー:"/>
+ <panel name="partner_data_panel">
+ <name_box initial_value="(取得中)" name="partner_text"/>
+ </panel>
<text name="title_groups_text" value="グループ:"/>
</panel>
</scroll_container>
diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
index a154442095..0426c4fe9a 100644
--- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
@@ -1,15 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
<panel name="navigation_panel">
- <button name="back_btn" tool_tip="前の場所"/>
- <button name="forward_btn" tool_tip="次の場所"/>
+ <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">
+ <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/default/xui/ja/panel_nearby_media.xml b/indra/newview/skins/default/xui/ja/panel_nearby_media.xml
new file mode 100644
index 0000000000..ca93d46e4d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_nearby_media.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_media">
+ <string name="media_item_count_format">
+ (メディアアイテム %ld )
+ </string>
+ <string name="empty_item_text">
+ &lt;空&gt;
+ </string>
+ <string name="parcel_media_name">
+ 区画ストリーミングメディア
+ </string>
+ <string name="parcel_audio_name">
+ 区画ストリーミングオーディオ
+ </string>
+ <string name="playing_suffix">
+ (再生中)
+ </string>
+ <panel name="minimized_controls">
+ <button label="すべて停止" name="all_nearby_media_disable_btn" tool_tip="近くのメディアをすべてオフにします"/>
+ <button label="すべて開始" name="all_nearby_media_enable_btn" tool_tip="近くのメディアをすべてオンにします"/>
+ <button name="open_prefs_btn" tool_tip="メディアの設定を開きます"/>
+ <button label="詳細 &gt;&gt;" label_selected="簡易 &lt;&lt;" name="more_less_btn" tool_tip="アドバンスコントロール"/>
+ </panel>
+ <panel name="nearby_media_panel">
+ <combo_box name="show_combo">
+ <combo_box.item label="すべて" name="All"/>
+ <combo_box.item label="この区画内" name="WithinParcel"/>
+ <combo_box.item label="この区画外" name="OutsideParcel"/>
+ </combo_box>
+ <scroll_list name="media_list">
+ <scroll_list.columns label="近接" name="media_proximity"/>
+ <scroll_list.columns label="表示" name="media_visibility"/>
+ <scroll_list.columns label="クラス" name="media_class"/>
+ <scroll_list.columns label="名前" name="media_name"/>
+ <scroll_list.columns label="デバッグ" name="media_debug"/>
+ </scroll_list>
+ <panel>
+ <layout_stack name="media_controls">
+ <layout_panel name="stop">
+ <button name="stop_btn" tool_tip="選択したメディアを停止"/>
+ </layout_panel>
+ <layout_panel name="play">
+ <button name="play_btn" tool_tip="選択したメディアを再生"/>
+ </layout_panel>
+ <layout_panel name="pause">
+ <button name="pause_btn" tool_tip="選択したメディアを一時停止"/>
+ </layout_panel>
+ <layout_panel name="volume_slider_ctrl">
+ <slider_bar initial_value="0.5" name="volume_slider" tool_tip="選択したメディアの音量"/>
+ </layout_panel>
+ <layout_panel name="mute">
+ <button name="mute_btn" tool_tip="選択したメディアの音をミュート"/>
+ </layout_panel>
+ <layout_panel name="zoom">
+ <button name="zoom_btn" tool_tip="選択したメディアに近づく"/>
+ </layout_panel>
+ <layout_panel name="unzoom">
+ <button name="unzoom_btn" tool_tip="選択したメディアから遠ざかる"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_notes.xml b/indra/newview/skins/default/xui/ja/panel_notes.xml
index 1948c54359..cbeb5a7f97 100644
--- a/indra/newview/skins/default/xui/ja/panel_notes.xml
+++ b/indra/newview/skins/default/xui/ja/panel_notes.xml
@@ -6,7 +6,7 @@
<panel name="profile_scroll_panel">
<text name="status_message" value="個人的メモ:"/>
<text name="status_message2" value="この人に許可:"/>
- <check_box label="オンライン状況の確認" name="status_check"/>
+ <check_box label="オンライン状態の確認" name="status_check"/>
<check_box label="地図で居場所を確認" name="map_check"/>
<check_box label="私のオブジェクトの編集・削除・取得" name="objects_check"/>
</panel>
@@ -15,9 +15,9 @@
<layout_panel name="notes_buttons_panel">
<button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
<button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
- <button label="コール" name="call" tool_tip="この住人にコールする"/>
- <button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/>
- <button label="テレポート" name="teleport" tool_tip="テレポートを送る"/>
+ <button label="コール" name="call" tool_tip="この住人にコールします"/>
+ <button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示します"/>
+ <button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_online_status.xml b/indra/newview/skins/default/xui/ja/panel_online_status.xml
new file mode 100644
index 0000000000..fdc489f375
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_online_status.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="friend_online_status" name="friend_online_status"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
index a109b1ab51..b941763388 100644
--- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
@@ -2,13 +2,13 @@
<panel label="もの" name="Outfits">
<tab_container name="appearance_tabs">
<inventory_panel label="マイ アウトフィット" name="outfitslist_tab"/>
- <inventory_panel label="着用中" name="cof_accordionpanel"/>
+ <inventory_panel label="着用中" name="cof_tab"/>
</tab_container>
<panel name="bottom_panel">
- <button name="options_gear_btn" tool_tip="その他のオプションを表示"/>
- <dnd_button name="trash_btn" tool_tip="選択したアイテムを削除"/>
- <button label="アウトフィットを保存する" name="make_outfit_btn" tool_tip="容姿をアウトフィットに保存する"/>
- <button label="装着" name="wear_btn" tool_tip="選択したアウトフィットを着用する"/>
+ <button name="options_gear_btn" tool_tip="その他のオプションを表示します"/>
+ <dnd_button name="trash_btn" tool_tip="選択したアイテムを削除します"/>
+ <button label="アウトフィットを保存する" name="make_outfit_btn" tool_tip="容姿をアウトフィットに保存します" width="140"/>
+ <button label="装着" name="wear_btn" tool_tip="選択したアウトフィットを着用します"/>
<button label="M" name="look_edit_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
index c955cf6e48..bad4cdbc05 100644
--- a/indra/newview/skins/default/xui/ja/panel_people.xml
+++ b/indra/newview/skins/default/xui/ja/panel_people.xml
@@ -5,7 +5,6 @@
<string name="no_one_near" value="近くに誰もいません"/>
<string name="no_friends_online" value="オンラインのフレンドはいません"/>
<string name="no_friends" value="フレンドはいません"/>
- <string name="no_groups" value="グループはありません"/>
<string name="people_filter_label" value="人をフィルター"/>
<string name="groups_filter_label" value="グループをフィルター"/>
<filter_editor label="フィルター" name="filter_input"/>
@@ -16,22 +15,26 @@
<button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
</panel>
</panel>
- <panel label="フレンド" name="friends_panel">
+ <panel label="マイ フレンド" name="friends_panel">
<accordion name="friends_accordion">
<accordion_tab name="tab_online" title="オンライン"/>
<accordion_tab name="tab_all" title="全員"/>
</accordion>
+ <text name="no_friends_msg">
+ お友達を追加するには、[secondlife:///app/search/people グローバル検索] をするか、ユーザーをクリックして行ってください。
+誰か一緒に行動をする人をお探しの時は、[secondlife:///app/worldmap 地図をお試しださい]。
+ </text>
<panel label="bottom_panel" name="bottom_panel">
<button name="friends_viewsort_btn" tool_tip="オプション"/>
- <button name="add_btn" tool_tip="フレンド登録を申し出る"/>
- <button name="del_btn" tool_tip="選択した人をフレンドリストから削除"/>
+ <button name="add_btn" tool_tip="フレンド登録を申し出ます"/>
+ <button name="del_btn" tool_tip="選択した人をフレンドリストから削除します"/>
</panel>
</panel>
- <panel label="グループ" name="groups_panel">
+ <panel label="マイ グループ" name="groups_panel">
<panel label="bottom_panel" name="bottom_panel">
<button name="groups_viewsort_btn" tool_tip="オプション"/>
- <button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成"/>
- <button name="activate_btn" tool_tip="選択したグループをアクティベート"/>
+ <button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
+ <button name="activate_btn" tool_tip="選択したグループをアクティブにします"/>
</panel>
</panel>
<panel label="最新" name="recent_panel">
@@ -42,13 +45,13 @@
</panel>
</tab_container>
<panel name="button_bar">
- <button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
- <button label="IM" name="im_btn" tool_tip="インスタントメッセージを開く"/>
- <button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
+ <button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示します"/>
+ <button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
+ <button label="コール" name="call_btn" tool_tip="この住人にコールします"/>
<button label="共有" name="share_btn"/>
- <button label="テレポート" name="teleport_btn" tool_tip="テレポートを送る"/>
- <button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示"/>
- <button label="グループチャット" name="chat_btn" tool_tip="チャットを開始"/>
- <button label="グループにコールする" name="group_call_btn" tool_tip="このグループにコールする"/>
+ <button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
+ <button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示します"/>
+ <button label="グループチャット" name="chat_btn" tool_tip="チャットを開始します"/>
+ <button label="グループコール" name="group_call_btn" tool_tip="このグループにコールします"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_picks.xml b/indra/newview/skins/default/xui/ja/panel_picks.xml
index f74bf7a073..4f58c032da 100644
--- a/indra/newview/skins/default/xui/ja/panel_picks.xml
+++ b/indra/newview/skins/default/xui/ja/panel_picks.xml
@@ -10,8 +10,8 @@
<button name="new_btn" tool_tip="現在地の新しいピック、またはクラシファイド広告を作成します"/>
</panel>
<panel name="buttons_cucks">
- <button label="情報" name="info_btn" tool_tip="ピックの情報を表示"/>
- <button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポート"/>
- <button label="地図" name="show_on_map_btn" tool_tip="世界地図に該当するエリアを表示"/>
+ <button label="情報" name="info_btn" tool_tip="ピックの情報を表示します"/>
+ <button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポートします"/>
+ <button label="地図" name="show_on_map_btn" tool_tip="世界地図に該当するエリアを表示します"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
index ef4b71c4aa..a6af5f3d3c 100644
--- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
@@ -6,7 +6,7 @@
<string name="available" value="利用可"/>
<string name="allocated" value="割り当て済"/>
<string name="title_place" value="場所のプロフィール"/>
- <string name="title_teleport_history" value="テレポート履歴の場所"/>
+ <string name="title_teleport_history" value="テレポートの履歴"/>
<string name="not_available" value="(該当なし)"/>
<string name="unknown" value="(不明)"/>
<string name="public" value="(公開)"/>
@@ -86,9 +86,9 @@
<button label="土地情報" name="about_land_btn"/>
</panel>
</accordion_tab>
- <accordion_tab name="region_information_tab" title="リージョン">
+ <accordion_tab name="region_information_tab" title="リージョン(地域) ">
<panel>
- <text name="region_name_label" value="リージョン:"/>
+ <text name="region_name_label" value="地域:"/>
<text name="region_name" value="Mooseland"/>
<text name="region_type_label" value="種類:"/>
<text name="region_type" value="Moose"/>
@@ -105,7 +105,7 @@
</accordion_tab>
<accordion_tab name="estate_information_tab" title="エステート(不動産)">
<panel>
- <text name="estate_name_label" value="エステート(不動産):"/>
+ <text name="estate_name_label" value="不動産:"/>
<text name="estate_rating_label" value="レーティング区分:"/>
<text name="estate_owner_label" value="所有者:"/>
<text name="covenant_label" value="約款:"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml
index b1c7a3308f..e2dba19c1d 100644
--- a/indra/newview/skins/default/xui/ja/panel_places.xml
+++ b/indra/newview/skins/default/xui/ja/panel_places.xml
@@ -2,7 +2,7 @@
<panel label="場所" name="places panel">
<string name="landmarks_tab_title" value="マイ ランドマーク"/>
<string name="teleport_history_tab_title" value="テレポートの履歴"/>
- <filter_editor label="場所をフィルター" name="Filter"/>
+ <filter_editor label="私の場所をフィルターする" name="Filter"/>
<panel name="button_panel">
<button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポートします"/>
<button label="地図" name="map_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml
index d444cccd2d..e0c25c35a1 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml
@@ -1,27 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
-<panel name="advanced">
- <panel.string name="resolution_format">
- [RES_X] x [RES_Y]
- </panel.string>
+<panel label="アドバンス" name="advanced">
<panel.string name="aspect_ratio_text">
[NUM]:[DEN]
</panel.string>
- <check_box label="吹き出しチャット" name="bubble_text_chat"/>
- <color_swatch name="background" tool_tip="吹き出しチャットの色を選択します"/>
- <slider label="透明度" name="bubble_chat_opacity"/>
- <text name="AspectRatioLabel1" tool_tip="(幅/高さ)">
- 縦横比
- </text>
- <combo_box name="aspect_ratio" tool_tip="(幅/高さ)">
- <combo_box.item label="4:3(標準CRT)" name="item1"/>
- <combo_box.item label="5:4(1280x1024 LCD)" name="item2"/>
- <combo_box.item label="8:5(ワイドスクリ-ン)" name="item3"/>
- <combo_box.item label="16:9(ワイドスクリ-ン)" name="item4"/>
- </combo_box>
- <check_box label="自動検出" name="aspect_auto_detect"/>
- <text name="heading1">
- カメラ:
- </text>
<slider label="視界角" name="camera_fov"/>
<slider label="距離" name="camera_offset_scale"/>
<text name="heading2">
@@ -29,20 +10,20 @@
</text>
<check_box label="制作・編集" name="edit_camera_movement" tool_tip="編集モードのオン・オフの切り替えに、自動カメラポジションを使います"/>
<check_box label="容姿" name="appearance_camera_movement" tool_tip="編集モードに入ったときに、自動カメラポジションを使います"/>
- <text name="heading3">
- アバター:
- </text>
<check_box label="一人称視点で表示する" name="first_person_avatar_visible"/>
<check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/>
<check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/>
<check_box label="話すときにアバターの口を動かす" name="enable_lip_sync"/>
- <check_box label="スクリプトのエラーを表示する" name="show_script_errors"/>
+ <check_box label="吹き出しチャット" name="bubble_text_chat"/>
+ <slider label="透明度" name="bubble_chat_opacity"/>
+ <color_swatch name="background" tool_tip="吹き出しチャットの色を選択します"/>
+ <check_box label="スクリプトのエラーを表示:" name="show_script_errors"/>
<radio_group name="show_location">
- <radio_item label="チャット" name="0"/>
- <radio_item label="ウィンドウ" name="1"/>
+ <radio_item label="近くのチャット" name="0"/>
+ <radio_item label="別々のウィンドウ" name="1"/>
</radio_group>
- <check_box label="トリガーキーを押したときに、マイクを切り替える:" name="push_to_talk_toggle_check" tool_tip="トグルモードの時にトリガーキーを1度押して放すと、マイクのオン・オフ設定を切り替えます。 トグルモードではないときは、トリガーキーを押した状態の時のみあなたの声が相手に聞こえます。"/>
+ <check_box label="押すとボイスのオン・オフを切り替えます:" name="push_to_talk_toggle_check" tool_tip="トグルモードの時にトリガーキーを1度押して放すと、マイクのオン・オフ設定を切り替えます。 トグルモードではないときは、トリガーキーを押した状態の時のみあなたの声が相手に聞こえます。"/>
<line_editor label="プッシュ・トゥ・スピークのトリガー" name="modifier_combo"/>
<button label="キー設定" name="set_voice_hotkey_button"/>
- <button label="マウスの中央ボタン" name="set_voice_middlemouse_button"/>
+ <button label="マウスの中央ボタン" name="set_voice_middlemouse_button" tool_tip="マウスの中央ボタンにリセットします"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
index 16af659326..7fd2e31698 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
@@ -4,11 +4,11 @@
知らせる:
</text>
<check_box label="リンデンドルを使用・受け取るとき" name="notify_money_change_checkbox"/>
- <check_box label="フレンドがログアウト・ログインするとき" name="friends_online_notify_checkbox"/>
+ <check_box label="フレンドがログイン・ログアウトするとき" name="friends_online_notify_checkbox"/>
<text name="show_label" width="300">
- 常に表示する通知:
+ 常に表示するメッセージ:
</text>
<text name="dont_show_label">
- 表示しない通知:
+ 表示しないメッセージ:
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index ece18a75ca..d6fe54fbd1 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -7,27 +7,27 @@
</radio_group>
<color_swatch label="自分" name="user"/>
<text name="text_box1">
- ミー
+ 自分
</text>
<color_swatch label="その他" name="agent"/>
<text name="text_box2">
- その他
+ 他人
</text>
<color_swatch label="IM" name="im"/>
<text name="text_box3">
IM
</text>
- <color_swatch label="システム" name="system"/>
+ <color_swatch label="システム" name="system"/>
<text name="text_box4">
- システム
+ システム
</text>
<color_swatch label="エラー" name="script_error"/>
<text name="text_box5">
エラー
</text>
- <color_swatch label="オブジェクト" name="objects"/>
+ <color_swatch label="オブジェクト" name="objects"/>
<text name="text_box6">
- オブジェクト
+ オブジェクト
</text>
<color_swatch label="所有者" name="owner"/>
<text name="text_box7">
@@ -37,11 +37,11 @@
<text name="text_box9">
URL
</text>
- <check_box initial_value="true" label="チャット中はタイピング動作のアニメーションを再生" name="play_typing_animation"/>
- <check_box label="オフライン時に受け取った IM をメールで送信" name="send_im_to_email"/>
- <check_box label="文字チャットの履歴を有効にする" name="plain_text_chat_history"/>
- <radio_group name="chat_window" tool_tip="インスタントメッセージを別ウィンドウ、または1つのウィンドウに複数タブで表示(要再起動)">
- <radio_item label="複数ウィンドウ" name="radio" value="0"/>
- <radio_item label="1つのウィンドウ" name="radio2" value="1"/>
+ <check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/>
+ <check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/>
+ <check_box label="チャット履歴に文字だけ表示する" name="plain_text_chat_history"/>
+ <radio_group name="chat_window" tool_tip="インスタントメッセージを別フローター、または1つのフローターに複数タブで表示します(要再起動)">
+ <radio_item label="別々のウィンドウ" name="radio" value="0"/>
+ <radio_item label="タブ" name="radio2" value="1"/>
</radio_group>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
index 765662b96a..f216c3acbc 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -33,7 +33,7 @@
</text>
<combo_box name="start_location_combo">
<combo_box.item label="最後にログアウトした場所" name="MyLastLocation" tool_tip="常に最後にいた場所にログイン"/>
- <combo_box.item label="自宅(ホーム)" name="MyHome" tool_tip="常に自宅(ホーム)にログイン"/>
+ <combo_box.item label="ホーム" name="MyHome" tool_tip="常にホーム(自宅)にログイン"/>
</combo_box>
<check_box initial_value="true" label="ログイン画面に表示する" name="show_location_checkbox"/>
<text name="name_tags_textbox">
@@ -48,7 +48,7 @@
<check_box initial_value="true" label="小さいアバター名" name="small_avatar_names_checkbox"/>
<check_box label="グループタイトルを表示" name="show_all_title_checkbox1"/>
<text name="effects_color_textbox">
- 私のビームの色:
+ ビームの色:
</text>
<text name="title_afk_text">
一時退席までの時間:
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
index 191748fe91..8df829c296 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
@@ -55,7 +55,7 @@
<text name="AvatarRenderingText">
アバター表示:
</text>
- <check_box initial_value="true" label="アバターの精度を上げる" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="アバターの描画を簡略化" name="AvatarImpostors"/>
<check_box initial_value="true" label="ハードウェアスキニング" name="AvatarVertexProgram"/>
<check_box initial_value="true" label="アバターの布" name="AvatarCloth"/>
<slider label="描画距離:" name="DrawDistance"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
index 7a7cb8b96b..b81889b412 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
@@ -3,22 +3,20 @@
<panel.string name="log_in_to_change">
ログインして変更
</panel.string>
- <button label="履歴の消去" name="clear_cache"/>
+ <button label="履歴を消去" name="clear_cache" tool_tip="ログイン画像、最後にいた場所、テレポート履歴、Web、テクスチャキャッシュを削除します"/>
<text name="cache_size_label_l">
(位置、画像、web、検索履歴)
</text>
- <check_box label="私のオンライン状況を確認できるのは、フレンドとグループだけ" name="online_visibility"/>
- <check_box label="フレンドとグループ以外からはコールとIMを受信しない" name="voice_call_friends_only_check"/>
- <check_box label="コールが終了したらマイクのスイッチを切る" name="auto_disengage_mic_check"/>
- <check_box label="Cookieを受け入れる" name="cookies_enabled"/>
- <check_box label="メディアが有効です" name="media_enabled"/>
- <check_box label="メディアを自動再生する" name="autoplay_enabled"/>
+ <check_box label="私のオンライン状態を確認できるのは、フレンドとグループだけ" name="online_visibility"/>
+ <check_box label="フレンドとグループ以外からはコールと IM を受信しない" name="voice_call_friends_only_check"/>
+ <check_box label="コールが終了したら自動的にマイクのスイッチを切る" name="auto_disengage_mic_check"/>
+ <check_box label="Cookie を受け入れる" name="cookies_enabled"/>
<text name="Logs:">
ログ:
</text>
- <check_box label="コンピューターに近くのチャットログを保存する" name="log_nearby_chat"/>
- <check_box label="コンピューターに IM ログを保存する" name="log_instant_messages"/>
- <check_box label="タイムスタンプを追加する" name="show_timestamps_check_im"/>
+ <check_box label="近くのチャットログをコンピューターに保存する" name="log_nearby_chat"/>
+ <check_box label="IM ログをコンピューターに保存する" name="log_instant_messages"/>
+ <check_box label="日時を入れる" name="show_timestamps_check_im"/>
<text name="log_path_desc">
ログの保存場所:
</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
index 12e21709ae..ad8c8437be 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
@@ -5,7 +5,7 @@
一人称視点:
</text>
<text name=" Mouse Sensitivity">
- マウスの精度
+ マウスの感度
</text>
<check_box label="切り替え" name="invert_mouse"/>
<text name="Network:">
@@ -18,29 +18,29 @@
kbps
</text>
<check_box label="カスタムポート" name="connection_port_enabled"/>
- <spinner label="ポート番号:" name="web_proxy_port"/>
+ <spinner label="ポート番号:" name="connection_port"/>
<text name="cache_size_label_l">
キャッシュサイズ
</text>
<text name="text_box5">
MB
</text>
- <button label="参照" label_selected="参照" name="set_cache"/>
- <button label="リセット" label_selected="リセット" name="reset_cache"/>
<text name="Cache location">
キャッシュの保存場所:
</text>
+ <button label="参照" label_selected="参照" name="set_cache"/>
+ <button label="リセット" label_selected="リセット" name="reset_cache"/>
<text name="Web:">
Web:
</text>
<radio_group name="use_external_browser">
- <radio_item label="内蔵ブラウザを使用" name="internal" tool_tip="内蔵ブラウザでヘルプやWebリンクなどを見ます。[APP_NAME] 内に新しいウィンドウでこのブラウザが開きます。"/>
- <radio_item label="外部ブラウザ(IEやFirefox)を使用" name="external" tool_tip="デフォルトのシステムWebブラウザでヘルプやWebリンク先などを見ます。全画面で起動中にはおすすめしません。"/>
+ <radio_item label="内蔵ブラウザを使用" name="internal" tool_tip="内蔵ブラウザでヘルプや Web リンクなどを見ます。[APP_NAME] 内に新しいウィンドウでこのブラウザが開きます。" value="0"/>
+ <radio_item label="指定のブラウザ(IE や Firefox)を使用" name="external" tool_tip="デフォルトのシステム Web ブラウザでヘルプや Web リンク先などを見ます。全画面で起動中にはおすすめしません。" value="1"/>
</radio_group>
- <check_box initial_value="false" label="Webプロキシ" name="web_proxy_enabled"/>
- <line_editor name="web_proxy_editor" tool_tip="使用するプロキシ名またはIPアドレス"/>
- <button label="参照" label_selected="参照" name="set_proxy"/>
+ <check_box initial_value="false" label="Web プロキシを有効にする" name="web_proxy_enabled"/>
<text name="Proxy location">
プロキシ:
</text>
+ <line_editor name="web_proxy_editor" tool_tip="使用するプロキシのホスト名または IP アドレス"/>
+ <spinner label="ポート番号:" name="web_proxy_port"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
index 9fb0dd0b46..af64a217f6 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
@@ -2,15 +2,19 @@
<panel label="サウンド" name="Preference Media panel">
<slider label="全体の音量" name="System Volume"/>
<check_box initial_value="true" label="最小化でミュート" name="mute_when_minimized"/>
- <slider label="風" name="Wind Volume"/>
<slider label="ボタン" name="UI Volume"/>
- <slider label="メディア" name="Media Volume"/>
+ <slider label="風" name="Wind Volume"/>
<slider label="効果音" name="SFX Volume"/>
<slider label="ストリーミング音楽" name="Music Volume"/>
- <check_box label="ボイスを有効にする" name="enable_voice_check"/>
- <slider label="ボイス" name="Voice Volume"/>
+ <check_box label="有効" name="music_enabled"/>
+ <slider label="メディア" name="Media Volume"/>
+ <check_box label="有効" name="enable_media"/>
+ <slider label="ボイスチャット" name="Voice Volume"/>
+ <check_box label="有効" name="enable_voice_check"/>
+ <check_box label="メディアを自動再生する" name="media_auto_play_btn" tool_tip="ここにチェックを入れてメディアの自動再生を許可します" value="true"/>
+ <check_box label="他のアバターに取り付けられたメディアを再生します" name="media_show_on_others_btn" tool_tip="このチェックを外すと、近くにいる他のアバターに取り付けられたメディアを非表示にします。" value="true"/>
<text name="Listen from">
- 方向:
+ ボイスチャットの設定
</text>
<radio_group name="ear_location">
<radio_item label="カメラの位置から聞く" name="0"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml
index 98969f5ab3..e7bc989c52 100644
--- a/indra/newview/skins/default/xui/ja/panel_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_profile.xml
@@ -26,13 +26,16 @@
<panel name="first_life_image_panel">
<text name="title_rw_descr_text" value="現実世界:"/>
</panel>
- <text name="title_member_text" value="住人となった日:"/>
+ <text name="title_member_text" value="住人登録:"/>
<text name="title_acc_status_text" value="アカウントの状態:"/>
- <text name="acc_status_text">
+ <text_editor name="acc_status_text">
住人。 支払情報未登録。
リンデン。
- </text>
+ </text_editor>
<text name="title_partner_text" value="パートナー:"/>
+ <panel name="partner_data_panel">
+ <name_box initial_value="(取得中)" name="partner_text"/>
+ </panel>
<text name="title_groups_text" value="グループ:"/>
</panel>
</scroll_container>
@@ -40,9 +43,10 @@
<layout_panel name="profile_buttons_panel">
<button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
<button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
- <button label="コール" name="call" tool_tip="この住人にコールする"/>
- <button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/>
- <button label="テレポート" name="teleport" tool_tip="テレポートを送る"/>
+ <button label="コール" name="call" tool_tip="この住人にコールします"/>
+ <button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示します"/>
+ <button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/>
+ <button label="▼" name="overflow_btn" tool_tip="住人にお金を渡すか持ち物を共有します"/>
</layout_panel>
<layout_panel name="profile_me_buttons_panel">
<button label="プロフィールの編集" name="edit_profile_btn" tool_tip="個人的な情報を編集します"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml
index 5f43f93113..9a517d79e9 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="約款" name="Covenant">
- <text font="SansSerifLarge" name="estate_section_lbl">
- エステート(不動産)
+ <text font="SansSerifLarge" name="estate_section_lbl" width="200">
+ 不動産
</text>
<text name="estate_name_lbl">
名前:
@@ -26,14 +26,14 @@
この不動産には約款がありません。
</text_editor>
<button label="リセット" name="reset_covenant"/>
- <text name="covenant_help_text">
+ <text name="covenant_help_text" left="100">
約款の変更は不動産全区画に適用となります。
</text>
- <text name="covenant_instructions">
+ <text name="covenant_instructions" width="390">
この不動産約款の変更をする際は、ノートカードをドラッグ&ドロップしてください。
</text>
- <text bottom_delta="-34" font="SansSerifLarge" name="region_section_lbl">
- リージョン(地域)
+ <text bottom_delta="-34" font="SansSerifLarge" name="region_section_lbl" width="200">
+ 地域
</text>
<text name="region_name_lbl">
名前:
diff --git a/indra/newview/skins/default/xui/ja/panel_region_debug.xml b/indra/newview/skins/default/xui/ja/panel_region_debug.xml
index 4209fb17e5..f6865c12b1 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_debug.xml
@@ -6,11 +6,11 @@
<text name="region_text">
未知
</text>
- <check_box label="スクリプト無効化" name="disable_scripts_check" tool_tip="この地域のスクリプトをすべて無効化"/>
+ <check_box label="スクリプト無効化" name="disable_scripts_check" tool_tip="この地域のスクリプトをすべて無効にします"/>
<button label="?" name="disable_scripts_help"/>
- <check_box label="衝突を無効化" name="disable_collisions_check" tool_tip="この地域の非アバター衝突を無効化"/>
+ <check_box label="衝突を無効化" name="disable_collisions_check" tool_tip="この地域の非アバター衝突を無効にします"/>
<button label="?" name="disable_collisions_help"/>
- <check_box label="物理作用を無効化" name="disable_physics_check" tool_tip="この地域の物理作用をすべて無効化"/>
+ <check_box label="物理作用を無効化" name="disable_physics_check" tool_tip="この地域の物理作用をすべて無効にします"/>
<button label="?" name="disable_physics_help"/>
<button label="適用" name="apply_btn"/>
<text name="objret_text_lbl" width="120">
@@ -27,14 +27,14 @@
オプション:
</text>
<check_box label="スクリプト付きのもの" name="return_scripts" tool_tip="スクリプトのオブジェクトだけ返却します"/>
- <check_box label="他人の土地にあるもの" name="return_other_land" tool_tip="他人に属する土地にあるオブジェクトのみを返却"/>
- <check_box label="この不動産に属するすべてのリージョンのもの" name="return_estate_wide" tool_tip="この不動産に含まれているすべての地域のオブジェクトを返却"/>
+ <check_box label="他人の土地にあるもの" name="return_other_land" tool_tip="他人に属する土地にあるオブジェクトのみを返却します"/>
+ <check_box label="この不動産に属するすべてのリージョンのもの" name="return_estate_wide" tool_tip="この不動産に含まれているすべての地域のオブジェクトを返却します"/>
<button label="返却" name="return_btn"/>
<button label="上部コライダー取得" name="top_colliders_btn" tool_tip="衝突する可能性が最も高いオブジェクトのリスト"/>
<button label="?" name="top_colliders_help"/>
<button label="上部スクリプト取得" name="top_scripts_btn" tool_tip="スクリプトの実行に最も時間を費やしているオブジェクトのリスト"/>
<button label="?" name="top_scripts_help"/>
- <button label="地域再起動" name="restart_btn" tool_tip="2分間のカウントダウン後、地域を再起動"/>
+ <button label="地域再起動" name="restart_btn" tool_tip="2分間のカウントダウン後、地域を再起動します"/>
<button label="?" name="restart_help"/>
- <button label="再起動を遅延" name="cancel_restart_btn" tool_tip="地域の再起動を1時間遅延する"/>
+ <button label="再起動を遅延" name="cancel_restart_btn" tool_tip="地域の再起動を1時間遅延します"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
index 976cfacb3f..71551c7680 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="不動産" name="Estate">
- <text name="estate_help_text">
- このタブの設定への変更は、エステート内のすべてのリージョンに影響されます。
+ <text name="estate_help_text" width="400">
+ このタブ内の設定変更は、不動産内のすべての地域に影響します。
</text>
<text name="estate_text">
不動産:
@@ -40,7 +40,7 @@
<check_box label="太陽固定" name="fixed_sun_check"/>
<button label="?" name="fixed_sun_help"/>
<slider label="段階" name="sun_hour_slider"/>
- <check_box label="パブリック・アクセスを許可" name="externally_visible_check"/>
+ <check_box label="パブリックアクセスを許可" name="externally_visible_check"/>
<button label="?" name="externally_visible_help"/>
<check_box label="直接テレポートを許可" name="allow_direct_teleport"/>
<button label="?" name="allow_direct_teleport_help"/>
@@ -69,6 +69,6 @@
<button label="?" name="ban_resident_help"/>
<button label="追加..." name="add_banned_avatar_btn"/>
<button label="削除..." name="remove_banned_avatar_btn"/>
- <button label="メッセージを不動産へ送信..." name="message_estate_btn"/>
+ <button label="メッセージを不動産に送信..." name="message_estate_btn"/>
<button label="土地からユーザーを追い出す..." name="kick_user_from_estate_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml
index 00be5b6b03..168141ee77 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml
@@ -3,19 +3,19 @@
<text name="region_text_lbl">
地域:
</text>
- <text left="90" name="region_text">
+ <text left_delta="70" name="region_text">
未知
</text>
<text name="version_channel_text_lbl" width="100">
バージョン:
</text>
- <text left="90" name="version_channel_text">
+ <text left_delta="70" name="version_channel_text">
不明
</text>
<text name="region_type_lbl">
種類:
</text>
- <text name="region_type">
+ <text name="region_type" left_delta="70">
不明
</text>
<check_box label="土地整備をブロック" name="block_terraform_check"/>
@@ -28,9 +28,9 @@
<button label="?" name="restrict_pushobject_help"/>
<check_box label="土地の再販を許可" name="allow_land_resell_check"/>
<button label="?" name="land_resell_help"/>
- <check_box label="土地の統合/分割を許可" name="allow_parcel_changes_check"/>
+ <check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/>
<button label="?" name="parcel_changes_help"/>
- <check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を人に見せる"/>
+ <check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を表示するかどうかの設定です"/>
<button label="?" name="parcel_search_help"/>
<spinner label="アバター数上限" name="agent_limit_spin"/>
<button label="?" name="agent_limit_help"/>
@@ -40,14 +40,14 @@
区分:
</text>
<combo_box label="控えめ" name="access_combo">
- <combo_box.item label="Adult" name="Adult"/>
+ <combo_box.item label="アダルト" name="Adult"/>
<combo_box.item label="控えめ" name="Mature"/>
<combo_box.item label="一般" name="PG"/>
</combo_box>
<button label="?" name="access_help"/>
<button label="適用" name="apply_btn"/>
- <button label="ユーザー1人ホームテレポート" name="kick_btn"/>
- <button label="ユーザー全員ホームテレポート" name="kick_all_btn"/>
- <button label="メッセージを地域へ送信..." name="im_btn"/>
+ <button label="ユーザー1名をホームにテレポート" name="kick_btn"/>
+ <button label="ユーザー全員をホームにテレポート" name="kick_all_btn"/>
+ <button label="メッセージを地域に送信..." name="im_btn"/>
<button label="テレハブの管理..." name="manage_telehub_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
index 9673953d06..df7e5d9129 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="リージョン(地域)" name="General">
<text name="region_text_lbl">
- リージョン:
+ 地域:
</text>
- <text name="region_text">
+ <text name="region_text" left_delta="70">
不明
</text>
<text name="version_channel_text_lbl">
バージョン:
</text>
- <text name="version_channel_text">
+ <text name="version_channel_text" left_delta="70">
不明
</text>
<text name="region_type_lbl">
種類:
</text>
- <text name="region_type">
+ <text name="region_type" left_delta="70">
不明
</text>
<check_box label="地形編集をブロック" name="block_terraform_check"/>
@@ -24,9 +24,9 @@
<check_box label="プッシュを制限" name="restrict_pushobject"/>
<check_box label="土地の再販を許可" name="allow_land_resell_check"/>
<check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/>
- <check_box label="土地の検索教示をブロック" name="block_parcel_search_check" tool_tip="このリージョンとリージョン内の区画を検索結果に表示する"/>
- <spinner label="アバター数上限" name="agent_limit_spin"/>
- <spinner label="オブジェクトボーナス" name="object_bonus_spin"/>
+ <check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を表示するかどうかの設定です"/>
+ <spinner label="アバター数上限" name="agent_limit_spin" label_width="110" width="190"/>
+ <spinner label="物体ボーナス" name="object_bonus_spin" label_width="110" width="190"/>
<text label="レーティング区分" name="access_text">
レーティング区分:
</text>
@@ -38,6 +38,6 @@
<button label="適用" name="apply_btn"/>
<button label="ユーザー1名をホームにテレポート..." name="kick_btn"/>
<button label="ユーザー全員をホームにテレポート..." name="kick_all_btn"/>
- <button label="リージョンにメッセージを送信..." name="im_btn"/>
+ <button label="メッセージを地域に送信..." name="im_btn"/>
<button label="テレハブの管理..." name="manage_telehub_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml
index d77f9749c2..8df803b2dc 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml
@@ -18,13 +18,13 @@
<button label="?" name="fixed_sun_help" />
<slider label="段階" name="sun_hour_slider" />
<button label="適用" name="apply_btn" />
- <button label="RAW地形ダウンロード..." name="download_raw_btn"
- tool_tip="不動産オーナーのみ利用可能、管理者は利用不可" />
+ <button label="RAW 地形ダウンロード..." name="download_raw_btn"
+ tool_tip="不動産オーナーのみ利用可能、管理者は利用不可です" />
<button label="?" name="download_raw_help" />
- <button label="RAW地形アップロード..." name="upload_raw_btn"
- tool_tip="不動産オーナーのみ利用可能、管理者は利用不可" />
+ <button label="RAW 地形アップロード..." name="upload_raw_btn"
+ tool_tip="不動産オーナーのみ利用可能、管理者は利用不可です" />
<button label="?" name="upload_raw_help" />
<button label="地形の構築" name="bake_terrain_btn"
- tool_tip="現在の地形を上昇/下降範囲の中間点として設定" />
+ tool_tip="現在の地形を上昇・下降範囲の中間点として設定します" />
<button label="?" name="bake_terrain_help" />
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_texture.xml b/indra/newview/skins/default/xui/ja/panel_region_texture.xml
index ea784df127..526e6cdeb9 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_texture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="地面テクスチャー" name="Textures">
+<panel label="地面テクスチャ" name="Textures">
<text name="region_text_lbl">
地域:
</text>
@@ -7,7 +7,7 @@
未知
</text>
<text name="detail_texture_text">
- 地形のテクスチャー (512x512、24ビット .tgaファイルが必要)
+ 地形のテクスチャ (512x512、24ビット .tgaファイルが必要です)
</text>
<text name="height_text_lbl">
1(低)
@@ -19,10 +19,10 @@
3
</text>
<text name="height_text_lbl4">
- 4(高)
+ 4(高)
</text>
<text name="height_text_lbl5">
- テクスチャー標高範囲
+ テクスチャ標高範囲
</text>
<text name="height_text_lbl6">
南西
@@ -48,10 +48,11 @@
数値は上のテクスチャのブレンド範囲を示します。
</text>
<text name="height_text_lbl11">
- 計測単位はメートルで、「低」の値は、1番のテクスチャの高さの「最大値」です。「高」の値は、4番のテクスチャの高さの「最低値」です。
+ 計測単位はメートルで、「低」の値は、1番のテクスチャの高さの
+「最大値」です。「高」の値は、4番のテクスチャの高さの「最低値」です。
</text>
<text name="height_text_lbl12">
- そして「高」の値はテクスチャー#4の高さの下限となります。
+ そして「高」の値はテクスチャ#4の高さの下限となります。
</text>
<button label="適用" name="apply_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
index e8b5be63ae..494884c187 100644
--- a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
@@ -1,10 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="マイ アバター" name="script_limits_my_avatar_panel">
+ <text name="script_memory">
+ アバターのスクリプト使用
+ </text>
<text name="loading_text">
ローディング...
</text>
<scroll_list name="scripts_list">
- <scroll_list.columns label="サイズ (kb)" name="size"/>
+ <scroll_list.columns label="サイズ (kb)" name="size" width="90"/>
<scroll_list.columns label="URL" name="urls"/>
<scroll_list.columns label="オブジェクト名" name="name"/>
<scroll_list.columns label="場所" name="location"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
index fe0b44d8f4..d91eba9699 100644
--- a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
@@ -3,20 +3,18 @@
<text name="script_memory">
区画スクリプトメモリ
</text>
- <text name="parcels_listed">
- 区画所有者:
- </text>
- <text name="memory_used">
- 使用されたメモリ:
- </text>
+ <text name="parcels_listed"/>
+ <text name="memory_used"/>
<text name="loading_text">
ローディング...
</text>
<scroll_list name="scripts_list">
- <scroll_list.columns label="サイズ (kb)" name="size"/>
+ <scroll_list.columns label="サイズ (kb)" name="size" width="90"/>
+ <scroll_list.columns label="URL" name="urls"/>
<scroll_list.columns label="オブジェクト名" name="name"/>
- <scroll_list.columns label="オブジェクトの所有者" name="owner"/>
- <scroll_list.columns label="区画・位置" name="location"/>
+ <scroll_list.columns label="オブジェクトの所有者" name="owner" width="120"/>
+ <scroll_list.columns label="区画" name="parcel"/>
+ <scroll_list.columns label="場所" name="location"/>
</scroll_list>
<button label="リスト更新" name="refresh_list_btn"/>
<button label="ハイライト" name="highlight_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_side_tray.xml b/indra/newview/skins/default/xui/ja/panel_side_tray.xml
index ce5f0b940c..5364b8726f 100644
--- a/indra/newview/skins/default/xui/ja/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_side_tray.xml
@@ -2,26 +2,28 @@
<!-- Side tray cannot show background because it is always
partially on screen to hold tab buttons. -->
<side_tray name="sidebar">
- <sidetray_tab description="サイドバーを表示・非表示" name="sidebar_openclose"/>
- <sidetray_tab description="ホーム。" name="sidebar_home">
+ <sidetray_tab description="サイドバーを表示・非表示" name="sidebar_openclose" tab_title="サイドバーを開く・閉じる"/>
+ <sidetray_tab description="ホーム。" name="sidebar_home" tab_title="ホーム">
<panel label="ホーム" name="panel_home"/>
</sidetray_tab>
- <sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me">
- <panel label="ミー" name="panel_me"/>
+ <sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me" tab_title="マイ プロフィール">
+ <panel_container name="panel_container">
+ <panel label="ミー" name="panel_me"/>
+ </panel_container>
</sidetray_tab>
- <sidetray_tab description="フレンド、連絡先、近くの人を探してください。" name="sidebar_people">
+ <sidetray_tab description="フレンド、連絡先、近くの人を探してください。" name="sidebar_people" tab_title="人">
<panel_container name="panel_container">
<panel label="グループ情報" name="panel_group_info_sidetray"/>
<panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/>
</panel_container>
</sidetray_tab>
- <sidetray_tab description="行きたい場所、行ったことのある場所を探してください。" label="場所" name="sidebar_places">
+ <sidetray_tab description="行きたい場所、行ったことのある場所を探してください。" label="場所" name="sidebar_places" tab_title="場所">
<panel label="場所" name="panel_places"/>
</sidetray_tab>
- <sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory">
+ <sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory" tab_title="マイ 持ち物">
<panel label="持ち物を編集" name="sidepanel_inventory"/>
</sidetray_tab>
- <sidetray_tab description="あなたの容姿や現在の見た目を変更してください。" name="sidebar_appearance">
+ <sidetray_tab description="あなたの容姿や現在の見た目を変更してください。" name="sidebar_appearance" tab_title="マイ 容姿">
<panel label="容姿の編集" name="sidepanel_appearance"/>
</sidetray_tab>
</side_tray>
diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
index 063e584762..a9e13cfd9f 100644
--- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -21,10 +21,11 @@
<panel.string name="buycurrencylabel">
L$ [AMT]
</panel.string>
- <button label="" label_selected="" name="buycurrency" tool_tip="私の残高"/>
+ <button label="" label_selected="" name="buycurrency" tool_tip="所持金"/>
<button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/>
<text name="TimeText" tool_tip="現在時刻(太平洋)">
- 12:00 AM
+ 24:00 AM PST
</text>
+ <button name="media_toggle_btn" tool_tip="クリックしてメディアを切り替えます"/>
<button name="volume_btn" tool_tip="グローバル音量設定"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml
index 59fceca2db..0a63cedf10 100644
--- a/indra/newview/skins/default/xui/ja/role_actions.xml
+++ b/indra/newview/skins/default/xui/ja/role_actions.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<role_actions>
- <action_set description="これらの能力には、グループ・メンバーを追加、排除し、招待状なしに新メンバーの参加を認める権限が含まれます。" name="Membership">
+ <action_set description="これらの能力には、グループメンバーを追加、排除し、招待状なしに新メンバーの参加を認める権限が含まれます。" name="Membership">
<action description="このグループに人を招待" longdescription="「役割」セクションの「メンバー」タブ内にある「招待」ボタンを押して、このグループにメンバーを招待します。" name="member invite" value="1"/>
<action description="メンバーをこのグループから追放" longdescription="「役割」セクションの「メンバー」タブ内にある「追放」ボタンを押して、このグループからメンバーを追放します。 「オーナー」は、他の「オーナー」以外は誰でも追放できます。 「オーナー」ではない人が「全員(Everyone)」にしか役割がない場合、メンバーはグループから追放されることがあります。 「役割」からメンバーを削除するには、「役割からメンバーを削除」の能力が与えられている必要があります。" name="member eject" value="2"/>
<action description="「自由参加」と「入会費」の切り替え" longdescription="「自由参加」に切り替えると、招待されなくても新しいメンバーが入会できます。「入会費」は「一般」セクションで変更します。" name="member options" value="3"/>
@@ -8,29 +8,29 @@
<action_set description="これらの能力には、グループ内の役割を追加、削除、変更し、役割にメンバーを追加、削除し、さらに役割へ能力を割り当てる権限が含まれます。" name="Roles">
<action description="新しい役割を作成" longdescription="新しい「役割」は、「役割」セクション &gt; 「役割」タブで作成します。" name="role create" value="4"/>
<action description="役割を削除" longdescription="「役割」は、「役割」セクション &gt; 「役割」タブで削除できます。" name="role delete" value="5"/>
- <action description="「役割」の名前、肩書き、説明、メンバー公開の有無を変更" longdescription="「役割」の名前、肩書き、説明、メンバー公開の有無を変更します。 「役割」を選択後に、「役割」セクション &gt; 「役割」タブ の下で設定できます。" name="role properties" value="6"/>
+ <action description="「役割」の名前、タイトル、説明、メンバー公開の有無を変更" longdescription="「役割」の名前、タイトル、説明、メンバー公開の有無を変更します。 「役割」を選択後に、「役割」セクション &gt; 「役割」タブ の下で設定できます。" name="role properties" value="6"/>
<action description="メンバーを割り当て人の役割に割り当てる" longdescription="「割り当てられた役割」(「役割」セクション &gt; 「メンバー」タブ)のリストで、メンバーを「役割」に割り当てます。 この能力があるメンバーは、割り当てる人が既に所属する「役割」にのみメンバーを追加できます。" name="role assign member limited" value="7"/>
<action description="メンバーを任意の役割に割り当てる" longdescription="「割り当てられた役割」(「役割」セクション &gt; 「メンバー」タブ)のリストで、メンバーをどの「役割」にも割り当てることができます。 *警告* この「能力」がある「役割」を持つメンバーなら誰でも自分自身と、他の「オーナー」以外のメンバーを現在以上の権限のある「役割」に割り当てることができます。つまり、「オーナー」以外の人が「オーナー」に近い力を持つよう設定できることになります。 この「能力」を割り当てる前に、自分がしようとしていることをよく把握してください。" name="role assign member" value="8"/>
<action description="役割からメンバーを解除" longdescription="「割り当てられた役割」(「役割」セクション &gt; 「メンバー」タブ)のリストで、メンバーを「役割」から削除します。 「オーナー」は削除できません。" name="role remove member" value="9"/>
<action description="役割の能力の割り当てと解除" longdescription="「許可された能力」(「役割」セクション &gt; 「役割」タブ)のリストにある、各「役割」の「能力」を割り当てたり、削除します。 *警告* この「能力」がある「役割」を持つメンバーなら誰でも自分自身と、他の「オーナー」以外のメンバーをすべての「能力」」に割り当てることができます。つまり、「オーナー」以外の人が「オーナー」に近い権限を持つよう設定できることになります。 この「能力」を割り当てる前に、自分がしようとしていることをよく把握してください。" name="role change actions" value="10"/>
</action_set>
<action_set description="これらの能力には、グループの公開性や理念、記章の変更といった、グループのアイデンティティを修正する権限が含まれます。" name="Group Identity">
- <action description="理念、記章、「Web上で公開」、およびグループ情報内で公開のメンバーを変更。" longdescription="理念、記章、「検索に表示」の変更をします。 「一般」セクションで行えます。" name="group change identity" value="11"/>
+ <action description="理念、記章、「Web 上で公開」、およびグループ情報内で公開のメンバーを変更。" longdescription="理念、記章、「検索に表示」の変更をします。 「一般」セクションで行えます。" name="group change identity" value="11"/>
</action_set>
<action_set description="これらの「能力」には、このグループの所有地の譲渡、修正、販売をする権限があります。 「土地情報」ウィンドウを見るには、地面を右クリックして「土地情報」を選ぶか、ナビゲーションバーの「i」アイコンをクリックします。" name="Parcel Management">
<action description="グループ用の土地の譲渡と購入" longdescription="グループ用の土地の譲渡と購入を行います。 この操作には、土地情報画面 > 一般タブを使います。" name="land deed" value="12"/>
- <action description="Linden総督に土地を明け渡す" longdescription="Linden総督に土地を明け渡します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」でグループ所有の土地を放棄して、売り上げなしでLinden総督に明け渡すことができます。 この能力の割り当ては、そのことを理解した上で行ってください。" name="land release" value="13"/>
+ <action description="リンデン総督に土地を明け渡す" longdescription="リンデン総督に土地を明け渡します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」でグループ所有の土地を放棄して、売り上げなしでリンデン総督に明け渡すことができます。 この能力の割り当ては、そのことを理解した上で行ってください。" name="land release" value="13"/>
<action description="売り地情報の設定" longdescription="売り地情報を設定します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」タブでグループ所有の土地を自分の思いどおりに販売することができます。 この能力の割り当ては、そのことを理解した上で行ってください。" name="land set sale info" value="14"/>
<action description="区画の再分割と統合" longdescription="区画を再分割、統合します。 地面を右クリックして「地形を編集」を選び、マウスを土地の上でドラッグして範囲を選択します。 再分割するには、分割対象を選んで「再分割」をクリックします。 統合するには、2つ以上の隣接する区画を選んで「統合」をクリックします。" name="land divide join" value="15"/>
</action_set>
- <action_set description="これらの能力には、区画名、公開設定、検索ディレクトリへの登録、着地点ならびにTPルートのオプションを変更する権限が含まれます。" name="Parcel Identity">
+ <action_set description="これらの能力には、区画名、公開設定、検索ディレクトリへの登録、着地点ならびに TP ルートのオプションを変更する権限が含まれます。" name="Parcel Identity">
<action description="「場所検索に表示」を切り替えカテゴリを設定" longdescription="「場所検索に表示」に切り替え、「土地情報」 &gt; 「オプション」タブで区画のカテゴリを設定します。" name="land find places" value="17"/>
<action description="区画名、説明、「場所検索に表示」の設定を変更" longdescription="区画名、説明、「場所検索に表示」の設定を変更します。 「土地情報」 &gt; 「オプション」タブで行います。" name="land change identity" value="18"/>
- <action description="着地点およびテレポート・ルートを設定" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で着地点を設定することにより外部からのテレポートの到着位置を指定できると共に、テレポート・ルートを設定して細かく制御することができます。 この操作は、「土地情報」>「オプション」タブで行います。" name="land set landing point" value="19"/>
+ <action description="着地点およびテレポートルートを設定" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で着地点を設定することにより外部からのテレポートの到着位置を指定できると共に、テレポートルートを設定して細かく制御することができます。 この操作は、「土地情報」>「オプション」タブで行います。" name="land set landing point" value="19"/>
</action_set>
<action_set description="これらの能力には、「オブジェクトを作成」、「地形を編集」、音楽とメディアの設定など、区画のオプションに関連する権限が含まれます。" name="Parcel Settings">
- <action description="音楽とメディアの設定を変更" longdescription="ストリーミング・ミュージックと動画の設定を変更するには、「土地情報」 > 「メディア」タブを使います。" name="land change media" value="20"/>
- <action description="「地形を編集」に切り替え" longdescription="「地形を編集」に切り替えます。 *警告* 「土地情報」>「オプション」>「地形を編集」の順で進むと、誰でもあなたの土地の形の整備や、リンデンプラントの設置、移動ができます。 この能力を割り振る前に、このことをよく理解しておいてください。 「土地情報」>「オプション」タブから「地形を編集」に切り替えられます。" name="land edit" value="21"/>
+ <action description="音楽とメディアの設定を変更" longdescription="ストリーミングミュージックと動画の設定を変更するには、「土地情報」 > 「メディア」タブを使います。" name="land change media" value="20"/>
+ <action description="「地形を編集」に切り替え" longdescription="「地形を編集」に切り替えます。 *警告* 「土地情報」>「オプション」>「地形を編集」の順で進むと、誰でもあなたの土地の形の整備や、リンデン製の樹木の設置、移動ができます。 この能力を割り振る前に、このことをよく理解しておいてください。 「土地情報」>「オプション」タブから「地形を編集」に切り替えられます。" name="land edit" value="21"/>
<action description="「土地情報」>「オプション」タブ内のさまざまな設定を切り替え" longdescription="「安全(ダメージなし)」、「飛行」を切り替え、住人に以下を許可します: グループ所有地の「土地情報」 &gt; 「オプション」タブ内の、「地形を編集」、「制作」、「ランドマークの作成」、「スクリプトの実行」。" name="land options" value="22"/>
</action_set>
<action_set description="これらの能力には、グループ所有の区画に関する規制を迂回することを、メンバーに許可する権限が含まれます。" name="Parcel Powers">
@@ -41,24 +41,24 @@
<action description="グループの土地への「ホーム設定」を許可" longdescription="この「役割」を持つメンバーは、このグループに譲渡された区画上で「世界」メニュー &gt; ランドマーク &gt; 現在地をホームに設定 を使用して、ホームの設定を行うことができます。" name="land allow set home" value="28"/>
</action_set>
<action_set description="これらの能力には、住人の凍結や追放を含む、グループ所有の区画へのアクセスを許可、制限する権限が含まれます。" name="Parcel Access">
- <action description="区画アクセス・リストの管理" longdescription="区画アクセス・リストの管理は、「土地情報」>「アクセス」タブで行います。" name="land manage allowed" value="29"/>
+ <action description="区画アクセスリストの管理" longdescription="区画アクセス・リストの管理は、「土地情報」>「アクセス」タブで行います。" name="land manage allowed" value="29"/>
<action description="区画禁止リストの管理" longdescription="「土地情報」 &gt; 「アクセス」タブの、区画の禁止リストの管理ができます。" name="land manage banned" value="30"/>
<action description="「入場許可を販売」の設定を変更" longdescription="「土地情報」 &gt; 「アクセス」タブで、区画の「入場許可を販売」の設定を変更します。" name="land manage passes" value="31"/>
- <action description="区画上の住人の追放と凍結" longdescription="この「能力」を持つ「役割」のメンバーは、グループ所有地にいて欲しくない住人を右クリックし、「追放」や「フリーズ」を選んで対応できます。" name="land admin" value="32"/>
+ <action description="区画上の住人の追放とフリーズ" longdescription="この「能力」を持つ「役割」のメンバーは、グループ所有地にいて欲しくない住人を右クリックし、「追放」や「フリーズ」を選んで対応できます。" name="land admin" value="32"/>
</action_set>
<action_set description="これらの能力には、オブジェクトの返却、リンデンプラントの設置や移動を、メンバーに許可する権限が含まれます。 これはメンバーがゴミ処理や景観作成をする際に便利ですが、返却したオブジェクトは元に戻せないので、注意して行いましょう。" name="Parcel Content">
<action description="グループ所有オブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ所有のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return group owned" value="48"/>
<action description="グループに設定されているオブジェクトを返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループに設定されているオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return group set" value="33"/>
- <action description="非グループ・オブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ以外のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return non group" value="34"/>
- <action description="Linden製の植物を使用して景観作成" longdescription="リンデン製の樹木、植物、草を植える、景観づくりの能力です。 これらの植物はあなたの持ち物内の「ライブラリ」 &gt; 「オブジェクト」フォルダにあります。「制作」メニューで作成することもできます。" name="land gardening" value="35"/>
+ <action description="非グループオブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ以外のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return non group" value="34"/>
+ <action description="リンデン製の植物を使用して景観作成" longdescription="リンデン製の樹木、植物、草を植える、景観づくりの能力です。 これらの植物はあなたの持ち物内の「ライブラリ」 &gt; 「オブジェクト」フォルダにあります。「制作」メニューで作成することもできます。" name="land gardening" value="35"/>
</action_set>
<action_set description="これらの「能力」には、グループ所有のオブジェクトを譲渡、修正、販売する権限が含まれます。 変更は「制作ツール」 &gt; 「一般」タブで行います。 オブジェクトを右クリックして「編集」を開くと設定内容を確認できます。" name="Object Management">
<action description="グループにオブジェクトを譲渡" longdescription="「制作ツール」 &gt; 「一般」タブで、オブジェクトをグループに譲渡します。" name="object deed" value="36"/>
<action description="グループ所有オブジェクトの操作(移動、コピー、修正)" longdescription="「制作ツール」 &gt; 「一般」タブで、グループ所有のオブジェクトを操作(移動、コピー、修正)します。" name="object manipulate" value="38"/>
<action description="グループ所有オブジェクトを販売可能に設定" longdescription="「制作ツール」 &gt; 「一般」タブで、グループ所有のオブジェクトを販売対象に設定します。" name="object set sale" value="39"/>
</action_set>
- <action_set description="これらの能力には、メンバーに、グループの負債の支払いと利子受け取りを要求する権限、グループ口座履歴へのアクセスを制限する権限が含まれます。" name="Accounting">
- <action description="グループ負債の返済とグループ配当の受領" longdescription="この能力を持つ役割のメンバーについては、グループ負債の支払いとグループ配当の受け取りが自動的に行われます。 つまり、これらのメンバーは、毎日配当されるグループ所有の土地の売り上げ金の一部を受け取ると共に、区画の広告費などを負担することになります。" name="accounting accountable" value="40"/>
+ <action_set description="これらの能力には、メンバーに、グループの負債の支払いと利子受け取りを要求する権限、グループ口座履歴へのアクセスを制限する権限が含まれます。" name="Accounting"><action description="グループ負債の返済とグループ配当の受領" longdescription="この能力を持つ役割のメンバーについては、グループ負債の支払いとグループ配当の受け取りが自動的に行われます。
+ つまり、これらのメンバーは、毎日配当されるグループ所有地の売り上げ金の一部を受け取ると共に、区画の広告費などを負担することになります。" name="accounting accountable" value="40"/>
</action_set>
<action_set description="これらの能力には、グループ通知の送信、受信、表示をメンバーに許可する権限が含まれます。" name="Notices">
<action description="通知を送信" longdescription="この「能力」を持つ「役割」のメンバーは、「グループ」 &gt; 「通知」セクションから通知を送信できます。" name="notices send" value="42"/>
@@ -68,9 +68,9 @@
<action description="提案を作成" longdescription="この能力を持つ役割のメンバーは、投票の対象となる問題提起を「グループ情報」>「問題提起」タブ上で作成することができます。" name="proposal start" value="44"/>
<action description="問題提起に投票する" longdescription="この能力を持つ役割のメンバーは、グループ情報>提案タブで提案に投票することができます。" name="proposal vote" value="45"/>
</action_set>
- <action_set description=" これらのアビリティには、グループ・チャット・セッションやグループ・ボイス・チャットへのアクセスの許可や制限の権限が含まれます。 " name="Chat">
- <action description="グループ・チャットに参加する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・チャット・セッションにテキストおよびボイスで参加できます。 " name="join group chat"/>
- <action description="グループ・ボイス・チャットに参加する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションに参加できます。 注: ボイス・チャット・セッションにアクセスするには、グループ・チャットに参加するアビリティが必要です。 " name="join voice chat"/>
- <action description="グループ・チャットを管理する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションおよびグループ・テキスト・チャット・セッションへのアクセスや参加をコントロールすることができます。 " name="moderate group chat"/>
+ <action_set description=" これらの能力には、グループチャットセッションやグループボイスチャットへのアクセスの許可や制限の権限が含まれます。 " name="Chat">
+ <action description="グループチャットに参加する" longdescription=" この能力を持つ役割のメンバーは、グループチャットセッションにテキストおよびボイスで参加できます。 " name="join group chat"/>
+ <action description="グループボイスチャットに参加する" longdescription=" この能力を持つ役割のメンバーは、グループボイスチャットセッションに参加できます。 注: ボイスチャットセッションにアクセスするには、グループチャットに参加する能力が必要です。 " name="join voice chat"/>
+ <action description="グループチャットを管理する" longdescription=" この能力を持つ役割のメンバーは、グループボイスチャットセッションおよびグループテキストチャットセッションへのアクセスや参加をコントロールすることができます。 " name="moderate group chat"/>
</action_set>
</role_actions>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
index c2d2af5346..ab00953f1a 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
@@ -37,7 +37,7 @@
Mixed Sale
</panel.string>
<text name="title" value="オブジェクトのプロフィール"/>
- <text name="where" value="(ワールド内)"/>
+ <text name="where" value="(インワールド)"/>
<panel label="">
<text name="Name:">
名前:
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 288ad4bc1d..9b272b2fe8 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -38,16 +38,16 @@
認証しています...
</string>
<string name="LoginMaintenance">
- アカウント・メンテナンスを実行しています...
+ アカウントのメンテナンスを実行しています...
</string>
<string name="LoginAttempt">
- 前回のログインに失敗しました。 ログイン中です([NUMBER]回目)
+ 前回のログインに失敗しました。 ログイン中です([NUMBER] 回目)
</string>
<string name="LoginPrecaching">
- ワールドをロードしています...
+ ワールドを読み込んでいます...
</string>
<string name="LoginInitializingBrowser">
- 埋め込みWebブラウザを初期化しています...
+ 内蔵 Web ブラウザを初期化しています...
</string>
<string name="LoginInitializingMultimedia">
マルチメディアを初期化しています...
@@ -56,7 +56,7 @@
フォントをローディング中...
</string>
<string name="LoginVerifyingCache">
- キャッシュ・ファイルを検証しています(所要時間は60~90秒)...
+ キャッシュファイルを検証しています(所要時間は 60 ~ 90 秒)...
</string>
<string name="LoginProcessingResponse">
応答を処理しています...
@@ -68,22 +68,22 @@
画像をデコードしています...
</string>
<string name="LoginInitializingQuicktime">
- QuickTimeを初期化しています...
+ QuickTime を初期化しています...
</string>
<string name="LoginQuicktimeNotFound">
- QuickTimeが見つかりません。初期化に失敗しました。
+ QuickTime が見つかりません。初期化に失敗しました。
</string>
<string name="LoginQuicktimeOK">
- QuickTimeが正常に初期化されました。
+ QuickTime が正常に初期化されました。
</string>
<string name="LoginWaitingForRegionHandshake">
- 地域のハンドシェイクを待っています...
+ リージョンのハンドシェイクを待っています...
</string>
<string name="LoginConnectingToRegion">
- 地域に接続しています...
+ リージョンに接続しています...
</string>
<string name="LoginDownloadingClothing">
- 服をダウンロードしています...
+ 衣類をダウンロードしています...
</string>
<string name="LoginFailedNoNetwork">
ネットワークエラー: 接続を確立できませんでした。お使いのネットワーク接続をご確認ください。
@@ -101,19 +101,19 @@
</string>
<string name="TooltipNoName">
- (名前なし)
+ (名前なし)
</string>
<string name="TooltipOwner">
- オーナー:
+ 所有者:
</string>
<string name="TooltipPublic">
公共
</string>
<string name="TooltipIsGroup">
- (グループ)
+ (グループ)
</string>
<string name="TooltipForSaleL$">
- 売り出し中:L$[AMOUNT]
+ 売り出し中:L$ [AMOUNT]
</string>
<string name="TooltipFlagGroupBuild">
グループ作成
@@ -131,7 +131,7 @@
飛行禁止
</string>
<string name="TooltipFlagGroupScripts">
- グループ・スクリプト
+ グループスクリプト
</string>
<string name="TooltipFlagNoScripts">
スクリプトなし
@@ -140,42 +140,42 @@
土地:
</string>
<string name="TooltipMustSingleDrop">
- 1つのアイテムのみをここにドラッグできます
+ アイテムは 1 つだけここにドラッグできます
</string>
<string name="TooltipHttpUrl">
- クリックしてこのWebページを見る
+ クリックしてこの Web ページを見ます
</string>
<string name="TooltipSLURL">
- クリックしてこの場所の情報を見る
+ クリックしてこの場所の情報を見ます
</string>
<string name="TooltipAgentUrl">
- クリックしてこの住人のプロフィールを見る
+ クリックしてこの住人のプロフィールを見ます
</string>
<string name="TooltipGroupUrl">
- クリックしてこのグループの説明文を見る
+ クリックしてこのグループの説明文を見ます
</string>
<string name="TooltipEventUrl">
- クリックしてこのグループの説明文を見る
+ クリックしてこのグループの説明文を見ます
</string>
<string name="TooltipClassifiedUrl">
- クリックしてこのクラシファイド広告を見る
+ クリックしてこのクラシファイド広告を見ます
</string>
<string name="TooltipParcelUrl">
- クリックしてこの区画の説明文を見る
+ クリックしてこの区画の説明文を見ます
</string>
<string name="TooltipTeleportUrl">
- クリックしてこの場所にテレポートする
+ クリックしてこの場所にテレポートします
</string>
<string name="TooltipObjectIMUrl">
- クリックしてこのオブジェクトの説明文を見る
+ クリックしてこのオブジェクトの説明文を見ます
</string>
<string name="TooltipMapUrl">
- クリックしてこの場所を地図に表示する
+ クリックしてこの場所を地図に表示します
</string>
<string name="TooltipSLAPP">
- クリックして secondlife:// コマンドを出す
+ クリックして secondlife:// コマンドを出します
</string>
- <string name="CurrentURL" value=" 現在のURL: [CurrentURL]"/>
+ <string name="CurrentURL" value=" 現在の URL: [CurrentURL]"/>
<string name="SLurlLabelTeleport">
テレポート
</string>
@@ -227,9 +227,6 @@
<string name="AvatarNameMultiple">
(複数)
</string>
- <string name="AvatarNameHippos">
- (hippos)
- </string>
<string name="GroupNameNone">
(なし)
</string>
@@ -339,7 +336,7 @@
リンク
</string>
<string name="AvatarEditingAppearance">
- (容姿の編集)
+ (容姿の編集中)
</string>
<string name="AvatarAway">
一時退席中
@@ -387,28 +384,28 @@
泣く
</string>
<string name="anim_dance1">
- ダンス1
+ ダンス 1
</string>
<string name="anim_dance2">
- ダンス2
+ ダンス 2
</string>
<string name="anim_dance3">
- ダンス3
+ ダンス 3
</string>
<string name="anim_dance4">
- ダンス4
+ ダンス 4
</string>
<string name="anim_dance5">
- ダンス5
+ ダンス 5
</string>
<string name="anim_dance6">
- ダンス6
+ ダンス 6
</string>
<string name="anim_dance7">
- ダンス7
+ ダンス 7
</string>
<string name="anim_dance8">
- ダンス8
+ ダンス 8
</string>
<string name="anim_express_disdain">
侮蔑
@@ -588,16 +585,19 @@
接続しました
</string>
<string name="unavailable">
- あなたの現在のロケーションでは、ボイスを利用できません。
+ 現在地では、ボイスを利用できません。
</string>
<string name="hang_up">
インワールドボイスチャットの通話が切断されました
</string>
+ <string name="reconnect_nearby">
+ 「近くのボイスチャット」に再接続されます
+ </string>
<string name="ScriptQuestionCautionChatGranted">
- [REGIONNAME]の[REGIONPOS]という場所にある「[OWNERNAME]」所有の「[OBJECTNAME]」というオブジェクトは、次の権限を許可しました: [PERMISSIONS]
+ [REGIONNAME] の [REGIONPOS] という場所にある、「 [OWNERNAME] 」が所有する「 [OBJECTNAME] 」というオブジェクトは、次の権限を許可しました: [PERMISSIONS]
</string>
<string name="ScriptQuestionCautionChatDenied">
- [REGIONNAME]の[REGIONPOS]という場所にある「[OWNERNAME]」所有の「[OBJECTNAME]」というオブジェクトは、次の権限を拒否しました: [PERMISSIONS]
+ [REGIONNAME] の [REGIONPOS] という場所にある、「 [OWNERNAME] 」が所有する「 [OBJECTNAME] 」というオブジェクトは、次の権限を拒否しました: [PERMISSIONS]
</string>
<string name="ScriptTakeMoney">
リンデンドル(L$)を支払う
@@ -642,7 +642,7 @@
控えめ
</string>
<string name="SIM_ACCESS_ADULT">
- Adult
+ アダルト
</string>
<string name="SIM_ACCESS_DOWN">
オフライン
@@ -672,22 +672,22 @@
ロード
</string>
<string name="targa_image_files">
- Targa画像
+ Targa 画像
</string>
<string name="bitmap_image_files">
ビットマップ画像
</string>
<string name="avi_movie_file">
- AVIムービーファイル
+ AVI ムービーファイル
</string>
<string name="xaf_animation_file">
- XAFアニメーションファイル
+ XAF アニメーションファイル
</string>
<string name="xml_file">
- XMLファイル
+ XML ファイル
</string>
<string name="dot_raw_file">
- RAWファイル
+ RAW ファイル
</string>
<string name="compressed_image_files">
圧縮画像
@@ -786,13 +786,13 @@
添付アイテムを保存
</string>
<string name="TeleportOffer">
- テレポートを渡す
+ テレポートを送る
</string>
<string name="StartUpNotifications">
不在中に新しい通知が届きました。
</string>
<string name="OverflowInfoChannelString">
- You have %d more notification
+ あなたにはさらに %d 通の通知があります
</string>
<string name="BodyPartsRightArm">
右腕
@@ -822,18 +822,18 @@
</string>
<string name="LeaveMouselook">
- ESC キーを押してワールドビューに戻る
+ ESC キーを押してワールドビューに戻ります
</string>
<string name="InventoryNoMatchingItems">
- 一致するアイテムが持ち物にありませんでした
+ 一致するアイテムが持ち物にありませんでした。 [secondlife:///app/search/groups 「検索」] をお試しください。
</string>
<string name="FavoritesNoMatchingItems">
ここにランドマークをドラッグして、お気に入りに追加します。
</string>
<string name="InventoryNoTexture">
- 持ち物内にこのテクスチャのコピーがありません
+ 「持ち物」内にこのテクスチャのコピーがありません
</string>
- <string name="no_transfer" value=" (再販/プレゼント不可)"/>
+ <string name="no_transfer" value=" (再販・プレゼント不可)"/>
<string name="no_modify" value=" (編集不可)"/>
<string name="no_copy" value=" (コピー不可)"/>
<string name="worn" value=" (着用中)"/>
@@ -874,7 +874,7 @@
<string name="No Filters" value="いいえ "/>
<string name="Since Logoff" value=" - ログオフ以来"/>
<string name="InvFolder My Inventory">
- マイ 持ち物
+ 持ち物
</string>
<string name="InvFolder My Favorites">
お気に入り
@@ -910,7 +910,7 @@
新規フォルダ
</string>
<string name="InvFolder Inventory">
- インベントリ
+ 持ち物
</string>
<string name="InvFolder Uncompressed Images">
圧縮されていない画像
@@ -1256,7 +1256,7 @@
(不明)
</string>
<string name="SummaryForTheWeek" value="今週のまとめ。開始日は"/>
- <string name="NextStipendDay" value="次回のお小遣い支給日は"/>
+ <string name="NextStipendDay" value="です。次回のお小遣い支給日:"/>
<string name="GroupIndividualShare" value=" グループ 個人の割り当て"/>
<string name="Balance">
残高
@@ -1316,14 +1316,17 @@
区画のスクリプトURL
</string>
<string name="ScriptLimitsURLsUsed">
- 使用されたURL: [MAX] 中 [COUNT] :[AVAILABLE] 利用可
+ 使用された URL: [MAX] 中 [COUNT] :[AVAILABLE] 利用可
</string>
<string name="ScriptLimitsURLsUsedSimple">
- 使用されたURL: [COUNT]
+ 使用された URL: [COUNT]
</string>
<string name="ScriptLimitsRequestError">
情報のリクエスト中にエラーが発生しました
</string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ 区画が選択されていません。
+ </string>
<string name="ScriptLimitsRequestWrongRegion">
エラー: スクリプト情報は現在地のみ取得できます
</string>
@@ -1430,13 +1433,13 @@
HUD(中央 2)
</string>
<string name="ATTACH_HUD_TOP_RIGHT">
- HUD右上
+ HUD(右上)
</string>
<string name="ATTACH_HUD_TOP_CENTER">
HUD(上・中央)
</string>
<string name="ATTACH_HUD_TOP_LEFT">
- HUD 左上
+ HUD(左上)
</string>
<string name="ATTACH_HUD_CENTER_1">
HUD(中央 1)
@@ -1501,7 +1504,7 @@
(掲載後更新)
</string>
<string name="NoPicksClassifiedsText">
- ここにはピック・クラシファイド広告はありません。
+ ピックやクラシファイド広告を作成していません。 作成するには、下にある「プラス」ボタンをクリックします。
</string>
<string name="PicksClassifiedsLoadingText">
ローディング...
@@ -1679,7 +1682,7 @@
土地のレンタル
</string>
<string name="Property Rental">
- 建物のレンタル
+ プロパティのレンタル
</string>
<string name="Special Attraction">
特別アトラクション
@@ -1706,7 +1709,7 @@
Linden 所在地
</string>
<string name="Adult">
- Adult
+ アダルト
</string>
<string name="Arts&amp;Culture">
アートとカルチャー
@@ -1849,13 +1852,13 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
ピクセル形式情報が見つかりません
</string>
<string name="MBTrueColorWindow">
- [APP_NAME] を実行するには、True Color(32ビット)が必要です。
+ [APP_NAME] を実行するには、True Color (32ビット)が必要です。
お使いのコンピューターの「コントロールパネル」>「画面」>「設定」に行き、「最高 (32 ビット)」に設定してください。
</string>
<string name="MBAlpha">
[APP_NAME] は 8 ビットのアルファチャンネルを取得できないため実行できません。 通常ビデオカードのドライバの問題で起こります。
お使いのコンピューターに最新のビデオカードドライバがインストールされているかご確認ください。
-また、「コントロールパネル」>「画面」>「設定」内で、モニターが「最高 (32ビット)」に設定されていることもご確認ください。
+また、「コントロールパネル」>「画面」>「設定」内で、モニターが「最高 (32 ビット)」に設定されていることもご確認ください。
このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
</string>
<string name="MBPixelFmtSetErr">
@@ -1868,7 +1871,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
GL レンダーコンテキストをアクティベートできません
</string>
<string name="MBVideoDrvErr">
- お使いのコンピューターのビデオカードドライバが正常にインストールできなかった、または古いかサポート対象外のため、[APP_NAME] は実行できません。 最新のビデオカードドライバがインストールされているのを確認し、されている場合は再インストールをお試しください。
+ お使いのコンピューターのビデオカードドライバが正常にインストールできなかった、または古いかサポート対象外のため、[APP_NAME] は実行できません。 最新のビデオカードドライバがインストールされているのを確認し、されている場合は再インストールをお試しください。
このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
</string>
@@ -3190,7 +3193,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
現在地の詳細を見る
</string>
<string name="LocationCtrlComboBtnTooltip">
- マイロケーション履歴
+ マイ ロケーション履歴
</string>
<string name="LocationCtrlForSaleTooltip">
この土地を購入
@@ -3247,7 +3250,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
-- インスタントメッセージの保存開始 --
</string>
<string name="IM_typing_start_string">
- [NAME] は入力中...
+ [NAME] は入力中です...
</string>
<string name="Unnamed">
(名前なし)
@@ -3292,7 +3295,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
アドホックコンファレンス
</string>
<string name="inventory_item_offered-im">
- 持ち物アイテムが送られてきました
+ 持ち物アイテムを送りました
</string>
<string name="share_alert">
持ち物からここにアイテムをドラッグします
@@ -3301,10 +3304,10 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
このセッションにいるユーザーはあなただけです。
</string>
<string name="offline_message">
- [FIRST] [LAST]はオフラインです。
+ [FIRST] [LAST] はオフラインです。
</string>
<string name="invite_message">
- このボイスチャットに応答/接続する場合は、[BUTTON NAME]をクリックしてください。
+ このボイスチャットに応答・接続する場合は、[BUTTON NAME] をクリックしてください。
</string>
<string name="muted_message">
この住人をブロックしています。 メッセージを送ると、ブロックが自動的に解除されます。
@@ -3328,7 +3331,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
あなたにはその能力がありません。
</string>
<string name="not_a_mod_error">
- あなたはセッション・モデレータではありません。
+ あなたはセッションモデレータではありません。
</string>
<string name="muted">
グループのモデレーターが、あなたのテキストチャットを禁止しました。
@@ -3337,13 +3340,13 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
グループモデレータがあなたのテキストチャットを無効化しました
</string>
<string name="add_session_event">
- [RECIPIENT] とのチャット・セッションにユーザーを追加することができません
+ [RECIPIENT] とのチャットセッションにユーザーを追加することができません
</string>
<string name="message">
[RECIPIENT] とのチャットセッションに、メッセージを送信することができません。
</string>
<string name="message_session_event">
- [RECIPIENT] とのチャット・セッションにメッセージを送ることができません
+ [RECIPIENT] とのチャットセッションにメッセージを送ることができません
</string>
<string name="mute">
モデレート中にエラーが発生しました。
@@ -3355,7 +3358,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
あなたはグループから削除されました。
</string>
<string name="close_on_no_ability">
- このチャット・セッションを継続することはできません
+ このチャットセッションを継続することはできません
</string>
<string name="unread_chat_single">
[SOURCES] は何か新しいことを言いました。
diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml
index 29a5aca90d..29a5aca90d 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_about.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml
index d456ea26b4..d456ea26b4 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
index 0524b8ade3..0524b8ade3 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_auction.xml b/indra/newview/skins/default/xui/pl/floater_auction.xml
index 37e35ed1e9..37e35ed1e9 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_auction.xml
+++ b/indra/newview/skins/default/xui/pl/floater_auction.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml
index 8c09f7294c..8c09f7294c 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
index dce2330807..dce2330807 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_build_options.xml b/indra/newview/skins/default/xui/pl/floater_build_options.xml
index f538be218c..f538be218c 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/pl/floater_build_options.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_bumps.xml b/indra/newview/skins/default/xui/pl/floater_bumps.xml
index 10f9d73284..10f9d73284 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_bumps.xml
+++ b/indra/newview/skins/default/xui/pl/floater_bumps.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml
index ebe1c9dfd8..ebe1c9dfd8 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
index 5e59482883..5e59482883 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_land.xml b/indra/newview/skins/default/xui/pl/floater_buy_land.xml
index 648888828b..648888828b 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_land.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_object.xml b/indra/newview/skins/default/xui/pl/floater_buy_object.xml
index bad7982228..bad7982228 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_object.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml
index 5957018144..5957018144 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_camera.xml
+++ b/indra/newview/skins/default/xui/pl/floater_camera.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_choose_group.xml b/indra/newview/skins/default/xui/pl/floater_choose_group.xml
index 72b6617094..72b6617094 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_choose_group.xml
+++ b/indra/newview/skins/default/xui/pl/floater_choose_group.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_color_picker.xml b/indra/newview/skins/default/xui/pl/floater_color_picker.xml
index 904a2cc270..904a2cc270 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/pl/floater_color_picker.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_critical.xml b/indra/newview/skins/default/xui/pl/floater_critical.xml
index 8221a4e1bd..8221a4e1bd 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_critical.xml
+++ b/indra/newview/skins/default/xui/pl/floater_critical.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_customize.xml b/indra/newview/skins/default/xui/pl/floater_customize.xml
index 0c01d15faf..0c01d15faf 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_customize.xml
+++ b/indra/newview/skins/default/xui/pl/floater_customize.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
index 6671bb853e..6671bb853e 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_device_settings.xml b/indra/newview/skins/default/xui/pl/floater_device_settings.xml
index e79478731d..e79478731d 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_device_settings.xml
+++ b/indra/newview/skins/default/xui/pl/floater_device_settings.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_env_settings.xml b/indra/newview/skins/default/xui/pl/floater_env_settings.xml
index e197d94b27..e197d94b27 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/pl/floater_env_settings.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_gesture.xml b/indra/newview/skins/default/xui/pl/floater_gesture.xml
index 4685eb6afe..4685eb6afe 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_gesture.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_god_tools.xml b/indra/newview/skins/default/xui/pl/floater_god_tools.xml
index a3ccffac03..a3ccffac03 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_god_tools.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml
index 39695a67b6..39695a67b6 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_hud.xml b/indra/newview/skins/default/xui/pl/floater_hud.xml
index ff2d702132..ff2d702132 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_hud.xml
+++ b/indra/newview/skins/default/xui/pl/floater_hud.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_im.xml b/indra/newview/skins/default/xui/pl/floater_im.xml
index 67c9d13496..67c9d13496 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_im.xml
+++ b/indra/newview/skins/default/xui/pl/floater_im.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_image_preview.xml b/indra/newview/skins/default/xui/pl/floater_image_preview.xml
index 27f898a66b..27f898a66b 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_image_preview.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_inspect.xml b/indra/newview/skins/default/xui/pl/floater_inspect.xml
index c98e0541d8..c98e0541d8 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inspect.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory.xml b/indra/newview/skins/default/xui/pl/floater_inventory.xml
index 157be76c4d..157be76c4d 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inventory.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml
index 665172dd49..665172dd49 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml
index 9204262304..9204262304 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_joystick.xml b/indra/newview/skins/default/xui/pl/floater_joystick.xml
index 22ac458b85..22ac458b85 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/pl/floater_joystick.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_lagmeter.xml b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml
index 69d563bdba..69d563bdba 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml
index 13e6a8b16d..13e6a8b16d 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml
index 8120ff8c77..8120ff8c77 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml
index 5601aa4464..5601aa4464 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_media_browser.xml b/indra/newview/skins/default/xui/pl/floater_media_browser.xml
index 74210c75e5..74210c75e5 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/pl/floater_media_browser.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml
index 88a878af72..88a878af72 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_moveview.xml b/indra/newview/skins/default/xui/pl/floater_moveview.xml
index e28cfd589d..e28cfd589d 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_moveview.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_mute_object.xml b/indra/newview/skins/default/xui/pl/floater_mute_object.xml
index 8055617371..8055617371 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_mute_object.xml
+++ b/indra/newview/skins/default/xui/pl/floater_mute_object.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_my_friends.xml b/indra/newview/skins/default/xui/pl/floater_my_friends.xml
index 0bcf6ba4d5..0bcf6ba4d5 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_my_friends.xml
+++ b/indra/newview/skins/default/xui/pl/floater_my_friends.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_openobject.xml b/indra/newview/skins/default/xui/pl/floater_openobject.xml
index fbbed0f11d..fbbed0f11d 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/pl/floater_openobject.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_pay.xml b/indra/newview/skins/default/xui/pl/floater_pay.xml
index dfb1b6616c..dfb1b6616c 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_pay.xml
+++ b/indra/newview/skins/default/xui/pl/floater_pay.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_pay_object.xml b/indra/newview/skins/default/xui/pl/floater_pay_object.xml
index 376f517aaa..376f517aaa 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/pl/floater_pay_object.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml
index 6bd91f97b1..6bd91f97b1 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_post_process.xml
+++ b/indra/newview/skins/default/xui/pl/floater_post_process.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_postcard.xml b/indra/newview/skins/default/xui/pl/floater_postcard.xml
index 8f4018924d..8f4018924d 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/pl/floater_postcard.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_preferences.xml b/indra/newview/skins/default/xui/pl/floater_preferences.xml
index 2be663283f..2be663283f 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preferences.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml
index 7139c470a4..7139c470a4 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_classified.xml b/indra/newview/skins/default/xui/pl/floater_preview_classified.xml
index eae9ba2690..eae9ba2690 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_classified.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_classified.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_event.xml b/indra/newview/skins/default/xui/pl/floater_preview_event.xml
index 9fc0ff4da6..9fc0ff4da6 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_event.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
index 1c7a3f6631..1c7a3f6631 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml
index b9f80490ab..b9f80490ab 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
index 656b9bec38..656b9bec38 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml
index 8bcd800411..8bcd800411 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_region_info.xml b/indra/newview/skins/default/xui/pl/floater_region_info.xml
index ca3c1391db..ca3c1391db 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_region_info.xml
+++ b/indra/newview/skins/default/xui/pl/floater_region_info.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
index 18ce1b230f..18ce1b230f 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_script_debug.xml b/indra/newview/skins/default/xui/pl/floater_script_debug.xml
index 714a600262..714a600262 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_script_debug.xml
+++ b/indra/newview/skins/default/xui/pl/floater_script_debug.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_script_preview.xml b/indra/newview/skins/default/xui/pl/floater_script_preview.xml
index e3e72e15a3..e3e72e15a3 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_script_preview.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_script_queue.xml b/indra/newview/skins/default/xui/pl/floater_script_queue.xml
index 7655f5fcac..7655f5fcac 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/pl/floater_script_queue.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_script_search.xml b/indra/newview/skins/default/xui/pl/floater_script_search.xml
index 255ab4264c..255ab4264c 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/pl/floater_script_search.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_select_key.xml b/indra/newview/skins/default/xui/pl/floater_select_key.xml
index 194a6da1bd..194a6da1bd 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/pl/floater_select_key.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_sell_land.xml b/indra/newview/skins/default/xui/pl/floater_sell_land.xml
index a306ec2c34..a306ec2c34 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_sell_land.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml
index f87e2edecc..f87e2edecc 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_snapshot.xml b/indra/newview/skins/default/xui/pl/floater_snapshot.xml
index c807087170..c807087170 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/pl/floater_snapshot.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml
index 0826508fd6..0826508fd6 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_telehub.xml b/indra/newview/skins/default/xui/pl/floater_telehub.xml
index 9f564452a9..9f564452a9 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/pl/floater_telehub.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml
index 48366e2b64..48366e2b64 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml
index e898c283c5..e898c283c5 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_tools.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_top_objects.xml b/indra/newview/skins/default/xui/pl/floater_top_objects.xml
index e7299b0abb..e7299b0abb 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/pl/floater_top_objects.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_tos.xml b/indra/newview/skins/default/xui/pl/floater_tos.xml
index b9a146df22..b9a146df22 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_tos.xml
+++ b/indra/newview/skins/default/xui/pl/floater_tos.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_url_entry.xml b/indra/newview/skins/default/xui/pl/floater_url_entry.xml
index fc170d8d1b..fc170d8d1b 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/pl/floater_url_entry.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_water.xml b/indra/newview/skins/default/xui/pl/floater_water.xml
index 7333633c1d..7333633c1d 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_water.xml
+++ b/indra/newview/skins/default/xui/pl/floater_water.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml
index 2d4582392c..2d4582392c 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
index 86ef9300da..86ef9300da 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
+++ b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml
index 36e3b0651b..36e3b0651b 100755..100644
--- a/indra/newview/skins/default/xui/pl/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml
index 75c84c275d..75c84c275d 100755..100644
--- a/indra/newview/skins/default/xui/pl/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml
diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml
index 5084b59397..5084b59397 100755..100644
--- a/indra/newview/skins/default/xui/pl/menu_login.xml
+++ b/indra/newview/skins/default/xui/pl/menu_login.xml
diff --git a/indra/newview/skins/default/xui/pl/menu_slurl.xml b/indra/newview/skins/default/xui/pl/menu_slurl.xml
index 719959df6a..719959df6a 100755..100644
--- a/indra/newview/skins/default/xui/pl/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/pl/menu_slurl.xml
diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml
index 2a5842e553..2a5842e553 100755..100644
--- a/indra/newview/skins/default/xui/pl/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml
diff --git a/indra/newview/skins/default/xui/pl/mime_types.xml b/indra/newview/skins/default/xui/pl/mime_types.xml
index c90d5761e6..c90d5761e6 100755..100644
--- a/indra/newview/skins/default/xui/pl/mime_types.xml
+++ b/indra/newview/skins/default/xui/pl/mime_types.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_audio_device.xml b/indra/newview/skins/default/xui/pl/panel_audio_device.xml
index fc3b3776f0..fc3b3776f0 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_audio_device.xml
+++ b/indra/newview/skins/default/xui/pl/panel_audio_device.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_friends.xml b/indra/newview/skins/default/xui/pl/panel_friends.xml
index b6df36f199..b6df36f199 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_friends.xml
+++ b/indra/newview/skins/default/xui/pl/panel_friends.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_group_general.xml b/indra/newview/skins/default/xui/pl/panel_group_general.xml
index d09ff72226..d09ff72226 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_general.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_group_invite.xml b/indra/newview/skins/default/xui/pl/panel_group_invite.xml
index 12d48279ad..12d48279ad 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_invite.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml
index dbfa8e3122..dbfa8e3122 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_group_notices.xml b/indra/newview/skins/default/xui/pl/panel_group_notices.xml
index 1c19571ec0..1c19571ec0 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_notices.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_group_roles.xml b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
index dd46b4aeaa..dd46b4aeaa 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_groups.xml b/indra/newview/skins/default/xui/pl/panel_groups.xml
index 9df90fc797..9df90fc797 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_groups.xml
+++ b/indra/newview/skins/default/xui/pl/panel_groups.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml
index cec7e34da5..cec7e34da5 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_login.xml
+++ b/indra/newview/skins/default/xui/pl/panel_login.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
index 7195c30f20..7195c30f20 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
index 5599c21686..5599c21686 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
index 97b4975f29..97b4975f29 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
index ddd4c736d6..ddd4c736d6 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
index e3cdaae840..e3cdaae840 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
index 1e2289b496..1e2289b496 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
index f9b5d221a5..f9b5d221a5 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
index f20387dd25..f20387dd25 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_region_debug.xml b/indra/newview/skins/default/xui/pl/panel_region_debug.xml
index fe7b554a13..fe7b554a13 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_debug.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_region_estate.xml b/indra/newview/skins/default/xui/pl/panel_region_estate.xml
index 4275f3f647..4275f3f647 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_estate.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_region_general.xml b/indra/newview/skins/default/xui/pl/panel_region_general.xml
index 20296dac71..20296dac71 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_general.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
index b206616e34..b206616e34 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_region_texture.xml b/indra/newview/skins/default/xui/pl/panel_region_texture.xml
index d24579fc75..d24579fc75 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_texture.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml b/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml
index 70a6e39412..70a6e39412 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml
+++ b/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml
diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml
index 9226e67dff..9226e67dff 100755..100644
--- a/indra/newview/skins/default/xui/pl/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/pl/panel_status_bar.xml
diff --git a/indra/newview/skins/default/xui/pl/role_actions.xml b/indra/newview/skins/default/xui/pl/role_actions.xml
index 5711eacf2f..5711eacf2f 100755..100644
--- a/indra/newview/skins/default/xui/pl/role_actions.xml
+++ b/indra/newview/skins/default/xui/pl/role_actions.xml
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index e8dcfac02d..e8dcfac02d 100755..100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml
index 906978effe..906978effe 100755..100644
--- a/indra/newview/skins/default/xui/pl/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml
diff --git a/indra/newview/skins/default/xui/pl/xui_version.xml b/indra/newview/skins/default/xui/pl/xui_version.xml
index 0e777751d3..0e777751d3 100755..100644
--- a/indra/newview/skins/default/xui/pl/xui_version.xml
+++ b/indra/newview/skins/default/xui/pl/xui_version.xml
diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml
index 704e2f4107..d6e1c925b0 100644
--- a/indra/newview/skins/default/xui/pt/floater_about.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about.xml
@@ -1,19 +1,58 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_about" title="SOBRE O [CAPITALIZED_APP_NAME]">
-<tab_container name="about_tab">
- <panel name="credits_panel">
- <text_editor name="credits_editor">
- Second Life é oferecido a você por Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl e muitos outros.
+ <floater.string name="AboutHeader">
+ [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </floater.string>
+ <floater.string name="AboutCompiler">
+ Construído com [COMPILER] versão [COMPILER_VERSION]
+ </floater.string>
+ <floater.string name="AboutPosition">
+ Você está em [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] em [REGION] localizado em [HOSTNAME] ([HOSTIP])
+[SERVER_VERSION]
+[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </floater.string>
+ <floater.string name="AboutSystem">
+ CPU: [CPU]
+Memória: [MEMORY_MB] MBs
+Versão OS: [OS_VERSION]
+Placa de vídeo: [GRAPHICS_CARD_VENDOR]
+Placa gráfica: [GRAPHICS_CARD]
+ </floater.string>
+ <floater.string name="AboutDriver">
+ Versão do driver de vídeo Windows: [GRAPHICS_CARD_VENDOR]
+ </floater.string>
+ <floater.string name="AboutLibs">
+ Versão OpenGL: [OPENGL_VERSION]
+
+Versão libcurl: [LIBCURL_VERSION]
+Versão J2C Decoder: [J2C_VERSION]
+Versão do driver de áudio: [AUDIO_DRIVER_VERSION]
+Versão Qt Webkit: [QT_WEBKIT_VERSION]
+Versão Vivox: [VIVOX_VERSION]
+ </floater.string>
+ <floater.string name="none">
+ (nenhum)
+ </floater.string>
+ <floater.string name="AboutTraffic">
+ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </floater.string>
+ <tab_container name="about_tab">
+ <panel label="Info" name="support_panel">
+ <button label="Copiar para área de transferência" name="copy_btn"/>
+ </panel>
+ <panel label="Créditos" name="credits_panel">
+ <text_editor name="credits_editor">
+ Second Life é oferecido a você por Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl e muitos outros.
Obrigado aos seguintes residentes por ajudar a garantir para que esta versão seja ainda melhor: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
Para ter sucesso nos negócios, seja ousado, seja o primeiro, seja diferente. --Henry Marchant
- </text_editor>
- </panel>
- <panel name="licenses_panel">
- <text_editor name="credits_editor">
- 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+ </text_editor>
+ </panel>
+ <panel label="Licenças" name="licenses_panel">
+ <text_editor name="credits_editor">
+ 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
APR Copyright (C) 2000-2004 The Apache Software Foundation
cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
@@ -34,10 +73,7 @@
Todos os direitos reservados. Veja licenças.txt para detalhes.
Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
- </text_editor>
- </panel>
-</tab_container>
- <string name="you_are_at">
- Você está em [POSITION]
- </string>
+ </text_editor>
+ </panel>
+ </tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml
index 19981cf48c..bf6faf50cc 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -1,7 +1,59 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floaterland" title="SOBRE O TERRENO">
+ <floater.string name="Minutes">
+ [MINUTES] minutos
+ </floater.string>
+ <floater.string name="Minute">
+ minuto
+ </floater.string>
+ <floater.string name="Seconds">
+ [SECONDS] segundos
+ </floater.string>
+ <floater.string name="Remaining">
+ faltam
+ </floater.string>
<tab_container name="landtab">
- <panel label="Geral" name="land_general_panel">
+ <panel label="GERAL" name="land_general_panel">
+ <panel.string name="new users only">
+ Somente novos usuários
+ </panel.string>
+ <panel.string name="anyone">
+ Qualquer um
+ </panel.string>
+ <panel.string name="area_text">
+ Área
+ </panel.string>
+ <panel.string name="area_size_text">
+ [AREA] m²
+ </panel.string>
+ <panel.string name="auction_id_text">
+ ID do Leilão: [ID]
+ </panel.string>
+ <panel.string name="need_tier_to_modify">
+ Você deve ter sua compra aprovada para modificar este terreno.
+ </panel.string>
+ <panel.string name="group_owned_text">
+ (Possuído pelo Grupo)
+ </panel.string>
+ <panel.string name="profile_text">
+ Perfil...
+ </panel.string>
+ <panel.string name="info_text">
+ Informação...
+ </panel.string>
+ <panel.string name="public_text">
+ (público)
+ </panel.string>
+ <panel.string name="none_text">
+ (nenhum)
+ </panel.string>
+ <panel.string name="sale_pending_text">
+ (Venda Pendente)
+ </panel.string>
+ <panel.string name="no_selection_text">
+ Nenhum lote selecionado.
+Vá para o menu Mundo &gt; Sobre a Terra ou selecione outro lote para mostrar seus detalhes.
+ </panel.string>
<text name="Name:">
Nome:
</text>
@@ -26,7 +78,6 @@
<text name="OwnerText">
Leyla Linden
</text>
- <button label="Perfil..." label_selected="Perfil..." name="Profile..."/>
<text name="Group:">
Grupo:
</text>
@@ -78,54 +129,25 @@
<button label="Abandonar Terra.." label_selected="Abandonar Terra.." name="Abandon Land..."/>
<button label="Reclamar Terra..." label_selected="Reclamar Terra..." name="Reclaim Land..."/>
<button label="Venda Linden..." label_selected="Venda Linden..." name="Linden Sale..." tool_tip="A terra precisa ser possuída, estar com o conteúdo configurado e não estar pronta para leilão."/>
- <panel.string name="new users only">
- Somente novos usuários
- </panel.string>
- <panel.string name="anyone">
- Qualquer um
- </panel.string>
- <panel.string name="area_text">
- Área
- </panel.string>
- <panel.string name="area_size_text">
- [AREA] m²
- </panel.string>
- <panel.string name="auction_id_text">
- ID do Leilão: [ID]
- </panel.string>
- <panel.string name="need_tier_to_modify">
- Você deve ter sua compra aprovada para modificar este terreno.
- </panel.string>
- <panel.string name="group_owned_text">
- (Possuído pelo Grupo)
- </panel.string>
- <panel.string name="profile_text">
- Perfil...
- </panel.string>
- <panel.string name="info_text">
- Informação...
- </panel.string>
- <panel.string name="public_text">
- (público)
+ </panel>
+ <panel label="CONTRATO" name="land_covenant_panel">
+ <panel.string name="can_resell">
+ Terra comprada nesta região pode ser revendida.
</panel.string>
- <panel.string name="none_text">
- (nenhum)
+ <panel.string name="can_not_resell">
+ Terra comprada nesta região não pode ser revendida.
</panel.string>
- <panel.string name="sale_pending_text">
- (Venda Pendente)
+ <panel.string name="can_change">
+ Terra comprada nesta região pode ser compartilhada
+ou sub-dividida.
</panel.string>
- <panel.string name="no_selection_text">
- Nenhum lote selecionado.
-Vá para o menu Mundo &gt; Sobre a Terra ou selecione outro lote para mostrar seus detalhes.
+ <panel.string name="can_not_change">
+ Terra comprada nesta região não pode ser compartilhada
+ou sub-dividida.
</panel.string>
- </panel>
- <panel label="Corretor" name="land_covenant_panel">
<text name="estate_section_lbl">
Propriedade:
</text>
- <text name="estate_name_lbl">
- Nome:
- </text>
<text name="estate_name_text">
mainland
</text>
@@ -144,9 +166,6 @@ Vá para o menu Mundo &gt; Sobre a Terra ou selecione outro lote para mostrar se
<text name="region_section_lbl">
Região:
</text>
- <text name="region_name_lbl">
- Nome:
- </text>
<text name="region_name_text">
leyla
</text>
@@ -174,37 +193,23 @@ Vá para o menu Mundo &gt; Sobre a Terra ou selecione outro lote para mostrar se
<text name="changeable_clause">
Terra nesta região não pode ser unida/sub-dividida.
</text>
- <panel.string name="can_resell">
- Terra comprada nesta região pode ser revendida.
- </panel.string>
- <panel.string name="can_not_resell">
- Terra comprada nesta região não pode ser revendida.
- </panel.string>
- <panel.string name="can_change">
- Terra comprada nesta região pode ser compartilhada
-ou sub-dividida.
+ </panel>
+ <panel label="OBJETOS" name="land_objects_panel">
+ <panel.string name="objects_available_text">
+ [COUNT] de [MAX] ([AVAILABLE] disponíveis)
</panel.string>
- <panel.string name="can_not_change">
- Terra comprada nesta região não pode ser compartilhada
-ou sub-dividida.
+ <panel.string name="objects_deleted_text">
+ [COUNT] de [MAX] ([DELETED] serão deletados)
</panel.string>
- </panel>
- <panel label="Objetos" name="land_objects_panel">
<text name="parcel_object_bonus">
Fator de Bonus para Objetos na Região: [BONUS]
</text>
<text name="Simulator primitive usage:">
- Uso do simulador de primitivas:
+ Uso de prims:
</text>
<text left="214" name="objects_available" width="230">
[COUNT] de [MAX] ([AVAILABLE] disponíveis)
</text>
- <panel.string name="objects_available_text">
- [COUNT] de [MAX] ([AVAILABLE] disponíveis)
- </panel.string>
- <panel.string name="objects_deleted_text">
- [COUNT] de [MAX] ([DELETED] serão deletados)
- </panel.string>
<text name="Primitives parcel supports:" width="200">
Primitivas suportadas pelo lote:
</text>
@@ -254,33 +259,63 @@ ou sub-dividida.
<text name="Object Owners:">
Donos dos Objetos:
</text>
- <button label="Atualizar Lista" label_selected="Atualizar Lista" name="Refresh List" left="118"/>
- <button label="Retornar objetos..." label_selected="Retornar objetos..." name="Return objects..." left="230"/>
+ <button label="Atualizar Lista" label_selected="Atualizar Lista" left="118" name="Refresh List" tool_tip="Refresh Object List"/>
+ <button label="Retornar objetos..." label_selected="Retornar objetos..." left="230" name="Return objects..."/>
<name_list name="owner list">
- <column label="Tipo" name="type"/>
- <column label="Nome" name="name"/>
- <column label="Contar" name="count"/>
- <column label="Mais recente" name="mostrecent"/>
+ <name_list.columns label="Tipo" name="type"/>
+ <name_list.columns label="Nome" name="name"/>
+ <name_list.columns label="Contar" name="count"/>
+ <name_list.columns label="Mais recente" name="mostrecent"/>
</name_list>
</panel>
- <panel label="Opções" name="land_options_panel">
+ <panel label="OPÇÕES" name="land_options_panel">
+ <panel.string name="search_enabled_tooltip">
+ Permitir que as pessoas vejam este lote nos resultados de busca
+ </panel.string>
+ <panel.string name="search_disabled_small_tooltip">
+ Esta opção está desabilitada porque a área deste lote tem 128 m² ou menos.
+Apenas lotes maiores podem ser listados na busca.
+ </panel.string>
+ <panel.string name="search_disabled_permissions_tooltip">
+ Esta opção está desabilitada porque você não pode modificar as opções deste lote.
+ </panel.string>
+ <panel.string name="mature_check_mature">
+ Conteúdo Mature
+ </panel.string>
+ <panel.string name="mature_check_adult">
+ Conteúdo Adult
+ </panel.string>
+ <panel.string name="mature_check_mature_tooltip">
+ A informação do seu lote ou seu conteúdo são considerados mature.
+ </panel.string>
+ <panel.string name="mature_check_adult_tooltip">
+ A informação do seu lote ou seu conteúdo são considerados adult.
+ </panel.string>
+ <panel.string name="landing_point_none">
+ (nenhum)
+ </panel.string>
+ <panel.string name="push_restrict_text">
+ Sem Empurrar
+ </panel.string>
+ <panel.string name="push_restrict_region_text">
+ Sem Empurrar (Imposição na Região)
+ </panel.string>
<text name="allow_label">
Permitir outros residentes a:
</text>
<check_box label="Editar Terreno" name="edit land check" tool_tip="Se ativado, qualquer um pode modificar a forma da sua terra. É melhor deixar esta opção desativada, uma vez que você sempre pode editar seu próprio terreno."/>
- <check_box label="Criar Landmarks" name="check landmark"/>
<check_box label="Voar" name="check fly" tool_tip="Se ativado, os Residentes podem voar na sua terra. Se desativado, eles podem voar apenas para dentro e por cima de sua terra."/>
- <text name="allow_label2" left="172">
+ <text left="172" name="allow_label2">
Criar Objetos:
</text>
<check_box label="Residentes" name="edit objects check"/>
<check_box label="Grupo" name="edit group objects check"/>
- <text name="allow_label3" left="172">
+ <text left="172" name="allow_label3">
Entrada do Objeto:
</text>
<check_box label="Residentes" name="all object entry check"/>
<check_box label="Grupo" name="group object entry check"/>
- <text name="allow_label4" left="172">
+ <text left="172" name="allow_label4">
Executar Scripts:
</text>
<check_box label="Residentes" name="check other scripts"/>
@@ -290,85 +325,37 @@ ou sub-dividida.
</text>
<check_box label="Salvo (sem dano)" name="check safe" tool_tip="Se ativado, ajusta o terreno para Seguro, desabilitando combate com danos. Se não ativado, o combate com danos é habilitado."/>
<check_box label="Sem Empurrar" name="PushRestrictCheck" tool_tip="Evita scripts que empurram. A ativação dessa opção pode ser útil para prevenir comportamentos desordeiros na sua terra."/>
- <check_box label="Mostra o Lugar na Busca (L$30/semana) sob" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/>
- <panel.string name="search_enabled_tooltip">
- Permitir que as pessoas vejam este lote nos resultados de busca
- </panel.string>
- <panel.string name="search_disabled_small_tooltip">
- Esta opção está desabilitada porque a área deste lote tem 128 m² ou menos.
-Apenas lotes maiores podem ser listados na busca.
- </panel.string>
- <panel.string name="search_disabled_permissions_tooltip">
- Esta opção está desabilitada porque você não pode modificar as opções deste lote.
- </panel.string>
- <combo_box name="land category with adult" left="265" width="155">
- <combo_box.item name="item0" label="Qualquer Categoria"
- />
- <combo_box.item name="item1" label="Locação Linden"
- />
- <combo_box.item name="item2" label="Adult"
- />
- <combo_box.item name="item3" label="Artes e Cultura"
- />
- <combo_box.item name="item4" label="Negócios"
- />
- <combo_box.item name="item5" label="Educacional"
- />
- <combo_box.item name="item6" label="Jogos"
- />
- <combo_box.item name="item7" label="Moradia"
- />
- <combo_box.item name="item8" label="Amigável a Novos Usuários"
- />
- <combo_box.item name="item9" label="Parques &amp; Natureza"
- />
- <combo_box.item name="item10" label="Residencial"
- />
- <combo_box.item name="item11" label="Compras"
- />
- <combo_box.item name="item12" label="Outros"
- />
+ <check_box label="Mostrar terreno nos resultados de busca (L$30/semana)" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/>
+ <combo_box left="265" name="land category with adult" width="155">
+ <combo_box.item label="Qualquer Categoria" name="item0"/>
+ <combo_box.item label="Locação Linden" name="item1"/>
+ <combo_box.item label="Adult" name="item2"/>
+ <combo_box.item label="Artes e Cultura" name="item3"/>
+ <combo_box.item label="Negócios" name="item4"/>
+ <combo_box.item label="Educacional" name="item5"/>
+ <combo_box.item label="Jogos" name="item6"/>
+ <combo_box.item label="Moradia" name="item7"/>
+ <combo_box.item label="Amigável a Novos Usuários" name="item8"/>
+ <combo_box.item label="Parques &amp; Natureza" name="item9"/>
+ <combo_box.item label="Residencial" name="item10"/>
+ <combo_box.item label="Compras" name="item11"/>
+ <combo_box.item label="Outros" name="item12"/>
</combo_box>
- <combo_box name="land category" left="265" width="155">
- <combo_box.item name="item0" label="Qualquer Categoria"
- />
- <combo_box.item name="item1" label="Locação Linden"
- />
- <combo_box.item name="item3" label="Artes e Cultura"
- />
- <combo_box.item name="item4" label="Negócios"
- />
- <combo_box.item name="item5" label="Educacional"
- />
- <combo_box.item name="item6" label="Jogos"
- />
- <combo_box.item name="item7" label="Moradia"
- />
- <combo_box.item name="item8" label="Amigável a Novos Usuários"
- />
- <combo_box.item name="item9" label="Parques e Natureza"
- />
- <combo_box.item name="item10" label="Residencial"
- />
- <combo_box.item name="item11" label="Compras"
- />
- <combo_box.item name="item12" label="Outros"
- />
+ <combo_box left="265" name="land category" width="155">
+ <combo_box.item label="Qualquer Categoria" name="item0"/>
+ <combo_box.item label="Locação Linden" name="item1"/>
+ <combo_box.item label="Artes e Cultura" name="item3"/>
+ <combo_box.item label="Negócios" name="item4"/>
+ <combo_box.item label="Educacional" name="item5"/>
+ <combo_box.item label="Jogos" name="item6"/>
+ <combo_box.item label="Moradia" name="item7"/>
+ <combo_box.item label="Amigável a Novos Usuários" name="item8"/>
+ <combo_box.item label="Parques e Natureza" name="item9"/>
+ <combo_box.item label="Residencial" name="item10"/>
+ <combo_box.item label="Compras" name="item11"/>
+ <combo_box.item label="Outros" name="item12"/>
</combo_box>
- <button label="?" label_selected="?" left="426" name="?"/>
<check_box label="Conteúdo Mature" name="MatureCheck" tool_tip=""/>
- <panel.string name="mature_check_mature">
- Conteúdo Mature
- </panel.string>
- <panel.string name="mature_check_adult">
- Conteúdo Adult
- </panel.string>
- <panel.string name="mature_check_mature_tooltip">
- A informação do seu lote ou seu conteúdo são considerados mature.
- </panel.string>
- <panel.string name="mature_check_adult_tooltip">
- A informação do seu lote ou seu conteúdo são considerados adult.
- </panel.string>
<text name="Snapshot:">
Foto:
</text>
@@ -376,39 +363,31 @@ Apenas lotes maiores podem ser listados na busca.
<text name="landing_point">
Ponto de Aterrissagem: [LANDING]
</text>
- <panel.string name="landing_point_none">
- (nenhum)
- </panel.string>
<button label="Definir" label_selected="Definir" name="Set" tool_tip="Define o ponto de aterrissagem aonde o visitante chega. Define para o ponto em que seu avatar se encontra neste lote."/>
<button label="Limpar" label_selected="Limpar" name="Clear" tool_tip="Limpar o ponto de aterrissagem."/>
<text name="Teleport Routing: ">
Rota de Tele-transporte:
</text>
- <combo_box width="160" left="140" name="landing type" tool_tip="Rota de Teletransporte -- Selecione como tratar os tele-transportes no seu lote.">
- <combo_box.item name="Blocked" label="Bloqueado"
- />
- <combo_box.item name="LandingPoint" label="Ponto de Aterrissagem"
- />
- <combo_box.item name="Anywhere" label="Qualquer lugar"
- />
+ <combo_box left="140" name="landing type" tool_tip="Rota de Teletransporte -- Selecione como tratar os tele-transportes no seu lote." width="160">
+ <combo_box.item label="Bloqueado" name="Blocked"/>
+ <combo_box.item label="Ponto de Aterrissagem" name="LandingPoint"/>
+ <combo_box.item label="Qualquer lugar" name="Anywhere"/>
</combo_box>
- <panel.string name="push_restrict_text">
- Sem Empurrar
- </panel.string>
- <panel.string name="push_restrict_region_text">
- Sem Empurrar (Imposição na Região)
- </panel.string>
</panel>
- <panel label="Mídia" name="land_media_panel">
+ <panel label="MÍDIA" name="land_media_panel">
<text name="with media:" width="85">
Tipo de Mídia:
</text>
<combo_box left="97" name="media type" tool_tip="Especificar se a URL é um filme, uma página web ou outra mídia"/>
<text name="at URL:" width="85">
- URL da Mídia:
+ Página web:
</text>
<line_editor left="97" name="media_url"/>
<button label="Definir..." label_selected="Definir..." name="set_media_url"/>
+ <text name="CurrentURL:">
+ Página atual:
+ </text>
+ <check_box label="Esconder a URL da Mídia" left="97" name="hide_media_url" tool_tip="Ativando esta opção, a URL da mídia se ocultará para quaisquer visualizadores não autorizados a ver esta informação do lote. Notar que isto não está disponível para tipos HTML."/>
<text name="Description:">
Descrição:
</text>
@@ -423,14 +402,7 @@ Textura:
a página web depois que você clicar na seta de
reproduzir.)
</text>
- <text name="Options:">
- Opções de
-Mídia:
- </text>
<check_box label="Escala automática" left="97" name="media_auto_scale" tool_tip="Marcando esta opção o conteúdo se ajustará ao lote automaticamente. A mídia pode se tornar lenta e com baixa qualidade visual mas nenhum outro ajuste de textura ou alinhamento será necessário."/>
- <check_box label="Mídia em Repetição" name="media_loop" tool_tip="Executar a mídia repetidamente. Quando a mídia terminar a execução, ela reiniciará do começo."/>
- <check_box label="Esconder a URL da Mídia" left="97" name="hide_media_url" tool_tip="Ativando esta opção, a URL da mídia se ocultará para quaisquer visualizadores não autorizados a ver esta informação do lote. Notar que isto não está disponível para tipos HTML."/>
- <check_box label="Esconder a URL de Música" name="hide_music_url" tool_tip="Ativando esta opção, a URL de música se esconderá para visualizadores não autorizados a ver esta informação do lote"/>
<text left="102" name="media_size" tool_tip="Tamanho para desenhar a mídia Web, deixar 0 como padrão." width="115">
Tamanho da mídia:
</text>
@@ -439,57 +411,43 @@ Mídia:
<text name="pixels">
pixels
</text>
- <text name="MusicURL:">
- URL da Música:
- </text>
- <line_editor left="97" name="music_url"/>
- <text name="Sound:">
- Som:
- </text>
- <check_box label="Restringir gestos e sons de objetos a este lote" left="97" name="check sound local"/>
- <button label="?" label_selected="?" name="?"/>
- <text name="Voice settings:">
- Voz:
+ <text name="Options:">
+ Opções de
+Mídia:
</text>
- <check_box left="97" label="Habilitar Voz" name="parcel_enable_voice_channel"/>
- <check_box left="97" label="Habilitar Voz (definida pela Propriedade)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box left="117" label="Restringir Voz a este lote" name="parcel_enable_voice_channel_parcel"/>
+ <check_box label="Mídia em Repetição" name="media_loop" tool_tip="Executar a mídia repetidamente. Quando a mídia terminar a execução, ela reiniciará do começo."/>
+ </panel>
+ <panel label="SOM" name="land_audio_panel">
+ <check_box label="Ativar voz" name="parcel_enable_voice_channel"/>
+ <check_box label="Ativar voz (definições do terreno)" name="parcel_enable_voice_channel_is_estate_disabled"/>
</panel>
- <panel label="Acesso" name="land_access_panel">
+ <panel label="ACESSO" name="land_access_panel">
+ <panel.string name="access_estate_defined">
+ (Definições do terreno)
+ </panel.string>
+ <panel.string name="estate_override">
+ Uma ou mais destas opções está definida no nível de propriedade.
+ </panel.string>
<text name="Limit access to this parcel to:">
Acesso a Este Lote
</text>
- <check_box label="Permitir Acesso Público" name="public_access"/>
+ <check_box label="Acesso para público categoria [MATURITY]" name="public_access"/>
<text name="Only Allow">
- Bloquear Acesso por:
+ Restringir acesso a contas confirmardas por:
</text>
- <check_box label="Residentes que não forneceram informações de pagamento para a Linden Lab" name="limit_payment" tool_tip="Banir residentes não identificados."/>
- <check_box label="Residentes que não tiveram a idade de adulto confirmada" name="limit_age_verified" tool_tip="Banir residentes que não tiveram sua idade verificada. Veja support.secondlife.com para maiores informações."/>
- <panel.string name="estate_override">
- Uma ou mais destas opções está definida no nível de propriedade.
- </panel.string>
+ <check_box label="Dados de pagamento fornecidos [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Banir residentes não identificados."/>
+ <check_box label="Idade confirmada: [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Banir residentes que não comprovaram a idade. Consulte o [SUPPORT_SITE] para saber mais."/>
<check_box label="Permitir Acesso do Grupo: [GROUP]" name="GroupCheck" tool_tip="Definir grupo na aba Geral."/>
<check_box label="Vender passes para:" name="PassCheck" tool_tip="Permite acesso temporário a este terreno"/>
<combo_box name="pass_combo">
- <combo_box.item name="Anyone" label="Qualquer um"
- />
- <combo_box.item name="Group" label="Grupo"
- />
+ <combo_box.item label="Qualquer um" name="Anyone"/>
+ <combo_box.item label="Grupo" name="Group"/>
</combo_box>
<spinner label="Preço em L$:" name="PriceSpin"/>
<spinner label="Horas de Acesso:" name="HoursSpin"/>
- <text label="Permitir Sempre" name="AllowedText">
- Residentes Permitidos
- </text>
- <name_list name="AccessList" tool_tip="([LISTED] listados, [MAX] máximo)"/>
- <button label="Adicionar..." label_selected="Adicionar..." name="add_allowed"/>
- <button label="Remover" label_selected="Remover" name="remove_allowed"/>
- <text label="Banir" name="BanCheck">
- Residentes Banidos
- </text>
- <name_list name="BannedList" tool_tip="([LISTED] listados, [MAX] máximo)"/>
- <button label="Adicionar..." label_selected="Adicionar..." name="add_banned"/>
- <button label="Remover" label_selected="Remover" name="remove_banned"/>
+ <panel name="Allowed_layout_panel">
+ <name_list name="AccessList" tool_tip="(Total [LISTED], máx de [MAX])"/>
+ </panel>
</panel>
</tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_activeim.xml b/indra/newview/skins/default/xui/pt/floater_activeim.xml
new file mode 100644
index 0000000000..892ccdf974
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_activeim.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_activeim" title="MI ativa"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_animation_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_preview.xml
index f3297ea5ee..020cfbc811 100644
--- a/indra/newview/skins/default/xui/pt/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_animation_preview.xml
@@ -1,70 +1,177 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Animation Preview" title="">
+ <floater.string name="failed_to_initialize">
+ Não foi possível iniciar o movimento
+ </floater.string>
+ <floater.string name="anim_too_long">
+ O arquivo de animação tem [LENGTH] segundos de duração.
+
+A duração máxima de animação permitida é de [MAX_LENGTH] segundos.
+ </floater.string>
+ <floater.string name="failed_file_read">
+ Não foi possível ler o arquivo de animação.
+
+[STATUS]
+ </floater.string>
+ <floater.string name="E_ST_OK">
+ OK
+ </floater.string>
+ <floater.string name="E_ST_EOF">
+ Fim de arquivo prematuro
+ </floater.string>
+ <floater.string name="E_ST_NO_CONSTRAINT">
+ Impossível ler definição constraint.
+ </floater.string>
+ <floater.string name="E_ST_NO_FILE">
+ Impossível abrir arquivo BVH.
+ </floater.string>
+ <floater.string name="E_ST_NO_HIER">
+ Invalid HIERARCHY header.
+ </floater.string>
+ <floater.string name="E_ST_NO_JOINT">
+ RAIZ ou JUNTA não encontrados.
+ </floater.string>
+ <floater.string name="E_ST_NO_NAME">
+ Impossível obter nome JOINT.
+ </floater.string>
+ <floater.string name="E_ST_NO_OFFSET">
+ Impossível localizar OFFSET.
+ </floater.string>
+ <floater.string name="E_ST_NO_CHANNELS">
+ Impossível localizar CHANNELS.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROTATION">
+ Impossível obter ordem de rotação.
+ </floater.string>
+ <floater.string name="E_ST_NO_AXIS">
+ Impossível obter eixo de rotação.
+ </floater.string>
+ <floater.string name="E_ST_NO_MOTION">
+ Impossível localizar MOTION.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAMES">
+ Impossível determinar número de quadros.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAME_TIME">
+ Impossível determinar tempo dos quadros.
+ </floater.string>
+ <floater.string name="E_ST_NO_POS">
+ Impossível definir posicionamento.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROT">
+ Impossível definir valores da rotação.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_FILE">
+ Impossível abrir arquivo de tradução.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HEADER">
+ Impossível ler cabeçalho de tradução.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_NAME">
+ Impossível ler nomes traduzidos.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_IGNORE">
+ Impossível obter valor traduzido a ignorar.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_RELATIVE">
+ Impossível obter valor traduzido relativo.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_OUTNAME">
+ Impossível obter valor traduzido.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MATRIX">
+ Impossível ler matriz de tradução.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGECHILD">
+ Impossível obter nome mergechild.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGEPARENT">
+ Impossível obter nome mergeparent.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_PRIORITY">
+ Impossível obter valor prioritário.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_LOOP">
+ Impossível obter valor do loop.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEIN">
+ Impossível obter valor easeIn.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEOUT">
+ Impossível obter valor easeOut.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HAND">
+ Impossível obter valor de morph da mão.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EMOTE">
+ Impossível ler nome do emote.
+ </floater.string>
<text name="name_label">
Nome:
</text>
<text name="description_label">
Descrição:
</text>
- <spinner label_width="72" width="110" label="Prioridade" name="priority" tool_tip="Controla quais animações podem se sobrepor a esta animação."/>
- <check_box label="Loop" name="loop_check" tool_tip="Executa a animação repetidamente."/>
- <spinner label_width="56" left="65" width="116" label="Dentro(%)" name="loop_in_point" tool_tip="Ajusta o ponto da animação onde a repetição começa."/>
- <spinner label_width="40" left="185" label="Fora(%)" name="loop_out_point" tool_tip="Ajusta o ponto da animação onde a repetição termina."/>
+ <spinner label="Prioridade" label_width="72" name="priority" tool_tip="Controla quais animações podem ser interrompidas por esta animação" width="110"/>
+ <check_box label="Loop" name="loop_check" tool_tip="Executa esta animação sem parar"/>
+ <spinner label="Dentro(%)" label_width="56" left="65" name="loop_in_point" tool_tip="Define o ponto em que a animação em loop reinicia" width="116"/>
+ <spinner label="Fora(%)" label_width="40" left="185" name="loop_out_point" tool_tip="Define o ponto em que a animação em loop acaba"/>
<text name="hand_label">
Pose de Mão
</text>
- <combo_box left_delta="100" width="184" name="hand_pose_combo" tool_tip="Controla o que as mãos fazem durante a animação">
- <combo_box.item name="Spread" label="Espreguiçar" />
- <combo_box.item name="Relaxed" label="Relaxado" />
- <combo_box.item name="PointBoth" label="Apontar Ambos" />
- <combo_box.item name="Fist" label="Punho" />
- <combo_box.item name="RelaxedLeft" label="Relaxado para Esquerda" />
- <combo_box.item name="PointLeft" label="Apontar à Esquerda" />
- <combo_box.item name="FistLeft" label="Punho Esquerdo" />
- <combo_box.item name="RelaxedRight" label="Relaxado para Direita" />
- <combo_box.item name="PointRight" label="Apontar à Direita" />
- <combo_box.item name="FistRight" label="Punho Direito" />
- <combo_box.item name="SaluteRight" label="Saudar à Direita" />
- <combo_box.item name="Typing" label="Digitando" />
- <combo_box.item name="PeaceRight" label="Pacífico à Direita" />
+ <combo_box left_delta="100" name="hand_pose_combo" tool_tip="Controla os gestos das mãos durante a animação" width="184">
+ <combo_box.item label="Abrir" name="Spread"/>
+ <combo_box.item label="Relaxado" name="Relaxed"/>
+ <combo_box.item label="Apontar ambas" name="PointBoth"/>
+ <combo_box.item label="Punho" name="Fist"/>
+ <combo_box.item label="E relaxada" name="RelaxedLeft"/>
+ <combo_box.item label="Apontar E" name="PointLeft"/>
+ <combo_box.item label="Punho E" name="FistLeft"/>
+ <combo_box.item label="D relaxada" name="RelaxedRight"/>
+ <combo_box.item label="Apontar D" name="PointRight"/>
+ <combo_box.item label="Punho D" name="FistRight"/>
+ <combo_box.item label="Saudação D" name="SaluteRight"/>
+ <combo_box.item label="Escrevendo" name="Typing"/>
+ <combo_box.item label="Paz D" name="PeaceRight"/>
</combo_box>
<text name="emote_label">
Expressão
</text>
- <combo_box left_delta="100" width="184" name="emote_combo" tool_tip="Controla o que a face faz durante a animação.">
- <combo_box.item name="[None]" label="None]" />
- <combo_box.item name="Aaaaah" label="Aaaaah" />
- <combo_box.item name="Afraid" label="Temeroso" />
- <combo_box.item name="Angry" label="Raivoso" />
- <combo_box.item name="BigSmile" label="Sorrisão" />
- <combo_box.item name="Bored" label="Entediado" />
- <combo_box.item name="Cry" label="Chorar" />
- <combo_box.item name="Disdain" label="Desprezar" />
- <combo_box.item name="Embarrassed" label="Envergonhado" />
- <combo_box.item name="Frown" label="Franzir a testa" />
- <combo_box.item name="Kiss" label="Beijar" />
- <combo_box.item name="Laugh" label="Rir" />
- <combo_box.item name="Plllppt" label="Plllppt" />
- <combo_box.item name="Repulsed" label="Enojado" />
- <combo_box.item name="Sad" label="Triste" />
- <combo_box.item name="Shrug" label="Indiferença" />
- <combo_box.item name="Smile" label="Sorriso" />
- <combo_box.item name="Surprise" label="Surpreso" />
- <combo_box.item name="Wink" label="Piscar" />
- <combo_box.item name="Worry" label="Preocupado" />
+ <combo_box left_delta="100" name="emote_combo" tool_tip="Controla as expressões faciais durante a animação" width="184">
+ <combo_box.item label="(nenhum)" name="[None]"/>
+ <combo_box.item label="Aaaaah" name="Aaaaah"/>
+ <combo_box.item label="Com medo" name="Afraid"/>
+ <combo_box.item label="Bravo" name="Angry"/>
+ <combo_box.item label="Sorriso contagiante" name="BigSmile"/>
+ <combo_box.item label="À toa" name="Bored"/>
+ <combo_box.item label="Chorar" name="Cry"/>
+ <combo_box.item label="Desdenho" name="Disdain"/>
+ <combo_box.item label="Com vergonha" name="Embarrassed"/>
+ <combo_box.item label="Franzir testa" name="Frown"/>
+ <combo_box.item label="Beijo" name="Kiss"/>
+ <combo_box.item label="Rir" name="Laugh"/>
+ <combo_box.item label="Mostrar a língua" name="Plllppt"/>
+ <combo_box.item label="Asco" name="Repulsed"/>
+ <combo_box.item label="Triste" name="Sad"/>
+ <combo_box.item label="Encolher os ombros" name="Shrug"/>
+ <combo_box.item label="Sorriso" name="Smile"/>
+ <combo_box.item label="Surpresa" name="Surprise"/>
+ <combo_box.item label="Piscar" name="Wink"/>
+ <combo_box.item label="Preocupado" name="Worry"/>
</combo_box>
<text name="preview_label" width="250">
Prever enquanto
</text>
- <combo_box left_delta="100" width="130" name="preview_base_anim" tool_tip="Use isto para testar o comportamento de sua animação enquanto seu avatar executa ações comuns.">
- <combo_box.item name="Standing" label="Parado" />
- <combo_box.item name="Walking" label="Andando" />
- <combo_box.item name="Sitting" label="Sentando" />
- <combo_box.item name="Flying" label="Voando" />
+ <combo_box left_delta="100" name="preview_base_anim" tool_tip="Use isto para testar o comportamento de sua animação enquanto seu avatar executa ações comuns." width="130">
+ <combo_box.item label="Em pé" name="Standing"/>
+ <combo_box.item label="Andando" name="Walking"/>
+ <combo_box.item label="Sentado" name="Sitting"/>
+ <combo_box.item label="Voando" name="Flying"/>
</combo_box>
- <spinner label_width="125" width="192" label="Facilitar a entrada (sec)" name="ease_in_time" tool_tip="Quantidade de tempo (em segundos) para que as animações se mesclem."/>
- <spinner bottom_delta="-20" label_width="125" left="10" width="192" label="Facilitar a saída (sec)" name="ease_out_time" tool_tip="Quantidade de tempo (em segundos) para que a animações se mesclem."/>
- <button bottom_delta="-32" name="play_btn" tool_tip="Executa/pausa sua animação."/>
+ <spinner label="Facilitar a entrada (sec)" label_width="125" name="ease_in_time" tool_tip="Tempo (em segundos) da transição inicial da animação" width="192"/>
+ <spinner bottom_delta="-20" label="Facilitar a saída (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Tempo (em segundos) da transição de saída da animação" width="192"/>
+ <button bottom_delta="-32" name="play_btn" tool_tip="Executar animação"/>
+ <button name="pause_btn" tool_tip="Pausar a animação"/>
<button label="" name="stop_btn" tool_tip="Interrompe a execução da animação."/>
<text name="bad_animation_text">
Incapaz de ler o arquivo de animação.
@@ -72,19 +179,6 @@
Nós recomendamos exportar arquivos BVH do
Poser 4.
</text>
- <button label="Cancelar" name="cancel_btn"/>
<button label="Carregar (L$[AMOUNT])" name="ok_btn"/>
- <string name="failed_to_initialize">
- Não foi possível iniciar o movimento
- </string>
- <string name="anim_too_long">
- O arquivo de animação tem [LENGTH] segundos de duração.
-
-A duração máxima de animação permitida é de [MAX_LENGTH] segundos.
- </string>
- <string name="failed_file_read">
- Não foi possível ler o arquivo de animação.
-
-[STATUS]
- </string>
+ <button label="Cancelar" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_auction.xml b/indra/newview/skins/default/xui/pt/floater_auction.xml
index 34cd17d781..074f7bf001 100644
--- a/indra/newview/skins/default/xui/pt/floater_auction.xml
+++ b/indra/newview/skins/default/xui/pt/floater_auction.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_auction" title="INICIAR A VENDA DE TERRENOS DA LINDEN">
- <check_box label="Incluir marcador de seleção amarelo" name="fence_check"/>
- <button label="Foto" label_selected="Foto" name="snapshot_btn"/>
- <button label="OK" label_selected="OK" name="ok_btn"/>
- <text name="already for sale">
+<floater name="floater_auction" title="INICIAR VENDA DE TERRENO LINDEN START">
+ <floater.string name="already for sale">
Você não pode leiloar terrenos que já estão configurados para venda.
- </text>
+ </floater.string>
+ <check_box initial_value="true" label="Incluir marcador de seleção amarelo" name="fence_check"/>
+ <button label="Foto" label_selected="Foto" name="snapshot_btn"/>
+ <button label="Vender a qualquer um" label_selected="Vender a qualquer um" name="sell_to_anyone_btn"/>
+ <button label="Clear Settings" label_selected="Limpar configurações" name="reset_parcel_btn"/>
+ <button label="Iniciar Leilão" label_selected="Iniciar Leilão" name="start_auction_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml
index 186ef30e1b..a2e6f7945a 100644
--- a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml
@@ -1,42 +1,47 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatarpicker" title="ESCOLHA O RESIDENTE" min_width="285" width="285">
+<floater min_width="285" name="avatarpicker" title="SELECIONE O RESIDENTE" width="285">
+ <floater.string name="not_found">
+ &apos;[TEXT]&apos; não encontrado
+ </floater.string>
+ <floater.string name="no_one_near">
+ Ninguém por perto
+ </floater.string>
+ <floater.string name="no_results">
+ Nenhum resultado
+ </floater.string>
+ <floater.string name="searching">
+ Buscando...
+ </floater.string>
+ <string label="Selecionar" label_selected="Selecionar" name="Select">
+ Selecionar
+ </string>
+ <string name="Close">
+ Fechar
+ </string>
<tab_container name="ResidentChooserTabs" width="275">
<panel label="Buscar" name="SearchPanel">
<text name="InstructSearchResidentName">
- Digite parte do nome do Residente:
+ Digite parte do nome de alguém:
</text>
- <button label="Encontrar" label_selected="Encontrar" name="Find"/>
+ <button label="OK" label_selected="OK" name="Find"/>
</panel>
- <panel label="Cartões de Visita" name="CallingCardsPanel">
- <text name="InstructSelectCallingCard">
- Selecione um cartão de visita:
+ <panel label="Amigos" name="FriendsPanel">
+ <text name="InstructSelectFriend">
+ Selecione alguém:
</text>
</panel>
<panel label="Próximo a Mim" name="NearMePanel">
<text name="InstructSelectResident">
- Selecione residente
-próximo:
+ Selecione alguém por perto:
</text>
- <button font="SansSerifSmall" left_delta="1" width="115" label="Atualizar Lista" label_selected="Atualizar Lista" name="Refresh"/>
- <slider label="Faixa" name="near_me_range" bottom_delta="-36"/>
+ <slider bottom_delta="-36" label="Faixa" name="near_me_range"/>
<text name="meters">
Metros
</text>
- <scroll_list bottom_delta="-169" height="159" name="NearMe" />
+ <button font="SansSerifSmall" label="Atualizar Lista" label_selected="Atualizar Lista" left_delta="1" name="Refresh" width="115"/>
+ <scroll_list bottom_delta="-169" height="159" name="NearMe"/>
</panel>
</tab_container>
- <button label="Selecionar" label_selected="Selecionar" name="Select"/>
- <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
- <string name="not_found">
- &apos;[TEXT]&apos; não encontrado
- </string>
- <string name="no_one_near">
- Ninguém proximo
- </string>
- <string name="no_results">
- Nenhum resultado
- </string>
- <string name="searching">
- Buscando...
- </string>
+ <button label="OK" label_selected="OK" name="ok_btn"/>
+ <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml
index 04a78efb12..0d52fec23b 100644
--- a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml
@@ -1,30 +1,32 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatar_texture_debug" title="TEXTURAS DO AVATAR">
- <text name="baked_label">
- Texturas sobrepostas
- </text>
+<floater name="avatar_texture_debug" title="TEXTURAS DE AVATAR">
+ <floater.string name="InvalidAvatar">
+ AVATAR INVÁLIDO
+ </floater.string>
<text name="composite_label">
Texturas compostas
</text>
- <texture_picker label="Cabeça" name="baked_head"/>
- <texture_picker label="Maquiagem" name="head_bodypaint"/>
- <texture_picker label="Cabelo" name="hair"/>
<button label="Tombar" label_selected="Tombar" name="Dump"/>
- <texture_picker label="Olhos" name="baked_eyes"/>
- <texture_picker label="Olho" name="eye_texture"/>
- <texture_picker label="Parte de cima" name="baked_upper_body"/>
- <texture_picker label="Tatuagem para partes de cima" name="upper_bodypaint"/>
- <texture_picker label="Camiseta" name="undershirt"/>
- <texture_picker label="Luvas" name="gloves"/>
- <texture_picker label="Camisa" name="shirt"/>
- <texture_picker label="Jaqueta" name="upper_jacket"/>
- <texture_picker label="Parte de baixo" name="baked_lower_body"/>
- <texture_picker label="Tatuagem para partes de baixo" name="lower_bodypaint"/>
- <texture_picker label="Roupas de baixo" name="underpants"/>
- <texture_picker label="Meias" name="socks"/>
- <texture_picker label="Calçados" name="shoes"/>
- <texture_picker label="Calças" name="pants"/>
- <texture_picker label="Jaqueta" name="jacket"/>
- <texture_picker label="Saia" name="baked_skirt"/>
- <texture_picker label="Saia" name="skirt_texture"/>
+ <texture_picker label="Cabelo" name="hair_grain"/>
+ <texture_picker label="Cabelo alpha" name="hair_alpha"/>
+ <texture_picker label="Maquilagem" name="head_bodypaint"/>
+ <texture_picker label="Cabeça Alpha" name="head_alpha"/>
+ <texture_picker label="Tatuagem na cabeça" name="head_tattoo"/>
+ <texture_picker label="Olho" name="eyes_iris"/>
+ <texture_picker label="Olhos Alpha" name="eyes_alpha"/>
+ <texture_picker label="Pintura corporal, cintura para cima" name="upper_bodypaint"/>
+ <texture_picker label="Camiseta" name="upper_undershirt"/>
+ <texture_picker label="Luvas" name="upper_gloves"/>
+ <texture_picker label="Camisa" name="upper_shirt"/>
+ <texture_picker label="Jaqueta (cima)" name="upper_jacket"/>
+ <texture_picker label="Alpha de cima" name="upper_alpha"/>
+ <texture_picker label="Tatuagem parte de cima" name="upper_tattoo"/>
+ <texture_picker label="Pintura corporal, cintura para baixo" name="lower_bodypaint"/>
+ <texture_picker label="Roupa de baixo" name="lower_underpants"/>
+ <texture_picker label="Meias" name="lower_socks"/>
+ <texture_picker label="Sapatos" name="lower_shoes"/>
+ <texture_picker label="Calças" name="lower_pants"/>
+ <texture_picker label="Jaqueta" name="lower_jacket"/>
+ <texture_picker label="Alpha inferior" name="lower_alpha"/>
+ <texture_picker label="Tatuagem de baixo" name="lower_tattoo"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_beacons.xml b/indra/newview/skins/default/xui/pt/floater_beacons.xml
index 82f055745f..b16ff6003e 100644
--- a/indra/newview/skins/default/xui/pt/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/pt/floater_beacons.xml
@@ -1,15 +1,21 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="beacons" title="BALIZAS">
<panel name="beacons_panel">
- <check_box label="Objetos programados com toque apenas" name="touch_only"/>
- <check_box label="Objetos programados" name="scripted"/>
- <check_box label="Objetos físicos" name="physical"/>
- <check_box label="Fontes de Som" name="sounds"/>
- <check_box label="Fontes de Partículas" name="particles"/>
- <check_box label="Renderização de Highlights" name="highlights"/>
- <check_box label="Renderização de Balizas" name="beacons"/>
- <text name="beacon_width_label">
- Largura da Baliza
+ <text name="label_show">
+ Mostrar:
</text>
+ <check_box label="Balizas" name="beacons"/>
+ <check_box label="Realce" name="highlights"/>
+ <text name="beacon_width_label" tool_tip="Largura da baliza">
+ Largura:
+ </text>
+ <text name="label_objects">
+ Para estes objetos:
+ </text>
+ <check_box label="Físicos" name="physical"/>
+ <check_box label="Com script" name="scripted"/>
+ <check_box label="Só tocar" name="touch_only"/>
+ <check_box label="Fontes de som" name="sounds"/>
+ <check_box label="Fontes de partículas" name="particles"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_build_options.xml b/indra/newview/skins/default/xui/pt/floater_build_options.xml
index bce78fad21..71a1483dde 100644
--- a/indra/newview/skins/default/xui/pt/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/pt/floater_build_options.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="build options floater" title="OPÇÕES DE GRADE">
- <spinner label="Uni. Grade (metros)" name="GridResolution" width="180" label_width="122"/>
- <spinner label="Ext. da Grade (metros)" name="GridDrawSize" width="180" label_width="122"/>
- <check_box label="Habilitar ajuste de sub-grade" name="GridSubUnit"/>
- <check_box label="Mostrar as seções de cruzamento" name="GridCrossSection"/>
+ <spinner label="Unidade da grade (metros)" label_width="122" name="GridResolution" width="180"/>
+ <spinner label="Ext. da Grade (metros)" label_width="122" name="GridDrawSize" width="180"/>
+ <check_box label="Encaixar em sub-unidades" name="GridSubUnit"/>
+ <check_box label="Ver corte transversal" name="GridCrossSection"/>
+ <text name="grid_opacity_label" tool_tip="Opacidade da grade">
+ Opacidade:
+ </text>
<slider label="Opacidade da grade" name="GridOpacity" width="220"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml
index 7443e19721..9f34111d8a 100644
--- a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml
@@ -1,44 +1,54 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="MUDANÇA CONJUNTA DAS PERMISSÕES DE CONTEÚDO">
- <text name="applyto">
- Tipos de Conteúdo
- </text>
+<floater name="floaterbulkperms" title="EDITAR AUTORIZAÇÕES DE CONTEÚDO">
+ <floater.string name="nothing_to_modify_text">
+ A seleção não contém nenhum conteúdo editável.
+ </floater.string>
+ <floater.string name="status_text">
+ Definindo permissões em [NAME]
+ </floater.string>
+ <floater.string name="start_text">
+ Iniciando solicitação de mudança de permissão...
+ </floater.string>
+ <floater.string name="done_text">
+ Solicitação de mudança de permissão concluída.
+ </floater.string>
<check_box label="Animação" name="check_animation"/>
+ <icon name="icon_animation" tool_tip="Animação"/>
<check_box label="Partes do Corpo" name="check_bodypart"/>
+ <icon name="icon_bodypart" tool_tip="Partes do corpo"/>
<check_box label="Roupas" name="check_clothing"/>
+ <icon name="icon_clothing" tool_tip="Vestuário"/>
<check_box label="Gestos" name="check_gesture"/>
- <check_box label="Landmarks" name="check_landmark"/>
+ <icon name="icon_gesture" tool_tip="Gestos"/>
<check_box label="Notecards" name="check_notecard"/>
+ <icon name="icon_notecard" tool_tip="Anotações"/>
<check_box label="Objetos" name="check_object"/>
+ <icon name="icon_object" tool_tip="Objects"/>
<check_box label="Scripts" name="check_script"/>
+ <icon name="icon_script" tool_tip="Scripts"/>
<check_box label="Sons" name="check_sound"/>
+ <icon name="icon_sound" tool_tip="Sons"/>
<check_box label="Texturas" name="check_texture"/>
- <button label="Marcar Todas" label_selected="Todas" name="check_all"/>
- <button label="Desmarcar Todas" label_selected="Nenhuma" name="check_none"/>
+ <icon name="icon_texture" tool_tip="Texturas"/>
+ <button label="√ Tudo" label_selected="Todas" name="check_all"/>
+ <button label="Limpar" label_selected="Nenhuma" name="check_none"/>
<text name="newperms">
- Novas Permissões
+ Novas autorizações de conteúdo
+ </text>
+ <text name="GroupLabel">
+ Grupo:
</text>
- <check_box label="Compartilhar com o grupo" name="share_with_group"/>
- <check_box label="Permitir que qualquer um copie" name="everyone_copy"/>
+ <check_box label="Compartilhar" name="share_with_group"/>
+ <text name="AnyoneLabel">
+ Todos:
+ </text>
+ <check_box label="Copiar" name="everyone_copy"/>
<text name="NextOwnerLabel">
- O próximo dono pode:
+ Próximo proprietário:
</text>
<check_box label="Modificar" name="next_owner_modify"/>
<check_box label="Copiar" name="next_owner_copy"/>
- <check_box label="Revender/Dar" name="next_owner_transfer"/>
- <button label="Ajuda" name="help"/>
- <button label="Aplicar" name="apply"/>
- <button label="Fechar" name="close"/>
- <string name="nothing_to_modify_text">
- A seleção não contém nenhum conteúdo editável.
- </string>
- <string name="status_text">
- Definindo permissões em [NAME]
- </string>
- <string name="start_text">
- Iniciando solicitação de mudança de permissão...
- </string>
- <string name="done_text">
- Solicitação de mudança de permissão concluída.
- </string>
+ <check_box initial_value="true" label="Transferir" name="next_owner_transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/>
+ <button label="OK" name="apply"/>
+ <button label="Cancelar" name="close"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_bumps.xml b/indra/newview/skins/default/xui/pt/floater_bumps.xml
index 1833cd4335..5e656f4730 100644
--- a/indra/newview/skins/default/xui/pt/floater_bumps.xml
+++ b/indra/newview/skins/default/xui/pt/floater_bumps.xml
@@ -1,21 +1,24 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_bumps" title="COLISÕES, IMPULSOS E BATIDAS">
- <text name="none_detected">
+ <floater.string name="none_detected">
Nada detectado
- </text>
- <text name="bump">
+ </floater.string>
+ <floater.string name="bump">
[TIME] [FIRST] [LAST] conflitou com você
- </text>
- <text name="llpushobject">
+ </floater.string>
+ <floater.string name="llpushobject">
[TIME] [FIRST] [LAST] empurrou você com um script
- </text>
- <text name="selected_object_collide">
+ </floater.string>
+ <floater.string name="selected_object_collide">
[TIME] [FIRST] [LAST] o atingiu com um objeto
- </text>
- <text name="scripted_object_collide">
+ </floater.string>
+ <floater.string name="scripted_object_collide">
[TIME] [FIRST] [LAST] o atingiu com um objeto programado
- </text>
- <text name="physical_object_collide">
+ </floater.string>
+ <floater.string name="physical_object_collide">
[TIME] [FIRST] [LAST] o atingiu com um objeto físico
- </text>
+ </floater.string>
+ <floater.string name="timeStr">
+ [[hour,datetime,slt]:[min,datetime,slt]]
+ </floater.string>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_contents.xml b/indra/newview/skins/default/xui/pt/floater_buy_contents.xml
index 322a07575a..c64523ceb3 100644
--- a/indra/newview/skins/default/xui/pt/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/pt/floater_buy_contents.xml
@@ -7,8 +7,8 @@
Comprar por L$[AMOUNT] de(a) [NAME]?
</text>
<button label="Cancelar" label_selected="Cancelar" name="cancel_btn" width="73"/>
- <button label="Comprar" label_selected="Comprar" name="buy_btn" width="73" left_delta="-77"/>
- <check_box label="Vestir roupa agora" name="wear_check" left_delta="-130"/>
+ <button label="Comprar" label_selected="Comprar" left_delta="-77" name="buy_btn" width="73"/>
+ <check_box label="Vestir roupa agora" left_delta="-130" name="wear_check"/>
<string name="no_copy_text">
(sem copiar)
</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
index f17c069ecf..b3cce2d78f 100644
--- a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
@@ -1,71 +1,66 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy currency" title="COMPRAR DINHEIRO">
- <text name="info_buying">
- Comprando Dinheiro:
- </text>
- <text name="info_cannot_buy">
- Não pode comprar agora:
- </text>
+<floater name="buy currency" title="Comprar L$">
+ <floater.string name="buy_currency">
+ Compre L$ [LINDENS] por aprox. [LOCALAMOUNT]
+ </floater.string>
<text name="info_need_more">
- Você precisa de mais dinheiro:
+ Você precisa de mais L$
</text>
- <text name="error_message">
- Algo não está certo.
- </text>
- <button label="Ir para o website" name="error_web"/>
<text name="contacting">
Contatando LindeX...
</text>
- <text name="buy_action_unknown">
- Comprar L$ no câmbio atual da LindeX
- </text>
- <text name="buy_action">
- [NAME] L$ [PRICE]
- </text>
- <text name="currency_action" width="60">
+ <text name="info_buying">
Comprar L$
</text>
- <line_editor name="currency_amt" left_delta="65" width="70">
- 1234
- </line_editor>
- <text name="currency_est" left_delta="72">
- por aproxim. [LOCALAMOUNT]
- </text>
- <text name="getting_data">
- Obtendo dados...
- </text>
<text name="balance_label">
- Você tem atualmente
+ Tenho
</text>
<text name="balance_amount">
L$ [AMT]
</text>
+ <text name="currency_action" width="60">
+ Comprar
+ </text>
+ <text name="currency_label">
+ L$
+ </text>
+ <line_editor label="L$" left_delta="65" name="currency_amt" width="70">
+ 1234
+ </line_editor>
<text name="buying_label">
- Você está comprando
+ O preço é
</text>
- <text name="buying_amount">
- L$ [AMT]
+ <text left_delta="72" name="currency_est">
+ aprox. [LOCALAMOUNT]
+ </text>
+ <text name="getting_data">
+ Calculando...
+ </text>
+ <text name="buy_action">
+ [NAME] L$ [PRICE]
</text>
<text name="total_label">
- Seu saldo será
+ Saldo resultante:
</text>
<text name="total_amount">
L$ [AMT]
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php?lang=pt-BR payment method] | [http://www.secondlife.com/my/account/currency.php?lang=pt-BR currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=pt-BR exchange rate]
+ [http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+ </text>
+ <text name="exchange_rate_note">
+ Digite o valor novamente para ver o câmbio atual.
</text>
<text name="purchase_warning_repurchase">
- Confirmando esta compra só compra a moeda.
-Você precisará tentar novamente a operação.
+ Confirmar esta transação compra somente L$, não o objeto.
</text>
<text name="purchase_warning_notenough">
- Você não está comprando moeda suficiente.
-Aumente a quantidade de compra.
+ O valor da transação não é suficiente. Aumente o volume da compra.
</text>
+ <button label="Comprar já!" name="buy_btn"/>
<button label="Fechar" name="cancel_btn"/>
- <button label="Adquirir" name="buy_btn"/>
- <string name="buy_currency">
- Comprar L$ [LINDENS] por aproxim. [LOCALAMOUNT]
- </string>
+ <text name="info_cannot_buy">
+ Transação incompleta
+ </text>
+ <button label="Prosseguir para a web" name="error_web"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_land.xml b/indra/newview/skins/default/xui/pt/floater_buy_land.xml
index 6e502ad6e5..f0e5808df3 100644
--- a/indra/newview/skins/default/xui/pt/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_buy_land.xml
@@ -1,27 +1,27 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy land" title="COMPRAR TERRA">
+<floater name="buy land" title="COMPRAR TERRENO">
<text name="region_name_label">
Região:
</text>
- <text name="region_name_text" left="560">
+ <text left="560" name="region_name_text">
(desconhecido)
</text>
<text name="region_type_label">
Tipo:
</text>
- <text name="region_type_text" left="560">
+ <text left="560" name="region_type_text">
(desconhecido)
</text>
<text name="estate_name_label">
Propriedade:
</text>
- <text name="estate_name_text" left="560">
+ <text left="560" name="estate_name_text">
(desconhecido)
</text>
- <text name="estate_owner_label" width="105" right="565">
+ <text name="estate_owner_label" right="565" width="105">
Dono da propriedade:
</text>
- <text name="estate_owner_text" left="560" >
+ <text left="560" name="estate_owner_text">
(desconhecido)
</text>
<text name="resellable_changeable_label">
@@ -40,7 +40,7 @@
<text_editor name="covenant_editor">
Carregando...
</text_editor>
- <check_box label="Eu concordo com as definições do &#10;Corretor feitas acima." name="agree_covenant"/>
+ <check_box label="Eu concordo com as definições do Corretor feitas acima." name="agree_covenant"/>
<text name="info_parcel_label">
Lote:
</text>
@@ -58,8 +58,7 @@
</text>
<text name="info_price">
L$ 1500
-(L$ 1.1/m²)
-vendido com os objetos
+(L$ 1,1/m²) inclui objetos
</text>
<text name="info_action">
Comprar este lote irá:
@@ -67,7 +66,7 @@ vendido com os objetos
<text name="error_message">
Algo ainda não está correto.
</text>
- <button label="Ir para a página da web" name="error_web" width="150" />
+ <button label="Ir para a página da web" name="error_web" width="150"/>
<text name="account_action">
Evoluir sua conta para membro Premium
</text>
@@ -75,16 +74,16 @@ vendido com os objetos
Somente membros Premium podem possuir terra.
</text>
<combo_box name="account_level">
- <combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/mês, debitado mensalmente" />
- <combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/mês, debitado trimestralmente" />
- <combo_box.item name="US$6.00/month,billedannually" label="US$6.00/mês, debitado anualmente" />
+ <combo_box.item label="US$9.95/mês, pagamento mensal" name="US$9.95/month,billedmonthly"/>
+ <combo_box.item label="US$7,50/mês, pagamento trimestral" name="US$7.50/month,billedquarterly"/>
+ <combo_box.item label="US$6.00/mês, pagamento trimestral" name="US$6.00/month,billedannually"/>
</combo_box>
<text name="land_use_action">
Aumente sua taxa de locação de terra para US$ 40/mês.
</text>
<text name="land_use_reason">
- Você possui 1309 m² de terra.
-Este lote tem 512 m² de terra.
+ Você tem 1309 m².
+Este lote mede 512 m².
</text>
<text name="purchase_action">
Pagar ao Residente Joe L$4000 pela terra
@@ -95,16 +94,16 @@ Este lote tem 512 m² de terra.
<text name="currency_action" width="116">
Compre L$ adicionais
</text>
- <line_editor name="currency_amt" left="190" width="65">
+ <line_editor left="190" name="currency_amt" width="65">
1000
</line_editor>
<text name="currency_est">
- por aproxim. US$ [AMOUNT2]
+ cerca de [LOCAL_AMOUNT]
</text>
<text name="currency_balance">
Você tem L$2,100.
</text>
- <check_box label="Remover [AMOUNT] m² de contribuição do grupo." name="remove_contribution"/>
+ <check_box label="Subtrair [AMOUNT] m² da minha contribuição." name="remove_contribution"/>
<button label="Adquirir" name="buy_btn"/>
<button label="Cancelar" name="cancel_btn"/>
<string name="can_resell">
@@ -179,26 +178,26 @@ Este lote tem 512 m² de terra.
Sua conta pode possuir uma terra.
</string>
<string name="land_holdings">
- Você possui [BUYER] m² de terra.
+ Você tem [BUYER] m².
</string>
<string name="pay_to_for_land">
Pagar L$ [AMOUNT] para [SELLER] por esta terra
</string>
<string name="buy_for_US">
- Comprar L$ [AMOUNT] por aprox. US$ [AMOUNT2],
+ Compre L$ [AMOUNT] por cerca de [LOCAL_AMOUNT],
</string>
<string name="parcel_meters">
- Este lote tem [AMOUNT] m².
+ Este lote tem [AMOUNT] m²
</string>
<string name="premium_land">
- Esta terra é premium e será taxada como [AMOUNT] m².
+ Esse é um terreno premium e custa o equivalente a [AMOUNT] m².
</string>
<string name="discounted_land">
- Esta terra tem desconto e será taxada como [AMOUNT] m².
+ Esse é um terreno com desconto, e custa o equivalente a [AMOUNT] m².
</string>
<string name="meters_supports_object">
[AMOUNT] m²
-aceita [AMOUNT2] objetos
+suporta [AMOUNT2] objetos
</string>
<string name="sold_with_objects">
vendido com objetos
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_object.xml b/indra/newview/skins/default/xui/pt/floater_buy_object.xml
index e9968ed8f8..d71eb04cc4 100644
--- a/indra/newview/skins/default/xui/pt/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/pt/floater_buy_object.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="contents" title="COMPRAR CÓPIA DO OBJETO">
<text name="contents_text">
- e seus conteúdos:
+ Contém:
</text>
<text name="buy_text">
Comprar por L$[AMOUNT] de(a) [NAME]?
diff --git a/indra/newview/skins/default/xui/pt/floater_camera.xml b/indra/newview/skins/default/xui/pt/floater_camera.xml
index b61e261148..5114b19336 100644
--- a/indra/newview/skins/default/xui/pt/floater_camera.xml
+++ b/indra/newview/skins/default/xui/pt/floater_camera.xml
@@ -10,7 +10,22 @@
Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita
</floater.string>
<panel name="controls">
- <joystick_track name="cam_track_stick" tool_tip="Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita"/>
- <joystick_zoom name="zoom" tool_tip="Aproximar a Câmera in direção ao Foco"/>
+ <joystick_track name="cam_track_stick" tool_tip="Move a câmera para cima e para baixo, direita e esquerda"/>
+ <panel name="zoom" tool_tip="Aproximar a Câmera in direção ao Foco">
+ <slider_bar name="zoom_slider" tool_tip="Zoom de câmera para focalizar"/>
+ </panel>
+ <joystick_rotate name="cam_rotate_stick" tool_tip="Órbita em torno do foco da câmera"/>
+ <panel name="camera_presets">
+ <button name="rear_view" tool_tip="Vista de trás"/>
+ <button name="group_view" tool_tip="Visualizar grupo"/>
+ <button name="front_view" tool_tip="Vista frontal"/>
+ <button name="mouselook_view" tool_tip="Visâo do mouse"/>
+ </panel>
+ </panel>
+ <panel name="buttons">
+ <button label="" name="orbit_btn" tool_tip="Câmera orbital"/>
+ <button label="" name="pan_btn" tool_tip="Câmera Pan"/>
+ <button label="" name="avatarview_btn" tool_tip="ver como o avatar"/>
+ <button label="" name="freecamera_btn" tool_tip="Visualizar objeto"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_choose_group.xml b/indra/newview/skins/default/xui/pt/floater_choose_group.xml
index ae395734e9..60f01a3733 100644
--- a/indra/newview/skins/default/xui/pt/floater_choose_group.xml
+++ b/indra/newview/skins/default/xui/pt/floater_choose_group.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="groups" title="GRUPOS">
<text name="groupdesc">
Escolha um grupo:
</text>
- <button label="OK" label_selected="OK" name="OK" />
- <button label="Cancelar" label_selected="Cancelar" name="Cancel" />
+ <button label="OK" label_selected="OK" name="OK"/>
+ <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_color_picker.xml b/indra/newview/skins/default/xui/pt/floater_color_picker.xml
index 6a4263f4ff..d60a815f30 100644
--- a/indra/newview/skins/default/xui/pt/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/pt/floater_color_picker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="ColorPicker" title="SELETOR DE COR">
+<floater name="ColorPicker" title="DESTAQUE DE COR">
<text name="r_val_text">
Vermelho:
</text>
@@ -18,15 +18,14 @@
<text name="l_val_text">
Lum:
</text>
- <check_box label="Aplicar imediatamente" name="apply_immediate"/>
- <button left_delta="150" name="color_pipette" />
- <button left_delta="55" label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
- <button label="Selecionar" label_selected="Selecionar" name="select_btn"/>
+ <check_box label="inscrever-se agora" name="apply_immediate"/>
+ <button left_delta="150" name="color_pipette"/>
+ <button label="Cancelar" label_selected="Cancelar" left_delta="55" name="cancel_btn"/>
+ <button label="Ok" label_selected="Ok" name="select_btn"/>
<text name="Current color:">
Cor atual:
</text>
<text name="(Drag below to save.)">
- (Arraste abaixo
- para salvar)
+ (Arrastar abaixo para salvar)
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_customize.xml b/indra/newview/skins/default/xui/pt/floater_customize.xml
index 55946933e7..447ca8c543 100644
--- a/indra/newview/skins/default/xui/pt/floater_customize.xml
+++ b/indra/newview/skins/default/xui/pt/floater_customize.xml
@@ -14,8 +14,8 @@
<button label="Tórax" label_selected="Tórax" name="Torso"/>
<button label="Pernas" label_selected="Pernas" name="Legs"/>
<radio_group name="sex radio">
- <radio_item name="radio" label="Feminino" />
- <radio_item name="radio2" label="Masculino" />
+ <radio_item label="Feminino" name="radio"/>
+ <radio_item label="Masculino" name="radio2"/>
</radio_group>
<text name="title">
[DESC]
@@ -47,10 +47,10 @@ Alternativamente, você pode criar uma nova de um esboço e usá-la.
<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
</panel>
<panel label="Pele" name="Skin">
- <button width="115" label="Cor de Pele" label_selected="Cor de Pele" name="Skin Color"/>
- <button width="115" label="Detalhes Faciais" label_selected="Detalhes Faciais" name="Face Detail"/>
- <button width="115" label="Maquiagem" label_selected="Maquiagem" name="Makeup"/>
- <button width="115" label="Detalhes do Corpo" label_selected="Detalhes do Corpo" name="Body Detail"/>
+ <button label="Cor de Pele" label_selected="Cor de Pele" name="Skin Color" width="115"/>
+ <button label="Detalhes Faciais" label_selected="Detalhes Faciais" name="Face Detail" width="115"/>
+ <button label="Maquiagem" label_selected="Maquiagem" name="Makeup" width="115"/>
+ <button label="Detalhes do Corpo" label_selected="Detalhes do Corpo" name="Body Detail" width="115"/>
<text name="title">
[DESC]
</text>
@@ -77,19 +77,19 @@ e usá-la.
<text name="Item Action Label">
Pele:
</text>
- <texture_picker width="86" label="Tattoo: cabeça" name="Head Tattoos" tool_tip="Clique para escolher um desenho"/>
- <texture_picker width="86" label="Tattoo: superior" name="Upper Tattoos" tool_tip="Clique para escolher um desenho"/>
- <texture_picker width="86" label="Tattoo: inferior" name="Lower Tattoos" tool_tip="Clique para escolher um desenho"/>
+ <texture_picker label="Tattoo: cabeça" name="Head Tattoos" tool_tip="Clique para escolher um desenho" width="86"/>
+ <texture_picker label="Tattoo: superior" name="Upper Tattoos" tool_tip="Clique para escolher um desenho" width="86"/>
+ <texture_picker label="Tattoo: inferior" name="Lower Tattoos" tool_tip="Clique para escolher um desenho" width="86"/>
<button label="Criar Nova Pele" label_selected="Criar Nova Pele" name="Create New"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
<button label="Reverter" label_selected="Reverter" name="Revert"/>
</panel>
<panel label="Cabelo" name="Hair">
- <button width="115" label="Cor" label_selected="Cor" name="Color"/>
- <button width="115" label="Estilo" label_selected="Estilo" name="Style"/>
- <button width="115" label="Sombrancelhas" label_selected="Sombrancelhas" name="Eyebrows"/>
- <button width="115" label="Rosto" label_selected="Rosto" name="Facial"/>
+ <button label="Cor" label_selected="Cor" name="Color" width="115"/>
+ <button label="Estilo" label_selected="Estilo" name="Style" width="115"/>
+ <button label="Sombrancelhas" label_selected="Sombrancelhas" name="Eyebrows" width="115"/>
+ <button label="Rosto" label_selected="Rosto" name="Facial" width="115"/>
<text name="title">
[DESC]
</text>
@@ -154,10 +154,10 @@ Alternativamente, você pode criar um novo modelo de um esboço e usá-lo.
<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
<button label="Reverter" label_selected="Reverter" name="Revert"/>
</panel>
- <panel label="Roupas" name="clothes_placeholder"/>
+ <placeholder label="Roupas" name="clothes_placeholder"/>
<panel label="Camisa" name="Shirt">
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Nova Camisa" label_selected="Criar Nova Camisa" name="Create New"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
@@ -192,7 +192,7 @@ um esboço e usá-lo.
</panel>
<panel label="Calças" name="Pants">
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas."/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Novas Calças" label_selected="Criar Novas Calças" name="Create New"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
@@ -253,7 +253,7 @@ de um esboço e usá-lo.
Sapatos:
</text>
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Novos Sapatos" label_selected="Criar Novos Sapatos" name="Create New" width="166"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
@@ -288,7 +288,7 @@ um esboço e usá-las.
Meias:
</text>
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Novas Meias" label_selected="Criar Novas Meias" name="Create New"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
@@ -324,7 +324,7 @@ partir de um esboço e usá-lo.
</text>
<texture_picker label="Tecido Superior" name="Upper Fabric" tool_tip="Clique para escolher uma imagem." width="84"/>
<texture_picker label="Tecido Inferior" name="Lower Fabric" tool_tip="Clique para escolher uma imagem." width="84"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Nova Jaqueta" label_selected="Criar Nova Jaqueta" name="Create New"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
@@ -359,7 +359,7 @@ partir de um esboço e usá-lo.
Luvas:
</text>
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas"/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Novas Luvas" label_selected="Criar Novas Luvas" name="Create New"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
@@ -394,7 +394,7 @@ partir de um esboço e usá-lo.
Camiseta:
</text>
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas"/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Nova Camiseta" label_selected="Criar Nova Camiseta" name="Create New"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
@@ -429,7 +429,7 @@ modelo a partir de um esboço e usá-lo.
Roupas de Baixo:
</text>
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Novas Roupas de Baixo" label_selected="Criar Novas Roupas de Baixo" name="Create New" width="180"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
@@ -464,16 +464,88 @@ partir de um esboço e usá-lo.
Saia:
</text>
<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Click to open Color Picker"/>
+ <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
<button label="Criar Nova Saia" label_selected="Criar Nova Saia" name="Create New"/>
<button label="Remover" label_selected="Remover" name="Take Off"/>
<button label="Salvar" label_selected="Salvar" name="Save"/>
<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
<button label="Reverter" label_selected="Reverter" name="Revert"/>
</panel>
+ <panel label="Alpha" name="Alpha">
+ <text name="title">
+ [DESC]:
+ </text>
+ <text name="title_no_modify">
+ [DESC]: não pode ser modificado
+ </text>
+ <text name="title_loading">
+ [DESC]: Carregando...
+ </text>
+ <text name="title_not_worn">
+ [DESC]: não vestido
+ </text>
+ <text name="path">
+ Localização: [PATH]
+ </text>
+ <text name="not worn instructions">
+ Para por uma máscara alpha nova, arraste a máscara do inventário para o seu avatar.
+Ou crie uma máscara nova e coloque-a.
+ </text>
+ <text name="no modify instructions">
+ Você não está autorizado a modificar este acessório.
+ </text>
+ <text name="Item Action Label">
+ Alpha:
+ </text>
+ <texture_picker label="Alpha inferior" name="Lower Alpha" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Alpha de cima" name="Upper Alpha" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Cabeça Alpha" name="Head Alpha" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Olhos Alpha" name="Eye Alpha" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Cabelo alpha" name="Hair Alpha" tool_tip="Selecionar imagem"/>
+ <button label="Criar Alpha novo" label_selected="Criar Alpha novo" name="Create New"/>
+ <button label="Tirar" label_selected="Tirar" name="Take Off"/>
+ <button label="Salvar" label_selected="Salvar" name="Save"/>
+ <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
+ <button label="Reverter" label_selected="Reverter" name="Revert"/>
+ </panel>
+ <panel label="Tatuagem" name="Tattoo">
+ <text name="title">
+ [DESC]:
+ </text>
+ <text name="title_no_modify">
+ [DESC]: não pode ser modificado
+ </text>
+ <text name="title_loading">
+ [DESC]: Carregando...
+ </text>
+ <text name="title_not_worn">
+ [DESC]: não vestido
+ </text>
+ <text name="path">
+ Localização: [PATH]
+ </text>
+ <text name="not worn instructions">
+ Para por uma tatuagem nova, arraste uma tatuagem do inventário para o seu avatar.
+Ou crie uma tatuagem nova.
+ </text>
+ <text name="no modify instructions">
+ Você não está autorizado a modificar este acessório.
+ </text>
+ <text name="Item Action Label">
+ Tatuagem:
+ </text>
+ <texture_picker label="Tatuagem na cabeça" name="Head Tattoo" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Tatuagem parte de cima" name="Upper Tattoo" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Tatuagem de baixo" name="Lower Tattoo" tool_tip="Selecionar imagem"/>
+ <button label="Criar tatuagem" label_selected="Criar tatuagem" name="Create New"/>
+ <button label="Tirar" label_selected="Tirar" name="Take Off"/>
+ <button label="Salvar" label_selected="Salvar" name="Save"/>
+ <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
+ <button label="Reverter" label_selected="Reverter" name="Revert"/>
+ </panel>
</tab_container>
<scroll_container left="249" name="panel_container"/>
+ <button label="Criar look" label_selected="Criar look" name="make_outfit_btn"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
<button label="OK" label_selected="OK" name="Ok"/>
- <button label="Criar Vestimenta..." label_selected="Criar Vestimenta..." name="Make Outfit" left="117" width="125" />
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_device_settings.xml b/indra/newview/skins/default/xui/pt/floater_device_settings.xml
index fa4da834b8..48a4a6ef6f 100644
--- a/indra/newview/skins/default/xui/pt/floater_device_settings.xml
+++ b/indra/newview/skins/default/xui/pt/floater_device_settings.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_device_settings" title="AJUSTES DO DISPOSITIVO DE CONVERSA POR VOZ"/>
+<floater name="floater_device_settings" title="CONFIGURAÇÃO DE DISPOSITIVO DE VOZ"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_env_settings.xml b/indra/newview/skins/default/xui/pt/floater_env_settings.xml
index 4a43801b48..3ca8d934c9 100644
--- a/indra/newview/skins/default/xui/pt/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/pt/floater_env_settings.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Environment Editor Floater" title="EDITOR DO AMBIENTE">
+ <floater.string name="timeStr">
+ [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
+ </floater.string>
<text name="EnvTimeText">
Hora do Dia
</text>
@@ -13,13 +16,12 @@ Nuvens
<text name="EnvWaterColorText">
Cor da água
</text>
- <color_swatch label="" name="EnvWaterColor" tool_tip="Clique para abrir o Editor de cores"/>
+ <color_swatch label="" name="EnvWaterColor" tool_tip="Selecionar a cor"/>
<text name="EnvWaterFogText">
Névoa da
água
</text>
<button bottom="-144" label="Usar hora da propriedade" name="EnvUseEstateTimeButton" width="155"/>
- <button label="Céu Avançado" name="EnvAdvancedSkyButton" width="155" left="167"/>
- <button label="Água Avançada" name="EnvAdvancedWaterButton" width="155" left="326"/>
- <button label="?" name="EnvSettingsHelpButton"/>
+ <button label="Céu Avançado" left="167" name="EnvAdvancedSkyButton" width="155"/>
+ <button label="Água Avançada" left="326" name="EnvAdvancedWaterButton" width="155"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_gesture.xml b/indra/newview/skins/default/xui/pt/floater_gesture.xml
index b0bc42685d..2e5b92aaf7 100644
--- a/indra/newview/skins/default/xui/pt/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/pt/floater_gesture.xml
@@ -1,14 +1,25 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="gestures" title="GESTOS ATIVOS">
- <text name="help_label">
- Clicar duas vezes no gesto para executar animações e sons.
- </text>
+<floater label="Lugares" name="gestures" title="GESTOS">
+ <floater.string name="loading">
+ Carregando...
+ </floater.string>
+ <floater.string name="playing">
+ (Em execução)
+ </floater.string>
+ <floater.string name="copy_name">
+ Cópia de [COPY_NAME]
+ </floater.string>
<scroll_list name="gesture_list">
- <column label="Acionar" name="trigger"/>
- <column label="Chave" name="shortcut"/>
- <column label="Nome" name="name"/>
+ <scroll_list.columns label="Nome" name="name"/>
+ <scroll_list.columns label="Bate-papo" name="trigger"/>
+ <scroll_list.columns label="Chave" name="shortcut"/>
</scroll_list>
- <button label="Novo" name="new_gesture_btn"/>
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="gear_btn" tool_tip="Mais opções"/>
+ <button name="new_gesture_btn" tool_tip="Criar novo gesto"/>
+ <button name="activate_btn" tool_tip="Ativar/Desativar gesto selecionado"/>
+ <button name="del_btn" tool_tip="Excluir este gesto"/>
+ </panel>
<button label="Editar" name="edit_btn"/>
<button label="Executar" name="play_btn"/>
<button label="Parar" name="stop_btn"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml
index 8921e6ea12..c666a941fe 100644
--- a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Hardware Settings Floater" title="AJUSTES DE HARDWARE">
+<floater name="Hardware Settings Floater" title="CONFIGURAÇÃO DO HARDWARE">
<text name="Filtering:">
Filtragem:
</text>
@@ -8,21 +8,21 @@
Suavização:
</text>
<combo_box label="Suavização" name="fsaa" width="94">
- <combo_box.item name="FSAADisabled" label="Desabilitado"/>
- <combo_box.item name="2x" label="2x"/>
- <combo_box.item name="4x" label="4x"/>
- <combo_box.item name="8x" label="8x"/>
- <combo_box.item name="16x" label="16x"/>
+ <combo_box.item label="Desativado" name="FSAADisabled"/>
+ <combo_box.item label="2x" name="2x"/>
+ <combo_box.item label="4x" name="4x"/>
+ <combo_box.item label="8x" name="8x"/>
+ <combo_box.item label="16x" name="16x"/>
</combo_box>
<spinner label="Gama:" name="gamma"/>
<text name="(brightness, lower is brighter)">
- (brilho, quanto menor, mais brilho, 0=usar padrão)
+ (0 = brilho padrão, menor = mais brilho)
</text>
<text name="Enable VBO:">
Habilitar VBO:
</text>
- <check_box label="Habilitar Objetos com Armazenamento de Vértices" name="vbo" tool_tip="Habilitando-o em máquinas novas, ele oferece um ganho de performance. Contudo, as máquinas antigas tem freqüentemente implementações pobres de VBOs e você pode ter travamentos quando esta opção é habilitada."/>
- <slider label="Memória de Textura (MB):" name="GrapicsCardTextureMemory" tool_tip="Quantidade de memória a se reservar para texturas. Usa por padrão, a Memória da Placa de Vídeo. Sua redução pode aumentar a performance mas pode também deixar as texturas borradas."/>
- <spinner label="Relação de Distância de &#10;Nevoeiro:" name="fog"/>
+ <check_box initial_value="true" label="Habilitar Objetos com Armazenamento de Vértices" name="vbo" tool_tip="Habilitando-o em máquinas novas, ele oferece um ganho de performance. Contudo, as máquinas antigas tem freqüentemente implementações pobres de VBOs e você pode ter travamentos quando esta opção é habilitada."/>
+ <slider label="Memória de texturas (MB):" name="GraphicsCardTextureMemory" tool_tip="Quanto da memória deve ser alocado para texturas. O padrão é definido pela memória da placa de vídeo. Reduzir este valor pode melhorar o desempenho, mas as texturas podem fica fora de foco."/>
+ <spinner label="Relação de Distância de Nevoeiro:" name="fog"/>
<button label="OK" label_selected="OK" name="OK"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_help_browser.xml b/indra/newview/skins/default/xui/pt/floater_help_browser.xml
new file mode 100644
index 0000000000..281bdbd183
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_help_browser.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="NAVEGADOR DA AJUDA">
+ <layout_stack name="stack1">
+ <layout_panel name="external_controls">
+ <button label="Abrir no navegador" name="open_browser"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_im.xml b/indra/newview/skins/default/xui/pt/floater_im.xml
index 75c3409339..f6057c48f1 100644
--- a/indra/newview/skins/default/xui/pt/floater_im.xml
+++ b/indra/newview/skins/default/xui/pt/floater_im.xml
@@ -10,7 +10,7 @@
Clique no botão [BUTTON NAME] para aceitar/ conectar a este bate-papo em voz.
</string>
<string name="muted_message">
- Você emudeceu este residente. Enviar uma mensagem vai automaticamente reativá-lo novamente.
+ Você bloqueou este residente. Se quiser retirar o bloqueio, basta enviar uma mensagem.
</string>
<string name="generic_request_error">
Erro na requisição, por favor, tente novamente.
diff --git a/indra/newview/skins/default/xui/pt/floater_im_container.xml b/indra/newview/skins/default/xui/pt/floater_im_container.xml
new file mode 100644
index 0000000000..a21d4a6f1e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="floater_im_box" title="Mensagens instantâneas"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_im_session.xml b/indra/newview/skins/default/xui/pt/floater_im_session.xml
new file mode 100644
index 0000000000..39dde3408b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_im_session.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="panel_im">
+ <layout_stack name="im_panels">
+ <layout_panel label="Painel de controle de MI" name="panel_im_control_panel"/>
+ <layout_panel>
+ <line_editor label="Para" name="chat_editor"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_image_preview.xml b/indra/newview/skins/default/xui/pt/floater_image_preview.xml
index a0d8c02ef0..2ff1aa7915 100644
--- a/indra/newview/skins/default/xui/pt/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_image_preview.xml
@@ -10,17 +10,17 @@
Prévia da
imagem como:
</text>
- <combo_box label="Tipo de Roupas" name="clothing_type_combo" left="100" width="186">
- <combo_box.item name="Image" label="Imagem" />
- <combo_box.item name="Hair" label="Cabelo" />
- <combo_box.item name="FemaleHead" label="Cabeça Feminina" />
- <combo_box.item name="FemaleUpperBody" label="Parte Superior do Corpo Feminino" />
- <combo_box.item name="FemaleLowerBody" label="Parte Inferior do Corpo Feminino" />
- <combo_box.item name="MaleHead" label="Cabeça Masculina" />
- <combo_box.item name="MaleUpperBody" label="Parte Superior do Corpo Masculino" />
- <combo_box.item name="MaleLowerBody" label="Parte Inferiro do Corpo Masculino" />
- <combo_box.item name="Skirt" label="Saia" />
- <combo_box.item name="SculptedPrim" label="Primitiva Esculpida" />
+ <combo_box label="Tipo de Roupas" left="100" name="clothing_type_combo" width="186">
+ <combo_box.item label="Imagem" name="Image"/>
+ <combo_box.item label="Cabelo" name="Hair"/>
+ <combo_box.item label="Cabeça de mulher" name="FemaleHead"/>
+ <combo_box.item label="Cintura para cima, mulher" name="FemaleUpperBody"/>
+ <combo_box.item label="Cintura para baixo, mulher" name="FemaleLowerBody"/>
+ <combo_box.item label="Cabeça de homem" name="MaleHead"/>
+ <combo_box.item label="Cintura para cima, homem" name="MaleUpperBody"/>
+ <combo_box.item label="Cintura para baixo, homem" name="MaleLowerBody"/>
+ <combo_box.item label="Saia" name="Skirt"/>
+ <combo_box.item label="Prim esculpido" name="SculptedPrim"/>
</combo_box>
<text name="bad_image_text">
Incapaz de ler a imagem.
diff --git a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
new file mode 100644
index 0000000000..79124966d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="LIGAÇÃO DE DESCONHECIDO">
+ <floater.string name="localchat">
+ Bate-papo local
+ </floater.string>
+ <floater.string name="anonymous">
+ anônimo
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ está ligando.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ entrou numa ligação de voz via conferência.
+ </floater.string>
+ <text name="question">
+ Sair do [CURRENT_CHAT] e entrar neste bate-papo?
+ </text>
+ <button label="Aceitar" label_selected="Aceitar" name="Accept"/>
+ <button label="Rejeitar" label_selected="Rejeitar" name="Reject"/>
+ <button label="Enviar MI" name="Start IM"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_inspect.xml b/indra/newview/skins/default/xui/pt/floater_inspect.xml
index 97c2c6eaeb..6a00b1a628 100644
--- a/indra/newview/skins/default/xui/pt/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/pt/floater_inspect.xml
@@ -1,11 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="inspect" title="INSPECIONAR OBJETO" min_width="450">
+<floater min_width="450" name="inspect" title="EXAMINAR OBJETOS">
+ <floater.string name="timeStamp">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </floater.string>
<scroll_list name="object_list" tool_tip="Selecione um objeto nesta lista para destacá-lo in-world">
- <column label="Nome do Objeto" name="object_name"/>
- <column label="Proprietário" name="owner_name"/>
- <column label="Criador" name="creator_name"/>
- <column label="Data de Criação" name="creation_date"/>
+ <scroll_list.columns label="Nome do Objeto" name="object_name"/>
+ <scroll_list.columns label="Proprietário" name="owner_name"/>
+ <scroll_list.columns label="Criador" name="creator_name"/>
+ <scroll_list.columns label="Data de Criação" name="creation_date"/>
</scroll_list>
- <button width="185" label="Ver Perfil do Proprietário..." label_selected="" name="button owner" tool_tip="Veja o perfil do proprietário do objeto destacado"/>
- <button width="165" left="205" label="Ver perfil do criador..." label_selected="" name="button creator" tool_tip="Veja o perfil do criador original do objeto destacado"/>
+ <button label="Ver Perfil do Proprietário..." label_selected="" name="button owner" tool_tip="Veja o perfil do proprietário do objeto destacado" width="185"/>
+ <button label="Ver perfil do criador..." label_selected="" left="205" name="button creator" tool_tip="Veja o perfil do criador original do objeto destacado" width="165"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_inventory.xml b/indra/newview/skins/default/xui/pt/floater_inventory.xml
index 1c2a3a9233..409261a136 100644
--- a/indra/newview/skins/default/xui/pt/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/pt/floater_inventory.xml
@@ -1,47 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Inventory" title="INVENTÁRIO">
- <search_editor label="Escreva aqui para busca" name="inventory search editor"/>
- <tab_container name="inventory filter tabs">
- <inventory_panel label="Todos os Itens" name="All Items"/>
- <inventory_panel label="Itens Recentes" name="Recent Items"/>
- </tab_container>
- <menu_bar name="Inventory Menu">
- <menu label="Arquivo" name="File">
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Nova Janela" name="New Window"/>
- <menu_item_call label="Mostrar Filtros" name="Show Filters"/>
- <menu_item_call label="Redefinir Filtros" name="Reset Current"/>
- <menu_item_call label="Fechar Todas as Pastas" name="Close All Folders"/>
- <menu_item_call label="Limpar Lixeira" name="Empty Trash"/>
- </menu>
- <menu label="Criar" name="Create">
- <menu_item_call label="Nova Pasta" name="New Folder"/>
- <menu_item_call label="Novo Script" name="New Script"/>
- <menu_item_call label="Nova Nota" name="New Note"/>
- <menu_item_call label="Novo Gesto" name="New Gesture"/>
- <menu label="Nova Roupa" 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="Novas Roupas de Baixo" name="New Underpants"/>
- </menu>
- <menu label="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>
- <menu label="Ordenar" name="Sort">
- <menu_item_check label="Por Nome" name="By Name"/>
- <menu_item_check label="Por Data" name="By Date"/>
- <menu_item_check label="Pastas Sempre por Nome" name="Folders Always By Name"/>
- <menu_item_check label="Pastas do sistema primeiro" name="System Folders To Top"/>
- </menu>
- </menu_bar>
+ <floater.string name="Title">
+ Inventário
+ </floater.string>
+ <floater.string name="TitleFetching">
+ Inventário ([ITEM_COUNT] Items) [FILTER] [FILTER]
+ </floater.string>
+ <floater.string name="TitleCompleted">
+ Inventário ([ITEM_COUNT] Items) [FILTER]
+ </floater.string>
+ <floater.string name="Fetched">
+ Obtido
+ </floater.string>
+ <panel label="Painel do inventário" name="Inventory Panel"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
index 2a6b02f9c2..8fe69c097d 100644
--- a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
@@ -1,5 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="item properties" title="PROPRIEDADES DO ITEM DE INVENTÁRIO">
+<floater name="item properties" title="PROPRIEDADES DE ITEM NO INVENTÁRIO">
+ <floater.string name="unknown">
+ (desconhecido)
+ </floater.string>
+ <floater.string name="public">
+ (público)
+ </floater.string>
+ <floater.string name="you_can">
+ Você pode:
+ </floater.string>
+ <floater.string name="owner_can">
+ Proprietário pode :
+ </floater.string>
+ <floater.string name="acquiredDate">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </floater.string>
<text name="LabelItemNameTitle">
Nome:
</text>
@@ -27,55 +42,32 @@
Qua Mai 24 12:50:46 2006
</text>
<text name="OwnerLabel">
- Você pode:
+ Você:
</text>
- <check_box label="Modificar" name="CheckOwnerModify"/>
+ <check_box label="Editar" name="CheckOwnerModify"/>
<check_box label="Copiar" name="CheckOwnerCopy"/>
- <check_box label="Revender/Doar" name="CheckOwnerTransfer"/>
- <text name="BaseMaskDebug">
- B:
- </text>
- <text name="OwnerMaskDebug">
- O:
- </text>
- <text name="GroupMaskDebug">
- G:
+ <check_box label="Revender" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Todos:
</text>
- <text name="EveryoneMaskDebug">
- E:
+ <check_box label="Cortar" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Grupo:
</text>
- <text name="NextMaskDebug">
- N:
- </text>
- <check_box label="Compartilhar com o grupo" name="CheckShareWithGroup"/>
- <check_box label="Permitir qualquer um copiar" name="CheckEveryoneCopy"/>
+ <check_box label="Compartilhar" name="CheckShareWithGroup"/>
<text name="NextOwnerLabel" width="230">
- Próximo dono pode:
+ Próximo proprietário:
</text>
- <check_box label="Modificar" name="CheckNextOwnerModify"/>
+ <check_box label="Editar" name="CheckNextOwnerModify"/>
<check_box label="Copiar" name="CheckNextOwnerCopy"/>
- <check_box label="Revender/Doar" name="CheckNextOwnerTransfer"/>
- <text name="SaleLabel">
- Marcar Item:
- </text>
+ <check_box label="Revender" name="CheckNextOwnerTransfer"/>
<check_box label="À venda" name="CheckPurchase"/>
- <radio_group name="RadioSaleType">
- <radio_item name="radio" label="Original" />
- <radio_item name="radio2" label="Cópia" />
- </radio_group>
- <text name="TextPrice">
- Price: L$
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Cortar" name="Copy"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Preço:" name="Edit Cost"/>
+ <text name="CurrencySymbol">
+ L$
</text>
- <string name="unknown">
- (desconhecido)
- </string>
- <string name="public">
- (público)
- </string>
- <string name="you_can">
- Você pode:
- </string>
- <string name="owner_can">
- Proprietário pode :
- </string>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_joystick.xml b/indra/newview/skins/default/xui/pt/floater_joystick.xml
index 0793a0b161..ecc4fcc9e9 100644
--- a/indra/newview/skins/default/xui/pt/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/pt/floater_joystick.xml
@@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Joystick" title="CONFIGURAÇÃO DO JOYSTICK">
- <check_box name="enable_joystick" label="Habilitar Joystick:"/>
+ <check_box label="Habilitar Joystick:" name="enable_joystick"/>
<text left="135" name="joystick_type" width="360"/>
- <spinner label="Mapeamento: eixo X" name="JoystickAxis1" label_width="124" width="164"/>
- <spinner label="Mapeamento: eixo Y" name="JoystickAxis2" label_width="124" width="164"/>
- <spinner label="Mapeamento: eixo Z" name="JoystickAxis0" label_width="124" width="164"/>
- <spinner label="Mapeamento: Elevação" name="JoystickAxis4" label_width="124" width="164"/>
- <spinner label="Mapeamento: Guinada" name="JoystickAxis5" label_width="124" width="164"/>
- <spinner label="Mapeamento: Rolagem" name="JoystickAxis3" label_width="124" width="164"/>
- <spinner label="Mapeamento: Zoom" name="JoystickAxis6" label_width="124" width="164"/>
- <check_box label="Zoom Direto" name="ZoomDirect" left="194"/>
+ <spinner label="Mapeamento: eixo X" label_width="124" name="JoystickAxis1" width="164"/>
+ <spinner label="Mapeamento: eixo Y" label_width="124" name="JoystickAxis2" width="164"/>
+ <spinner label="Mapeamento: eixo Z" label_width="124" name="JoystickAxis0" width="164"/>
+ <spinner label="Mapeamento: Elevação" label_width="124" name="JoystickAxis4" width="164"/>
+ <spinner label="Mapeamento: Guinada" label_width="124" name="JoystickAxis5" width="164"/>
+ <spinner label="Mapeamento: Rolagem" label_width="124" name="JoystickAxis3" width="164"/>
+ <spinner label="Mapeamento: Zoom" label_width="124" name="JoystickAxis6" width="164"/>
+ <check_box label="Zoom Direto" left="194" name="ZoomDirect"/>
<check_box label="Cursor 3D" name="Cursor3D"/>
<check_box label="Nível Automático" name="AutoLeveling"/>
<text name="Control Modes:">
Modos de Controle:
</text>
- <check_box name="JoystickAvatarEnabled" label="Avatar"/>
- <check_box name="JoystickBuildEnabled" left="192" label="Construir"/>
- <check_box name="JoystickFlycamEnabled" label="Camera aérea"/>
+ <check_box label="Avatar" name="JoystickAvatarEnabled"/>
+ <check_box label="Construir" left="192" name="JoystickBuildEnabled"/>
+ <check_box label="Camera aérea" name="JoystickFlycamEnabled"/>
<text name="XScale">
Escala X
</text>
@@ -27,13 +27,13 @@
<text name="ZScale">
Escala Z
</text>
- <text name="PitchScale" left="3" width="115">
+ <text left="3" name="PitchScale" width="115">
Escala de Elevação
</text>
- <text name="YawScale" left="3" width="115">
+ <text left="3" name="YawScale" width="115">
Escala da Guinada
</text>
- <text name="RollScale" left="3" width="115">
+ <text left="3" name="RollScale" width="115">
Escala de Rolagem
</text>
<text name="XDeadZone">
@@ -45,13 +45,13 @@
<text name="ZDeadZone">
Zona Morta Z
</text>
- <text name="PitchDeadZone" left="3" width="115">
+ <text left="3" name="PitchDeadZone" width="115">
Zona Morta: Elevação
</text>
- <text name="YawDeadZone" left="3" width="115">
+ <text left="3" name="YawDeadZone" width="115">
Zona Morta: Guinada
</text>
- <text name="RollDeadZone" left="3" width="115">
+ <text left="3" name="RollDeadZone" width="115">
Zona Morta: Rolagem
</text>
<text name="Feathering">
@@ -60,10 +60,10 @@
<text name="ZoomScale2">
Escala de Zoom
</text>
- <text name="ZoomDeadZone" width="110" left="4">
+ <text left="4" name="ZoomDeadZone" width="110">
Zona Morta de Zoom
</text>
- <button label="Padrões do SpaceNavigator" name="SpaceNavigatorDefaults" font="SansSerifSmall"/>
+ <button font="SansSerifSmall" label="Padrões do SpaceNavigator" name="SpaceNavigatorDefaults"/>
<button label="OK" label_selected="OK" name="ok_btn"/>
<button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
<stat_view label="Monitor do Joystick" name="axis_view">
diff --git a/indra/newview/skins/default/xui/pt/floater_lagmeter.xml b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml
index 2728633438..9932318293 100644
--- a/indra/newview/skins/default/xui/pt/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml
@@ -1,155 +1,154 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_lagmeter" title="MEDIDOR DE ATRASO">
- <button label="" label_selected="" name="client_lagmeter" tool_tip="Status de atraso no Cliente"/>
- <text left="30" name="client_lag_cause" right="-10" />
- <text left="30" name="network_lag_cause" right="-10" />
- <text left="30" name="server_lag_cause" right="-32" />
- <text name="client">
- Cliente:
- </text>
- <text name="client_text" font="SansSerifSmall">
- Normal
- </text>
- <button label="" label_selected="" name="network_lagmeter" tool_tip="Status de atraso na rede"/>
- <text name="network">
- Rede:
- </text>
- <text name="network_text" font="SansSerifSmall">
- Normal
- </text>
- <button label="" label_selected="" name="server_lagmeter" tool_tip="Status de atraso no servidor"/>
- <text name="server">
- Servidor:
- </text>
- <text name="server_text" font="SansSerifSmall">
- Normal
- </text>
- <button label="?" name="server_help"/>
- <button label="&gt;&gt;" name="minimize"/>
- <string name="max_title_msg">
+<floater name="floater_lagmeter" title="LAG - Índice">
+ <floater.string name="max_title_msg">
Medidor de Atraso
- </string>
- <string name="max_width_px">
+ </floater.string>
+ <floater.string name="max_width_px">
360
- </string>
- <string name="min_title_msg">
+ </floater.string>
+ <floater.string name="min_title_msg">
Atraso
- </string>
- <string name="min_width_px">
+ </floater.string>
+ <floater.string name="min_width_px">
90
- </string>
- <string name="client_text_msg">
+ </floater.string>
+ <floater.string name="client_text_msg">
Cliente
- </string>
- <string name="client_frame_rate_critical_fps">
+ </floater.string>
+ <floater.string name="client_frame_rate_critical_fps">
10
- </string>
- <string name="client_frame_rate_warning_fps">
+ </floater.string>
+ <floater.string name="client_frame_rate_warning_fps">
15
- </string>
- <string name="client_frame_time_window_bg_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_window_bg_msg">
Normal, janela por baixo
- </string>
- <string name="client_frame_time_critical_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_critical_msg">
Taxa de quadros do Cliente abaixo de [CLIENT_FRAME_RATE_CRITICAL]
- </string>
- <string name="client_frame_time_warning_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_warning_msg">
Taxa de quadros do Cliente entre [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING]
- </string>
- <string name="client_frame_time_normal_msg">
+ </floater.string>
+ <floater.string name="client_frame_time_normal_msg">
Normal
- </string>
- <string name="client_draw_distance_cause_msg">
+ </floater.string>
+ <floater.string name="client_draw_distance_cause_msg">
Causa possível: Distância de desenho ajustada muito alta
- </string>
- <string name="client_texture_loading_cause_msg">
+ </floater.string>
+ <floater.string name="client_texture_loading_cause_msg">
Causa possível: Carregamento de Imagens
- </string>
- <string name="client_texture_memory_cause_msg">
+ </floater.string>
+ <floater.string name="client_texture_memory_cause_msg">
Causa possível: Muitas imagens na memória
- </string>
- <string name="client_complex_objects_cause_msg">
+ </floater.string>
+ <floater.string name="client_complex_objects_cause_msg">
Causa possível: Muitos objetos complexos na cena
- </string>
- <string name="network_text_msg">
+ </floater.string>
+ <floater.string name="network_text_msg">
Rede
- </string>
- <string name="network_packet_loss_critical_pct">
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_pct">
10
- </string>
- <string name="network_packet_loss_warning_pct">
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_pct">
5
- </string>
- <string name="network_packet_loss_critical_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_msg">
Conexão está caindo para cerca de [NETWORK_PACKET_LOSS_CRITICAL]% de pacotes
- </string>
- <string name="network_packet_loss_warning_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_msg">
Conexão está caindo [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de pacotes
- </string>
- <string name="network_performance_normal_msg">
+ </floater.string>
+ <floater.string name="network_performance_normal_msg">
Normal
- </string>
- <string name="network_ping_critical_ms">
+ </floater.string>
+ <floater.string name="network_ping_critical_ms">
600
- </string>
- <string name="network_ping_warning_ms">
+ </floater.string>
+ <floater.string name="network_ping_warning_ms">
300
- </string>
- <string name="network_ping_critical_msg">
+ </floater.string>
+ <floater.string name="network_ping_critical_msg">
Tempo de conexão de ping é cerca de [NETWORK_PING_CRITICAL] ms
- </string>
- <string name="network_ping_warning_msg">
+ </floater.string>
+ <floater.string name="network_ping_warning_msg">
Tempo de conexão de ping é [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
- </string>
- <string name="network_packet_loss_cause_msg">
+ </floater.string>
+ <floater.string name="network_packet_loss_cause_msg">
Possível conexão ruim ou &apos;Largura de Banda&apos; escolhida muito alta.
- </string>
- <string name="network_ping_cause_msg">
+ </floater.string>
+ <floater.string name="network_ping_cause_msg">
Possível conexão ruim ou aplicativos compartilhando arquivos.
- </string>
- <string name="server_text_msg">
+ </floater.string>
+ <floater.string name="server_text_msg">
Servidor
- </string>
- <string name="server_frame_rate_critical_fps">
+ </floater.string>
+ <floater.string name="server_frame_rate_critical_fps">
20
- </string>
- <string name="server_frame_rate_warning_fps">
+ </floater.string>
+ <floater.string name="server_frame_rate_warning_fps">
30
- </string>
- <string name="server_single_process_max_time_ms">
+ </floater.string>
+ <floater.string name="server_single_process_max_time_ms">
20
- </string>
- <string name="server_frame_time_critical_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_critical_msg">
Taxa de quadros abaixo de [SERVER_FRAME_RATE_CRITICAL]
- </string>
- <string name="server_frame_time_warning_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_warning_msg">
Taxa de quadros entre [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING]
- </string>
- <string name="server_frame_time_normal_msg">
+ </floater.string>
+ <floater.string name="server_frame_time_normal_msg">
Normal
- </string>
- <string name="server_physics_cause_msg">
+ </floater.string>
+ <floater.string name="server_physics_cause_msg">
Causa possível: Muitos objetos físicos
- </string>
- <string name="server_scripts_cause_msg">
+ </floater.string>
+ <floater.string name="server_scripts_cause_msg">
Causa possível: Muitos objetos com scripts
- </string>
- <string name="server_net_cause_msg">
+ </floater.string>
+ <floater.string name="server_net_cause_msg">
Causa possível: Muito tráfego na rede
- </string>
- <string name="server_agent_cause_msg">
+ </floater.string>
+ <floater.string name="server_agent_cause_msg">
Causa possível: Muitas pessoas se movendo na região
- </string>
- <string name="server_images_cause_msg">
+ </floater.string>
+ <floater.string name="server_images_cause_msg">
Causa possível: Muitos cálculos de imagem
- </string>
- <string name="server_generic_cause_msg">
+ </floater.string>
+ <floater.string name="server_generic_cause_msg">
Causa possível: Carga no simulador muito pesada
- </string>
- <string name="smaller_label">
+ </floater.string>
+ <floater.string name="smaller_label">
&gt;&gt;
- </string>
- <string name="bigger_label">
+ </floater.string>
+ <floater.string name="bigger_label">
&lt;&lt;
- </string>
+ </floater.string>
+ <button label="" label_selected="" name="client_lagmeter" tool_tip="Status de atraso no Cliente"/>
+ <text name="client">
+ Cliente
+ </text>
+ <text font="SansSerifSmall" name="client_text">
+ Normal
+ </text>
+ <text left="30" name="client_lag_cause" right="-10"/>
+ <button label="" label_selected="" name="network_lagmeter" tool_tip="Status de atraso na rede"/>
+ <text name="network">
+ Rede
+ </text>
+ <text font="SansSerifSmall" name="network_text">
+ Normal
+ </text>
+ <text left="30" name="network_lag_cause" right="-10"/>
+ <button label="" label_selected="" name="server_lagmeter" tool_tip="Status de atraso no servidor"/>
+ <text name="server">
+ Servidor
+ </text>
+ <text font="SansSerifSmall" name="server_text">
+ Normal
+ </text>
+ <text left="30" name="server_lag_cause" right="-32"/>
+ <button label="&gt;&gt;" name="minimize" tool_tip="Alternar o tamanho da janela"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml
index d8588e2f05..2b0d6790f2 100644
--- a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="land holdings floater" title="MEU TERRENO">
+<floater name="land holdings floater" title="MEUS TERRENOS">
<scroll_list name="parcel list">
- <column label="Nome do Lote" name="name"/>
+ <column label="Lote" name="name"/>
<column label="Região" name="location"/>
<column label="Tipo" name="type"/>
<column label="Área" name="area"/>
</scroll_list>
<button label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para o centro do terreno."/>
- <button width="130" label="Mostrar no mapa" label_selected="Mostrar no mapa" name="Show on Map" tool_tip="Mostrar esse terreno no mapa do mundo."/>
+ <button label="Mapa" label_selected="Mapa" name="Show on Map" tool_tip="Mostrar terreno na mápa-mundi" width="130"/>
<text name="contrib_label">
Contribuições para os seus grupos:
</text>
@@ -18,19 +18,19 @@
<text name="allowed_label" width="380">
Propriedades de terreno permitidas com o plano de pagamento atual:
</text>
- <text name="allowed_text" left_delta="390">
+ <text left_delta="390" name="allowed_text">
[AREA] m²
</text>
<text name="current_label">
Propriedades de terrenos atuais:
</text>
- <text name="current_text" left_delta="390">
+ <text left_delta="390" name="current_text">
[AREA] m²
</text>
<text name="available_label">
Disponível para compra de terras:
</text>
- <text name="available_text" left_delta="390">
+ <text left_delta="390" name="available_text">
[AREA] m²
</text>
<string name="area_string">
diff --git a/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml
index c0b726c476..1717088eae 100644
--- a/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml
@@ -1,12 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="script ed float" title="SCRIPT: NOVO SCRIPT">
- <button label="Resetar" label_selected="Resetar" name="Reset"/>
- <check_box label="Correndo" name="running"/>
- <check_box label="Mono" name="mono" left="86"/>
- <string name="not_allowed">
- Você não tem permissão para visualizar este script.
- </string>
- <string name="script_running">
+ <floater.string name="not_allowed">
+ Você não pode ver ou editar o script, uma vez que está definido como &quot;não&quot; copiar. Você precisa de permissões para ver ou editar um script dentro de um objeto.
+ </floater.string>
+ <floater.string name="script_running">
Executando
- </string>
+ </floater.string>
+ <floater.string name="Title">
+ Script: [NAME]
+ </floater.string>
+ <button label="Resetar" label_selected="Resetar" name="Reset"/>
+ <check_box initial_value="true" label="Correndo" name="running"/>
+ <check_box initial_value="true" label="Mono" left="86" name="mono"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml
index 49a9e7fcf5..f9a5e08e97 100644
--- a/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="script ed float" title="LSL WIKI">
- <check_box label="Seguir o Cursor" name="lock_check" />
- <combo_box label="Bloquear" name="history_combo" left_delta="120" width="70"/>
- <button label="Anterior" name="back_btn" left_delta="75"/>
- <button label="Posterior" name="fwd_btn" />
+ <check_box label="Seguir o Cursor" name="lock_check"/>
+ <combo_box label="Bloquear" left_delta="120" name="history_combo" width="70"/>
+ <button label="Anterior" left_delta="75" name="back_btn"/>
+ <button label="Posterior" name="fwd_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_media_settings.xml b/indra/newview/skins/default/xui/pt/floater_media_settings.xml
new file mode 100644
index 0000000000..5af002c502
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="CONFIGURAÇÕES DE MÍDIA">
+ <button label="OK" label_selected="OK" name="OK"/>
+ <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
+ <button label="Aplicar" label_selected="Aplicar" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml
index 4f93eb90e5..efb5da4ace 100644
--- a/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="MemLeak" title="SIMULAÇÃO DE PERDA DE MEMÓRIA">
+<floater name="MemLeak" title="SIMULAR UM VAZAMENTO DE MEMÓRIA">
<spinner label="Velocidade da Perda (bytes por quadro):" name="leak_speed"/>
<spinner label="Máximo de Memória Perdida (MB):" name="max_leak"/>
<text name="total_leaked_label">
diff --git a/indra/newview/skins/default/xui/pt/floater_moveview.xml b/indra/newview/skins/default/xui/pt/floater_moveview.xml
index 996a974254..7c4436537d 100644
--- a/indra/newview/skins/default/xui/pt/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_moveview.xml
@@ -1,13 +1,35 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="move_floater">
-<panel name="panel_actions">
- <button label="" label_selected="" name="turn left btn" tool_tip="Virar à esquerda"/>
- <button label="" label_selected="" name="turn right btn" tool_tip="Virar à direita"/>
- <button label="" label_selected="" name="move up btn" tool_tip="Pular ou Voar"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Agaixar ou pousar"/>
- <joystick_slide name="slide left btn" tool_tip="Mover para a esquerda"/>
- <joystick_slide name="slide right btn" tool_tip="Mover para a direita"/>
- <joystick_turn name="forward btn" tool_tip="Mover para a frente."/>
- <joystick_turn name="backward btn" tool_tip="Mover para trás"/>
-</panel>
+ <string name="walk_forward_tooltip">
+ Andar para frente (flecha para cima ou W)
+ </string>
+ <string name="walk_back_tooltip">
+ Andar para trás (flecha para baixo ou S)
+ </string>
+ <string name="run_forward_tooltip">
+ Correr para frente (flecha para cima ou W)
+ </string>
+ <string name="run_back_tooltip">
+ Correr para trás (flecha para baixo ou S)
+ </string>
+ <string name="fly_forward_tooltip">
+ Voar para frente (flecha para cima ou W)
+ </string>
+ <string name="fly_back_tooltip">
+ Voar para trás (flecha para baixo ou S)
+ </string>
+ <panel name="panel_actions">
+ <button label="" label_selected="" name="turn left btn" tool_tip="Virar à esquerda (flecha ESQ ou A)"/>
+ <button label="" label_selected="" name="turn right btn" tool_tip="Virar à direita (flecha DIR ou D)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Voar para o alto (tecla E)"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Voar para baixo (tecla C)"/>
+ <joystick_turn name="forward btn" tool_tip="Andar para frente (flecha para cima ou W)"/>
+ <joystick_turn name="backward btn" tool_tip="Andar para trás (flecha para baixo ou S)"/>
+ </panel>
+ <panel name="panel_modes">
+ <button label="" name="mode_walk_btn" tool_tip="Modo caminhar"/>
+ <button label="" name="mode_run_btn" tool_tip="Modo correr"/>
+ <button label="" name="mode_fly_btn" tool_tip="Modo voar"/>
+ <button label="Parar de voar" name="stop_fly_btn" tool_tip="Parar de voar"/>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_mute_object.xml b/indra/newview/skins/default/xui/pt/floater_mute_object.xml
index cc669951c3..97fbd35fcc 100644
--- a/indra/newview/skins/default/xui/pt/floater_mute_object.xml
+++ b/indra/newview/skins/default/xui/pt/floater_mute_object.xml
@@ -1,12 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="mute by name" title="SILENCIAR OBJETO PELO NOME">
+<floater name="mute by name" title="BLOQUEAR OBJETO POR NOME">
<text name="message">
- Silenciar pelo nome afeta apenas conversa de objeto e MI,
-não sons. Você deve digitar o nome exato do objeto.
+ Bloquear o objeto:
</text>
<line_editor name="object_name">
Nome do objeto
</line_editor>
+ <text name="note">
+ * Bloquear apenas texto do objeto, não sons
+ </text>
<button label="OK" name="OK"/>
<button label="Cancelar" name="Cancel"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml
new file mode 100644
index 0000000000..5ba2dcd925
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="Bate-papo local"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml b/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml
new file mode 100644
index 0000000000..2078185315
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="LIGANDO">
+ <floater.string name="localchat">
+ Bate-papo local
+ </floater.string>
+ <floater.string name="anonymous">
+ anônimo
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ está ligando.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ entrou numa ligação de voz via conferência.
+ </floater.string>
+ <text name="connecting">
+ Conectando com [CALLEE_NAME]
+ </text>
+ <text name="calling">
+ Ligando para [CALLEE_NAME]
+ </text>
+ <text name="noanswer">
+ Não há resposta. Tente novamente mais tarde.
+ </text>
+ <text name="leaving">
+ Saindo de [CURRENT_CHAT].
+ </text>
+ <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_pay.xml b/indra/newview/skins/default/xui/pt/floater_pay.xml
index 187df8fd18..81c861687f 100644
--- a/indra/newview/skins/default/xui/pt/floater_pay.xml
+++ b/indra/newview/skins/default/xui/pt/floater_pay.xml
@@ -1,21 +1,25 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Give Money" title="">
- <button label="L$1" label_selected="L$1" name="fastpay 1" left="112" />
- <button label="L$5" label_selected="L$5" name="fastpay 5" />
- <button label="L$10" label_selected="L$10" name="fastpay 10" left="112" />
- <button label="L$20" label_selected="L$20" name="fastpay 20" />
- <button label="Pagar" label_selected="Pagar" name="pay btn" />
- <button label="Cancelar" label_selected="Cancelar" name="cancel btn" />
- <text name="payee_label" width="110" left="5">
- Pagar residente:
+ <string name="payee_group">
+ Pagar grupo
+ </string>
+ <string name="payee_resident">
+ Pagar residente
+ </string>
+ <text left="5" name="payee_label" width="110">
+ Pagar:
</text>
- <text name="payee_name" left="115">
+ <icon name="icon_person" tool_tip="Pessoa"/>
+ <text left="115" name="payee_name">
[FIRST] [LAST]
</text>
- <text name="fastpay text" width="120" halign="left">
- Pagamento rápido:
- </text>
- <text name="amount text" left="4" >
- Quantia:
+ <button label="L$1" label_selected="L$1" left="112" name="fastpay 1"/>
+ <button label="L$5" label_selected="L$5" name="fastpay 5"/>
+ <button label="L$10" label_selected="L$10" left="112" name="fastpay 10"/>
+ <button label="L$20" label_selected="L$20" name="fastpay 20"/>
+ <text left="4" name="amount text">
+ Outro valor:
</text>
+ <button label="Pagar" label_selected="Pagar" name="pay btn"/>
+ <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_pay_object.xml b/indra/newview/skins/default/xui/pt/floater_pay_object.xml
index 3a3dd9e52e..161c7c6d4b 100644
--- a/indra/newview/skins/default/xui/pt/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/pt/floater_pay_object.xml
@@ -1,31 +1,30 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Give Money" title="">
- <text name="payee_group" width="100" halign="left">
- Pagar Grupo:
- </text>
- <text name="payee_resident" width="120" halign="left" >
- Pagar residente:
- </text>
- <text name="payee_name" left="105">
+ <string halign="left" name="payee_group" width="100">
+ Pagar grupo
+ </string>
+ <string halign="left" name="payee_resident" width="120">
+ Pagar residente
+ </string>
+ <icon name="icon_person" tool_tip="Pessoa"/>
+ <text left="105" name="payee_name">
[FIRST] [LAST]
</text>
- <text name="object_name_label" left="5" width="95" halign="left">
+ <text halign="left" left="5" name="object_name_label" width="95">
Via objeto:
</text>
- <text name="object_name_text" left="105" >
+ <icon name="icon_object" tool_tip="Objects"/>
+ <text left="105" name="object_name_text">
...
</text>
- <text name="fastpay text" width="115" halign="left">
- Pagamento Rápido:
- </text>
- <text name="amount text" left="5" halign="left">
- Quantia:
+ <button label="L$1" label_selected="L$1" left="125" name="fastpay 1" width="70"/>
+ <button label="L$5" label_selected="L$5" left="200" name="fastpay 5" width="70"/>
+ <button label="L$10" label_selected="L$10" left="125" name="fastpay 10" width="70"/>
+ <button label="L$20" label_selected="L$20" left="200" name="fastpay 20" width="70"/>
+ <text halign="left" left="5" name="amount text">
+ Outro valor:
</text>
- <button label="L$1" label_selected="L$1" name="fastpay 1" left="125" width="70"/>
- <button label="L$5" label_selected="L$5" name="fastpay 5" left="200" width="70"/>
- <button label="L$10" label_selected="L$10" name="fastpay 10" left="125" width="70"/>
- <button label="L$20" label_selected="L$20" name="fastpay 20" left="200" width="70"/>
- <button label="Pagar" label_selected="Pagar" name="pay btn" />
- <button label="Cancelar" label_selected="Cancelar" name="cancel btn" />
- <line_editor left="60" name="amount" width="50" />
+ <line_editor left="60" name="amount" width="50"/>
+ <button label="Pagar" label_selected="Pagar" name="pay btn"/>
+ <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_postcard.xml b/indra/newview/skins/default/xui/pt/floater_postcard.xml
index cf63726df2..d3c5b6ec23 100644
--- a/indra/newview/skins/default/xui/pt/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/pt/floater_postcard.xml
@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Postcard" title="FOTO POR EMAIL">
+<floater name="Postcard" title="ENVIAR FOTO VIA EMAIL">
<text name="to_label" width="135">
Email do Destinatário:
</text>
- <line_editor name="to_form" left="143" width="127" />
+ <line_editor left="143" name="to_form" width="127"/>
<text name="from_label">
Seu Email:
</text>
- <line_editor name="from_form" left="143" width="127" />
+ <line_editor left="143" name="from_form" width="127"/>
<text name="name_label">
Seu nome:
</text>
- <line_editor name="name_form" left="143" width="127" />
+ <line_editor left="143" name="name_form" width="127"/>
<text name="subject_label">
Assunto:
</text>
- <line_editor name="subject_form" left="143" width="127" />
+ <line_editor left="143" name="subject_form" width="127"/>
<line_editor label="Digite seu assunto aqui." name="subject_form"/>
<text name="msg_label">
Mensagem:
@@ -29,7 +29,7 @@
<button label="Cancelar" name="cancel_btn"/>
<button label="Enviar" name="send_btn"/>
<string name="default_subject">
- Cartão postal do [SECOND_LIFE]
+ Postal do [SECOND_LIFE].
</string>
<string name="default_message">
Dá uma olhada nisto!
diff --git a/indra/newview/skins/default/xui/pt/floater_preferences.xml b/indra/newview/skins/default/xui/pt/floater_preferences.xml
index d2c3c79160..dc29bcf6b1 100644
--- a/indra/newview/skins/default/xui/pt/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preferences.xml
@@ -1,9 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Preferences" title="PREFERÊNCIAS" min_width="332" width="628">
+<floater min_width="332" name="Preferences" title="PREFERÊNCIAS" width="628">
<button label="OK" label_selected="OK" name="OK"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
- <button label="Aplicar" label_selected="Aplicar" name="Apply"/>
- <button label="Sobre" label_selected="Sobre" name="About..."/>
- <button label="Ajuda" label_selected="Ajuda" name="Help"/>
- <tab_container name="pref core" tab_width="128" width="628" />
+ <tab_container name="pref core" tab_width="128" width="628">
+ <panel label="Público geral" name="general"/>
+ <panel label="Vídeo" name="display"/>
+ <panel label="Privacidade" name="im"/>
+ <panel label="Som" name="audio"/>
+ <panel label="Bate-papo" name="chat"/>
+ <panel label="Notificações" name="msgs"/>
+ <panel label="Configurações" name="input"/>
+ <panel label="Avançado" name="advanced1"/>
+ </tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml b/indra/newview/skins/default/xui/pt/floater_preview_animation.xml
index 26ca8f87e0..c7d3affd73 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_animation.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview_anim">
+ <floater.string name="Title">
+ Animação: [NOME]
+ </floater.string>
<text name="desc txt">
Descrição:
</text>
- <button label="Executar in World" label_selected="Parar" left="20" name="Anim play btn" tool_tip="Executar esta animação para que outros vejam." width="131"/>
- <button label="Executar localmente" label_selected="Parar" left="162" name="Anim audition btn" tool_tip="Executar esta animação somente para você ver." width="125"/>
+ <button label="Executar in World" label_selected="Parar" left="20" name="Anim play btn" tool_tip="Tocar essa animação de forma que outros possam ver" width="131"/>
+ <button label="Executar localmente" label_selected="Parar" left="162" name="Anim audition btn" tool_tip="Tocar essa animação de forma que apenas você possa ver" width="125"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_classified.xml b/indra/newview/skins/default/xui/pt/floater_preview_classified.xml
index 0e8814b9f8..bb626430ed 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_classified.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_classified.xml
@@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="classified_preview" title="INFORMAÇÃO DO ANÚNCIO CLASSIFICADO"/>
+<floater name="classified_preview" title="INFORMAÇÕES CLASSIFICADAS">
+ <floater.string name="Title">
+ Classificados: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_event.xml b/indra/newview/skins/default/xui/pt/floater_preview_event.xml
index c03feacf0c..b422580f3b 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_event.xml
@@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="event_preview" title="INFORMAÇÃO DO EVENTO"/>
+<floater name="event_preview" title="DADOS DO EVENTO">
+ <floater.string name="Title">
+ Evento: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
index 87bf86c282..af4dceaa89 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
@@ -1,14 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="gesture_preview">
- <string name="stop_txt">
+ <floater.string name="step_anim">
+ Selecionar animação:
+ </floater.string>
+ <floater.string name="step_sound">
+ Selecionar animação:
+ </floater.string>
+ <floater.string name="step_chat">
+ Diga por bate-papo:
+ </floater.string>
+ <floater.string name="step_wait">
+ Espere:
+ </floater.string>
+ <floater.string name="stop_txt">
Parar
- </string>
- <string name="preview_txt">
+ </floater.string>
+ <floater.string name="preview_txt">
Prévia
- </string>
- <string name="none_text">
+ </floater.string>
+ <floater.string name="none_text">
-- Nenhum --
- </string>
+ </floater.string>
+ <floater.string name="Title">
+ Gesto: [NAME]
+ </floater.string>
<text name="desc_label">
Descrição:
</text>
@@ -22,37 +37,30 @@
<text name="key_label">
Tecla de Atalho:
</text>
- <combo_box label="Nenhum" name="modifier_combo" left="116" width="76"/>
- <combo_box label="Nenhum" name="key_combo" width="76" left_delta="80"/>
+ <combo_box label="Nenhum" left="116" name="modifier_combo" width="76"/>
+ <combo_box label="Nenhum" left_delta="80" name="key_combo" width="76"/>
<text name="library_label">
Biblioteca:
</text>
+ <scroll_list name="library_list" width="84"/>
+ <button label="Incluir" left="118" name="add_btn" width="87"/>
<text name="steps_label">
Passos:
</text>
- <scroll_list name="library_list" width="84">
- Animação
-Som
-Bate Papo
-Esperar
- </scroll_list>
- <button label="Incluir" name="add_btn" left="118" width="87"/>
- <button label="Mover Para Cima" name="up_btn" width="114" left_delta="-13"/>
- <button label="Mover Para Baixo" name="down_btn" width="114"/>
- <button label="Remover" name="delete_btn" width="84" left_delta="13"/>
- <scroll_list left="226" name="step_list" width="205" />
- <text name="help_label">
- Todos os passos acontecem
-simultaneamente, a menos que
-você inclua passos de espera.
- </text>
+ <scroll_list left="226" name="step_list" width="205"/>
+ <button label="P/ cima" left_delta="-13" name="up_btn" width="114"/>
+ <button label="P/ baixo" name="down_btn" width="114"/>
+ <button label="Remover" left_delta="13" name="delete_btn" width="84"/>
<radio_group name="animation_trigger_type">
- <radio_item name="start" label="Iniciar" />
- <radio_item name="stop" label="Parar" />
+ <radio_item label="OK" name="start"/>
+ <radio_item label="Pare" name="stop"/>
</radio_group>
- <check_box bottom_delta="34" label="até que as animações estejam &#10;concluídas" name="wait_anim_check"/>
+ <check_box bottom_delta="34" label="até que as animações estejam concluídas" name="wait_anim_check"/>
<check_box bottom_delta="-30" label="tempo em segundos" name="wait_time_check"/>
- <line_editor left_delta="130" name="wait_time_editor" />
+ <line_editor left_delta="130" name="wait_time_editor"/>
+ <text name="help_label">
+ Se não incluir etapas de espera, todas as etapas ocorrem ao mesmo tempo.
+ </text>
<check_box label="Ativar" name="active_check" tool_tip="Gestos ativos podem ser gatilhados escrevendo suas frases de gatilho no chat ou através de suas teclas de atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/>
<button label="Prévia" name="preview_btn"/>
<button label="Salvar" name="save_btn"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml
new file mode 100644
index 0000000000..aabcff70d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="ATALHO DE GESTO"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml
new file mode 100644
index 0000000000..64bb7785f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="ATALHO DE GESTO">
+ <text name="trigger_label">
+ Bate-papo:
+ </text>
+ <text name="key_label">
+ Tecla:
+ </text>
+ <combo_box label="Nenhum" name="modifier_combo"/>
+ <combo_box label="Nenhum" name="key_combo"/>
+ <text name="replace_text" tool_tip="Substituir a(s) palavra(s) de comando. Por exemplo, substitua o comando &apos;olá&apos; por &apos;oi&apos; para trocar &apos;Olá, tudo bem&apos; por &apos;Oi tudo bem&apos;. O gesto também será executado.">
+ Trocar:
+ </text>
+ <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) de comando. Por exemplo, substitua o comando &apos;olá&apos; por &apos;oi&apos; para trocar &apos;Olá, tudo bem&apos; por &apos;Oi tudo bem&apos;. O gesto também será executado."/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml
new file mode 100644
index 0000000000..aabcff70d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="ATALHO DE GESTO"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
index 6f8944942a..6194bfffd6 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
@@ -1,16 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview notecard" title="NOTA:">
- <button label="Salvar" label_selected="Salvar" name="Save"/>
+ <floater.string name="no_object">
+ Não foi possível encontrar o objeto que contém esta nota.
+ </floater.string>
+ <floater.string name="not_allowed">
+ Você não está autorizado a ler esta nota.
+ </floater.string>
+ <floater.string name="Title">
+ Anotação: [NAME]
+ </floater.string>
+ <floater.string label="Salvar" label_selected="Salvar" name="Save">
+ Salvar
+ </floater.string>
<text name="desc txt">
Descrição:
</text>
<text_editor name="Notecard Editor">
Carregando...
</text_editor>
- <string name="no_object">
- Não foi possível encontrar o objeto que contém esta nota.
- </string>
- <string name="not_allowed">
- Você não tem permissão de visualizar esta nota.
- </string>
+ <button label="Salvar" label_selected="Salvar" name="Save"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_sound.xml b/indra/newview/skins/default/xui/pt/floater_preview_sound.xml
index 3dd2f84f91..8691542d95 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_sound.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview_sound">
+ <floater.string name="Title">
+ Som: [NAME]
+ </floater.string>
<text name="desc txt">
Descrição:
</text>
- <button left_delta="-132" label="Executar in-World" label_selected="Executar in-World" name="Sound play btn" tool_tip="Executar este som para que todos possam ouvi-lo."/>
- <button width="135" left="152" label="Executar Localmente" label_selected="Executar Localmente" name="Sound audition btn" tool_tip="Executar este som somente para você ouvir."/>
+ <button label="Executar in-World" label_selected="Executar in-World" left_delta="-132" name="Sound play btn" tool_tip="Tocar som para todos ouvirem"/>
+ <button label="Executar Localmente" label_selected="Executar Localmente" left="152" name="Sound audition btn" tool_tip="Tocar som de forma que apenas você possa ouvir" width="135"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_texture.xml b/indra/newview/skins/default/xui/pt/floater_preview_texture.xml
index 72bc42fa19..066cf05163 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_texture.xml
@@ -1,9 +1,44 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview_texture">
+ <floater.string name="Title">
+ Textura: [NAME]
+ </floater.string>
+ <floater.string name="Copy">
+ Copiar para inventário
+ </floater.string>
<text name="desc txt">
Descrição:
</text>
<text name="dimensions">
- Dimensões: [WIDTH] x [HEIGHT]
+ [WIDTH]px x [HEIGHT]px
</text>
+ <combo_box name="combo_aspect_ratio" tool_tip="Visualizar com proporção de aspecto fixa">
+ <combo_item name="Unconstrained">
+ Sem limites
+ </combo_item>
+ <combo_item name="1:1" tool_tip="Símbolo ou perfil RW do grupo">
+ 1:1
+ </combo_item>
+ <combo_item name="4:3" tool_tip="[SECOND_LIFE] perfil">
+ 4:3
+ </combo_item>
+ <combo_item name="10:7" tool_tip="Procurar anúncios classificados e marcos">
+ 10:7
+ </combo_item>
+ <combo_item name="3:2" tool_tip="Sobre terrenos">
+ 3:2
+ </combo_item>
+ <combo_item name="16:10">
+ 16:10
+ </combo_item>
+ <combo_item name="16:9" tool_tip="Perfis destacados">
+ 16:9
+ </combo_item>
+ <combo_item name="2:1">
+ 2:1
+ </combo_item>
+ </combo_box>
+ <button label="OK" name="keep"/>
+ <button label="Cancelar" name="discard"/>
+ <button label="Salvar como" name="save_tex_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
index 0d226a9502..7988056a3b 100644
--- a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
@@ -1,11 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_report_abuse" title="REPORTAR ABUSO">
- <check_box label="Incluir cópia da tela" name="screen_check"/>
+ <floater.string name="Screenshot">
+ Captura de tela
+ </floater.string>
+ <check_box label="Usar esta captura de tela" name="screen_check"/>
<text name="reporter_title">
Denunciador:
</text>
<text name="reporter_field">
- Loremipsum Dolorsitamut
+ Loremipsum Dolorsitamut Longnamez
</text>
<text name="sim_title">
Região:
@@ -20,11 +23,11 @@
{128.1, 128.1, 15.4}
</text>
<text name="select_object_label">
- Clique no botão e em seguida no objeto:
+ Clique no botão e em seguida no objeto abusivo:
</text>
<button label="" label_selected="" name="pick_btn" tool_tip="Object Picker - Identifica um objeto como o assunto deste report"/>
<text name="object_name_label">
- Nome:
+ Objeto:
</text>
<text name="object_name">
Consetetur Sadipscing
@@ -33,54 +36,53 @@
Proprietário:
</text>
<text name="owner_name">
- Hendrerit Vulputate
+ Hendrerit Vulputate Kamawashi Longname
</text>
<combo_box name="category_combo" tool_tip="Categoria -- Selecione a categoria que melhor descreve este report">
- <combo_box.item name="Select_category" label="Selecionar categoria"/>
- <combo_box.item name="Age__Age_play" label="Idade &gt; Idade no jogo"/>
- <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Idade &gt; Residente adulto no Second Life Jovem"/>
- <combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Idade &gt; Residente menor de idade fora do Second Life Teen"/>
- <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Assalto &gt; Sandbox de combate / área não segura"/>
- <combo_box.item name="Assault__Safe_area" label="Assalto &gt; Área segura"/>
- <combo_box.item name="Assault__Weapons_testing_sandbox" label="Assalto &gt; Testando armas em sandbox"/>
- <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Comércio &gt; Falha em enviar produto ou serviço"/>
- <combo_box.item name="Disclosure__Real_world_information" label="Revelar &gt; Informação do mundo real"/>
- <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Revelar &gt; Conversa monitorada remotamente"/>
- <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Revelar &gt; Informação do Second Life/conversa/MIs"/>
- <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Distúrbio da paz &gt; Uso injusto dos recursos da região"/>
- <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Distúrbio da paz &gt; Objetos com excesso de scripts"/>
- <combo_box.item name="Disturbing_the_peace__Object_littering" label="Distúrbio da paz &gt; Objeto despejando lixo"/>
- <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Distúrbio da paz &gt; Spam repetitivo"/>
- <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Distúrbio da paz &gt; Spam de anúncio indesejado"/>
- <combo_box.item name="Fraud__L$" label="Fraude &gt; L$"/>
- <combo_box.item name="Fraud__Land" label="Fraude &gt; Terra"/>
- <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Fraude &gt; Esquema de pirâmide ou cartas encadeadas"/>
- <combo_box.item name="Fraud__US$" label="Fraude &gt; R$"/>
- <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Perturbação &gt; Fazendas de Anúncios / spam visual"/>
- <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Perturbação &gt; Difamação de indivíduos ou grupos"/>
- <combo_box.item name="Harassment__Impeding_movement" label="Perturbação &gt; Impedindo movimentos"/>
- <combo_box.item name="Harassment__Sexual_harassment" label="Perturbação &gt; Perturbação sexual"/>
- <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Perturbação &gt; Solicitando/incitando outros a violarem o ToS"/>
- <combo_box.item name="Harassment__Verbal_abuse" label="Perturbação &gt; Abuso verbal"/>
- <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecência &gt; Conteúdo ou conduta amplamente ofensivos"/>
- <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecência &gt; Nome de avatar inapropriado"/>
- <combo_box.item name="Indecency__Mature_content_in_PG_region" label="Indecência &gt; Conduta ou conteúdo inapropriados numa região PG"/>
- <combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Indecência &gt; Conduta ou conteúdo inapropriados numa região Mature"/>
- <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Violação de propriedade intelectual &gt; Remoção de Conteúdo"/>
- <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Violação de Propriedade intelectual &gt; Cópia Ilegal ou Aproveitar-se de Permissões"/>
- <combo_box.item name="Intolerance" label="Intolerância"/>
- <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terra &gt; Abuso dos recursos da sandbox"/>
- <combo_box.item name="Land__Encroachment__Objects_textures" label="Terra &gt; Invasão &gt; Objetos/texturas"/>
- <combo_box.item name="Land__Encroachment__Particles" label="Terra &gt; Invasão &gt; Partículas"/>
- <combo_box.item name="Land__Encroachment__Trees_plants" label="Terra &gt; Violação &gt; Árvores/plantas"/>
- <combo_box.item name="Wagering_gambling" label="Apostas/jogos de azar"/>
- <combo_box.item name="Other" label="Outro"/>
+ <combo_box.item label="Selecionar categoria" name="Select_category"/>
+ <combo_box.item label="Idade &gt; Idade no jogo" name="Age__Age_play"/>
+ <combo_box.item label="Idade &gt; Residente adulto no Second Life Jovem" name="Age__Adult_resident_on_Teen_Second_Life"/>
+ <combo_box.item label="Idade &gt; Residente menor de idade fora do Second Life Teen" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+ <combo_box.item label="Assalto &gt; Sandbox de combate / área não segura" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="Assalto &gt; Área segura" name="Assault__Safe_area"/>
+ <combo_box.item label="Assalto &gt; Testando armas em sandbox" name="Assault__Weapons_testing_sandbox"/>
+ <combo_box.item label="Comércio &gt; Falha em enviar produto ou serviço" name="Commerce__Failure_to_deliver_product_or_service"/>
+ <combo_box.item label="Revelar &gt; Informação do mundo real" name="Disclosure__Real_world_information"/>
+ <combo_box.item label="Revelar &gt; Conversa monitorada remotamente" name="Disclosure__Remotely_monitoring chat"/>
+ <combo_box.item label="Revelar &gt; Informação do Second Life/conversa/MIs" name="Disclosure__Second_Life_information_chat_IMs"/>
+ <combo_box.item label="Distúrbio da paz &gt; Uso injusto dos recursos da região" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+ <combo_box.item label="Distúrbio da paz &gt; Objetos com excesso de scripts" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+ <combo_box.item label="Distúrbio da paz &gt; Objeto despejando lixo" name="Disturbing_the_peace__Object_littering"/>
+ <combo_box.item label="Distúrbio da paz &gt; Spam repetitivo" name="Disturbing_the_peace__Repetitive_spam"/>
+ <combo_box.item label="Distúrbio da paz &gt; Spam de anúncio indesejado" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+ <combo_box.item label="Fraude &gt; L$" name="Fraud__L$"/>
+ <combo_box.item label="Fraude &gt; Terra" name="Fraud__Land"/>
+ <combo_box.item label="Fraude &gt; Esquema de pirâmide ou cartas encadeadas" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+ <combo_box.item label="Fraude &gt; R$" name="Fraud__US$"/>
+ <combo_box.item label="Perturbação &gt; Fazendas de Anúncios / spam visual" name="Harassment__Advert_farms___visual_spam"/>
+ <combo_box.item label="Perturbação &gt; Difamação de indivíduos ou grupos" name="Harassment__Defaming_individuals_or_groups"/>
+ <combo_box.item label="Perturbação &gt; Impedindo movimentos" name="Harassment__Impeding_movement"/>
+ <combo_box.item label="Perturbação &gt; Perturbação sexual" name="Harassment__Sexual_harassment"/>
+ <combo_box.item label="Perturbação &gt; Solicitando/incitando outros a violarem o ToS" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+ <combo_box.item label="Perturbação &gt; Abuso verbal" name="Harassment__Verbal_abuse"/>
+ <combo_box.item label="Indecência &gt; Conteúdo ou conduta amplamente ofensivos" name="Indecency__Broadly_offensive_content_or_conduct"/>
+ <combo_box.item label="Indecência &gt; Nome de avatar inapropriado" name="Indecency__Inappropriate_avatar_name"/>
+ <combo_box.item label="Indecência &gt; Conduta ou conteúdo inapropriados numa região PG" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="Indecência &gt; Conduta ou conteúdo inapropriados numa região Mature" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="Violação de propriedade intelectual &gt; Remoção de Conteúdo" name="Intellectual_property_infringement_Content_Removal"/>
+ <combo_box.item label="Violação de Propriedade intelectual &gt; Cópia Ilegal ou Aproveitar-se de Permissões" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+ <combo_box.item label="Intolerância" name="Intolerance"/>
+ <combo_box.item label="Terra &gt; Abuso dos recursos da sandbox" name="Land__Abuse_of_sandbox_resources"/>
+ <combo_box.item label="Terra &gt; Invasão &gt; Objetos/texturas" name="Land__Encroachment__Objects_textures"/>
+ <combo_box.item label="Terra &gt; Invasão &gt; Partículas" name="Land__Encroachment__Particles"/>
+ <combo_box.item label="Terra &gt; Violação &gt; Árvores/plantas" name="Land__Encroachment__Trees_plants"/>
+ <combo_box.item label="Apostas/jogos de azar" name="Wagering_gambling"/>
+ <combo_box.item label="Outro" name="Other"/>
</combo_box>
<text name="abuser_name_title">
Nome do Denunciado:
</text>
- <button label="Escolher Residente" label_selected="" name="select_abuser" tool_tip="Selecione o nome do Denunciado numa lista"/>
- <check_box label="Não sei o nome do denunciado" name="omit_abuser_name" tool_tip="Marque aqui se você não consegue fornecer o nome do denunciado"/>
+ <button label="Selecionar" label_selected="" name="select_abuser" tool_tip="Selecione o nome do Denunciado numa lista"/>
<text name="abuser_name_title2">
Local do Abuso:
</text>
@@ -91,13 +93,11 @@
Detalhes:
</text>
<text name="bug_aviso">
- Por favor, seja específico(a) sobre data, localidade,
-natureza do abuso, texto relevante de conversa/MI e
-selecione o objeto, se possível.
+ Seja o mais específico possível
</text>
<text name="incomplete_title">
- Nota: Relatos incompletos não serão investigados.
+ * Denúncias incompletas não serão investigadas
</text>
- <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
<button label="Reportar Abuso" label_selected="Reportar Abuso" name="send_btn"/>
+ <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml
new file mode 100644
index 0000000000..e70a30fa24
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_script_preview.xml b/indra/newview/skins/default/xui/pt/floater_script_preview.xml
index 3c0570791c..5fafb0d1b8 100644
--- a/indra/newview/skins/default/xui/pt/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_script_preview.xml
@@ -1,5 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="preview lsl text" title="SCRIPT: ROTATION SCRIPT">
+ <floater.string name="Title">
+ Script: [NAME]
+ </floater.string>
<text name="desc txt">
Descrição:
</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_script_queue.xml b/indra/newview/skins/default/xui/pt/floater_script_queue.xml
index 6e0e174c07..5fb6dd1c35 100644
--- a/indra/newview/skins/default/xui/pt/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/pt/floater_script_queue.xml
@@ -1,4 +1,19 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="queue" title="RESETAR PROGRESSO">
+ <floater.string name="Starting">
+ Iniciando [START] de [COUNT] items.
+ </floater.string>
+ <floater.string name="Done">
+ Pronto.
+ </floater.string>
+ <floater.string name="Resetting">
+ Redefinindo
+ </floater.string>
+ <floater.string name="Running">
+ Executando
+ </floater.string>
+ <floater.string name="NotRunning">
+ Inerte
+ </floater.string>
<button label="Fechar" label_selected="Fechar" name="close"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_script_search.xml b/indra/newview/skins/default/xui/pt/floater_script_search.xml
index 3a62f1711f..8878590a4e 100644
--- a/indra/newview/skins/default/xui/pt/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/pt/floater_script_search.xml
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script search" title="BUSCA DE SCRIPT" width="320">
- <check_box label="Não diferenciar Maiúsculas de Minúsculas" name="case_text" left="75"/>
+<floater name="script search" title="BUSCAR SCRIPT" width="320">
+ <check_box label="Não diferenciar Maiúsculas de Minúsculas" left="75" name="case_text"/>
<button label="Buscar" label_selected="Buscar" name="search_btn" width="85"/>
- <button label="Substituir" label_selected="Substituir" name="replace_btn" left="100" width="85"/>
- <button label="Substituir Tudo" label_selected="Substituir Tudo" name="replace_all_btn" left="190" width="122"/>
+ <button label="Substituir" label_selected="Substituir" left="100" name="replace_btn" width="85"/>
+ <button label="Substituir Tudo" label_selected="Substituir Tudo" left="190" name="replace_all_btn" width="122"/>
<text name="txt" width="65">
Buscar
</text>
<text name="txt2" width="65">
Substituir
</text>
- <line_editor left="75" name="search_text" width="240" />
- <line_editor left="75" name="replace_text" width="240" />
+ <line_editor left="75" name="search_text" width="240"/>
+ <line_editor left="75" name="replace_text" width="240"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_search.xml b/indra/newview/skins/default/xui/pt/floater_search.xml
new file mode 100644
index 0000000000..4bf7181180
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_search.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_search" title="BUSCAR">
+ <floater.string name="loading_text">
+ Carregando...
+ </floater.string>
+ <floater.string name="done_text">
+ Pronto
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="browser_layout">
+ <text name="refresh_search">
+ Buscar novamente com status God
+ </text>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_select_key.xml b/indra/newview/skins/default/xui/pt/floater_select_key.xml
index e41a565d11..15772da434 100644
--- a/indra/newview/skins/default/xui/pt/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/pt/floater_select_key.xml
@@ -2,6 +2,6 @@
<floater name="modal container" title="">
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
<text name="Save item as:">
- Aperte uma tecla para selecionar
+ Pressione uma tecla para definir o botão disparador do Falar.
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_sell_land.xml b/indra/newview/skins/default/xui/pt/floater_sell_land.xml
index f58c4098ef..e6d4dc7ed6 100644
--- a/indra/newview/skins/default/xui/pt/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_sell_land.xml
@@ -1,65 +1,65 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="sell land" title="VENDER TERRENO">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="info_parcel_label">
- Lote:
- </text>
- <text name="info_parcel">
- Nome do Lote
- </text>
- <text name="info_size_label">
- Tamanho:
- </text>
- <text name="info_size">
- [AREA] m²
- </text>
- <text name="info_action" bottom_delta="-67">
- Para vender este lote:
- </text>
- <icon bottom_delta="-66" name="step_price" />
- <text name="price_label">
- Defina um preço:
- </text>
- <text name="price_text">
- Escolha um preço apropriado para esta terra.
- </text>
- <text name="price_ld">
- L$
- </text>
- <text name="price_per_m">
- (L$[PER_METER] por m²)
- </text>
- <text name="sell_to_label">
- Vender esta terra para:
- </text>
- <text name="sell_to_text">
- Escolha se venderá para qualquer um ou para um comprador em
-particular.
- </text>
- <combo_box name="sell_to" bottom_delta="-32">
- <combo_box.item name="--selectone--" label="Selecione um --" />
- <combo_box.item name="Anyone" label="Qualquer um" />
- <combo_box.item name="Specificuser:" label="Usuário Específico:" />
- </combo_box>
- <button label="Selecione..." name="sell_to_select_agent"/>
- <text name="sell_objects_label">
- Vender os objetos com a terra?
- </text>
- <text name="sell_objects_text">
- Os objetos tranferíveis do proprietário do terreno que estão neste
-lote irão mudar de propriedade.
- </text>
- <radio_group name="sell_objects" bottom_delta="-58">
- <radio_item name="no" label="Não, manter a propriedade sobre os objetos" />
- <radio_item name="yes" label="Sim, vender objetos com a terra" />
- </radio_group>
- <button label="Mostrar Objetos" name="show_objects"/>
- <text name="nag_message_label">
- LEMBRE-SE: Todas as vendas são finais.
- </text>
- <button label="Definir Terra para Venda" name="sell_btn"/>
- <button label="Cancelar" name="cancel_btn"/>
- </panel>
- </scroll_container>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="info_parcel_label">
+ Lote:
+ </text>
+ <text name="info_parcel">
+ NOME DO LOTE
+ </text>
+ <text name="info_size_label">
+ Tamanho:
+ </text>
+ <text name="info_size">
+ [AREA] m²
+ </text>
+ <text bottom_delta="-67" name="info_action">
+ Para vender este terreno:
+ </text>
+ <text name="price_label">
+ 1. Preço:
+ </text>
+ <text name="price_text">
+ Determine o preço adequado.
+ </text>
+ <text name="price_ld">
+ L$
+ </text>
+ <line_editor name="price">
+ 0
+ </line_editor>
+ <text name="price_per_m">
+ (L$[PER_METER] por m²)
+ </text>
+ <text name="sell_to_label">
+ 2. Vender para:
+ </text>
+ <text name="sell_to_text">
+ Vender para qualquer pessoa ou determinado comprador.
+ </text>
+ <combo_box bottom_delta="-32" name="sell_to">
+ <combo_box.item label="- Selecione -" name="--selectone--"/>
+ <combo_box.item label="Todos" name="Anyone"/>
+ <combo_box.item label="Pessoa específica:" name="Specificuser:"/>
+ </combo_box>
+ <button label="Selecionar" name="sell_to_select_agent"/>
+ <text name="sell_objects_label">
+ 3. Vender o terreno com os objetos?
+ </text>
+ <text name="sell_objects_text">
+ O objetos transferíveis do terreno passam a ser do novo dono.
+ </text>
+ <radio_group bottom_delta="-58" name="sell_objects">
+ <radio_item label="Não, os objetos continuam sendo meus" name="no"/>
+ <radio_item label="Sim, vender o terreno com os objetos" name="yes"/>
+ </radio_group>
+ <button label="Mostrar objetos" name="show_objects"/>
+ <text name="nag_message_label">
+ LEMBRE-SE: Qualquer transação de compra e venda é irreversível.
+ </text>
+ <button label="Colocar terreno à venda" name="sell_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ </panel>
+ </scroll_container>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml
index 394a9771e0..dfffb89f30 100644
--- a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="CONFIGURAÇÕES DE DEBUG">
+<floater name="settings_debug" title="DEBUG SETTINGS">
<combo_box name="boolean_combo">
- <combo_box.item name="TRUE" label="VERDADEIRO" />
- <combo_box.item name="FALSE" label="FALSO" />
+ <combo_box.item label="TRUE" name="TRUE"/>
+ <combo_box.item label="FALSE" name="FALSE"/>
</combo_box>
- <color_swatch label="Cor" name="color_swatch"/>
+ <color_swatch label="Cor" name="val_color_swatch"/>
<spinner label="x" name="val_spinner_1"/>
<spinner label="x" name="val_spinner_2"/>
<spinner label="x" name="val_spinner_3"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_snapshot.xml b/indra/newview/skins/default/xui/pt/floater_snapshot.xml
index c3c4c73a89..b5d070c9d5 100644
--- a/indra/newview/skins/default/xui/pt/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/pt/floater_snapshot.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="PRÉVIA DA FOTO">
+<floater name="Snapshot" title="VER FOTO">
<text name="type_label">
Destino da foto
</text>
<radio_group label="Tipo de Foto" name="snapshot_type_radio">
- <radio_item name="postcard" label="Enviar por email" />
- <radio_item name="texture" label="Salvar no seu inventário (L$[AMOUNT])" />
- <radio_item name="local" label="Salvar no seu disco rígido" />
+ <radio_item label="Enviar por email" name="postcard"/>
+ <radio_item label="Salvar no seu inventário (L$[AMOUNT])" name="texture"/>
+ <radio_item label="Salvar no seu disco rígido" name="local"/>
</radio_group>
<text name="file_size_label">
Tamanho do arquivo: [SIZE] KB
@@ -15,12 +15,12 @@
<button label="Enviar" name="send_btn"/>
<button label="Salvar (L$[AMOUNT])" name="upload_btn"/>
<flyout_button label="Salvar" name="save_btn" tool_tip="Salvar imagem em um arquivo">
- <flyout_button.item name="save_item" label="Salvar"/>
- <flyout_button.item name="saveas_item" label="Salvar como..."/>
+ <flyout_button.item label="Salvar" name="save_item"/>
+ <flyout_button.item label="Salvar como..." name="saveas_item"/>
</flyout_button>
<button label="Cancelar" name="discard_btn"/>
- <button label="Mais &gt;" name="more_btn" tool_tip="Opções Avançadas"/>
- <button label="&lt; Menos" name="less_btn" tool_tip="Opções Avançadas"/>
+ <button label="Mais &gt;" name="more_btn" tool_tip="Opções avançadas"/>
+ <button label="&lt; Menos" name="less_btn" tool_tip="Opções avançadas"/>
<text name="type_label2">
Tamanho
</text>
@@ -28,50 +28,50 @@
Formato
</text>
<combo_box label="Resolução" name="postcard_size_combo">
- <combo_box.item name="CurrentWindow" label="Janela Atual" />
- <combo_box.item name="640x480" label="640x480" />
- <combo_box.item name="800x600" label="800x600" />
- <combo_box.item name="1024x768" label="1024x768" />
- <combo_box.item name="Custom" label="Customizado" />
+ <combo_box.item label="Janela Atual" name="CurrentWindow"/>
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ <combo_box.item label="Customizado" name="Custom"/>
</combo_box>
<combo_box label="Resolução" name="texture_size_combo">
- <combo_box.item name="CurrentWindow" label="Janela Atual" />
- <combo_box.item name="Small(128x128)" label="Pequeno (128x128)" />
- <combo_box.item name="Medium(256x256)" label="Médio (256x256)" />
- <combo_box.item name="Large(512x512)" label="Grande (512x512)" />
- <combo_box.item name="Custom" label="Customizado" />
+ <combo_box.item label="Janela Atual" name="CurrentWindow"/>
+ <combo_box.item label="Pequeno (128x128)" name="Small(128x128)"/>
+ <combo_box.item label="Médio (256x256)" name="Medium(256x256)"/>
+ <combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
+ <combo_box.item label="Customizado" name="Custom"/>
</combo_box>
<combo_box label="Resolução" name="local_size_combo">
- <combo_box.item name="CurrentWindow" label="Janela Atual" />
- <combo_box.item name="320x240" label="320x240" />
- <combo_box.item name="640x480" label="640x480" />
- <combo_box.item name="800x600" label="800x600" />
- <combo_box.item name="1024x768" label="1024x768" />
- <combo_box.item name="1280x1024" label="1280x1024" />
- <combo_box.item name="1600x1200" label="1600x1200" />
- <combo_box.item name="Custom" label="Customizado" />
+ <combo_box.item label="Janela Atual" name="CurrentWindow"/>
+ <combo_box.item label="320x240" name="320x240"/>
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ <combo_box.item label="1280x1024" name="1280x1024"/>
+ <combo_box.item label="1600x1200" name="1600x1200"/>
+ <combo_box.item label="Customizado" name="Custom"/>
</combo_box>
<combo_box label="Formato" name="local_format_combo">
- <combo_box.item name="PNG" label="PNG" />
- <combo_box.item name="JPEG" label="JPEG" />
- <combo_box.item name="BMP" label="BMP" />
+ <combo_box.item label="PNG" name="PNG"/>
+ <combo_box.item label="JPEG" name="JPEG"/>
+ <combo_box.item label="BMP" name="BMP"/>
</combo_box>
- <spinner label="Largura" name="snapshot_width" label_width="41" width="101"/>
- <spinner label="Altura" name="snapshot_height" label_width="31" width="91" left="119"/>
+ <spinner label="Largura" label_width="41" name="snapshot_width" width="101"/>
+ <spinner label="Altura" label_width="31" left="119" name="snapshot_height" width="91"/>
<check_box label="Restringir proporções" name="keep_aspect_check"/>
<slider label="Qualidade da Imagem" name="image_quality_slider"/>
<text name="layer_type_label">
Capturar:
</text>
<combo_box label="Camadas da Imagem" name="layer_types">
- <combo_box.item name="Colors" label="Cores" />
- <combo_box.item name="Depth" label="Formato" />
- <combo_box.item name="ObjectMattes" label="Decoração do Objeto" />
+ <combo_box.item label="Cores" name="Colors"/>
+ <combo_box.item label="Formato" name="Depth"/>
+ <combo_box.item label="Decoração do Objeto" name="ObjectMattes"/>
</combo_box>
<check_box label="Mostrar interface na Foto" name="ui_check"/>
<check_box bottom_delta="-17" label="Mostrar Objetos HUD na Foto" name="hud_check"/>
<check_box bottom_delta="-17" label="Manter aberto após salvar" name="keep_open_check"/>
- <check_box bottom_delta="-17" label="Quadro Congelado&#10; (prévia da tela inteira)" name="freeze_frame_check"/>
+ <check_box bottom_delta="-17" label="Quadro Congelado (prévia da tela inteira)" name="freeze_frame_check"/>
<check_box bottom_delta="-29" label="Auto-atualizar" name="auto_snapshot_check"/>
<string name="unknown">
desconhecido
diff --git a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml
index d5d252c0dd..e62260c2e3 100644
--- a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Sound Preview" title="SOUND.WAV">
+<floater name="Sound Preview" title="SOM.WAV">
<text name="name_label">
Nome:
</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_statistics.xml b/indra/newview/skins/default/xui/pt/floater_statistics.xml
index c56c9fb2e0..ecbf638157 100644
--- a/indra/newview/skins/default/xui/pt/floater_statistics.xml
+++ b/indra/newview/skins/default/xui/pt/floater_statistics.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="stats floater" title="STATÍSTICA"/>
+<floater name="stats floater" title="ESTATÍSTICAS"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_stats.xml b/indra/newview/skins/default/xui/pt/floater_stats.xml
new file mode 100644
index 0000000000..11589b31b6
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_stats.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="ESTATÍSTICAS">
+ <scroll_container name="statistics_scroll">
+ <container_view name="statistics_view">
+ <stat_view label="Básico" name="basic">
+ <stat_bar label="FPS" name="fps"/>
+ <stat_bar label="Bandwidth" name="bandwidth"/>
+ <stat_bar label="Bandwidth" name="packet_loss"/>
+ <stat_bar label="Ping Sim" name="ping"/>
+ </stat_view>
+ <stat_view label="Avançado" name="advanced">
+ <stat_view label="Render" name="render">
+ <stat_bar label="KTris Drawn" name="ktrisframe"/>
+ <stat_bar label="KTris Drawn" name="ktrissec"/>
+ <stat_bar label="Total Objects" name="objs"/>
+ <stat_bar label="New Objects" name="newobjs"/>
+ </stat_view>
+ <stat_view label="Texture" name="texture">
+ <stat_bar label="Count" name="numimagesstat"/>
+ <stat_bar label="Raw Count" name="numrawimagesstat"/>
+ <stat_bar label="GL Mem" name="gltexmemstat"/>
+ <stat_bar label="Formatted Mem" name="formattedmemstat"/>
+ <stat_bar label="Raw Mem" name="rawmemstat"/>
+ <stat_bar label="Bound Mem" name="glboundmemstat"/>
+ </stat_view>
+ <stat_view label="Rede" name="network">
+ <stat_bar label="Packets In" name="packetsinstat"/>
+ <stat_bar label="Packets Out" name="packetsoutstat"/>
+ <stat_bar label="Objects" name="objectkbitstat"/>
+ <stat_bar label="Texture" name="texturekbitstat"/>
+ <stat_bar label="Asset" name="assetkbitstat"/>
+ <stat_bar label="Layers" name="layerskbitstat"/>
+ <stat_bar label="Actual In" name="actualinkbitstat"/>
+ <stat_bar label="Actual Out" name="actualoutkbitstat"/>
+ <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
+ </stat_view>
+ </stat_view>
+ <stat_view label="Simulator" name="sim">
+ <stat_bar label="Time Dilation" name="simtimedilation"/>
+ <stat_bar label="Sim FPS" name="simfps"/>
+ <stat_bar label="Physics FPS" name="simphysicsfps"/>
+ <stat_view label="Physics Details" name="physicsdetail">
+ <stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
+ <stat_bar label="Low LOD Objects" name="physicslodtasks"/>
+ <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/>
+ <stat_bar label="Agent Updates/Sec" name="simagentups"/>
+ <stat_bar label="Main Agents" name="simmainagents"/>
+ <stat_bar label="Child Agents" name="simchildagents"/>
+ <stat_bar label="Objects" name="simobjects"/>
+ <stat_bar label="Active Objects" name="simactiveobjects"/>
+ <stat_bar label="Active Scripts" name="simactivescripts"/>
+ <stat_bar label="Script Events" name="simscripteps"/>
+ <stat_bar label="Packets In" name="siminpps"/>
+ <stat_bar label="Packets Out" name="simoutpps"/>
+ <stat_bar label="Pending Downloads" name="simpendingdownloads"/>
+ <stat_bar label="Pending Uploads" name="simpendinguploads"/>
+ <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
+ </stat_view>
+ <stat_view label="Time (ms)" name="simperf">
+ <stat_bar label="Total Frame Time" name="simframemsec"/>
+ <stat_bar label="Net Time" name="simnetmsec"/>
+ <stat_bar label="Physics Time" name="simsimphysicsmsec"/>
+ <stat_bar label="Simulation Time" name="simsimothermsec"/>
+ <stat_bar label="Agent Time" name="simagentmsec"/>
+ <stat_bar label="Images Time" name="simimagesmsec"/>
+ <stat_bar label="Script Time" name="simscriptmsec"/>
+ </stat_view>
+ </stat_view>
+ </container_view>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_sys_well.xml b/indra/newview/skins/default/xui/pt/floater_sys_well.xml
new file mode 100644
index 0000000000..b4760835b0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="AVISOS">
+ <string name="title_im_well_window">
+ MIs
+ </string>
+ <string name="title_notification_well_window">
+ AVISOS
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_telehub.xml b/indra/newview/skins/default/xui/pt/floater_telehub.xml
index 5c775ab45d..6b35d3f919 100644
--- a/indra/newview/skins/default/xui/pt/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/pt/floater_telehub.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="telehub" title="TELEHUB" min_height="310" height="310" width="286">
+<floater height="310" min_height="310" name="telehub" title="TELEHUB" width="286">
<text name="status_text_connected">
Telehub conectado ao objeto [OBJECT]
</text>
@@ -17,16 +17,13 @@
<text name="spawn_points_text" width="265">
Pontos de Nascimento (posições, não objetos):
</text>
- <scroll_list name="spawn_points_list" width="265" />
- <button width="135" label="Adicionar Nascimento" name="add_spawn_point_btn"/>
- <button width="130" label="Remover Nascimento" name="remove_spawn_point_btn" left="150"/>
+ <scroll_list name="spawn_points_list" width="265"/>
+ <button label="Adicionar Nascimento" name="add_spawn_point_btn" width="135"/>
+ <button label="Remover Nascimento" left="150" name="remove_spawn_point_btn" width="130"/>
<text name="spawn_point_help">
- Selecione um objeto e clique Adicionar para
-especificar a posição.
-Em seguida, você pode mover ou apagar o objeto.
-As posições são relativas ao centro do telehub.
-
-Selecione um item na lista para mostrar a posição
-in-world.
+ Selecione o objeto e clique em &apos;Adicionar spawn&apos; para especificar a posição.
+O objeto pode ser excluído ou movido posteriormente.
+As posições são definidas em relação ao centro do telehub.
+Selecione um item da lista para realçá-lo inworld.
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
index b63c4a9bbf..69ea67699c 100644
--- a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="texture picker" title="PEGAR: TEXTURA">
+<floater name="texture picker" title="DESTAQUE: TEXTURA">
<string name="choose_picture">
Clique para escolher uma imagem
</string>
<text name="Multiple">
- Multiplo
+ Multiplas texturas
</text>
<text name="unknown">
- Dimensões: [DIMENSIONS]
+ Tamanho: [DIMENSÕES]
</text>
<button label="Padrão" label_selected="Padrão" name="Default"/>
<button label="Nenhum" label_selected="Nenhum" name="None"/>
<button label="Branco" label_selected="Branco" name="Blank"/>
- <check_box label="Mostrar Pastas" name="show_folders_check"/>
- <search_editor label="Clique aqui para buscar" name="inventory search editor"/>
- <check_box label="Aplicar Imediatamente" name="apply_immediate_check"/>
+ <check_box label="Exibir pastas" name="show_folders_check"/>
+ <search_editor label="Filtrar texturas" name="inventory search editor"/>
+ <check_box label="Applicar agora" name="apply_immediate_check"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
- <button label="Selecionar" label_selected="Selecionar" name="Select"/>
+ <button label="Ok" label_selected="Ok" name="Select"/>
<string name="pick title">
Pegar:
</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
index b9ab018606..fb44c5c3bf 100644
--- a/indra/newview/skins/default/xui/pt/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tools.xml
@@ -1,45 +1,81 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" title="" short_title="CONSTRUIR" width="288">
+<floater name="toolbox floater" short_title="BUILD TOOLS" title="" width="288">
+ <floater.string name="status_rotate">
+ Arrastar as bandas coloridas para girar o objeto
+ </floater.string>
+ <floater.string name="status_scale">
+ Clicar e arrastar para esticar o lado selecionado
+ </floater.string>
+ <floater.string name="status_move">
+ Arrastar para mover, Shift-arrastar para copiar
+ </floater.string>
+ <floater.string name="status_modifyland">
+ Clicar e reter para modificar a terra
+ </floater.string>
+ <floater.string name="status_camera">
+ Clique e arraste para mexer a câmera
+ </floater.string>
+ <floater.string name="status_grab">
+ Arraste para mexer, Ctrl para levantar, Ctrl+Shift para girar
+ </floater.string>
+ <floater.string name="status_place">
+ Clique no mundo para construir
+ </floater.string>
+ <floater.string name="status_selectland">
+ Clicar e arrastar para selecionar a terra
+ </floater.string>
+ <floater.string name="grid_screen_text">
+ Tela
+ </floater.string>
+ <floater.string name="grid_local_text">
+ Local
+ </floater.string>
+ <floater.string name="grid_world_text">
+ Mundo
+ </floater.string>
+ <floater.string name="grid_reference_text">
+ Referência
+ </floater.string>
+ <floater.string name="grid_attachment_text">
+ Anexo
+ </floater.string>
<button label="" label_selected="" name="button focus" tool_tip="Foco"/>
<button label="" label_selected="" name="button move" tool_tip="Mover"/>
<button label="" label_selected="" name="button edit" tool_tip="Editar"/>
<button label="" label_selected="" name="button create" tool_tip="Criar"/>
<button label="" label_selected="" name="button land" tool_tip="Terra"/>
+ <text name="text status" width="280">
+ Arraste para mover, shift+Arrastar para Copiar
+ </text>
<radio_group name="focus_radio_group">
<radio_item label="Zoom" name="radio zoom"/>
<radio_item label="Órbita (Ctrl)" name="radio orbit"/>
- <radio_item label="Pan (Ctrl-Shift)" name="radio pan"/>
+ <radio_item label="Pan (Ctrl+Shift)" name="radio pan"/>
</radio_group>
<radio_group name="move_radio_group">
<radio_item label="Mover" name="radio move"/>
<radio_item label="Suspender (Ctrl)" name="radio lift"/>
- <radio_item label="Girar (Ctrl-Shift)" name="radio spin"/>
+ <radio_item label="Spin (Ctrl+Shift)" name="radio spin"/>
</radio_group>
<radio_group name="edit_radio_group">
- <radio_item label="Posição" name="radio position"/>
+ <radio_item label="Movimentar" name="radio position"/>
<radio_item label="Rotacionar (Ctrl)" name="radio rotate"/>
- <radio_item label="Esticar (Ctrl-Shift)" name="radio stretch"/>
- <radio_item label="Selecionar Textura" name="radio select face"/>
+ <radio_item label="Stretch (Ctrl+Shift)" name="radio stretch"/>
+ <radio_item label="Face selecionada" name="radio select face"/>
</radio_group>
- <check_box label="Editar partes unidas" name="checkbox edit linked parts"/>
- <text name="text ruler mode">
- Régua:
+ <check_box label="Editar item linkado" name="checkbox edit linked parts"/>
+ <text name="RenderingCost" tool_tip="Mostra o cálculo do custo de renderização do objeto">
+ þ: [COUNT]
</text>
- <combo_box name="combobox grid mode">
- <combo_box.item name="World" label="Mundo"
- />
- <combo_box.item name="Local" label="Local"
- />
- <combo_box.item name="Reference" label="Referência"
- />
- </combo_box>
<check_box label="Esticar ambos os lados" name="checkbox uniform"/>
- <check_box label="Esticar Texturas" name="checkbox stretch textures"/>
- <check_box label="Usar Grade" name="checkbox snap to grid"/>
- <button label="Opções..." label_selected="Opções..." name="Options..."/>
- <text name="text status" width="280">
- Arraste para mover, shift+Arrastar para Copiar
- </text>
+ <check_box initial_value="true" label="Esticar Texturas" name="checkbox stretch textures"/>
+ <check_box initial_value="true" label="Mostrar na grade" name="checkbox snap to grid"/>
+ <combo_box name="combobox grid mode" tool_tip="Selecione o tipo de régua da grade onde o objeto será colocado">
+ <combo_box.item label="Grid SL" name="World"/>
+ <combo_box.item label="Grid local" name="Local"/>
+ <combo_box.item label="Grid de referência" name="Reference"/>
+ </combo_box>
+ <button label="Opções..." label_selected="Opções..." name="Options..." tool_tip="Mais opções de grade"/>
<button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/>
<button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
<button label="" label_selected="" name="ToolPyramid" tool_tip="Pirâmide"/>
@@ -55,10 +91,10 @@
<button label="" label_selected="" name="ToolRing" tool_tip="Anel"/>
<button label="" label_selected="" name="ToolTree" tool_tip="Árvore"/>
<button label="" label_selected="" name="ToolGrass" tool_tip="Grama"/>
- <check_box label="Manter selecionado" name="checkbox sticky"/>
- <check_box label="Copiar selecionado" name="checkbox copy selection"/>
- <check_box label="Centro" name="checkbox copy centers"/>
- <check_box label="Rotacionar" name="checkbox copy rotates"/>
+ <check_box label="Ficar com ferramenta selecionado" name="checkbox sticky"/>
+ <check_box label="Copiar seleção" name="checkbox copy selection"/>
+ <check_box initial_value="true" label="Copiar parte central" name="checkbox copy centers"/>
+ <check_box label="Girar cópia" name="checkbox copy rotates"/>
<radio_group name="land_radio_group">
<radio_item label="Selecionar Terra" name="radio select land"/>
<radio_item label="Aplainar" name="radio flatten"/>
@@ -68,7 +104,6 @@
<radio_item label="Endurecer" name="radio noise"/>
<radio_item label="Reverter" name="radio revert"/>
</radio_group>
- <button label="Aplicar" label_selected="Aplicar" name="button apply to selection" tool_tip="Modificar Terra Selecionada"/>
<text name="Bulldozer:">
Escavadeira:
</text>
@@ -78,14 +113,51 @@
<text name="Strength:">
Força
</text>
- <text name="obj_count" left="134">
- Objetos selecionados: [COUNT]
+ <button label="Aplicar" label_selected="Aplicar" name="button apply to selection" tool_tip="Modificar a terra selecionada"/>
+ <text left="134" name="obj_count">
+ Objects: [COUNT]
</text>
- <text name="prim_count" left="134">
- primitivas: [COUNT]
+ <text left="134" name="prim_count">
+ Prims: [COUNT]
</text>
<tab_container name="Object Info Tabs" tab_max_width="60" tab_min_width="30" width="288">
<panel label="Comum" name="General">
+ <panel.string name="text deed continued">
+ Doar
+ </panel.string>
+ <panel.string name="text deed">
+ Doar
+ </panel.string>
+ <panel.string name="text modify info 1">
+ Você pode modificar este objeto
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Você pode modificar estes objetos
+ </panel.string>
+ <panel.string name="text modify info 3">
+ Você não pode modificar este objeto
+ </panel.string>
+ <panel.string name="text modify info 4">
+ Você não pode modificar estes objetos
+ </panel.string>
+ <panel.string name="text modify warning">
+ Selecione o objeto intereiro para configurar as autorizações
+ </panel.string>
+ <panel.string name="Cost Default">
+ Preço: L$
+ </panel.string>
+ <panel.string name="Cost Total">
+ Total: L$
+ </panel.string>
+ <panel.string name="Cost Per Unit">
+ Preço unitário: L$
+ </panel.string>
+ <panel.string name="Cost Mixed">
+ Preço Misturado
+ </panel.string>
+ <panel.string name="Sale Mixed">
+ Venda Misturada
+ </panel.string>
<text name="Name:">
Nome:
</text>
@@ -98,135 +170,77 @@
<text name="Creator Name">
Thrax Linden
</text>
- <button label="Perfil..." label_selected="Perfil..." name="button creator profile"/>
<text name="Owner:">
Proprietário:
</text>
<text name="Owner Name">
Thrax Linden
</text>
- <button label="Perfil..." label_selected="Perfil..." name="button owner profile"/>
<text name="Group:">
Grupo:
</text>
- <text name="Group Name Proxy">
- The Lindens
- </text>
- <button label="Definir..." label_selected="Definir..." name="button set group"/>
- <text name="Permissions:">
- Permissões:
- </text>
-
- <check_box label="Compartilhar com o Grupo" name="checkbox share with group" tool_tip="Permite que todos os membros do grupo definido compartilhem e usem suas permissões para este objeto. Você precisa Doar ao Grupo para habilitar as restrições de função."/>
- <string name="text deed continued">
- Doar...
- </string>
- <string name="text deed">
- Doar
- </string>
- <button label="Doar..." label_selected="Doar..." name="button deed" tool_tip="Objetos compartilhados do Grupo pode ser doados pelo gerente do grupo."/>
- <check_box label="Permitir que qualquer um mova" name="checkbox allow everyone move"/>
- <check_box label="Permitir que qualquer um copie" name="checkbox allow everyone copy"/>
- <check_box label="Mostrar na busca" name="search_check" tool_tip="Permitir que as pessoas vejam este objeto nos resultados de busca"/>
- <check_box label="À Venda" name="checkbox for sale"/>
- <text name="Cost">
- Preço: L$
+ <button label="Definir..." label_selected="Definir..." name="button set group" tool_tip="Selecione o grupo que terá acesso à autorização do objeto"/>
+ <name_box initial_value="Carregando..." name="Group Name Proxy"/>
+ <button label="Doar" label_selected="Doar" name="button deed" tool_tip="Ao doar este item, o próximo dono terá permissões de próximo dono. Objetos de grupos podem ser doados por um oficial do grupo."/>
+ <check_box label="Compartilhar" name="checkbox share with group" tool_tip="Permitir que todos os membros do grupo tenhas suas permissões de modificação para este objeto. Faça uma doação para ativar restrições de função."/>
+ <text name="label click action" width="220">
+ Clique para:
</text>
+ <combo_box name="clickaction" width="192">
+ <combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/>
+ <combo_box.item label="Sentar no objeto" name="Sitonobject"/>
+ <combo_box.item label="Comprar objeto" name="Buyobject"/>
+ <combo_box.item label="Pagar Objeto" name="Payobject"/>
+ <combo_box.item label="Abrir" name="Open"/>
+ <combo_box.item label="Zoom" name="Zoom"/>
+ </combo_box>
+ <check_box label="À venda" name="checkbox for sale"/>
<combo_box name="sale type">
<combo_box.item label="Cópia" name="Copy"/>
<combo_box.item label="Conteúdo" name="Contents"/>
<combo_box.item label="Original" name="Original"/>
</combo_box>
-
- <text name="label click action" width="220">
- Quando clicado com o botão esquerdo:
- </text>
- <combo_box name="clickaction" width="192">
- <combo_box.item name="Touch/grab(default)" label="Tocar/Pegar (padrão)"
- />
- <combo_box.item name="Sitonobject" label="Sentar no objeto"
- />
- <combo_box.item name="Buyobject" label="Comprar objeto"
- />
- <combo_box.item name="Payobject" label="Pagar Objeto"
- />
- <combo_box.item name="Open" label="Abrir"
- />
- <combo_box.item name="Play" label="Executar a mídia do lote"
- />
- <combo_box.item name="Opemmedia" label="Abrir a mídia do lote"
- />
- </combo_box>
- <panel name="perms_build">
- <text name="perm_modify">
- Você pode modificar este objeto
- </text>
- <text name="B:">
- B:
- </text>
- <text name="O:">
- O:
- </text>
- <text name="G:">
- G:
- </text>
- <text name="E:">
- E:
- </text>
- <text name="N:">
- N:
- </text>
- <text name="F:">
- F:
- </text>
- <text name="Next owner can:">
- Próximo Proprietário pode:
- </text>
- <check_box label="Modificar" name="checkbox next owner can modify"/>
- <check_box label="Copiar" name="checkbox next owner can copy" left_delta="80"/>
- <check_box name="checkbox next owner can transfer" left_delta="67"/>
- </panel>
- <string name="text modify info 1">
- Você pode modificar este objeto
- </string>
- <string name="text modify info 2">
- Você pode modificar estes objetos
- </string>
- <string name="text modify info 3">
- Você não pode modificar este objeto
- </string>
- <string name="text modify info 4">
- Você não pode modificar estes objetos
- </string>
- <string name="text modify warning">
- Você precisa selecionar o objeto todo para ajustar as permissões
- </string>
- <string name="Cost Default">
- Preço: L$
- </string>
- <string name="Cost Total">
- Preço Total: L$
- </string>
- <string name="Cost Per Unit">
- Preço Por: L$
- </string>
- <string name="Cost Mixed">
- Preço Misturado
- </string>
- <string name="Sale Mixed">
- Venda Misturada
- </string>
+ <spinner label="Preço: L$" name="Edit Cost"/>
+ <check_box label="Mostrar na busca" name="search_check" tool_tip="Permitir que as pessoas vejam este objeto nos resultados de busca"/>
+ <panel name="perms_build">
+ <text name="perm_modify">
+ Você pode modificar este objeto
+ </text>
+ <text name="Anyone can:">
+ Todos:
+ </text>
+ <check_box label="Movimentar" name="checkbox allow everyone move"/>
+ <check_box label="Copiar" name="checkbox allow everyone copy"/>
+ <text name="Next owner can:">
+ Próximo proprietário:
+ </text>
+ <check_box label="Modificar" name="checkbox next owner can modify"/>
+ <check_box label="Copiar" left_delta="80" name="checkbox next owner can copy"/>
+ <check_box label="Transferir" left_delta="67" name="checkbox next owner can transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/>
+ <text name="B:">
+ B:
+ </text>
+ <text name="O:">
+ O:
+ </text>
+ <text name="G:">
+ G:
+ </text>
+ <text name="E:">
+ E:
+ </text>
+ <text name="N:">
+ N:
+ </text>
+ <text name="F:">
+ F:
+ </text>
+ </panel>
</panel>
<panel label="Objeto" name="Object">
- <text name="select_single" width="272">
- Selecione apenas uma primitiva para editar os parâmetros.
- </text>
- <text name="edit_object">
- Editar os parâmetros do Objeto:
- </text>
<check_box label="Travado" name="checkbox locked" tool_tip="Previne que o objeto seja movido ou apagado. Muito útil para evitar edições não intencionais durante a construção."/>
<check_box label="Física" name="Physical Checkbox Ctrl" tool_tip="Permite que os objetos sejam empurrados e sofram efeito da gravidade"/>
- <check_box label="Temporário" name="Temporary Checkbox Ctrl" tool_tip="Faz com que o objeto seja apagado 1 minuto após ser criado."/>
+ <check_box label="Temporário" name="Temporary Checkbox Ctrl" tool_tip="O objeto será excluído um minuto depois de ser criado"/>
<check_box label="Fantasma" name="Phantom Checkbox Ctrl" tool_tip="Faz com que o objeto não colida com outros objetos ou avatares"/>
<text name="label position">
Posição (metros)
@@ -246,48 +260,27 @@
<spinner label="X" name="Rot X"/>
<spinner label="Y" name="Rot Y"/>
<spinner label="Z" name="Rot Z"/>
- <text name="label material">
- Material
- </text>
- <combo_box name="material">
- <combo_box.item name="Stone" label="Pedra"
- />
- <combo_box.item name="Metal" label="Metal"
- />
- <combo_box.item name="Glass" label="Vidro"
- />
- <combo_box.item name="Wood" label="Madeira"
- />
- <combo_box.item name="Flesh" label="Carne"
- />
- <combo_box.item name="Plastic" label="Plástico"
- />
- <combo_box.item name="Rubber" label="Couro"
- />
- </combo_box>
- <text name="label basetype">
- Forma básica
- </text>
<combo_box name="comboBaseType">
- <combo_box.item name="Box" label="Caixa"
- />
- <combo_box.item name="Cylinder" label="Cilindro"
- />
- <combo_box.item name="Prism" label="Prisma"
- />
- <combo_box.item name="Sphere" label="Esfera"
- />
- <combo_box.item name="Torus" label="Toróide"
- />
- <combo_box.item name="Tube" label="Tubo"
- />
- <combo_box.item name="Ring" label="Anel"
- />
- <combo_box.item name="Sculpted" label="Esculpida"
- />
+ <combo_box.item label="Caixa" name="Box"/>
+ <combo_box.item label="Cilindro" name="Cylinder"/>
+ <combo_box.item label="Prisma" name="Prism"/>
+ <combo_box.item label="Esfera" name="Sphere"/>
+ <combo_box.item label="Toróide" name="Torus"/>
+ <combo_box.item label="Tubo" name="Tube"/>
+ <combo_box.item label="Anel" name="Ring"/>
+ <combo_box.item label="Esculpida" name="Sculpted"/>
+ </combo_box>
+ <combo_box name="material">
+ <combo_box.item label="Pedra" name="Stone"/>
+ <combo_box.item label="Metal" name="Metal"/>
+ <combo_box.item label="Vidro" name="Glass"/>
+ <combo_box.item label="Madeira" name="Wood"/>
+ <combo_box.item label="Carne" name="Flesh"/>
+ <combo_box.item label="Plástico" name="Plastic"/>
+ <combo_box.item label="Couro" name="Rubber"/>
</combo_box>
<text name="text cut">
- Recorte Início e final
+ Path Cut (begin/end)
</text>
<spinner label="I" name="cut begin"/>
<spinner label="F" name="cut end"/>
@@ -301,17 +294,13 @@
Forma Vazia
</text>
<combo_box name="hole">
- <combo_box.item name="Default" label="Padrão"
- />
- <combo_box.item name="Circle" label="Circulo"
- />
- <combo_box.item name="Square" label="Quadrado"
- />
- <combo_box.item name="Triangle" label="Triâgulo"
- />
+ <combo_box.item label="Padrão" name="Default"/>
+ <combo_box.item label="Circulo" name="Circle"/>
+ <combo_box.item label="Quadrado" name="Square"/>
+ <combo_box.item label="Triâgulo" name="Triangle"/>
</combo_box>
<text name="text twist">
- Torcer no Início e final
+ Twist (begin/end)
</text>
<spinner label="I" name="Twist Begin"/>
<spinner label="F" name="Twist End"/>
@@ -329,13 +318,13 @@
<spinner label="X" name="Shear X"/>
<spinner label="Y" name="Shear Y"/>
<text name="advanced_cut" width="156">
- Perfil Recortado no Início e fim
+ Profile Cut (begin/end)
</text>
<text name="advanced_dimple">
- Cova Início e final
+ Dimple (begin/end)
</text>
<text name="advanced_slice">
- Pedaço Início e fim
+ Slice (begin/end)
</text>
<spinner label="I" name="Path Limit Begin"/>
<spinner label="F" name="Path Limit End"/>
@@ -351,22 +340,17 @@
Revoluções
</text>
<texture_picker label="Texture de Escultura" name="sculpt texture control" tool_tip="Click to choose a picture"/>
- <check_box label="Espelho" name="sculpt mirror control" tool_tip="Inverter a primitiva esculpida ao longo do eixo X."/>
- <check_box label="De dentro para fora" name="sculpt invert control" tool_tip="Inverte as normais das primitivas esculpidas, fazendo-as parecer de dentro para fora."/>
+ <check_box label="Espelho" name="sculpt mirror control" tool_tip="Flips sculpted prim along the X axis"/>
+ <check_box label="De dentro para fora" name="sculpt invert control" tool_tip="Inverts the sculpted prims normals, making it appear inside-out"/>
<text name="label sculpt type">
Tipo costura
</text>
<combo_box name="sculpt type control">
- <combo_box.item name="None" label="(nenhum)"
- />
- <combo_box.item name="Sphere" label="Esfera"
- />
- <combo_box.item name="Torus" label="Toróide"
- />
- <combo_box.item name="Plane" label="Plano"
- />
- <combo_box.item name="Cylinder" label="Cilindro"
- />
+ <combo_box.item label="(nenhum)" name="None"/>
+ <combo_box.item label="Esfera" name="Sphere"/>
+ <combo_box.item label="Toróide" name="Torus"/>
+ <combo_box.item label="Plano" name="Plane"/>
+ <combo_box.item label="Cilindro" name="Cylinder"/>
</combo_box>
</panel>
<panel label="Recursos" name="Features">
@@ -376,7 +360,7 @@
<text name="edit_object">
Editar características do Objeto:
</text>
- <check_box label="Flexíbilidade" name="Flexible1D Checkbox Ctrl" tool_tip="Permite que o objeto flexione no eixo Z. (Somente no lado do Cliente)"/>
+ <check_box label="Flexíbilidade" name="Flexible1D Checkbox Ctrl" tool_tip="Allows object to flex about the Z axis (Client-side only)"/>
<spinner label="Suavidade" name="FlexNumSections"/>
<spinner label="Gravidade" name="FlexGravity"/>
<spinner label="Arrastar" name="FlexFriction"/>
@@ -386,17 +370,24 @@
<spinner label="Força Y" name="FlexForceY"/>
<spinner label="Força Z" name="FlexForceZ"/>
<check_box label="Luz" name="Light Checkbox Ctrl" tool_tip="Faz com que o objeto emita luz"/>
- <text name="label color">
- Cor
- </text>
- <color_swatch label="" name="colorswatch" tool_tip="Clique para abrir o Seletor de Cores"/>
+ <color_swatch label="" name="colorswatch" tool_tip="Selecionar a cor"/>
+ <texture_picker label="" name="light texture control" tool_tip="Clique para selecionar uma imagem de projeção (só com renderização suspesa ativada)"/>
<spinner label="Intensidade" name="Light Intensity"/>
+ <spinner label="FOV" name="Light FOV"/>
<spinner label="Raio" name="Light Radius"/>
+ <spinner label="Enfocar" name="Light Focus"/>
<spinner label="Queda" name="Light Falloff"/>
+ <spinner label="Ambiente" name="Light Ambiance"/>
</panel>
<panel label="Textura" name="Texture">
+ <panel.string name="string repeats per meter">
+ Repetir por Metro
+ </panel.string>
+ <panel.string name="string repeats per face">
+ Repetir por Face
+ </panel.string>
<texture_picker label="Textura" name="texture control" tool_tip="Clique para escolher uma imagem"/>
- <color_swatch label="Cor" name="colorswatch" tool_tip="Clique para abrir o Seletor de Cores"/>
+ <color_swatch label="Cor" name="colorswatch" tool_tip="Selecionar a cor"/>
<text name="color trans" width="100">
Transparência %
</text>
@@ -408,99 +399,69 @@
Mapeamento
</text>
<combo_box name="combobox texgen">
- <combo_box.item name="Default" label="Padrão"
- />
- <combo_box.item name="Planar" label="Planar"
- />
+ <combo_box.item label="Padrão" name="Default"/>
+ <combo_box.item label="Planar" name="Planar"/>
</combo_box>
<text name="label shininess">
Brilho
</text>
<combo_box name="combobox shininess">
- <combo_box.item name="None" label="Nenhum"
- />
- <combo_box.item name="Low" label="Baixo"
- />
- <combo_box.item name="Medium" label="Médio"
- />
- <combo_box.item name="High" label="Alto"
- />
+ <combo_box.item label="Nenhum" name="None"/>
+ <combo_box.item label="Baixo" name="Low"/>
+ <combo_box.item label="Médio" name="Medium"/>
+ <combo_box.item label="Alto" name="High"/>
</combo_box>
<text name="label bumpiness">
Ondulação
</text>
- <combo_box name="combobox bumpiness" width="100" >
- <combo_box.item name="None" label="Nenhum"
- />
- <combo_box.item name="Brightness" label="Claridade"
- />
- <combo_box.item name="Darkness" label="Escuridão"
- />
- <combo_box.item name="woodgrain" label="Granulação"
- />
- <combo_box.item name="bark" label="Casca"
- />
- <combo_box.item name="bricks" label="Tijolos"
- />
- <combo_box.item name="checker" label="Caixa"
- />
- <combo_box.item name="concrete" label="Concreto"
- />
- <combo_box.item name="crustytile" label="Encaroçado"
- />
- <combo_box.item name="cutstone" label="Pedra Cortante"
- />
- <combo_box.item name="discs" label="Discos"
- />
- <combo_box.item name="gravel" label="Cascalho"
- />
- <combo_box.item name="petridish" label="Pedrisco"
- />
- <combo_box.item name="siding" label="Revestimento"
- />
- <combo_box.item name="stonetile" label="Empedrado"
- />
- <combo_box.item name="stucco" label="Grafiato"
- />
- <combo_box.item name="suction" label="Sulcos"
- />
- <combo_box.item name="weave" label="Weave"
- />
+ <combo_box name="combobox bumpiness" width="100">
+ <combo_box.item label="Nenhum" name="None"/>
+ <combo_box.item label="Claridade" name="Brightness"/>
+ <combo_box.item label="Escuridão" name="Darkness"/>
+ <combo_box.item label="Granulação" name="woodgrain"/>
+ <combo_box.item label="Casca" name="bark"/>
+ <combo_box.item label="Tijolos" name="bricks"/>
+ <combo_box.item label="Caixa" name="checker"/>
+ <combo_box.item label="Concreto" name="concrete"/>
+ <combo_box.item label="Encaroçado" name="crustytile"/>
+ <combo_box.item label="Pedra Cortante" name="cutstone"/>
+ <combo_box.item label="Discos" name="discs"/>
+ <combo_box.item label="Cascalho" name="gravel"/>
+ <combo_box.item label="Pedrisco" name="petridish"/>
+ <combo_box.item label="Revestimento" name="siding"/>
+ <combo_box.item label="Empedrado" name="stonetile"/>
+ <combo_box.item label="Grafiato" name="stucco"/>
+ <combo_box.item label="Sulcos" name="suction"/>
+ <combo_box.item label="Weave" name="weave"/>
</combo_box>
<text name="tex scale">
- Repetir por Face
+ Repeats / Face
</text>
<spinner label="Horizontal (U)" name="TexScaleU"/>
<check_box label="Flip" name="checkbox flip s"/>
<spinner label="Vertical (V)" name="TexScaleV"/>
<check_box label="Flip" name="checkbox flip t"/>
- <text name="tex rotate">
- Rotação (graus)
- </text>
- <string name="string repeats per meter">
- Repetir por Metro
- </string>
- <string name="string repeats per face">
- Repetir por Face
- </string>
- <text name="rpt">
- Repetir por Metro
- </text>
+ <spinner label="Rotation˚" name="TexRot"/>
+ <spinner label="Repeats / Meter" name="rptctrl"/>
<button label="Aplicar" label_selected="Aplicar" name="button apply"/>
<text name="tex offset">
- Deslocamento
+ Texture Offset
</text>
<spinner label="Horizontal (U)" name="TexOffsetU"/>
<spinner label="Vertical (V)" name="TexOffsetV"/>
- <text name="textbox autofix">
- Alinhar Texturas
- </text>
- <button label="Alinhar" label_selected="Alinhar" name="button align"/>
+ <panel name="Add_Media">
+ <text name="media_tex">
+ Mídia
+ </text>
+ <button name="add_media" tool_tip="Adicionar mídia"/>
+ <button name="delete_media" tool_tip="Excluir esta textura de mídia"/>
+ <button name="edit_media" tool_tip="Editar esta mídia"/>
+ <button label="Alinhar" label_selected="Alinhar mídias" name="button align" tool_tip="Alinhar textura da mídia (após carregar mídia)"/>
+ </panel>
</panel>
<panel label="Conteúdo" name="Contents">
- <button label="Novo Script" label_selected="Novo Script" name="button new script"/>
- <button label="Permissões" name="button permissions"/>
- <panel name="ContentsInventory" width="272" />
+ <button label="Novo Script" label_selected="Novo script" name="button new script"/>
+ <button label="Autorizações" name="button permissions"/>
</panel>
</tab_container>
<panel name="land info panel">
@@ -508,62 +469,22 @@
Informações do Lote
</text>
<text name="label_area_price">
- Preço: L$[PRICE] por [AREA] m².
+ Preço: L$[PRICE] por [AREA] m²
</text>
<text name="label_area">
- Área: [AREA] m².
+ Área: [AREA] m²
</text>
- <button label="Sobre a Terra..." label_selected="Sobre a Terra..." name="button about land"/>
- <check_box label="Mostrar donos" name="checkbox show owners" tool_tip="Colorir lotes de acordo com seus donos: &#10;&#10;Green = Sua terra &#10;Aqua = Terra do seu grupo &#10;Red = Possuída por outros &#10;Yellow = À venda &#10;Purple = A leilão &#10;Grey = Pública"/>
- <button label="?" label_selected="?" name="button show owners help" left_delta="100"/>
+ <button label="Sobre terrenos" label_selected="Sobre terrenos" name="button about land"/>
+ <check_box label="Mostrar donos" name="checkbox show owners" tool_tip="Colorir lotes de acordo com seus donos: Green = Sua terra Aqua = Terra do seu grupo Red = Possuída por outros Yellow = À venda Purple = A leilão Grey = Pública"/>
<text name="label_parcel_modify">
Modificar Lote
</text>
- <button label="Sub-Dividir" label_selected="Sub-Dividir" name="button subdivide land"/>
- <button label="Unir" label_selected="Unir" name="button join land"/>
+ <button label="Subdividir" label_selected="Subdividir" name="button subdivide land"/>
+ <button label="Juntar" label_selected="Juntar" name="button join land"/>
<text name="label_parcel_trans">
Transações com a Terra
</text>
- <button label="Comprar Terra" label_selected="Comprar Terra" name="button buy land"/>
- <button label="Abandonar Terra" label_selected="Abandonar Terra" name="button abandon land"/>
+ <button label="Comprar terreno" label_selected="Comprar terreno" name="button buy land"/>
+ <button label="Abandonar terreno" label_selected="Abandonar terreno" name="button abandon land"/>
</panel>
- <floater.string name="status_rotate">
- Arrastar as bandas coloridas para girar o objeto
- </floater.string>
- <floater.string name="status_scale">
- Clicar e arrastar para esticar o lado selecionado
- </floater.string>
- <floater.string name="status_move">
- Arrastar para mover, Shift-arrastar para copiar
- </floater.string>
- <floater.string name="status_modifyland">
- Clicar e reter para modificar a terra
- </floater.string>
- <floater.string name="status_camera">
- Clicar e arrastar para mudar a vista
- </floater.string>
- <floater.string name="status_grab">
- Arrastar para mover, Ctrl para levantar, Ctrl-Shift para rotacionar
- </floater.string>
- <floater.string name="status_place">
- Clique no mundo para construir
- </floater.string>
- <floater.string name="status_selectland">
- Clicar e arrastar para selecionar a terra
- </floater.string>
- <floater.string name="grid_screen_text">
- Tela
- </floater.string>
- <floater.string name="grid_local_text">
- Local
- </floater.string>
- <floater.string name="grid_world_text">
- Mundo
- </floater.string>
- <floater.string name="grid_reference_text">
- Referência
- </floater.string>
- <floater.string name="grid_attachment_text">
- Anexo
- </floater.string>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_top_objects.xml b/indra/newview/skins/default/xui/pt/floater_top_objects.xml
index 15e69c450c..c6a62c9118 100644
--- a/indra/newview/skins/default/xui/pt/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/pt/floater_top_objects.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="top_objects" title="CARREGANDO...">
+<floater name="top_objects" title="Principais objetos:">
<text name="title_text">
Carregando...
</text>
@@ -16,20 +16,20 @@
</text>
<button label="Mostrar Avisos" name="show_beacon_btn"/>
<text name="obj_name_text">
- Nome do Objeto:
+ Nome do objeto:
</text>
<button label="Filtro" name="filter_object_btn"/>
<text name="owner_name_text" width="130">
- Nome do Proprietário:
+ Proprietário:
</text>
<line_editor font="SansSerifSmall" left="140" name="id_editor" width="280"/>
<line_editor font="SansSerifSmall" left="140" name="object_name_editor" width="280"/>
<line_editor font="SansSerifSmall" left="140" name="owner_name_editor" width="280"/>
<button label="Filtro" name="filter_owner_btn"/>
<button label="Retornar Selecionado" name="return_selected_btn" width="170"/>
- <button label="Retornar Tudo" name="return_all_btn" left="190"/>
+ <button label="Retornar Tudo" left="190" name="return_all_btn"/>
<button label="Desabilitar Selecionado" name="disable_selected_btn" width="170"/>
- <button label="Desabilitar Tudo" name="disable_all_btn" left="190"/>
+ <button label="Desabilitar Tudo" left="190" name="disable_all_btn"/>
<button label="Atualizar" name="refresh_btn"/>
<string name="top_scripts_title">
Principais Scripts
diff --git a/indra/newview/skins/default/xui/pt/floater_tos.xml b/indra/newview/skins/default/xui/pt/floater_tos.xml
index 7a0c187517..9a9666f9db 100644
--- a/indra/newview/skins/default/xui/pt/floater_tos.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tos.xml
@@ -4,8 +4,7 @@
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
<check_box label="Eu concordo com os Termos do Serviço" name="agree_chk"/>
<text name="tos_heading">
- Por favor, leia os seguintes Termos de Serviço cuidadosamente. Para continuar acessando o
-[SECOND_LIFE], você precisa aceitar o acordo.
+ Leia com atenção os Termos do Serviço. Para continuar a entrar no [SECOND_LIFE], é preciso aceitar o contrato.
</text>
<text_editor name="tos_text">
TOS_TEXT
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
new file mode 100644
index 0000000000..8348b375b1
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_controls" title="Controles de voz">
+ <string name="title_nearby">
+ VOZ LOCAL
+ </string>
+ <string name="title_group">
+ Ligação de grupo com [GROUP]
+ </string>
+ <string name="title_adhoc">
+ Teleconferência
+ </string>
+ <string name="title_peer_2_peer">
+ Ligação para [NAME]
+ </string>
+ <string name="no_one_near">
+ Ninguém por perto
+ </string>
+ <panel name="control_panel">
+ <layout_stack>
+ <layout_panel name="leave_btn_panel">
+ <button label="Desligar" name="leave_call_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_water.xml b/indra/newview/skins/default/xui/pt/floater_water.xml
index bad9aa0943..36b995d4fd 100644
--- a/indra/newview/skins/default/xui/pt/floater_water.xml
+++ b/indra/newview/skins/default/xui/pt/floater_water.xml
@@ -3,7 +3,7 @@
<text name="KeyFramePresetsText" width="154">
Pré-configurações da Água:
</text>
- <combo_box left_delta="160" name="WaterPresetsCombo" width="150" />
+ <combo_box left_delta="160" name="WaterPresetsCombo" width="150"/>
<button label="Novo" label_selected="Novo" name="WaterNewPreset"/>
<button label="Salvar" label_selected="Salvar" name="WaterSavePreset"/>
<button label="Deletar" label_selected="Deletar" name="WaterDeletePreset"/>
@@ -13,19 +13,19 @@
Cor da névoa da Água
</text>
<button label="?" name="WaterFogColorHelp"/>
- <color_swatch label="" name="WaterFogColor" tool_tip="Clique para abrir o Capturador de Cor"/>
+ <color_swatch label="" name="WaterFogColor" tool_tip="Selecionar a cor"/>
<text name="WaterFogDensText">
Expoente da Densidade de névoa
</text>
- <button label="?" name="WaterFogDensityHelp" left="209"/>
+ <button label="?" left="209" name="WaterFogDensityHelp"/>
<text name="WaterUnderWaterFogModText">
Modificador da névoa Subaquática
</text>
- <button label="?" name="WaterUnderWaterFogModHelp" left="209"/>
+ <button label="?" left="209" name="WaterUnderWaterFogModHelp"/>
<text name="BDensText">
Escala da Marola de Reflexão
</text>
- <button label="?" name="WaterNormalScaleHelp" left="415"/>
+ <button label="?" left="415" name="WaterNormalScaleHelp"/>
<text name="BHText2">
1
</text>
@@ -38,29 +38,29 @@
<text name="HDText">
Escala de Fresnel
</text>
- <button label="?" name="WaterFresnelScaleHelp" left="415"/>
+ <button label="?" left="415" name="WaterFresnelScaleHelp"/>
<text name="FresnelOffsetText">
Deslocamento de Fresnel
</text>
- <button label="?" name="WaterFresnelOffsetHelp" left="415"/>
+ <button label="?" left="415" name="WaterFresnelOffsetHelp"/>
<text name="DensMultText">
Refratar a Escala para Cima
</text>
- <button label="?" name="WaterScaleAboveHelp" left="640"/>
+ <button label="?" left="640" name="WaterScaleAboveHelp"/>
<text name="WaterScaleBelowText">
Refratar a Escala para Baixo
</text>
- <button label="?" name="WaterScaleBelowHelp" left="640"/>
+ <button label="?" left="640" name="WaterScaleBelowHelp"/>
<text name="MaxAltText">
Multiplicador de Difusão
</text>
- <button label="?" name="WaterBlurMultiplierHelp" left="640"/>
+ <button label="?" left="640" name="WaterBlurMultiplierHelp"/>
</panel>
<panel label="Imagem" name="Waves">
<text name="BHText">
Direção da Onda Maior
</text>
- <button label="?" name="WaterWave1Help" left="170"/>
+ <button label="?" left="170" name="WaterWave1Help"/>
<text name="WaterWave1DirXText">
X
</text>
@@ -70,7 +70,7 @@
<text name="BHText2">
Direção da Onda Pequena
</text>
- <button label="?" name="WaterWave2Help" left="170"/>
+ <button label="?" left="170" name="WaterWave2Help"/>
<text name="WaterWave2DirXText">
X
</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml
new file mode 100644
index 0000000000..8f616396ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry">
+ <text name="media_label">
+ Digite um URL ou série de URLs para a lista de domínios permitidos
+ </text>
+ <line_editor name="whitelist_entry" tool_tip="Digite um URL ou série de URLs para a lista branca"/>
+ <button label="OK" name="ok_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml
index 034602d6ea..81f8ce7846 100644
--- a/indra/newview/skins/default/xui/pt/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml
@@ -1,53 +1,65 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="worldmap" title="MAPA MUNDI">
- <tab_container name="maptab">
- <panel label="Objetos" name="objects_mapview"/>
- <panel label="Terreno" name="terrain_mapview"/>
- </tab_container>
- <text name="you_label">
- Você
- </text>
- <text name="home_label">
- Casa
- </text>
- <text name="auction_label">
- Leilão
- </text>
- <text name="land_for_sale_label">
- Terra à venda
- </text>
- <button label="Ir para Casa" label_selected="Ir para casa" name="Go Home" tool_tip="Teletransportar para sua Casa"/>
- <check_box label="Residente" name="people_chk"/>
- <check_box label="Infohub" name="infohub_chk"/>
- <check_box label="Telehub" name="telehubchk"/>
- <check_box label="Terra à Venda" name="land_for_sale_chk"/>
- <text name="events_label">
- Eventos:
- </text>
- <check_box label="PG" name="event_chk"/>
- <check_box label="Mature" name="event_mature_chk"/>
- <check_box label="Adult" name="event_adult_chk"/>
- <combo_box label="Amigos Conectados" name="friend combo" tool_tip="Amigos para mostrar no Mapa">
- <combo_box.item name="item1" label="Amigos Conectados" />
- </combo_box>
- <combo_box label="Landmarks" name="landmark combo" tool_tip="Landmark para mostrar no Mapa">
- <combo_box.item name="item1" label="Landmarks" />
- </combo_box>
- <line_editor label="Procurar por nome de região" name="location" tool_tip="Digite o nome de uma Região"/>
- <button label="Procurar" name="DoSearch" tool_tip="Procurar por região"/>
- <text name="search_label">
- Resultados da Procura:
- </text>
- <text name="location_label">
- Localização:
- </text>
- <spinner name="spin x" tool_tip="Coordenada X da posição mostrada no mapa"/>
- <spinner name="spin y" tool_tip="Coordenada Y da posição mostrada no mapa"/>
- <spinner name="spin z" tool_tip="Coordenada Z da posição mostrada no Mapa"/>
- <button font="SansSerifSmall" label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para a posição selecionada"/>
- <button font="SansSerifSmall" left_delta="91" width="135" label="Mostrar destino" label_selected="Mostrar Destino" name="Show Destination" tool_tip="Centralizar mapa na posição selecionada"/>
- <button font="SansSerifSmall" label="Limpar" label_selected="Limpar" name="Clear" tool_tip="Parar de percorrer"/>
- <button font="SansSerifSmall" left_delta="91" width="135" label="Mostra minha localização" label_selected="Mostra minha localização" name="Show My Location" tool_tip="Centraliza o mapa na posição do seu Avatar"/>
- <button font="SansSerifSmall" label="Copiar SLurl para área de transferência" name="copy_slurl" tool_tip="Copia a posição atual como SLurl para ser usada na Web"/>
- <slider label="Zoom" name="zoom slider"/>
+<floater name="worldmap" title="MAPA-MÚNDI">
+ <panel name="layout_panel_1">
+ <text name="events_label">
+ Legenda
+ </text>
+ </panel>
+ <panel>
+ <button font="SansSerifSmall" label="Mostra minha localização" label_selected="Mostra minha localização" left_delta="91" name="Show My Location" tool_tip="Centrar o mapa na localização do meu avatar" width="135"/>
+ <text name="person_label">
+ Eu
+ </text>
+ <check_box label="Residente" name="people_chk"/>
+ <check_box label="Infohub" name="infohub_chk"/>
+ <text name="infohub_label">
+ Infohub
+ </text>
+ <check_box label="Terra à Venda" name="land_for_sale_chk"/>
+ <text name="land_sale_label">
+ Venda de terreno
+ </text>
+ <text name="auction_label">
+ pelo dono
+ </text>
+ <button label="Ir para Casa" label_selected="Ir para casa" name="Go Home" tool_tip="Teletransportar para minha casa"/>
+ <text name="Home_label">
+ Casa
+ </text>
+ <text name="events_label">
+ Eventos:
+ </text>
+ <check_box label="PG" name="event_chk"/>
+ <check_box initial_value="true" label="Mature" name="event_mature_chk"/>
+ <text name="mature_label">
+ Moderado
+ </text>
+ <check_box label="Adult" name="event_adult_chk"/>
+ </panel>
+ <panel>
+ <text name="find_on_map_label">
+ Localizar no mapa
+ </text>
+ </panel>
+ <panel>
+ <combo_box label="Amigos Conectados" name="friend combo" tool_tip="Mostrar amigos no mapa">
+ <combo_box.item label="Amigos conectados" name="item1"/>
+ </combo_box>
+ <combo_box label="Meus marcos" name="landmark combo" tool_tip="Mostrar marco no mapa">
+ <combo_box.item label="Meus marcos" name="item1"/>
+ </combo_box>
+ <search_editor label="Regiões por nome" name="location" tool_tip="Digite o nome de uma Região"/>
+ <button label="Buscar" name="DoSearch" tool_tip="Procurar por região"/>
+ <button font="SansSerifSmall" label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para a posição selecionada"/>
+ <button font="SansSerifSmall" label="Copiar SLurl" name="copy_slurl" tool_tip="Copia a localização atual como um SLurl para usar na web."/>
+ <button font="SansSerifSmall" label="Mostrar seleção" label_selected="Mostrar Destino" left_delta="91" name="Show Destination" tool_tip="Centralizar mapa na posição selecionada" width="135"/>
+ </panel>
+ <panel>
+ <text name="zoom_label">
+ Zoom
+ </text>
+ </panel>
+ <panel>
+ <slider label="Zoom" name="zoom slider"/>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/inspect_avatar.xml b/indra/newview/skins/default/xui/pt/inspect_avatar.xml
new file mode 100644
index 0000000000..8f35acf19e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/inspect_avatar.xml
@@ -0,0 +1,21 @@
+<?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>
+ <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="Mais" 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/default/xui/pt/inspect_group.xml b/indra/newview/skins/default/xui/pt/inspect_group.xml
new file mode 100644
index 0000000000..889d35f269
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/inspect_group.xml
@@ -0,0 +1,22 @@
+<?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_group">
+ <string name="PrivateGroup">
+ Grupo privado
+ </string>
+ <string name="FreeToJoin">
+ Livre para ingressar
+ </string>
+ <string name="CostToJoin">
+ [AMOUNT]L$ para ingressar
+ </string>
+ <string name="YouAreMember">
+ Você é um membro
+ </string>
+ <button label="Ingressar" name="join_btn"/>
+ <button label="Abandonar" name="leave_btn"/>
+ <button label="Visualizar Perfil" name="view_profile_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/inspect_object.xml b/indra/newview/skins/default/xui/pt/inspect_object.xml
new file mode 100644
index 0000000000..e9f1ca3a0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/inspect_object.xml
@@ -0,0 +1,34 @@
+<?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>
+ <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/default/xui/pt/inspect_remote_object.xml b/indra/newview/skins/default/xui/pt/inspect_remote_object.xml
new file mode 100644
index 0000000000..789194bf2e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/inspect_remote_object.xml
@@ -0,0 +1,13 @@
+<?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_remote_object">
+ <text name="object_owner_label">
+ Proprietário:
+ </text>
+ <button label="Mapa" name="map_btn"/>
+ <button label="Bloquear" name="block_btn"/>
+ <button label="Fechar" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml
new file mode 100644
index 0000000000..b6cf896836
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?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" 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/default/xui/pt/menu_attachment_self.xml b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml
new file mode 100644
index 0000000000..04f6227141
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml
@@ -0,0 +1,12 @@
+<?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="Largar" name="Drop"/>
+ <menu_item_call label="Ficar de pé" name="Stand Up"/>
+ <menu_item_call label="Minha aparência" name="Appearance..."/>
+ <menu_item_call label="Meus amigos" name="Friends..."/>
+ <menu_item_call label="Meus grupos" name="Groups..."/>
+ <menu_item_call label="Meu perfil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml
new file mode 100644
index 0000000000..beba969b7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/pt/menu_avatar_other.xml b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml
new file mode 100644
index 0000000000..21c2cb196a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?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" 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/default/xui/pt/menu_avatar_self.xml b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml
new file mode 100644
index 0000000000..99d5ae9bec
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+ <menu_item_call label="Ficar de pé" name="Stand Up"/>
+ <context_menu label="Tirar &gt;" name="Take Off &gt;">
+ <context_menu label="Roupa &gt;" 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 &gt;" name="Object Detach HUD"/>
+ <context_menu label="Tirar &gt;" name="Object Detach"/>
+ <menu_item_call label="Tirar tudo" name="Detach All"/>
+ </context_menu>
+ <menu_item_call label="Minha aparência" name="Appearance..."/>
+ <menu_item_call label="Meus amigos" name="Friends..."/>
+ <menu_item_call label="Meus grupos" name="Groups..."/>
+ <menu_item_call label="Meu perfil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_bottomtray.xml b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml
new file mode 100644
index 0000000000..43b446a67e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml
@@ -0,0 +1,12 @@
+<?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_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/default/xui/pt/menu_favorites.xml b/indra/newview/skins/default/xui/pt/menu_favorites.xml
new file mode 100644
index 0000000000..062820fbca
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?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/default/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
new file mode 100644
index 0000000000..70d8ae7a8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
@@ -0,0 +1,10 @@
+<?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/default/xui/pt/menu_group_plus.xml b/indra/newview/skins/default/xui/pt/menu_group_plus.xml
new file mode 100644
index 0000000000..1083845d68
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_group_plus.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
new file mode 100644
index 0000000000..472ca466c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
@@ -0,0 +1,5 @@
+<?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>
diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml
new file mode 100644
index 0000000000..ead949ba13
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?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/default/xui/pt/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml
new file mode 100644
index 0000000000..dd177d1b8d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/pt/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml
new file mode 100644
index 0000000000..d821b3ded0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/pt/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml
new file mode 100644
index 0000000000..46c536e64b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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="Convidar para entrar no grupo" name="invite_to_group"/>
+ <menu_item_call label="Bloquear" name="block"/>
+ <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="Depurar" name="debug"/>
+ <menu_item_call label="Localizar no mapa" name="find_on_map"/>
+ <menu_item_call label="Mais zoom" name="zoom_in"/>
+ <menu_item_call label="Pagar" name="pay"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml
new file mode 100644
index 0000000000..b69d205533
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml
@@ -0,0 +1,17 @@
+<?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="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/default/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml
new file mode 100644
index 0000000000..2eba4ccb2d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+ <menu_item_call label="Ficar de pé" name="stand_up"/>
+ <menu_item_call label="Minha aparência" name="my_appearance"/>
+ <menu_item_call label="Meu perfil" name="my_profile"/>
+ <menu_item_call label="Meus amigos" name="my_friends"/>
+ <menu_item_call label="Meus grupos" name="my_groups"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml
index 486588158e..de33849d0c 100644
--- a/indra/newview/skins/default/xui/pt/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml
@@ -12,7 +12,7 @@
<menu_item_call label="Novo Script" name="New Script"/>
<menu_item_call label="Nova Nota" name="New Note"/>
<menu_item_call label="Novo Gesto" name="New Gesture"/>
- <menu label="Nova Roupa" name="New Clothes">
+ <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 Calçados" name="New Shoes"/>
@@ -22,31 +22,47 @@
<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="Parte do corpo" name="New Body Parts">
+ <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="Remover item" name="Purge Item"/>
<menu_item_call label="Restaurar item" name="Restore Item"/>
+ <menu_item_call label="Ir para o link" name="Goto Link"/>
<menu_item_call label="Abrir" name="Open"/>
<menu_item_call label="Propriedades" name="Properties"/>
<menu_item_call label="Renomear" name="Rename"/>
<menu_item_call label="Copy Asset 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="Apagar" name="Delete"/>
<menu_item_call label="Remover os itens" name="Take Off Items"/>
<menu_item_call label="Adicionar ao equipamento" name="Add To Outfit"/>
<menu_item_call label="Substituir equipamento" name="Replace Outfit"/>
<menu_item_call label="Iniciar conversa em conferência" name="Conference Chat Folder"/>
<menu_item_call label="Executar" name="Sound Play"/>
- <menu_item_call label="Sobre as Landmarks" name="Teleport To Landmark"/>
+ <menu_item_call label="Sobre o marco" name="About Landmark"/>
<menu_item_call label="Executar in World" name="Animation Play"/>
<menu_item_call label="Executar localmente" name="Animation Audition"/>
<menu_item_call label="Mandar Mensagem Instantânea" name="Send Instant Message"/>
@@ -54,8 +70,8 @@
<menu_item_call label="Iniciar conversa 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="Retirar de você" name="Detach From Yourself"/>
- <menu_item_call label="Recuperar Última Posição" name="Restore to Last Position"/>
<menu_item_call label="Vestir" name="Object Wear"/>
<menu label="Anexar a" name="Attach To"/>
<menu label="Anexar ao HUD" name="Attach To HUD"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_add.xml b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml
new file mode 100644
index 0000000000..d1bdcd3a8a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml
@@ -0,0 +1,32 @@
+<?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>
+ <menu_item_call label="Nova pasta" name="New Folder"/>
+ <menu_item_call label="Novo script" name="New Script"/>
+ <menu_item_call label="Nova nota" 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 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>
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml
new file mode 100644
index 0000000000..8bae7afddc
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+ <menu_item_call label="Nova janela de inventário" name="new_window"/>
+ <menu_item_call label="Ordenar por nome" name="sort_by_name"/>
+ <menu_item_call label="Ordenar por mais recente" name="sort_by_recent"/>
+ <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 lixeira" name="empty_trash"/>
+ <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="Encontrar original" name="Find Original"/>
+ <menu_item_call label="Encontrar todos os links" name="Find All Links"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_land.xml b/indra/newview/skins/default/xui/pt/menu_land.xml
new file mode 100644
index 0000000000..9182ce321a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_land.xml
@@ -0,0 +1,9 @@
+<?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/default/xui/pt/menu_landmark.xml b/indra/newview/skins/default/xui/pt/menu_landmark.xml
new file mode 100644
index 0000000000..6accfebee7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_landmark.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml
index 7ec324cb3f..3dd5d2c152 100644
--- a/indra/newview/skins/default/xui/pt/menu_login.xml
+++ b/indra/newview/skins/default/xui/pt/menu_login.xml
@@ -1,13 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
- <menu label="Arquivo" name="File">
+ <menu label="Eu" name="File">
+ <menu_item_call label="Preferências" name="Preferences..."/>
<menu_item_call label="Sair" name="Quit"/>
</menu>
- <menu label="Editar" name="Edit">
- <menu_item_call label="Preferências..." name="Preferences..."/>
- </menu>
<menu label="Ajuda" name="Help">
<menu_item_call label="Ajuda do [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="Sobre o [APP_NAME]..." name="About Second Life..."/>
+ </menu>
+ <menu label="Depurar" name="Debug">
+ <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>
+ <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_item_call label="Mostrar bandeja lateral" name="Show Side Tray"/>
+ <menu label="Testes de UI" name="UI Tests"/>
+ <menu_item_call label="Mostrar TOS" name="TOS"/>
+ <menu_item_call label="Mostrar mensagem crítica" name="Critical"/>
+ <menu_item_call label="Teste de navegador web" name="Web Browser Test"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/pt/menu_mini_map.xml b/indra/newview/skins/default/xui/pt/menu_mini_map.xml
index 1293f4e17f..f7b86b8f22 100644
--- a/indra/newview/skins/default/xui/pt/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/pt/menu_mini_map.xml
@@ -3,6 +3,7 @@
<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_check label="Girar mapa" name="Rotate Map"/>
<menu_item_call label="Parar Acompanhamento" name="Stop Tracking"/>
- <menu_item_call label="Perfil..." name="Profile"/>
+ <menu_item_call label="Mapa-múndi" name="World Map"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_navbar.xml b/indra/newview/skins/default/xui/pt/menu_navbar.xml
new file mode 100644
index 0000000000..57c1471de3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?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/default/xui/pt/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml
new file mode 100644
index 0000000000..f1ea83c837
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?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/default/xui/pt/menu_object.xml b/indra/newview/skins/default/xui/pt/menu_object.xml
new file mode 100644
index 0000000000..658f44d692
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_object.xml
@@ -0,0 +1,24 @@
+<?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 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="Perfil do objeto" name="Object Inspect"/>
+ <context_menu label="Colocar no(a)" name="Put On">
+ <menu_item_call label="Vestir" name="Wear"/>
+ <context_menu label="Anexar &gt;" name="Object Attach"/>
+ <context_menu label="Anexar o HUD &gt;" name="Object Attach HUD"/>
+ </context_menu>
+ <context_menu label="Tirar &gt;" name="Remove">
+ <menu_item_call label="Pegar" name="Pie Object Take"/>
+ <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 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/default/xui/pt/menu_object_icon.xml b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
new file mode 100644
index 0000000000..7af760a6ee
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/pt/menu_participant_list.xml b/indra/newview/skins/default/xui/pt/menu_participant_list.xml
new file mode 100644
index 0000000000..6db1fe7105
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_participant_list.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List Context 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="Compartilhar" name="Share"/>
+ <menu_item_call label="Pagar" name="Pay"/>
+ <menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
+ <menu_item_check label="Silenciar texto" name="MuteText"/>
+ <menu_item_check label="Pode bater papo por escrito" name="AllowTextChat"/>
+ <menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/>
+ <menu_item_call label="Silenciar os demais" name="ModerateVoiceMuteOthers"/>
+ <menu_item_call label="Desfazer silenciar deste participante" name="ModerateVoiceUnMuteSelected"/>
+ <menu_item_call label="Desfazer silenciar dos demais" name="ModerateVoiceUnMuteOthers"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml
new file mode 100644
index 0000000000..25a37488d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml
@@ -0,0 +1,7 @@
+<?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_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml
new file mode 100644
index 0000000000..86a9d2263f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/pt/menu_people_nearby.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
new file mode 100644
index 0000000000..eb47f51ed0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
@@ -0,0 +1,10 @@
+<?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="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="Bloquear/desbloquear" name="Block/Unblock"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
new file mode 100644
index 0000000000..855e7c9920
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
@@ -0,0 +1,8 @@
+<?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="MI" name="IM"/>
+ <menu_item_call label="Ligar" name="Call"/>
+ <menu_item_call label="Compartilhar" name="Share"/>
+ <menu_item_call label="Pagar" name="Pay"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml
new file mode 100644
index 0000000000..228ce46a31
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml
@@ -0,0 +1,8 @@
+<?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/default/xui/pt/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml
new file mode 100644
index 0000000000..f3b89e01cd
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/pt/menu_picks.xml b/indra/newview/skins/default/xui/pt/menu_picks.xml
new file mode 100644
index 0000000000..8b9e10fc02
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_picks.xml
@@ -0,0 +1,8 @@
+<?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/default/xui/pt/menu_picks_plus.xml b/indra/newview/skins/default/xui/pt/menu_picks_plus.xml
new file mode 100644
index 0000000000..95a7c05262
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_picks_plus.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/pt/menu_place.xml b/indra/newview/skins/default/xui/pt/menu_place.xml
new file mode 100644
index 0000000000..282ea20a7a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_place.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/pt/menu_place_add_button.xml b/indra/newview/skins/default/xui/pt/menu_place_add_button.xml
new file mode 100644
index 0000000000..d099d04f8d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_place_add_button.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/pt/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml
new file mode 100644
index 0000000000..2059a9ed2d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml
@@ -0,0 +1,15 @@
+<?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/default/xui/pt/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml
new file mode 100644
index 0000000000..52a9d13735
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml
@@ -0,0 +1,18 @@
+<?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/default/xui/pt/menu_profile_overflow.xml b/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml
new file mode 100644
index 0000000000..b3e09bc695
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+ <menu_item_call label="Pagar" name="pay"/>
+ <menu_item_call label="Compartilhar" name="share"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_slurl.xml b/indra/newview/skins/default/xui/pt/menu_slurl.xml
index 67a4b51b61..6d4c84fc3c 100644
--- a/indra/newview/skins/default/xui/pt/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/pt/menu_slurl.xml
@@ -2,5 +2,5 @@
<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="Mostrar no Mapa" name="show_on_map"/>
+ <menu_item_call label="Mapa" name="show_on_map"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml
new file mode 100644
index 0000000000..f034509be8
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml
new file mode 100644
index 0000000000..b4216b7ddc
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml
@@ -0,0 +1,6 @@
+<?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 para área de transferência" name="CopyToClipboard"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml
new file mode 100644
index 0000000000..6a633cf74c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/pt/menu_text_editor.xml b/indra/newview/skins/default/xui/pt/menu_text_editor.xml
new file mode 100644
index 0000000000..31c284c6ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_text_editor.xml
@@ -0,0 +1,8 @@
+<?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/default/xui/pt/menu_url_agent.xml b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
new file mode 100644
index 0000000000..ba5e055124
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/pt/menu_url_group.xml b/indra/newview/skins/default/xui/pt/menu_url_group.xml
new file mode 100644
index 0000000000..5b67a69c9a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_group.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/pt/menu_url_http.xml b/indra/newview/skins/default/xui/pt/menu_url_http.xml
new file mode 100644
index 0000000000..e53a2572b8
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_http.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/pt/menu_url_inventory.xml b/indra/newview/skins/default/xui/pt/menu_url_inventory.xml
new file mode 100644
index 0000000000..45c14355d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_inventory.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/pt/menu_url_map.xml b/indra/newview/skins/default/xui/pt/menu_url_map.xml
new file mode 100644
index 0000000000..ba114cccaa
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_map.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
new file mode 100644
index 0000000000..c197444181
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
@@ -0,0 +1,8 @@
+<?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/default/xui/pt/menu_url_parcel.xml b/indra/newview/skins/default/xui/pt/menu_url_parcel.xml
new file mode 100644
index 0000000000..6cc668bfd3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_parcel.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/pt/menu_url_slapp.xml b/indra/newview/skins/default/xui/pt/menu_url_slapp.xml
new file mode 100644
index 0000000000..d0784149ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_slapp.xml
@@ -0,0 +1,5 @@
+<?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/default/xui/pt/menu_url_slurl.xml b/indra/newview/skins/default/xui/pt/menu_url_slurl.xml
new file mode 100644
index 0000000000..7216ccf0b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_slurl.xml
@@ -0,0 +1,7 @@
+<?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/default/xui/pt/menu_url_teleport.xml b/indra/newview/skins/default/xui/pt/menu_url_teleport.xml
new file mode 100644
index 0000000000..f007425646
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_url_teleport.xml
@@ -0,0 +1,6 @@
+<?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/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index 2c887fa50c..acadc952ca 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -1,217 +1,326 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
- <menu name="Me">
+ <menu label="Eu" name="Me">
<menu_item_call label="Preferências" name="Preferences"/>
- <menu_item_call name="Manage My Account">
- <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt" />
+ <menu_item_call label="Meu painel" name="Manage My Account">
+ <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/>
</menu_item_call>
+ <menu_item_call label="Comprar L$" name="Buy and Sell L$"/>
+ <menu_item_call label="Meu perfil" name="Profile"/>
+ <menu_item_call label="Minha aparência" name="Appearance"/>
+ <menu_item_check label="Meu inventário" name="Inventory"/>
+ <menu_item_call label="Mostrar inventário na bandeja lateral" name="ShowSidetrayInventory"/>
+ <menu_item_call label="Meus gestos" name="Gestures"/>
+ <menu label="Meu status" name="Status">
+ <menu_item_call label="Ausente" name="Set Away"/>
+ <menu_item_call label="Ocupado" name="Set Busy"/>
+ </menu>
+ <menu_item_call label="Request Admin Status" name="Request Admin Options"/>
+ <menu_item_call label="Sair do modo admin" name="Leave Admin Options"/>
+ <menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
</menu>
- <menu label="Arquivo" name="File">
- <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
- <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="Bulk (L$[COST] por arquivo)..." name="Bulk Upload"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Definir Permissões Padrão..." name="perm prefs"/>
- </menu>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Fechar janela" name="Close Window"/>
- <menu_item_call label="Fechar todas as janelas" name="Close All Windows"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Salvar textura como..." name="Save Texture As..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Tirar Foto" name="Take Snapshot"/>
- <menu_item_call label="Salvar Foto no disco" name="Snapshot to Disk"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Sair" name="Quit"/>
- </menu>
- <menu label="Editar" name="Edit">
- <menu_item_call label="Voltar" name="Undo"/>
- <menu_item_call label="Avançar" name="Redo"/>
- <menu_item_separator label="-----------" name="separator"/>
- <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="Apagar" name="Delete"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Procurar..." name="Search..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Selecionar todos" name="Select All"/>
- <menu_item_call label="Retirar seleção" name="Deselect"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Duplicar" name="Duplicate"/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu label="Anexar objeto" name="Attach Object"/>
- <menu label="Desanexar objeto" name="Detach Object"/>
- <menu label="Tirar a roupa" name="Take Off Clothing">
- <menu_item_call label="Camiseta" name="Shirt"/>
- <menu_item_call label="Calças" name="Pants"/>
- <menu_item_call label="Sapatos" name="Shoes"/>
- <menu_item_call label="Meias" name="Socks"/>
- <menu_item_call label="Blusa" name="Jacket"/>
- <menu_item_call label="Luvas" name="Gloves"/>
- <menu_item_call label="Anágua" name="Menu Undershirt"/>
- <menu_item_call label="Roupa de baixo" name="Menu Underpants"/>
- <menu_item_call label="saia" name="Skirt"/>
- <menu_item_call label="Toda a roupa" name="All Clothes"/>
- </menu>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Gestos..." name="Gestures..."/>
- <menu_item_call label="Perfil..." name="Profile..."/>
- <menu_item_call label="Aparência..." name="Appearance..."/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu_item_check label="Amigos..." name="Friends..."/>
- <menu_item_call label="Grupos..." name="Groups..."/>
- <menu_item_separator label="-----------" name="separator8"/>
- <menu_item_call label="Preferências..." name="Preferences..."/>
- </menu>
- <menu label="Exibir" name="View">
- <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
- <menu_item_call label="Visão do mouse" name="Mouselook"/>
- <menu_item_check label="Construir" name="Build"/>
- <menu_item_check label="Câmera voadora pelo joystick" name="Joystick Flycam"/>
- <menu_item_call label="Resetar visão" name="Reset View"/>
- <menu_item_call label="Olhar para o último movimento" name="Look at Last Chatter"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Barra de ferramentas" name="Toolbar"/>
- <menu_item_check label="Conversa local" name="Chat History"/>
- <menu_item_check label="Comunicar" name="Instant Message"/>
- <menu_item_check label="Inventário" name="Inventory"/>
- <menu_item_check label="Falantes Ativos" name="Active Speakers"/>
- <menu_item_check label="Lista de residentes e objetos silenciados" name="Mute List"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_check label="Controles de câmera" name="Camera Controls"/>
- <menu_item_check label="Controles de movimento" name="Movement Controls"/>
- <menu_item_check label="Mapa do mundo" name="World Map"/>
- <menu_item_check label="Mini-Mapa" name="Mini-Map"/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_check label="Barra de estatísticas" name="Statistics Bar"/>
- <menu_item_check label="Linhas de propriedades" name="Property Lines"/>
- <menu_item_check label="Linhas de banimento" name="Banlines"/>
- <menu_item_check label="Donos de terrenos" name="Land Owners"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu label="Dicas" name="Hover Tips">
- <menu_item_check label="Mostrar dicas" name="Show Tips"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Dicas de terreno" name="Land Tips"/>
- <menu_item_check label="Dicas de todos os objetos" name="Tips On All Objects"/>
- </menu>
- <menu_item_check label="Luz para transparência" name="Highlight Transparent"/>
- <menu_item_check label="Balizas" name="beacons"/>
- <menu_item_check label="Esconder partículas" name="Hide Particles"/>
- <menu_item_check label="Mostrar anexo em HUD" name="Show HUD Attachments"/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu_item_call label="Mais zoom" name="Zoom In"/>
- <menu_item_call label="Zoom padrão" name="Zoom Default"/>
- <menu_item_call label="Menos zoom" name="Zoom Out"/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Tela cheia" name="Toggle Fullscreen"/>
- <menu_item_call label="Ajustar o tamanho da UI ao padrão" name="Set UI Size to Default"/>
+ <menu label="Comunicar" name="Communicate">
+ <menu_item_call label="Meus amigos" name="My Friends"/>
+ <menu_item_call label="Meus grupos" name="My Groups"/>
+ <menu_item_check label="Bate-papo local" name="Nearby Chat"/>
+ <menu_item_call label="Pessoas por perto" name="Active Speakers"/>
+ <menu_item_check label="Mídia por perto" name="Nearby Media"/>
</menu>
<menu label="Mundo" name="World">
- <menu_item_call label="Conversa" name="Chat"/>
- <menu_item_check label="Sempre Correr" name="Always Run"/>
- <menu_item_check label="Voar" name="Fly"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Criar Landmark aqui" name="Create Landmark Here"/>
- <menu_item_call label="Marcar como casa" name="Set Home to Here"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Teletransportar para casa" name="Teleport Home"/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Deixar ausente" name="Set Away"/>
- <menu_item_call label="Deixar Ocupado" name="Set Busy"/>
- <menu_item_call label="Parar Animação do Meu Avatar" name="Stop Animating My Avatar"/>
- <menu_item_call label="Liberar teclas" name="Release Keys"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Histórico de conta..." name="Account History...">
- <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=pt"/>
- </menu_item_call>
- <menu_item_call label="Gerenciar minha conta..." name="Manage My Account...">
- <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/>
- </menu_item_call>
- <menu_item_call label="Comprar L$..." name="Buy and Sell L$..."/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu_item_call label="Meu terreno..." name="My Land..."/>
- <menu_item_call label="Sobre o terreno..." name="About Land..."/>
- <menu_item_call label="Comprar terreno..." name="Buy Land..."/>
- <menu_item_call label="Região/Propriedade..." name="Region/Estate..."/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu label="Configurações de ambiente" name="Environment Settings">
+ <menu_item_check label="Movimentar" name="Movement Controls"/>
+ <menu_item_check label="Exibir" name="Camera Controls"/>
+ <menu_item_call label="Sobre terrenos" name="About Land"/>
+ <menu_item_call label="Região/Propriedade" name="Region/Estate"/>
+ <menu_item_call label="Comprar terreno" name="Buy Land"/>
+ <menu_item_call label="Meus terrenos" name="My Land"/>
+ <menu label="Mostrar" name="Land">
+ <menu_item_check label="Limites" name="Ban Lines"/>
+ <menu_item_check label="Balizas" name="beacons"/>
+ <menu_item_check label="Limites do imóvel" name="Property Lines"/>
+ <menu_item_check label="Proprietários" name="Land Owners"/>
+ </menu>
+ <menu label="Marcos" name="Landmarks">
+ <menu_item_call label="Colocar marco aqui" name="Create Landmark Here"/>
+ <menu_item_call label="Definir como casa" name="Set Home to Here"/>
+ </menu>
+ <menu_item_call label="Início" name="Teleport Home"/>
+ <menu_item_check label="Mini Mapa" name="Mini-Map"/>
+ <menu_item_check label="Mapa-múndi" name="World Map"/>
+ <menu_item_call label="Foto" name="Take Snapshot"/>
+ <menu label="Sol" name="Environment Settings">
<menu_item_call label="Amanhecer" name="Sunrise"/>
<menu_item_call label="Meio-dia" name="Noon"/>
<menu_item_call label="Pôr-do-Sol" name="Sunset"/>
<menu_item_call label="Meia-noite" name="Midnight"/>
- <menu_item_call label="Reverter ao padrão da região" name="Revert to Region Default"/>
- <menu_item_separator label="-----------" name="separator"/>
+ <menu_item_call label="Usar o horário deste lugar" name="Revert to Region Default"/>
<menu_item_call label="Editor de ambiente" name="Environment Editor"/>
</menu>
</menu>
- <menu label="Ferramentas" name="Tools">
- <menu label="Selecionar ferramenta" name="Select Tool">
- <menu_item_call label="Foco" name="Focus"/>
- <menu_item_call label="Mover" name="Move"/>
- <menu_item_call label="Editar" name="Edit"/>
- <menu_item_call label="Criar" name="Create"/>
- <menu_item_call label="Terreno" name="Land"/>
- </menu>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Selecionar apenas meus objetos" name="Select Only My Objects"/>
- <menu_item_check label="Selecionar apenas objetos móveis" name="Select Only Movable Objects"/>
- <menu_item_check label="Selecionar objetos pela vizinhança" name="Select By Surrounding"/>
- <menu_item_check label="Mostrar seleções escondidas" name="Show Hidden Selection"/>
- <menu_item_check label="Mostrar luz radiante para seleção" name="Show Light Radius for Selection"/>
- <menu_item_check label="Mostrar seleções de feixes" name="Show Selection Beam"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_check label="Alinhar à grade" name="Snap to Grid"/>
- <menu_item_call label="Alinhar xy do objeto à grade" name="Snap Object XY to Grid"/>
- <menu_item_call label="Usar seleção na grade" name="Use Selection for Grid"/>
- <menu_item_call label="Opções de grade..." name="Grid Options..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_check label="Editar partes unidas" name="Edit Linked Parts"/>
- <menu_item_call label="Unir" name="Link"/>
- <menu_item_call label="Desunir" name="Unlink"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Foco na seleção" name="Focus on Selection"/>
- <menu_item_call label="Zoom na Seleção" name="Zoom to Selection"/>
- <menu_item_call label="Comprar el objeto" name="Menu Object Take">
- <on_enable userdata="Comprar,Pegar" name="EnableBuyOrTake"/>
- </menu_item_call>
- <menu_item_call label="Pegar cópia" name="Take Copy"/>
- <menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Mostrar scripts defeituosos/Erros de janela" name="Show Script Warning/Error Window"/>
- <menu label="Recompilar os scripts na seleção" name="Recompile Scripts in Selection">
- <menu_item_call label="Mono" name="Mono"/>
- <menu_item_call label="LSL" name="LSL"/>
- </menu>
- <menu_item_call label="Resetar scripts selecionados" name="Reset Scripts in Selection"/>
- <menu_item_call label="Ajustar scripts para rodar na seleção" name="Set Scripts to Running in Selection"/>
- <menu_item_call label="Ajustar scripts para não rodar na seleção" name="Set Scripts to Not Running in Selection"/>
+ <menu label="Construir" name="BuildTools">
+ <menu_item_check label="Construir" name="Show Build Tools"/>
+ <menu label="Selecionar ferramenta de construção" name="Select Tool">
+ <menu_item_call label="Ferramenta enfoque" name="Focus"/>
+ <menu_item_call label="Ferramenta de movimentação" name="Move"/>
+ <menu_item_call label="Ferramenta de edição" name="Edit"/>
+ <menu_item_call label="Ferramenta criar" name="Create"/>
+ <menu_item_call label="Ferramenta de terrenos" name="Land"/>
+ </menu>
+ <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>
+ <menu_item_call label="Link" name="Link"/>
+ <menu_item_call label="Desconectar links" name="Unlink"/>
+ <menu_item_call label="Focus on Selection" name="Focus on Selection"/>
+ <menu_item_call label="Ampliar seleção" name="Zoom to Selection"/>
+ <menu label="Objeto:" name="Object">
+ <menu_item_call label="Comprar" name="Menu Object Take"/>
+ <menu_item_call label="Pegar uma cópia" name="Take Copy"/>
+ <menu_item_call label="Salvar no meu inventário" name="Save Object Back to My Inventory"/>
+ <menu_item_call label="Save Back to Object Contents" name="Save Object Back to Object Contents"/>
+ </menu>
+ <menu label="Scripts" name="Scripts">
+ <menu_item_call label="Recompilar scripts (LSL)" name="Mono"/>
+ <menu_item_call label="Recompilar scripts (LSL)" name="LSL"/>
+ <menu_item_call label="Reset Scripts" name="Reset Scripts"/>
+ <menu_item_call label="Scripts em modo execução" name="Set Scripts to Running"/>
+ <menu_item_call label="Scripts em modo não execução" name="Set Scripts to Not Running"/>
+ </menu>
+ <menu label="Opções" name="Options">
+ <menu_item_check label="Edit Linked Parts" name="Edit Linked Parts"/>
+ <menu_item_call label="Set Default Upload Permissions" name="perm prefs"/>
+ <menu_item_check label="Mostrar permissões avançadas" name="DebugPermissions"/>
+ <menu label="Seleção" name="Selection">
+ <menu_item_check label="Só selecionar meus objetos" name="Select Only My Objects"/>
+ <menu_item_check label="Só selecionar meus objetos" name="Select Only Movable Objects"/>
+ <menu_item_check label="Selecionar contornando" name="Select By Surrounding"/>
+ </menu>
+ <menu label="Mostrar" name="Show">
+ <menu_item_check label="Mostrar seleção oculta" name="Show Hidden Selection"/>
+ <menu_item_check label="Show Light Radius for Selection" name="Show Light Radius for Selection"/>
+ <menu_item_check label="Show Selection Beam" name="Show Selection Beam"/>
+ </menu>
+ <menu label="Grade" name="Grid">
+ <menu_item_check label="Mostrar na grade" name="Snap to Grid"/>
+ <menu_item_call label="Snap Object XY to Grid" name="Snap Object XY to Grid"/>
+ <menu_item_call label="Use Selection for Grid" name="Use Selection for Grid"/>
+ <menu_item_call label="Opções de grade" name="Grid Options"/>
+ </menu>
+ </menu>
+ <menu label="Selecionar partes conectadas" name="Select Linked Parts">
+ <menu_item_call label="Select Next Part" name="Select Next Part"/>
+ <menu_item_call label="Select Previous Part" name="Select Previous Part"/>
+ <menu_item_call label="Include Next Part" name="Include Next Part"/>
+ <menu_item_call label="Include Previous Part" name="Include Previous Part"/>
+ </menu>
</menu>
<menu label="Ajuda" name="Help">
- <menu_item_call label="Ajuda [SECOND_LIFE]" name="Second Life Help"/>
+ <menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/>
<menu_item_call label="Tutorial" name="Tutorial"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Blog oficial da Linden..." name="Official Linden Blog..."/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Portal de Scripts..." name="Scripting Portal..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Reportar Abuso..." name="Report Abuse..."/>
- <menu_item_call label="Colisões, impulsos e batidas..." name="Bumps, Pushes &amp;amp; Hits..."/>
- <menu_item_call label="Medidor de Lag" name="Lag Meter"/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu label="Reportando Bug" name="Bug Reporting">
- <menu_item_call label="Rastreador público de problemas..." name="Public Issue Tracker..."/>
- <menu_item_call label="Ajuda do rastreador público de problemas..." name="Publc Issue Tracker Help..."/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu_item_call label="Reportando Bug 101..." name="Bug Reporing 101..."/>
- <menu_item_call label="Questões de Segurança..." name="Security Issues..."/>
- <menu_item_call label="Wiki de QA ..." name="QA Wiki..."/>
- <menu_item_separator label="-----------" name="separator9"/>
- <menu_item_call label="Reportar Bug..." name="Report Bug..."/>
- </menu>
- <menu_item_call label="Sobre [APP_NAME]..." name="About Second Life..."/>
+ <menu_item_call label="Denunciar abuso" name="Report Abuse"/>
+ <menu_item_call label="Relatar bug" name="Report Bug"/>
+ </menu>
+ <menu label="Avançado" name="Advanced">
+ <menu_item_check label="Status &apos;ausente&apos; em 30 minutos" name="Go Away/AFK When Idle"/>
+ <menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/>
+ <menu_item_call label="Recarregar texturas" name="Rebake Texture"/>
+ <menu_item_call label="Interface tamanho padrão" name="Set UI Size to Default"/>
+ <menu_item_check label="Limitar distância da seleção" name="Limit Select Distance"/>
+ <menu_item_check label="Disable Camera Constraints" name="Disable Camera Distance"/>
+ <menu_item_check label="Foto de alta resolução" name="HighResSnapshot"/>
+ <menu_item_check label="Compactar fotos para HD" name="QuietSnapshotsToDisk"/>
+ <menu_item_check label="Compactar fotos para HD" name="CompressSnapshotsToDisk"/>
+ <menu label="Ferramentas de desempenho" name="Performance Tools">
+ <menu_item_call label="Lag Meter" name="Lag Meter"/>
+ <menu_item_check label="Barra de estatísticas" name="Statistics Bar"/>
+ <menu_item_check label="Show Avatar Rendering Cost" name="Avatar Rendering Cost"/>
+ </menu>
+ <menu label="Realces e visibilidade" name="Highlighting and Visibility">
+ <menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/>
+ <menu_item_check label="Hide Particles" name="Hide Particles"/>
+ <menu_item_check label="Ocultar seleções" name="Hide Selected"/>
+ <menu_item_check label="Realçar transparentes" name="Highlight Transparent"/>
+ <menu_item_check label="Mostrar anexos HUD" name="Show HUD Attachments"/>
+ <menu_item_check label="Mostrar retículo na vista subjetiva" name="ShowCrosshairs"/>
+ <menu_item_check label="Mostrar dicas de terreno" name="Land Tips"/>
+ </menu>
+ <menu label="Tipos de renderização" name="Rendering Types">
+ <menu_item_check label="Simples" name="Simple"/>
+ <menu_item_check label="Alpha" name="Alpha"/>
+ <menu_item_check label="Árvore" name="Tree"/>
+ <menu_item_check label="Avatares" name="Character"/>
+ <menu_item_check label="SurfacePath" name="SurfacePath"/>
+ <menu_item_check label="Céu" name="Sky"/>
+ <menu_item_check label="Água" name="Water"/>
+ <menu_item_check label="Chão" name="Ground"/>
+ <menu_item_check label="Volume" name="Volume"/>
+ <menu_item_check label="Grama" name="Grass"/>
+ <menu_item_check label="Nuvens" name="Clouds"/>
+ <menu_item_check label="Particles" name="Particles"/>
+ <menu_item_check label="Elevação" name="Bump"/>
+ </menu>
+ <menu label="Recursos de renderização" name="Rendering Features">
+ <menu_item_check label="Interface" name="UI"/>
+ <menu_item_check label="Selecionado" name="Selected"/>
+ <menu_item_check label="Realçado" name="Highlighted"/>
+ <menu_item_check label="Texturas dinâmicas" name="Dynamic Textures"/>
+ <menu_item_check label="Foot Shadows" name="Foot Shadows"/>
+ <menu_item_check label="Fog" name="Fog"/>
+ <menu_item_check label="Flexible Objects" name="Flexible Objects"/>
+ </menu>
+ <menu_item_check label="Executar diversas instâncias" name="Run Multiple Threads"/>
+ <menu_item_call label="Limpar cache de grupo" name="ClearGroupCache"/>
+ <menu_item_check label="Mouse Smoothing" name="Mouse Smoothing"/>
+ <menu_item_check label="Mostrar MIs no bate-papo" name="IMInChat"/>
+ <menu label="Atalhos" name="Shortcuts">
+ <menu_item_check label="Busca" name="Search"/>
+ <menu_item_call label="Soltar objeto" name="Release Keys"/>
+ <menu_item_call label="Interface tamanho padrão" name="Set UI Size to Default"/>
+ <menu_item_check label="Correr sempre" name="Always Run"/>
+ <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="Gravar fotos no HD" name="Snapshot to Disk"/>
+ <menu_item_call label="Visão subjetiva" name="Mouselook"/>
+ <menu_item_check label="Flycam Joystick" name="Joystick Flycam"/>
+ <menu_item_call label="Visão padrão" name="Reset View"/>
+ <menu_item_call label="Olhar para quem fala por último" name="Look at Last Chatter"/>
+ <menu label="Selecionar ferramenta de construção" name="Select Tool">
+ <menu_item_call label="Ferramenta enfoque" name="Focus"/>
+ <menu_item_call label="Ferramenta de movimentação" name="Move"/>
+ <menu_item_call label="Ferramenta de edição" name="Edit"/>
+ <menu_item_call label="Ferramenta criar" name="Create"/>
+ <menu_item_call label="Ferramenta de terrenos" name="Land"/>
+ </menu>
+ <menu_item_call label="Mais zoom" name="Zoom In"/>
+ <menu_item_call label="Zoom padrão" name="Zoom Default"/>
+ <menu_item_call label="Menos zoom" name="Zoom Out"/>
+ <menu_item_call label="Alternar tela inteira" name="Toggle Fullscreen"/>
+ </menu>
+ <menu_item_call label="Mostrar configurações de depuração" name="Debug Settings"/>
+ <menu_item_check label="Show Develop Menu" name="Debug Mode"/>
+ </menu>
+ <menu label="Desenvolver" name="Develop">
+ <menu label="Painéis" name="Consoles">
+ <menu_item_check label="Painel de textura" name="Texture Console"/>
+ <menu_item_check label="Debug Console" name="Debug Console"/>
+ <menu_item_call label="Painel de avisos" name="Notifications"/>
+ <menu_item_check label="Painel de tamanho de textura" name="Texture Size"/>
+ <menu_item_check label="Painel de texturas" name="Texture Category"/>
+ <menu_item_check label="Tempos" name="Fast Timers"/>
+ <menu_item_check label="Memória" name="Memory"/>
+ <menu_item_call label="Region Info to Debug Console" name="Region Info to Debug Console"/>
+ <menu_item_check label="Câmera:" name="Camera"/>
+ <menu_item_check label="Vento" name="Wind"/>
+ </menu>
+ <menu label="Show Info" name="Display Info">
+ <menu_item_check label="Mostrar hora" name="Show Time"/>
+ <menu_item_check label="Show Render Info" name="Show Render Info"/>
+ <menu_item_check label="Mostrar cor sob o cursor" name="Show Color Under Cursor"/>
+ <menu_item_check label="Mostrar mudanças a objetos" name="Show Updates"/>
+ </menu>
+ <menu label="Force an Error" name="Force Errors">
+ <menu_item_call label="Force Breakpoint" name="Force Breakpoint"/>
+ <menu_item_call label="Force LLError And Crash" name="Force LLError And Crash"/>
+ <menu_item_call label="Force Bad Memory Access" name="Force Bad Memory Access"/>
+ <menu_item_call label="Force an Infinite Loop" name="Force Infinite Loop"/>
+ <menu_item_call label="Force Driver Crash" name="Force Driver Carsh"/>
+ <menu_item_call label="Force Software Exception" name="Force Software Exception"/>
+ <menu_item_call label="Force Disconnect Viewer" name="Force Disconnect Viewer"/>
+ <menu_item_call label="Simulate a Memory Leak" name="Memory Leaking Simulation"/>
+ </menu>
+ <menu label="Render Tests" name="Render Tests">
+ <menu_item_check label="Camera Offset" name="Camera Offset"/>
+ <menu_item_check label="Taxa de quadros aleatória" name="Randomize Framerate"/>
+ <menu_item_check label="Frame Test" name="Frame Test"/>
+ </menu>
+ <menu label="Rendering" name="Rendering">
+ <menu_item_check label="Axes" name="Axes"/>
+ <menu_item_check label="Contornos" name="Wireframe"/>
+ <menu_item_check label="Global Illumination" name="Global Illumination"/>
+ <menu_item_check label="Texturas de animação" name="Animation Textures"/>
+ <menu_item_check label="Desativar texturas" name="Disable Textures"/>
+ <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/>
+ <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/>
+ <menu_item_check label="Objetos iridescentes" name="Hover Glow Objects"/>
+ </menu>
+ <menu label="Network" name="Network">
+ <menu_item_check label="Pausar avatar" name="AgentPause"/>
+ <menu_item_call label="Drop a Packet" name="Drop a Packet"/>
+ </menu>
+ <menu_item_call label="Bumps, Pushes &amp; Hits" name="Bumps, Pushes &amp;amp; Hits"/>
+ <menu label="Mundo" name="World">
+ <menu_item_check label="Impor sobre sol regional" name="Sim Sun Override"/>
+ <menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/>
+ <menu_item_check label="Fixed Weather" name="Fixed Weather"/>
+ <menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>
+ </menu>
+ <menu label="Interface" name="UI">
+ <menu_item_call label="Teste de navegador web" name="Web Browser Test"/>
+ <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/>
+ <menu_item_call label="Memory Stats" name="Memory Stats"/>
+ <menu_item_check label="Double-Click Auto-Pilot" name="Double-ClickAuto-Pilot"/>
+ <menu_item_check label="Debug Clicks" name="Debug Clicks"/>
+ <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/>
+ </menu>
+ <menu label="XUI" name="XUI">
+ <menu_item_call label="Recarregar cores" name="Reload Color Settings"/>
+ <menu_item_call label="Show Font Test" name="Show Font Test"/>
+ <menu_item_call label="Load from XML" name="Load from XML"/>
+ <menu_item_call label="Salvar para XML" name="Save to XML"/>
+ <menu_item_check label="Mostrar nomes XUI" name="Show XUI Names"/>
+ <menu_item_call label="Enviar MIs de teste" name="Send Test IMs"/>
+ </menu>
+ <menu label="Avatar" name="Character">
+ <menu label="Grab Baked Texture" name="Grab Baked Texture">
+ <menu_item_call label="Íris" name="Iris"/>
+ <menu_item_call label="Cabeça" name="Head"/>
+ <menu_item_call label="Cintura acima" name="Upper Body"/>
+ <menu_item_call label="Cintura para baixo" name="Lower Body"/>
+ <menu_item_call label="Saia" name="Skirt"/>
+ </menu>
+ <menu label="Testes de personagem" name="Character Tests">
+ <menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
+ <menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
+ </menu>
+ <menu_item_call label="Force Params to Default" name="Force Params to Default"/>
+ <menu_item_check label="Dados da animação" name="Animation Info"/>
+ <menu_item_check label="Mostrar animação de movimento" name="Slow Motion Animations"/>
+ <menu_item_check label="Disable Level Of Detail" name="Disable LOD"/>
+ <menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/>
+ <menu_item_check label="Display Agent Target" name="Display Agent Target"/>
+ <menu_item_call label="Depurar texturas do avatar" name="Debug Avatar Textures"/>
+ </menu>
+ <menu_item_check label="Texturas HTTP" name="HTTP Textures"/>
+ <menu_item_check label="Console Window on next Run" name="Console Window"/>
+ <menu_item_check label="Mostrar menu admin" name="View Admin Options"/>
+ <menu_item_call label="Request Admin Status" name="Request Admin Options"/>
+ <menu_item_call label="Sair do modo admin" name="Leave Admin Options"/>
+ </menu>
+ <menu label="Admin" name="Admin">
+ <menu label="Object">
+ <menu_item_call label="Pegar uma cópia" name="Take Copy"/>
+ <menu_item_call label="Force Owner To Me" name="Force Owner To Me"/>
+ <menu_item_call label="Force Owner Permissive" name="Force Owner Permissive"/>
+ <menu_item_call label="Excluir" name="Delete"/>
+ <menu_item_call label="Lock" name="Lock"/>
+ </menu>
+ <menu label="Lote" name="Parcel">
+ <menu_item_call label="Force Owner To Me" name="Owner To Me"/>
+ <menu_item_call label="Conteúdo da Linden Lab" name="Set to Linden Content"/>
+ <menu_item_call label="Pedir terras públicas" name="Claim Public Land"/>
+ </menu>
+ <menu label="Região" name="Region">
+ <menu_item_call label="Dump Temporary Asset Data" name="Dump Temp Asset Data"/>
+ <menu_item_call label="Save Region State" name="Save Region State"/>
+ </menu>
+ <menu_item_call label="God Tools" name="God Tools"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/pt/mime_types_linux.xml b/indra/newview/skins/default/xui/pt/mime_types_linux.xml
new file mode 100644
index 0000000000..789843cbba
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+ <widgetset name="web">
+ <label name="web_label">
+ Conteúdo web
+ </label>
+ <tooltip name="web_tooltip">
+ Este lugar possui conteúdo na web
+ </tooltip>
+ <playtip name="web_playtip">
+ Mostrar conteúdo na web
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Filme
+ </label>
+ <tooltip name="movie_tooltip">
+ Aqui tem um vídeo para você assistir
+ </tooltip>
+ <playtip name="movie_playtip">
+ Mostrar vídeo
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Imagem
+ </label>
+ <tooltip name="image_tooltip">
+ Aqui tem uma imagem para você ver
+ </tooltip>
+ <playtip name="image_playtip">
+ Mostrar imagem
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Áudio
+ </label>
+ <tooltip name="audio_tooltip">
+ Aqui tem um clipe de áudio para você ouvir
+ </tooltip>
+ <playtip name="audio_playtip">
+ Tocar clipe
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Stream em tempo real
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Nenhum -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Nenhum -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Áudio
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Vídeo
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Imagem
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Vídeo (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="application/javascript">
+ <label name="application/javascript_label">
+ Javascript
+ </label>
+ </mimetype>
+ <mimetype name="application/ogg">
+ <label name="application/ogg_label">
+ Ogg Áudio/Vídeo
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ Arquivo PDF
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Arquivo Postscript
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Rich Text (RTF)
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Synchronized Multimedia Integration Language (SMIL)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Página web (XHTML)
+ </label>
+ </mimetype>
+ <mimetype name="application/x-director">
+ <label name="application/x-director_label">
+ Macromedia Director
+ </label>
+ </mimetype>
+ <mimetype name="audio/mid">
+ <label name="audio/mid_label">
+ Áudio (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Áudio (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Áudio (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Áudio (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Imagem (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Imagem (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Imagem (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Imagem (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Imagem (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Imagem (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Página web
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Texto
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Vídeo (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Vídeo (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Vídeo (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Vídeo (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Vídeo (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Vídeo (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/pt/mime_types_mac.xml b/indra/newview/skins/default/xui/pt/mime_types_mac.xml
new file mode 100644
index 0000000000..34b40e94ab
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+ <widgetset name="web">
+ <label name="web_label">
+ Conteúdo Web
+ </label>
+ <tooltip name="web_tooltip">
+ Esta localização tem conteúdo Web
+ </tooltip>
+ <playtip name="web_playtip">
+ Exibir conteúdo Web
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Filme
+ </label>
+ <tooltip name="movie_tooltip">
+ Há um filme que vai passar aqui
+ </tooltip>
+ <playtip name="movie_playtip">
+ Começar filme
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Imagem
+ </label>
+ <tooltip name="image_tooltip">
+ Ha uma imagem nesta localização
+ </tooltip>
+ <playtip name="image_playtip">
+ Visualizar a imagem desta localização
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Audio
+ </label>
+ <tooltip name="audio_tooltip">
+ Há áudio nesta localização
+ </tooltip>
+ <playtip name="audio_playtip">
+ Tocar o áudio desta localização
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Real Time Streaming
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Nenhum -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Nenhum -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Áudio
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Vídeo
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Imagem
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Filme (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="application/javascript">
+ <label name="application/javascript_label">
+ Javascript
+ </label>
+ </mimetype>
+ <mimetype name="application/ogg">
+ <label name="application/ogg_label">
+ Ogg Áudio/Video
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ Documento PDF
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Documento Postscript
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Rich Text (RTF)
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Linguagem sincronizada de integração multimidia (SMIL)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Página Web (XHTML)
+ </label>
+ </mimetype>
+ <mimetype name="application/x-director">
+ <label name="application/x-director_label">
+ Macromedia Director
+ </label>
+ </mimetype>
+ <mimetype name="audio/mid">
+ <label name="audio/mid_label">
+ Áudio (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Áudio (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Áudio (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Áudio (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Imagem (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Imagem (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Imagem (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Imagem (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Imagem (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Imagem (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Página Web
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Texto
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Filme (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Filme (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Filme (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Filme (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Filme (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Filme (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index c3ce53861f..57130fb5cd 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -9,74 +9,33 @@
<global name="implicitclosebutton">
Fechar
</global>
- <template name="okbutton">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- </form>
- </template>
-
- <template name="okignore">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- <ignore text="$ignoretext"/>
- </form>
- </template>
-
- <template name="okcancelbuttons">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- <button
- name="Cancel"
- text="$notext"/>
- </form>
- </template>
-
- <template name="okcancelignore">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- <button
- name="Cancel"
- text="$notext"/>
- <ignore text="$ignoretext"/>
- </form>
- </template>
-
- <template name="okhelpbuttons">
- <form>
- <button
- name="OK"
- text="$yestext"/>
- <button
- name="Help"
- text="$helptext"/>
- </form>
- </template>
-
- <template name="yesnocancelbuttons">
- <form>
- <button
- name="Yes"
- text="$yestext"/>
- <button
- name="No"
- text="$notext"/>
- <button
- name="Cancel"
- text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Mensagem de Alerta Desconhecida" name="MissingAlert">
- Sua versão do [APP_NAME] não sabe como mostrar a mensagem de alerta que acabou de receber.
-
-Detalhes do erro: O alerta chamado &apos;[_NAME]&apos; não foi encontrado em notifications.xml.
+ <template name="okbutton">
+ <form>
+ <button name="OK" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore"/>
+ <template name="okcancelbuttons">
+ <form>
+ <button name="Cancel" text="$notext"/>
+ </form>
+ </template>
+ <template name="okcancelignore"/>
+ <template name="okhelpbuttons">
+ <form>
+ <button name="Help" text="$helptext"/>
+ </form>
+ </template>
+ <template name="yesnocancelbuttons">
+ <form>
+ <button name="Yes" text="$yestext"/>
+ <button name="No" text="$notext"/>
+ </form>
+ </template>
+ <notification functor="GenericAcknowledge" label="Notificação desconhecida" name="MissingAlert">
+ Esta versão do [APP_NAME] não consegue exibir o aviso recebido. Verifique se você possui a versão mais recente do Visualizador.
+
+Detalhes do erro: O aviso &apos;[_NAME]&apos; não foi localizado no arquivo notifications.xml.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="FloaterNotFound">
@@ -96,24 +55,18 @@ Detalhes do erro: O alerta chamado &apos;[_NAME]&apos; não foi encontrado em no
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/>
</notification>
<notification name="BadInstallation">
- Ocorreu um erro atualizando o [APP_NAME]. Por favor, faça o download da última versão em secondlife.com.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ Um erro ocorreu ao atualizar o [APP_NAME]. [http://get.secondlife.com Baixe a versão atual] do Visualizador.
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="LoginFailedNoNetwork">
- Erro de Rede: Não conseguiu estabelecer uma conexão.
+ Falha de conexão com o [SECOND_LIFE_GRID].
&apos;[DIAGNOSTIC]&apos;
-Por favor, verifique sua conexão de rede.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+Verifique se a conexão à internet está funcionando.
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MessageTemplateNotFound">
Modelo de Mensagem [PATH] não encontrado.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="WearableSave">
Salvar modificações?
@@ -177,7 +130,7 @@ Você deseja permitir que os residentes selecionados tenham direito de edição?
Membros não podem ser removidos dessa função.
Os membros podem, eles próprios, recusar a função.
Deseja continuar?
- <usetemplate ignoretext="Quando adicionar membro ao grupo como dono" name="okcancelignore" notext="Não" yestext="Sim"/>
+ <usetemplate ignoretext="Confirmar antes de adicionar novo Proprietário do grupo" name="okcancelignore" notext="Não" yestext="Sim"/>
</notification>
<notification name="AssignDangerousActionWarning">
Você está prestes a adicionar a habilidade &apos;[ACTION_NAME]&apos; para a função &apos;[ROLE_NAME]&apos;
@@ -197,58 +150,8 @@ Qualquer membro numa função com esta habilidade, pode atribuir a sí mesmo --
Adicionar esta habilidade a &apos;[ROLE_NAME]&apos;?
<usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
</notification>
- <notification name="ClickPublishHelpLand">
- Selecionando &quot;Publicar na Busca&quot;
-Clicando neste Box, será mostrado:
-- este lote nos resultados de busca
-- os objetos públicos deste lote
-- este lote na busca da web
- </notification>
- <notification name="ClickSoundHelpLand">
- Mídia e Música podem apenas ser utilizadas dentro deste lote. As opções de Som e Voz podem ser restritas ao lote ou serão ouvidas por residentes fora do lote, dependendo de suas Classificações de maturidade. Ir para o Banco de Conhecimento para saber mais sobre como definir essas opções?
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=5046
- </url>
- <usetemplate
- name="okcancelbuttons"
- yestext="Ir para o Banco de Conhecimento"
- notext="Fechar" />
- </notification>
- <notification name="ClickSearchHelpAll">
- Os resultados de busca são organizados com base na aba em que você se encontra, sua Classificação de maturidade, a categoria escolhida e outros fatores. Para mais detalhes, por favor veja o Banco de Conhecimento.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=4722
- </url>
- <usetemplate
- name="okcancelbuttons"
- yestext="Ir para o Banco de Conhecimento"
- notext="Fechar" />
- </notification>
- <notification name="ClickPublishHelpLandDisabled">
- Você não pode fazer este lote visível na busca porque ele está localizado numa região que proíbe isso.
- </notification>
- <notification name="ClickPublishHelpAvatar">
- Selecionando &quot;Mostrar na Busca&quot; será mostrado:
-- meu perfil nos resultados de busca
-- um link para meu perfil nas páginas de grupos públicos
- </notification>
- <notification name="ClickPartnerHelpAvatar">
- Você pode propor a outro Residente ou dissolver uma parceria existente através do website [SECOND_LIFE].
-
-Ir para o site do [SECOND_LIFE] para mais informações sobre parceria?
- <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir para a Página"/>
- </notification>
- <notification name="ClickUploadHelpPermissions">
- Suas permissões padrão podem não funcionar em regiões antigas.
- </notification>
- <notification name="ClickWebProfileHelpAvatar">
- Se este Residente definiu uma URL de perfil na web, então você pode:
- * Clicar em &apos;Carregar&apos; para ver a página na aba Web.
- * Clicar Carregar &gt; &apos;Em navegador externo&apos; para ver a página no seu navegador de web padrão.
- * Clicar Carregar &gt; &apos;URL de Casa&apos; para voltar ao perfil do Residente na web se você navegou adiante.
-
-Quando você está vendo seu próprio perfil, você pode entrar com qualquer URL como sendo seu perfil na web e clicar OK para definí-la.
-Outros residentes podem visitar a URL que você definiu, quando eles olharem seu perfil.
+ <notification name="ClickUnimplemented">
+ Infelizmente isso ainda não foi implementado.
</notification>
<notification name="JoinGroupCanAfford">
Unir-se a esse grupo custa L$[COST].
@@ -259,6 +162,12 @@ Deseja prosseguir?
Associar-se a este grupo custa L$[COST].
Você não tem L$ suficientes para associar-se a este grupo.
</notification>
+ <notification name="CreateGroupCost">
+ Criar este grupo custa L$100.
+Grupos ser formados por mais de um membro, caso contrário serão definitivamente excluídos.
+Convite outros membros dentro de 48 horas.
+ <usetemplate canceltext="Cancelar" name="okcancelbuttons" notext="Cancelar" yestext="Criar grupo por L$100"/>
+ </notification>
<notification name="LandBuyPass">
Por L$[COST] você pode ingressar no terreno (&apos;[PARCEL_NAME]&apos;) por [TIME] horas. Comprar um passe de acesso?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
@@ -273,10 +182,10 @@ Seu preço de venda será L$[SALE_PRICE] e está autorizado para venda para [NA
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Continuar"/>
</notification>
<notification name="ConfirmLandSaleToAnyoneChange">
- ATENÇÃO: Ao clicar em &apos;vender para qualquer um&apos; torna a sua terra disponível para toda a comunidade [SECOND_LIFE], mesmo aqueles que não estão nesta região.
+ ATENÇÃO: Clicar em &apos;vender a qualquer um&apos; torna o terreno disponível para toda a comunidade do [SECOND_LIFE], inclusive residentes de outras regiões.
-A área de [LAND_SIZE] m² de terra selecionada está posta para venda.
-Seu preço de venda será L$ [SALE_PRICE] e está autorizado para [NAME].
+O terreno selecionado, de [LAND_SIZE] m², está sendo reservado para venda.
+O preço será L$[SALE_PRICE] e [NAME] pode comprar o terreno.
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="ReturnObjectsDeededToGroup">
@@ -335,6 +244,12 @@ Objetos: [N]
Toda esta região possui dano habilitado.
Scripts devem ser permitidos para fazer as armas funcionarem.
</notification>
+ <notification name="MultipleFacesSelected">
+ Diversas faces foram selecionadas.
+Se você optar por prosseguir, diversas ocorrências a mídia serão colocadas nas diferentes faces do objeto.
+Para colocar a mídia em só uma face, selecione Selecionar face e clique na face desejada do objeto. Depois clique em Adicionar.
+ <usetemplate ignoretext="A mídia será colocada nas diferentes faces selecionadas." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ </notification>
<notification name="MustBeInParcel">
Você deve permanecer dentro do lote para definir o ponto de aterrissagem.
</notification>
@@ -369,6 +284,10 @@ Scripts devem ser permitidos para fazer as armas funcionarem.
<notification name="CannotWearTrash">
Não é possível usar roupas ou partes do corpo que estão no lixo.
</notification>
+ <notification name="MaxAttachmentsOnOutfit">
+ Não foi possível anexar o objeto.
+Ele ultrapassa o limite de anexos, de [MAX_ATTACHMENTS] objetos. Remova um objeto para poder anexar outro.
+ </notification>
<notification name="CannotWearInfoNotComplete">
Você não pode vestir este item porque ele ainda não carregou. Por favor, tente novamente em um minuto.
</notification>
@@ -383,17 +302,22 @@ Você precisa de uma conta para entrar no [SECOND_LIFE]. Você gostaria de criar
<usetemplate name="okcancelbuttons" notext="Tentar novamente" yestext="Criar uma nova conta"/>
</notification>
<notification name="AddClassified">
- Anúncios classificados aparecem na seção &apos;Classificados&apos; do diretório de Busca e no [http://secondlife.com/community/classifieds/?lang=pt-BR secondlife.com] por uma semana.
-Preencha seu anúncio e então clique &apos;Publicar...&apos; para adicioná-lo ao diretório.
-Será solicitado a você um preço a ser pago, quando você clicar Publicar.
-Pagando mais, faz com que seu anúncio apareça em posição mais alta na lista e também em posição mais alta, quando as pessoas buscarem por palavras-chave.
- <usetemplate ignoretext="Quando adicionando um Classificado novo" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ Os anúncios serão publicados na seção &apos;Classificados&apos; das buscas e em [http://secondlife.com/community/classifieds secondlife.com] durante uma semana.
+Escreva seu anúncio e clique em &apos;Publicar...&apos;
+Depois, decida quanto deseja pagar pelo anúncio.
+Quanto mais você pagar, mais alto será o posicionamento do seu anúncio nos classficados e nos resultados de busca das suas palavras-chave.
+ <usetemplate ignoretext="Como colocar um anúncio" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="DeleteClassified">
Apagar classificado&apos;[NAME]&apos;?
Não há reembolso por taxas já pagas.
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Apagar"/>
</notification>
+ <notification name="DeleteMedia">
+ Você optor por excluir a mídia associada a esta face.
+Tem certeza de que quer prosseguir?
+ <usetemplate ignoretext="Confirmar antes de apagar mídia de objetos" name="okcancelignore" notext="Não" yestext="Sim"/>
+ </notification>
<notification name="ClassifiedSave">
Salvar as mudanças no classificado [NAME]?
<usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não Salvar" yestext="Salvar"/>
@@ -424,17 +348,17 @@ Não há reembolso por taxas já pagas.
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="CacheWillClear">
- O cache será limpo quando você reiniciar [APP_NAME].
+ O cache será limpo quando o [APP_NAME] for iniciado.
</notification>
<notification name="CacheWillBeMoved">
- O Cache será removido após reiniciar [APP_NAME].
-Nota: Isto limpará o cache.
+ O cache será limpo quando o [APP_NAME] for iniciado.
+Nota: Este procedimento limpa o cache.
</notification>
<notification name="ChangeConnectionPort">
- Configuração de porta terá efeito após reiniciar [APP_NAME].
+ Reinicie o [APP_NAME] para ativar a reconfiguração da porta.
</notification>
<notification name="ChangeSkin">
- A nova pele será exibida após reiniciar [APP_NAME].
+ Reinicie o [APP_NAME] para ativar a pele nova.
</notification>
<notification name="GoToAuctionPage">
Ir para a página do [SECOND_LIFE] para ver os detalhes do leilão ou fazer um lance?
@@ -482,6 +406,11 @@ O objeto pode estar fora de alcance ou ter sido deletado.
<notification name="SaveBytecodeFailReason">
Houve um problema em salvar uma compilação de script devido a seguinte razão: [REASON]. Por favor, tente salvar novamente o script mais tarde.
</notification>
+ <notification name="StartRegionEmpty">
+ Oops, você ainda não definiu sua região de partida.
+Digite o nome da região na caixa &apos;Ponto de partida&apos; ou selecione &apos;Última localização&apos; ou &apos;Minha casa&apos; como ponto de partida.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
<notification name="CouldNotStartStopScript">
Não foi possível iniciar ou parar o script pois o objeto em que ele está não pôde ser encontrado.
O objeto pode estar fora de alcance ou ter sido deletado.
@@ -500,22 +429,21 @@ Você deseja visitar [_URL] para maiores informações?
<url name="url" option="0">
http://secondlife.com/support/sysreqs.php?lang=pt
</url>
- <usetemplate ignoretext="Ao detectar hardware não suportado" name="okcancelignore" notext="Não" yestext="Sim"/>
+ <usetemplate ignoretext="O hardware do meu computador não é suportado" name="okcancelignore" notext="Não" yestext="Sim"/>
</notification>
<notification name="UnknownGPU">
- Seu sistema possui uma placa gráfica que nos é desconhecido neste momento.
-Este é normalmente o caso de um novo hardware que nós não tivemos a chance de testar. [APP_NAME] vai muito provavelmente executar corretamente, mas talvez seja necessário ajustar suas configurações de gráficos para algo mais apropriado.
-(Menu Editar &gt; Preferências &gt; Gráficos).
+ O [APP_NAME] não consegue reconhecer a placa de vídeo do seu computador.
+Isto acontece quando novos hardwares que ainda não foram testados no [APP_NAME]. O [APP_NAME] provavelmente vai funcionar com sua placa de vídeo, mas talvez seja necessário checar as configurações de vídeo.
+( Eu &gt; Preferências &gt; Vídeo)
<form name="form">
- <ignore name="ignore" text="Ao detectar uma placa de vídeo desconhecida"/>
+ <ignore name="ignore" text="Minha placa de vídeo não foi reconhecida."/>
</form>
</notification>
<notification name="DisplaySettingsNoShaders">
- [APP_NAME] travou quando inicializava os drivers gráficos.
-A Qualidade Gráfica será ajustada para baixa, para evitar alguns erros comuns de drivers.
-Isto irá desabilitar alguns atributos gráficos.
-Nós recomendamos a atualização dos drivers de sua placa gráfica.
-A Qualidade Gráfica pode ser aumentada no Preferências &gt; Gráficos.
+ O [APP_NAME] sofreu uma pane ao iniciar os drivers de vídeo.
+A Qualidade do vídeo será definida como baixa para evitar os erros de driver mais comuns. Assim, alguns recursos de vídeo serão desativados.
+Tente atualizar o driver da sua placa de vídeo.
+Para aumentar a qualidade do vídeo, vá para Preferências &gt; Vídeo.
</notification>
<notification name="RegionNoTerraforming">
A região [REGION] não permite ser aplainada.
@@ -566,6 +494,9 @@ Ele ou ela vai ficar temporariamente incapaz de se mover, usar o bate-papo ou in
Ejetar [AVATAR_NAME] da sua terra?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ejetar"/>
</notification>
+ <notification name="EjectAvatarFromGroup">
+ Você ejetou [AVATAR_NAME] do grupo [GROUP_NAME]
+ </notification>
<notification name="AcquireErrorTooManyObjects">
Erro de aquisição: Muitos objetos selecionados.
</notification>
@@ -576,7 +507,7 @@ Por favor, mova todos os objetos a serem adquiridos para uma mesma região.
<notification name="PromptGoToCurrencyPage">
[EXTRA]
-Vá para [_URL] para informação sobre compra de L$.
+Para mais informações sobre como comprar L$, consulte [_URL].
<url name="url">
http://secondlife.com/app/currency/?lang=pt-BR
</url>
@@ -665,12 +596,15 @@ Esperada [VALIDS]
Incapaz de criar arquivo de saída: [FILE]
</notification>
<notification name="DoNotSupportBulkAnimationUpload">
- Atualmente, não suportamos o envio de arquivos de animação em massa.
+ O [APP_NAME] ainda não faz o upload de vários arquivos de animação de uma vez.
</notification>
<notification name="CannotUploadReason">
Incapaz de carregar [FILE] devido ao seguinte motivo: [REASON]
Por favor tente novamente mais tarde.
</notification>
+ <notification name="LandmarkCreated">
+ Você adicionou &quot;[LANDMARK_NAME]&quot; a sua pasta [FOLDER_NAME].
+ </notification>
<notification name="CannotCreateLandmarkNotOwner">
Você não pode criar um ponto de referência porque o proprietário do terreno não permite. Tente novamente a alguns metros de distância.
</notification>
@@ -693,6 +627,9 @@ Selecione objetos com scripts.
Selecione objetos com scripts que você tem permissão para modificar.
</notification>
+ <notification name="CannotOpenScriptObjectNoMod">
+ Impossível abrir script em objeto sem ter autorização para modificar.
+ </notification>
<notification name="CannotSetRunningSelectObjectsNoScripts">
Impossibilitado de definir quaisquer scripts para &apos;rodando&apos;.
@@ -718,46 +655,44 @@ Pesquisava por: [FINALQUERY]
Não é possível teletransportar-se.
[REASON]
</notification>
-
- <notification name="invalid_tport">
-Problema encontrado ao processar seu pedido de Teletransporte. Você pode tentar reiniciar antes de tentar teletransportar-se. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em:
-www.secondlife.com/support
- </notification>
- <notification name="invalid_region_handoff">
-Problema encontrado ao processar a passagem de regiões. Você pode tentar reiniciar antes de tentar atravessar regiões novamente. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em:
-www.secondlife.com/support
- </notification>
- <notification name="blocked_tport">
-Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema.
- </notification>
- <notification name="nolandmark_tport">
-Desculpe, mas o sistema não conseguiu localizar a landmark de destino.
- </notification>
- <notification name="timeout_tport">
-Desculpe, não foi possível para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes.
- </notification>
- <notification name="noaccess_tport">
-Desculpe, você não tem acesso ao destino deste teletransporte.
- </notification>
- <notification name="missing_attach_tport">
-Seu anexos ainda não chegaram. Tente esperar por alguns momentos ou deslogar e logar antes de tentar teleransportar-se novamente.
- </notification>
- <notification name="too_many_uploads_tport">
-Afluxo nesta região é atualmente tão alto que seu pedido de teletransporte não será possível em tempo oportuno. Por favor, tente novamente em alguns minutos ou vá a uma área menos ocupada.
- </notification>
- <notification name="expired_tport">
-Desculpe, mas o sistema não conseguiu concluir o seu pedido de teletransporte em tempo hábil. Por favor, tente novamente em alguns minutos.
- </notification>
- <notification name="expired_region_handoff">
-Desculpe, mas o sistema não pôde concluir a sua travessia de região em tempo hábil. Por favor, tente novamente em alguns minutos.
- </notification>
- <notification name="no_host">
-Não foi possível encontrar o destino do teletransporte. O destino pode estar temporariamente indisponível ou não existir mais. Por favor, tente novamente em poucos minutos.
- </notification>
- <notification name="no_inventory_host">
-O sistema de inventário está indisponível no momento.
- </notification>
-
+ <notification name="invalid_tport">
+ Houve um problema ao processar o teletransporte. Talvez seja preciso sair e entrar do Second Life para fazer o teletransporte.
+Se você continuar a receber esta mensagem, consulte [SUPPORT_SITE].
+ </notification>
+ <notification name="invalid_region_handoff">
+ Problema encontrado ao processar a passagem de regiões. Talvez seja preciso sair e entrar do Second Life atravessar regiões novamente.
+Se você continuar a receber esta mensagem, consulte [SUPPORT_SITE].
+ </notification>
+ <notification name="blocked_tport">
+ Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema.
+ </notification>
+ <notification name="nolandmark_tport">
+ Desculpe, mas o sistema não conseguiu localizar a landmark de destino.
+ </notification>
+ <notification name="timeout_tport">
+ Desculpe, não foi possível para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes.
+ </notification>
+ <notification name="noaccess_tport">
+ Desculpe, você não tem acesso ao destino deste teletransporte.
+ </notification>
+ <notification name="missing_attach_tport">
+ Seu anexos ainda não chegaram. Tente esperar por alguns momentos ou deslogar e logar antes de tentar teleransportar-se novamente.
+ </notification>
+ <notification name="too_many_uploads_tport">
+ Afluxo nesta região é atualmente tão alto que seu pedido de teletransporte não será possível em tempo oportuno. Por favor, tente novamente em alguns minutos ou vá a uma área menos ocupada.
+ </notification>
+ <notification name="expired_tport">
+ Desculpe, mas o sistema não conseguiu concluir o seu pedido de teletransporte em tempo hábil. Por favor, tente novamente em alguns minutos.
+ </notification>
+ <notification name="expired_region_handoff">
+ Desculpe, mas o sistema não pôde concluir a sua travessia de região em tempo hábil. Por favor, tente novamente em alguns minutos.
+ </notification>
+ <notification name="no_host">
+ Não foi possível encontrar o destino do teletransporte. O destino pode estar temporariamente indisponível ou não existir mais. Por favor, tente novamente em poucos minutos.
+ </notification>
+ <notification name="no_inventory_host">
+ O sistema de inventário está indisponível no momento.
+ </notification>
<notification name="CannotSetLandOwnerNothingSelected">
Incapaz de estabelecer o proprietário do terreno:
Nenhum lote selecionado.
@@ -794,7 +729,7 @@ Nenhum lote selecionado.
Não é possível achar a região em que este terreno se encontra.
</notification>
<notification name="CannotCloseFloaterBuyLand">
- Você não pode fechar a janela de Compra de Terreno até que o [APP_NAME] calcule o preço desta transação.
+ A janela Comprar terreno poderá ser fechada quando o [APP_NAME] determinar o preço da transação.
</notification>
<notification name="CannotDeedLandNothingSelected">
Não é possível transferir posse do terreno:
@@ -805,8 +740,8 @@ Nenhum lote selecionado.
Nenhum grupo selecionado.
</notification>
<notification name="CannotDeedLandNoRegion">
- Não é possível transferir posse do terreno:
-Não é possível se achar a região em que este terreno se encontra.
+ Houve um problema ao processar a doação do terreno:
+A região do terreno não pôde ser localizada.
</notification>
<notification name="CannotDeedLandMultipleSelected">
Impossibilitado de passar a propriedade da terra:
@@ -815,11 +750,11 @@ Selecionados vários lotes.
Tente selecionar um único lote.
</notification>
<notification name="ParcelCanPlayMedia">
- Esta localidade pode executar fluxo de mídia.
-Fluxo de mídia necessita de uma conexão de Internet rápida.
+ Há mídia em stream disponível aqui.
+O streaming requer uma conexão rápida.
-Executar fluxo de mídia quando disponível?
-(Você pode mudar esta opção mais tarde no Preferências &gt; Áudio &amp; Vídeo.)
+Executar as mídias em stream detectadas?
+(Esta opção pode ser modificada sob Preferências &gt; Privacidade.)
<usetemplate name="okcancelbuttons" notext="Desabilitar" yestext="Exibir Mídia"/>
</notification>
<notification name="CannotDeedLandWaitingForServer">
@@ -850,8 +785,8 @@ Você não tem permissão de liberar este lote.
Os lotes que você possui estão em verde.
</notification>
<notification name="CannotReleaseLandRegionNotFound">
- Impossibilitado de abandonar a terra:
-Não consegue achar a região em que esta terra se encontra.
+ Houve um problema ao processar o abandono do terreno:
+A região do terreno não pôde ser localizada.
</notification>
<notification name="CannotReleaseLandNoTransfer">
Não é possível abandonar terreno:
@@ -888,12 +823,12 @@ Quer dividir o terreno?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Dividir"/>
</notification>
<notification name="CannotDivideLandNoRegion">
- Impossibilitado de dividir a terra:
-Não consegue achar a região em que esta terra se encontra.
+ Houve um problema ao processar a divisão do terreno:
+A região do terreno não pôde ser localizada.
</notification>
<notification name="CannotJoinLandNoRegion">
- Impossibilitado de unir a terra:
-Não consegue achar a região em que esta terra se encontra.
+ Houve um problema ao processar a junção dos terrenos:
+A região do terreno não pôde ser localizada.
</notification>
<notification name="CannotJoinLandNothingSelected">
Não é possível unir terreno:
@@ -918,17 +853,6 @@ Você vai ter que redefinir nome e as opções do novo lote.
Unir a terra?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Unir"/>
</notification>
- <notification name="ShowOwnersHelp">
- Mostrar donos:
-Colorir os lotes para mostrar o tipo de dono.
-
-Green = Sua terra
-Aqua = Terra do seu Grupo
-Red = Possuída por outros
-Yellow = À venda
-Purple = A leilão
-Grey = Pública
- </notification>
<notification name="ConfirmNotecardSave">
Esta nota precisa ser salva antes do item ser copiado ou visualizado. Salvar nota?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Salvar"/>
@@ -950,13 +874,13 @@ Grey = Pública
Não é possível salvar &apos;[NAME]&apos; para um arquivo de vestimenta. Você precisa liberar algum espaço no seu computador e salvar o arquivo novamente.
</notification>
<notification name="CannotSaveToAssetStore">
- Impossibilitado de salvar [NAME] no armazenamento central de ativos.
-Isso é geralmente uma falha temporária. Por favor personalize e salve novamente a vestimenta em poucos minutos.
+ Ocorreu um problema ao salvar [NAME].
+Em geral, essa é uma falha técnica temporária. Personalize e volte a salvar o item novamente dentro de alguns minutos.
</notification>
<notification name="YouHaveBeenLoggedOut">
- Você foi deslogado do [SECOND_LIFE]:
+ Você saiu do [SECOND_LIFE]:
[MESSAGE]
-Você ainda pode olhar o bate-papo e as mensagens instantâneas existentes, clicando em &apos;Exibir IM &amp; bate-papo&apos;. Caso contrário, clique em &apos;Sair&apos; para sair do [APP_NAME] imediatamente.
+Ainda é possível ler suas MIs e o bate-papo. Para isso, clique &apos;Ver MIs e bate-papo&apos;. Ou clique em &apos;Sair&apos; para sair do [APP_NAME] completamente.
<usetemplate name="okcancelbuttons" notext="Sair" yestext="Exibir IM &amp; bate-papo"/>
</notification>
<notification name="OnlyOfficerCanBuyLand">
@@ -1108,29 +1032,37 @@ Transferir propriedade destes [AREA] m² de terreno para o grupo &apos;[GROUP_NA
<notification name="ErrorMessage">
[ERROR_MESSAGE]
</notification>
- <notification name="AvatarMoved">
- Sua [TYPE] localização não está disponível no momento.
- [HELP]
-Você foi movido para uma região vizinha.
+ <notification name="AvatarMovedDesired">
+ Esse destino não está disponível no momento.
+Você chegou a uma região próxima.
+ </notification>
+ <notification name="AvatarMovedLast">
+ Esse destino não está disponível no momento.
+Você chegou a uma região próxima.
+ </notification>
+ <notification name="AvatarMovedHome">
+ Esse destino não está disponível no momento.
+Você chegou a uma região próxima.
+Pense em usar outra região como casa.
</notification>
<notification name="ClothingLoading">
- Sua vestimenta ainda está baixando.
-Você pode usar o [SECOND_LIFE] normalmente e os outros o visualizarão corretamente.
+ As suas roupas estão sendo transferidas.
+Enquando isso, use o [SECOND_LIFE] normalmente. Seu visual será exibido corretamente.
<form name="form">
- <ignore name="ignore" text="Quando o vestuário está levando muito tempo para fazer download"/>
+ <ignore name="ignore" text="A roupa está demorando para chegar"/>
</form>
</notification>
<notification name="FirstRun">
- A instalação do [APP_NAME] está completa.
+ A instalação do [APP_NAME] está pronta.
-Se esta é a primeira vez usando o[SECOND_LIFE], será necessário que você crie uma conta antes de poder se logar.
-Retornar a [https://join.secondlife.com/index.php?lang=pt-BR secondlife.com] para criar uma nova conta?
+Se você ainda não conhece o [SECOND_LIFE], basta criar uma conta para começar.
+Voltar para [http://join.secondlife.com secondlife.com] para criar sua conta?
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Nova conta.."/>
</notification>
<notification name="LoginPacketNeverReceived">
- Estamos com problemas de conexão. Pode ser problema com a conexão de sua internet ou com os servidores do [SECOND_LIFE].
+ Estamos detectando um problema de conexão. Pode haver um problema com a sua conexão à internet ou com o [SECOND_LIFE_GRID].
-Voce tanto pode checar a conexão de sua internet e tentar novamente em alguns minutos, ou clicar em Teletransporte para tentar teletransportar-se para sua casa.
+Cheque sua conexão e tente em alguns minutos, clique na Ajuda para acessar o [SUPPORT_SITE], ou tente voltar para casa clicando em &apos;Teletransportar&apos;.
<url name="url">
http://br.secondlife.com/support/
</url>
@@ -1152,10 +1084,10 @@ Por favor, escolha se o seu avatar é feminino ou masculino. Você pode mudar de
[NAME] L$ [PRICE] Você não possui suficientes L$ para fazer isso.
</notification>
<notification name="GrantedModifyRights">
- Foi garantido à você o privilégio de alterar o(s) objeto(s) de [FIRST_NAME] [LAST_NAME]&apos;
+ [NAME] autorizou você a editar seus objetos.
</notification>
<notification name="RevokedModifyRights">
- Seu privilégio para alterar o(s) objeto(s) de [FIRST_NAME] [LAST_NAME]&apos;s foi removido.
+ Seu direito de modificar objetos do/da [NAME] foi revogado
</notification>
<notification name="FlushMapVisibilityCaches">
Isto irá descarregar os caches de mapa relativos a esta região.
@@ -1232,94 +1164,107 @@ Por favor, ponha o objeto à venda e tente novamente.
[DOWNLOAD_PATH]
</notification>
<notification name="DownloadWindowsMandatory">
- Uma nova versão do [APP_NAME] está disponível.
+ Existe uma nova versão do [APP_NAME]
[MESSAGE]
-Você deve baixar essa atualização para utilizar o [APP_NAME].
+Baixe a atualização para usar o [APP_NAME].
<usetemplate name="okcancelbuttons" notext="Sair" yestext="Atualizar"/>
</notification>
<notification name="DownloadWindows">
- Uma versão atualizada do [APP_NAME] está disponível.
+ Existe uma nova versão do [APP_NAME]
[MESSAGE]
-Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade.
+Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade do visualizador.
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/>
</notification>
<notification name="DownloadWindowsReleaseForDownload">
- Uma versão atualizada do [APP_NAME] está disponível.
+ Existe uma nova versão do [APP_NAME]
[MESSAGE]
-Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade.
+Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade do visualizador.
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/>
</notification>
+ <notification name="DownloadLinuxMandatory">
+ Existe uma nova versão do [APP_NAME]
+[MESSAGE]
+Baixe a atualização para usar o [APP_NAME].
+ <usetemplate name="okcancelbuttons" notext="Sair" yestext="Baixar"/>
+ </notification>
+ <notification name="DownloadLinux">
+ Existe uma nova versão do [APP_NAME]
+[MESSAGE]
+Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade.
+ <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Baixar"/>
+ </notification>
+ <notification name="DownloadLinuxReleaseForDownload">
+ Existe uma nova versão do [APP_NAME]
+[MESSAGE]
+Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade.
+ <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Baixar"/>
+ </notification>
<notification name="DownloadMacMandatory">
- Uma nova versão do [APP_NAME] está disponível.
+ Existe uma nova versão do [APP_NAME]
[MESSAGE]
-Você deve baixar esta atualização para utilizar o [APP_NAME].
+Baixe a atualização para usar o [APP_NAME].
-Baixar para sua pasta de Aplicativos?
+Salvar na pasta Aplicativos?
<usetemplate name="okcancelbuttons" notext="Sair" yestext="Atualizar"/>
</notification>
<notification name="DownloadMac">
- Uma nova versão do [APP_NAME] está disponível.
+ Existe uma nova versão do [APP_NAME]
[MESSAGE]
-Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade.
+Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade do visualizador.
-Baixar para a sua pasta de Aplicativos?
+Salvar na pasta Aplicativos?
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/>
</notification>
<notification name="DownloadMacReleaseForDownload">
- Uma nova versão do [APP_NAME] está disponível.
-
+ Existe uma nova versão do [APP_NAME]
[MESSAGE]
-Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade.
+Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade do visualizador.
-Baixar para sua pasta de Aplicativos?
+Salvar na pasta Aplicativos?
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/>
</notification>
<notification name="DeedObjectToGroup">
Delegar este objeto causará ao grupo:
* Receber os L$ pagos ao objeto
- <usetemplate ignoretext="Ao transferir objetos aos grupos" name="okcancelignore" notext="Cancelar" yestext="Acionar"/>
+ <usetemplate ignoretext="Confirmar doações de um objeto a um grupo antes de fazer a doação" name="okcancelignore" notext="Cancelar" yestext="Acionar"/>
</notification>
<notification name="WebLaunchExternalTarget">
- Abrir o navegador do seu sistema para ver este conteúdo?
- <usetemplate ignoretext="Ao abrir o navegador web do seu sistema para visualizar uma página Web" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ Abrir uma janela do navegador para ver essas informações?
+ <usetemplate ignoretext="Abrir o navegador para acessar uma página na web" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchJoinNow">
- Ir ao www.secondlife.com para gerenciar sua conta?
- <usetemplate ignoretext="Ao abrir o navegador web para gerenciar sua conta" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ Deseja abrir o [http://secondlife.com/account/ Painel] para gerenciar sua conta?
+ <usetemplate ignoretext="Abrir o navegador para acessar minha conta" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchSecurityIssues">
Visite a Wiki do [SECOND_LIFE] para detalhes de como Reportar um Problema de Segurança.
- <usetemplate ignoretext="Ao abrir o navegador da web para visualizar a Wiki de Problemas de Segurança" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ <usetemplate ignoretext="Abrir o navegador para ver como denunciar uma ocorrência" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchQAWiki">
Visite o Wiki de QA do [SECOND_LIFE].
- <usetemplate ignoretext="Ao abrir o navegador web para visualizar a Wiki de QA" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ <usetemplate ignoretext="Abrir meu navegador para ver a página Wiki" name="okcancelignore" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="WebLaunchPublicIssue">
Visite o Rastreador Público de Problemas do [SECOND_LIFE], onde você poderá reportar Bugs e outros Problemas.
- <usetemplate ignoretext="Ao abrir o navegador web para visualizar o Rastreador Público de Problemas" name="okcancelignore" notext="Cancelar" yestext="Ir para a Página"/>
- </notification>
- <notification name="WebLaunchPublicIssueHelp">
- Visite a Wiki [SECOND_LIFE] para informações sobre como utilizar o Rastrador de Público de Problemas.
- <usetemplate ignoretext="Ao abrir o navegador web para visualizar a wiki do Rastreador Público de Problemas" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
+ <usetemplate ignoretext="Abrir o navegador para usar o Monitor de problemas" name="okcancelignore" notext="Cancelar" yestext="Ir para a Página"/>
</notification>
<notification name="WebLaunchSupportWiki">
Ir até o Blog Oficial da Linden buscar pelas últimas notícias e informações.
- <usetemplate ignoretext="Ao abrir o navegador da web para visualizar o blog" name="okcancelignore" notext="Cancelar" yestext="Ir até a página"/>
+ <usetemplate ignoretext="Abrir meu navegador para ler o blog" name="okcancelignore" notext="Cancelar" yestext="Ir até a página"/>
</notification>
<notification name="WebLaunchLSLGuide">
- Ir para a página guia do LSL para ajuda com script?
- <usetemplate ignoretext="Ao abrir o navegador web para visualizar o Guia de Scripts." name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
+ Abrir o Guia de scripts para obter ajuda?
+ <usetemplate ignoretext="Abrir meu navegador para usar o Guia de scripts" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
</notification>
<notification name="WebLaunchLSLWiki">
- Ir para o portal LSL para ajuda com script?
- <usetemplate ignoretext="Ao abrir o navegador da web para visualizar o Portal de LSL" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
+ Consultar o LSL Portal para obter ajuda com scripts?
+ <usetemplate ignoretext="Abrir meu navegador para consultar o LSL Portal" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
</notification>
<notification name="ReturnToOwner">
Você tem certeza que deseja retornar os objetos selecionados para seus proprietários? Objetos transferíveis doados irão retornar aos proprietários anteriores.
*AVISO* Objetos doados não – transferíveis serão deletados!
- <usetemplate ignoretext="Ao retornar objetos a seus proprietários" name="okcancelignore" notext="Cancelar" yestext="Retornar"/>
+ <usetemplate ignoretext="Confirmar antes de devolver objetos a seus donos" name="okcancelignore" notext="Cancelar" yestext="Retornar"/>
</notification>
<notification name="GroupLeaveConfirmMember">
Você é atualmente um membro do grupo [GROUP].
@@ -1331,14 +1276,14 @@ Deixar este grupo?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar todos os usuários"/>
</notification>
<notification name="MuteLinden">
- Desculpe, você não pode silenciar um Linden.
+ Desculpe, nenhum Linden pode ser bloqueado.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="CannotStartAuctionAlreadyForSale">
Você não pode começar um leilão com um lote que já foi colocado à venda. Desabilite a venda da terra se você tem certeza que deseja iniciar um leilão.
</notification>
- <notification label="Silenciar objeto pelo nome falhou" name="MuteByNameFailed">
- Você já silenciou este nome.
+ <notification label="Falha ao bloquear objeto por nome" name="MuteByNameFailed">
+ Você já bloqueou este residente.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="RemoveItemWarn">
@@ -1354,13 +1299,13 @@ Deixar este grupo?
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="BusyModeSet">
- Definido o Modo Ocupado.
-Bate-papo e mensagens instantâneas serão escondidas. Mensagens instantâneas irão receber a sua resposta de modo ocupado. Todas as ofertas de teletransporte serão recusadas. Todas as ofertas de inventário irão para a sua Lixeira.
- <usetemplate ignoretext="Ao definir o Modo Ocupado" name="okignore" yestext="OK"/>
+ Modo ocupado ativado.
+O bate-papo e MIs não serão exibidos. MIs enviadas para você receberão sua resposta de modo ocupado. Todas as ofertas de teletransporte serão recusadas. Todas as ofertas de inventário serão colocadas na Lixeira.
+ <usetemplate ignoretext="Passar meu status para o modo ocupado" name="okignore" yestext="OK"/>
</notification>
<notification name="JoinedTooManyGroupsMember">
- Você já pertence a muitos grupos para entrar em outro. Por favor, deixe pelo menos um grupo antes de entrar neste. Para sair de um grupo, selecione o Menu Editar e a opção Meus &apos;Grupos...&apos;
-[NAME] convidou você para entrar num grupo como membro.
+ Você atingiu o limite máximo de grupos. Saia de outro grupo para poder entrar nesse ou recuse o convite.
+[NAME] está te convidando para ser membro do grupo.
[INVITE]
<usetemplate name="okcancelbuttons" notext="Recusar" yestext="Entrar"/>
</notification>
@@ -1426,7 +1371,15 @@ Bate-papo e mensagens instantâneas serão escondidas. Mensagens instantâneas i
</notification>
<notification name="TeleportFromLandmark">
Você tem certeza que quer se teletransportar?
- <usetemplate ignoretext="Ao se teletransportar a partir de uma Landmark no inventário" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/>
+ <usetemplate ignoretext="Confirmar se eu quero ser teletransportado para marcos" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/>
+ </notification>
+ <notification name="TeleportToPick">
+ Teletransportar para [PICK]?
+ <usetemplate ignoretext="Confirmar se eu quero ser teletransportado para Destaques" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/>
+ </notification>
+ <notification name="TeleportToClassified">
+ Teletransportar para [CLASSIFIED]?
+ <usetemplate ignoretext="Confirmar se eu quero ser teletransportado lugar do anúncio" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/>
</notification>
<notification label="Mensagem para todos na sua Propriedade" name="MessageEstate">
Digite um breve anúncio que será enviado para todos que estejam atualmente na sua propriedade.
@@ -1495,9 +1448,7 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar.
Você não é permitido na Região devido à sua Classificação de maturidade. Isto pode ser o resultado da falta de informação de validação de sua idade.
Por favor, verifique se você está com o último Visualizador instalado e vá ao Banco de Conhecimento para detalhes em como acessar áreas com esta classificação de maturidade.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="RegionEntryAccessBlocked_KB">
Você não é permitido nesta região devido à sua Classificação de maturidade.
@@ -1506,37 +1457,26 @@ Ir para o Banco de Conhecimento para maiores informações sobre Classificaçõe
<url name="url">
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/pt
</url>
- <usetemplate
- name="okcancelignore"
- yestext="Ir para o Banco de Conhecimento"
- notext="Fechar"
- ignoretext="Quando a entrada na região está bloqueada devido à Classificação de maturidade"/>
+ <usetemplate ignoretext="Não posso entrar nessa região devido à classificação do conteúdo" name="okcancelignore" notext="Fechar" yestext="Ir para o Banco de Conhecimento"/>
</notification>
<notification name="RegionEntryAccessBlocked_Notify">
Você não é permitido nesta região devido à sua Classificação de maturidade.
</notification>
<notification name="RegionEntryAccessBlocked_Change">
- Você não é permitido nessa região devido à sua preferência de Classificação de maturidade.
-
-Você pode clicar em &apos;Mudar Preferência&apos; para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar &gt; Preferencias... &gt; Geral.
- <form name="form">
- <button
- name="OK"
- text="Mudar Preferência"/>
- <button
- default="true"
- name="Cancel"
- text="Fechar"/>
- <ignore name="ignore" text="Quando a entrada na Região está bloqueada devido à preferência de Classificação de maturidade"/>
- </form>
+ Você não pode entrar nessa região devido à sua seleção de maturidade.
+
+Clique em &apos;Mudar preferência&apos; para aumentar o nível de maturidade e entrar nessa região. De agora em diante você pode buscar e acessar conteúdo [REGIONMATURITY] . Para modificar esta configuração, vá à Eu &gt; Preferências &gt; Geral.
+ <form name="form">
+ <button name="OK" text="Mudar preferência"/>
+ <button default="true" name="Cancel" text="Fechar"/>
+ <ignore name="ignore" text="Minha preferência de maturidade impede que eu vá a uma região"/>
+ </form>
</notification>
<notification name="LandClaimAccessBlocked">
Você não pode reclamar esta terra devido à sua Classificação de maturidade. Isto pode ser o resultado de falta de informação na validação de sua idade.
Por favor, verifique se você tem o último Visualizador instalado e vá para o Banco de Conhecimento para detalhes sobre o acesso de áreas com esta Classificação de maturidade.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="LandClaimAccessBlocked_KB">
Você não pode reclamar esta terra devido à sua Classificação de maturidade.
@@ -1545,32 +1485,22 @@ Ir para a o Banco de Conhecimento para maiores informações sobre Classificaç
<url name="url">
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/pt
</url>
- <usetemplate
- name="okcancelignore"
- yestext="Ir para o Banco de Conhecimento"
- notext="Fechar"
- ignoretext="Quando reclamar a Terra está bloqueado devido à Classificação de maturidade"/>
+ <usetemplate ignoretext="Não reivindicar essa região devido à classificação do conteúdo" name="okcancelignore" notext="Fechar" yestext="Ir para o Banco de Conhecimento"/>
</notification>
<notification name="LandClaimAccessBlocked_Notify">
Você não pode reclamar esta terra devido à sua Classificação de maturidade.
</notification>
<notification name="LandClaimAccessBlocked_Change">
- Você não pode reclamar esta terra devido à sua preferência de Classsificação de maturidade.
+ Você não pode reivindicar essa região devido à sua preferência de maturidade
-Você pode clicar em &apos;Mudar Preferência&apos; para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar &gt; Preferencias... &gt; Geral.
- <usetemplate
- name="okcancelignore"
- yestext="Mudar Preferência"
- notext="Fechar"
- ignoretext="Quando reclamar a Terra está bloqueado devido à preferência de Classificação de maturidade"/>
+Clique em &apos;Mudar preferência&apos; para aumentar o nível de maturidade e entrar nessa região. De agora em diante você pode buscar e acessar conteúdo [REGIONMATURITY] . Para modificar esta configuração, vá à Eu &gt; Preferências &gt; Geral.
+ <usetemplate ignoretext="Minha preferência de conteúdo impede que eu reivindique terrenos" name="okcancelignore" notext="Fechar" yestext="Mudar Preferência"/>
</notification>
<notification name="LandBuyAccessBlocked">
Você não pode comprar esta terra devido à sua Classificação de maturidade. Isto pode ser o resultado de falta de informação na validação de sua idade.
Por favor, verifique se você tem o último Visualizador instalado e vá para o Banco de Conhecimento para detalhes sobre o acesso de áreas com esta Classificação de maturidade.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
+ <usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="LandBuyAccessBlocked_KB">
Você não pode comprar esta terra devido à sua Classificação de maturidade.
@@ -1579,27 +1509,19 @@ Ir para o Banco de Conhecimento para maiores informações sobre Classificaçõe
<url name="url">
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/pt
</url>
- <usetemplate
- name="okcancelignore"
- yestext="Ir para o Banco de Conhecimento"
- notext="Fechar"
- ignoretext="Quando a compra de Terra está bloqueada devido à Classificação de maturidade"/>
+ <usetemplate ignoretext="Não posso comprar essa região devido à classificação do conteúdo" name="okcancelignore" notext="Fechar" yestext="Ir para o Banco de Conhecimento"/>
</notification>
<notification name="LandBuyAccessBlocked_Notify">
Você não pode comprar esta terra devido à sua Classificação de maturidade.
</notification>
<notification name="LandBuyAccessBlocked_Change">
- Você não pode comprar esta terra devido à sua preferência de Classificação de maturidade.
+ Você não pode comprar esse terreno devido à sua preferência de maturidade
-Você pode clicar em &apos;Mudar Preferência&apos; para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar &gt; Preferencias... &gt; Geral.
- <usetemplate
- name="okcancelignore"
- yestext="Mudar Preferência"
- notext="Fechar"
- ignoretext="Quando a compra de Terra está bloqueada devido à preferência de Classificação de maturidade"/>
+Clique em &apos;Mudar preferência&apos; para aumentar o nível de maturidade e entrar nessa região. De agora em diante você pode buscar e acessar conteúdo [REGIONMATURITY] . Para modificar esta configuração, vá à Eu &gt; Preferências &gt; Geral.
+ <usetemplate ignoretext="Minha preferência de conteúdo não me deixa comprar terrenos" name="okcancelignore" notext="Fechar" yestext="Mudar Preferência"/>
</notification>
<notification name="TooManyPrimsSelected">
- &quot;Muitos prims foram selecionados. Por favor, selecione [MAX_PRIM_COUNT] ou menos e tente novamente.&quot;
+ Muitos prims foram selecionados. Selecione [MAX_PRIM_COUNT] ou menos prims, e tente de novo
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="ProblemImportingEstateCovenant">
@@ -1632,19 +1554,11 @@ Publicar este classificado agora por L$ [AMOUNT]?
</notification>
<notification name="SetClassifiedMature">
Este classificado contém conteúdo Mature?
- <usetemplate
- canceltext="Cancelar"
- name="yesnocancelbuttons"
- notext="Não"
- yestext="Sim"/>
+ <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não" yestext="Sim"/>
</notification>
<notification name="SetGroupMature">
Este grupo contém conteúdo Mature?
- <usetemplate
- canceltext="Cancelar"
- name="yesnocancelbuttons"
- notext="Não"
- yestext="Sim"/>
+ <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não" yestext="Sim"/>
</notification>
<notification label="Confirmar reiniciar" name="ConfirmRestart">
Você quer realmente reiniciar esta região em 2 minutos?
@@ -1658,217 +1572,12 @@ Publicar este classificado agora por L$ [AMOUNT]?
<button name="Cancel" text="Cancelar"/>
</form>
</notification>
- <notification label="Bloquear Terraforma" name="HelpRegionBlockTerraform">
- Se esta opção for assinalada, donos de Terrenos não serão capazes de terraformar independentemente da configuração &apos;Editar Terreno&apos; de suas terras por lote.
-
-Padrão: desligado
- </notification>
- <notification label="Bloquear Vôo" name="HelpRegionBlockFly">
- Se esta caixa estiver marcada, as pessoas não poderão voar nesta região independente das configurações por lote de &apos;Voar&apos;.
-
-Padrão: desligado.
- </notification>
- <notification label="Mudança Conjunta das Permissões de Conteúdo" name="HelpBulkPermission">
- A ferramenta de Mudança Conjunta das Permissões lhe ajuda a mudar, rapidamente, as permissões de múltiplos itens que estão no conteúdo do(s) objeto(s) selecionado(s). Por favor observe que, no entanto, você está apenas definindo permissões para on itens que estão no conteúdo dos objetos selecionados -- não as permissões para o container dos próprios objetos.
-
-Também observe que as permissões não se aplicam aos conteúdos aninhados, contidos em quaisquer dos objetos. Sua solicitação opera apenas nos itens em exatamente um nível de profundidade.
-
-Você pode escolher seletivamente quais tipos de itens modificar, usando a lista de conferência aqui, abaixo de &apos;Tipos de Conteúdo&apos;. Quando você seleciona Texturas, as fotos são incluídas.
-
-* Esta ferramenta apenas mudará as permissões em itens que você pode mudar.
-* Você não pode dar ao Próximo dono, as permissões que você já não tem.
-* As permissões ao Próximo dono são meramente solicitações. Se um dos itens não puder assumir todas as novas permissões, nenhuma delas mudará.
-
-Quando você estiver pronto para mudar as permissões globais, clique &apos;Aplicar&apos; e aguarde os resultados na tela.
-
-Se você fechar a janela de Permissões Conjuntas enquanto elas estiverem sendo alteradas, a operação será suspensa.
- </notification>
- <notification label="Permitir Dano" name="HelpRegionAllowDamage">
- Marcar essa caixa habilita o sistema de vitalidade em todos os lotes independente das configurações individuais. Se esta caixa ficar desmarcada, os proprietários de lotes individuais ainda estarão aptos a ativar o sistema de vitalidade de seus lotes.
-
-Padrão: desligado.
- </notification>
- <notification label="Limite de Agentes" name="HelpRegionAgentLimit">
- Define o número máximo de residentes permitidos nesta região.
-Quanto mais residentes existirem em sua região, pior pode ser a performance.
-
-Padrão: 40
- </notification>
- <notification label="Bonus de Objetos" name="HelpRegionObjectBonus">
- O Bônus de objetos é um multiplicador para primitivas permitidas em qualquer lote. O intervalo permitido é de 1 a 10.
-Se fixado em &apos;1 &apos;, 512m² de cada lote permitem 117 objetos.
-Fixado em &apos;2 &apos;, 512m² cada lote permitem 234, ou o dobro, e assim por diante.
-O número máximo de objetos permitidos por região permanece 15000 não importa qual seja o Bônus de objeto. Uma vez estabelecido, esteja ciente de que a redução do Bônus de objetos pode retornar objetos ou apagá-los.
-
-Padrão: 1.0
- </notification>
- <notification label="Maturidade" name="HelpRegionMaturity">
- Define a Classificação de Maturidade da região, como mostrado na barra de menu, no topo de qualquer visualizador do Residente e nas dicas no Mapa-Mundi, quando o cursor passa sobre esta Região. Esta definição também afeta o acesso a esta Região e aos resultados de busca. Outros Residentes podem apenas entrar em Regiões ou ver resultados de busca com a mesma Classificação de maturidade que eles escolheram em suas preferências.
-
-Pode levar algum tempo até que esta mudança se reflita no mapa.
- </notification>
- <notification label="Restringir Empurrar" name="HelpRegionRestrictPushObject">
- Esta caixa de verificação Configura toda a região para permissões restritivas de empurrar.
-Quando habilitada, os agentes só podem empurrar a si mesmos ou serem empurrados pelo dono do lote.
-(Empurrar se refere à função LSL llPushObject().)
-
-Padrão: Desligado.
- </notification>
- <notification label="Unir/dividir lote" name="HelpParcelChanges">
- Configura se os lotes que não pertencem ao dono da propriedade podem ser unidos ou subdivididos.
-Se esta opção estiver desmarcada:
- * Apenas os donos ou gerentes de propriedades podem unir ou dividir lotes.
- * Eles podem unir ou subdividir lotes pertencentes ao dono ou ao grupo onde eles tem os poderes apropriados.
-Se esta opção estiver marcada:
- * Todos os donos de lotes podem unir ou subdividir os lotes que eles possuem.
- * Para lotes pertencentes a grupos, aqueles com os poderes apropriados podem unir ou subdividir lotes.
-
-Padrão: Marcado.
- </notification>
- <notification label="Não Mostrar na Pesquisa" name="HelpRegionSearch">
- Ao marcar esta caixa irá bloquear os donos de lotes de listar seus lotes na busca
-
-Padrão: desligado
- </notification>
<notification label="Modificar a maturidade da Região" name="RegionMaturityChange">
A classificação de maturidade para esta região foi atualizada.
Pode levar algum tempo para que a mudança seja refletida no mapa.
</notification>
- <notification label="Revenda de Terreno" name="HelpRegionLandResell">
- Os gerentes e os donos de propriedades podem vender qualquer terreno pertencente ao dono da propriedade.
-Se esta opção estiver desmarcada, os compradores não podem revender seus terrenos nesta região.
-Se esta opção estiver marcada, compradores podem vender seus terrenos nesta região.
-
-Padrão: Desabilitada.
- </notification>
- <notification label="Desabilitar Scripts" name="HelpRegionDisableScripts">
- Quando a performance do simulador está ruim, um script pode ser o culpado. Abra a Barra de Estatísticas (Ctrl+Shift+1). Olhe no Simulador de Física FPS. Se estiver abaixo de 45, então abra o painel &apos;Tempo&apos; localizado na parte de baixo da Barra de Estatísticas. Se o Tempo de Script indicar 25 ms ou mais, clique no botão &apos;Get Top CScripts&apos;. Será dado o nome e a localização do script que pode estar causando uma performance ruim. Marque a caixa &apos;Desabilitar Scripts&apos; e aperte o botão &apos;Aplicar&apos;. Isto temporariamente desabilitará todos os scripts nesta região. Uma vez que você chegar ao local, investigue o script para determinar se ele está causando o problema. Você pode querer entrar em contato com o proprietário do script, excluir ou devolver o objeto. Desmarque a caixa &apos;Desabilitar Script&apos; e então clique em &apos;Aplicar&apos; para reativar os scripts na região. Padrão: desligado.
- </notification>
- <notification label="Desabilitar Colisões" name="HelpRegionDisableCollisions">
- Quando a performance do simulador é pobre, os objetos físicos podem ser os culpados.Abra a a Barra de Estatísticas (Ctrl+Shift+1).
-Olhe a taxa de quadros por segundos (FPS) dos objetos físicos.
-
-Se ela estiver abaixo de 45, abra o painel de Tempo, localizado na parte inferior da Barra de Estatísticas. Se o Tempo (Físicos) do Simulador mostrar 20 ms ou mais, clique o botão &apos;Pegue os Maiores Colidentes&apos;. Será fornecido a você o nome e a localidade dos objetos físicos que podem estar causando uma performance pobre.
-Ativando a caixa Desabilitar Colisões e então pressionando o botão Aplicar, as colisões objeto-objeto serão temporariamente desabilitadas. Você pode precisar fazer isso para que possa viajar até a localidade onde observou um &apos;colidente-mor&apos;. Uma vez tendo chegado à localidade, investigue o objeto – ele está constantemente colidindo com outros objetos? Você pode desejar contatar o dono do objeto ou deletar ou retornar o objeto.
-Desative a caixa &apos;Desabilitar Colisões&apos; e então use &apos;Aplicar&apos; para reativar as colisões na região.
-
-Padrão: off
- </notification>
- <notification label="Desabilitar Física" name="HelpRegionDisablePhysics">
- Desabilitar Física é similar a desabilitar Colisões, com exceção de que todas as simulações físicas serão desabilitadas. Isto significa que não só os objetos pararão de colidir, mas também que os avatares não poderão se mover.
-
-Isto só deve ser usado quando Desabilitar Colisões não trouxer performance suficiente à região para investigar um problema de Física ou do &apos;Colidente-Mor&apos;.
-
-Esteja certo de reabilitar Física quando você terminar, ou os avatares não poderão se mover.
-
-Default: desligado
- </notification>
- <notification label="Principais Colidentes" name="HelpRegionTopColliders">
- Mostra uma lista de objetos com o maior número de potenciais colisões objeto-objeto. Estes objetos podem diminuir a performance do simulador.
-Selecione Ver &gt; Barra de Estatísticas e olhe em Simulador &gt; Tempo &gt; Tempo de Simulação (Física) para ver se mais de 20 ms são gastos em física.
- </notification>
- <notification label="Principais Scripts" name="HelpRegionTopScripts">
- Mostra uma lista dos objetos gastando mais tempo rodando scripts LSL. Estes objetos podem diminuir a performance do simulador.
-Selecione Ver &gt; Barra de Estatísticas e olhe em Simulador &gt; Tempo &gt; Tempo de Script para ver se mais de 25 ms são gastos em scripts.
- </notification>
- <notification label="Reiniciar Região" name="HelpRegionRestart">
- Reinicia o processo do servidor rodando esta região, após um aviso de dois minutos. Todos os residentes nesta região serão desconectados. A região salvará seus dados e deverá retornar em até 90 segundos.
-
-Reiniciar a região não consertará a maioria dos problemas de performance, e deveria ser utilizada somente quando solicitado.
- </notification>
- <notification label="Altura da água" name="HelpRegionWaterHeight">
- Esta é a altura em metros onde a água aparece. Caso este ajuste seja diferente de 20 e você tenha águas adjacentes ao limite do seu terreno ou águas continentais, haverá uma abertura visível.
-
-Padrão: 20
- </notification>
- <notification label="Limite do aumento" name="HelpRegionTerrainRaise">
- Esta é a distância em metros que os donos de lotes podem elevar o terreno, a partir da altura nivelada do terreno.
-
-Padrão: 4
- </notification>
- <notification label="Limite mais baixo" name="HelpRegionTerrainLower">
- Esta é a distância em metros que os donos de lotes podem abaixar o terreno, a partir da altura nivelada do terreno.
-
-Padrão: -4
- </notification>
- <notification label="Carregar terreno RAW" name="HelpRegionUploadRaw">
- Este botão faz upload de um arquivo .RAW para a região em que você está.
-O arquivo precisa conter as dimensões/número de canais corretos: RGB, 256x256 e 13 canais. A melhor forma de criar um arquivo da região é baixando o arquivo .RAW existente. Um bom primeiro passo seria modificar o primeiro canal (altura da região) e fazer o upload do arquivo.
-
-O upload pode levar certa de 45 segundos. Note que fazer upload do arquivo da região *não* moverá os objetos que estão na região, apenas o terreno e as permissões associadas a ele. Isso pode fazer com que alguns objetos fiquem debaixo da terra.
-
-Para mais informações sobre edição dos campos de altura da região, consulte a ajuda F1.
- </notification>
- <notification label="Baixar RAW de terreno" name="HelpRegionDownloadRaw">
- Este botão faz download de um arquivo contendo dados de altura do campo, dimensões do lote, status de lotes à venda e algumas permissões de lote para este terreno. Ao abrir o arquivo em programas como o Photoshop, você precisa especificar as dimensões do documento, que são: RGB, 256x256 com 13 canais. Este arquivo de terras não pode ser aberto de outra forma.
-
-Para mais informações sobre edição dos campos de altura da região, consulte a Ajuda F1.
- </notification>
- <notification label="Usar Sol da Propriedade" name="HelpRegionUseEstateSun">
- Esta caixa de opção faz com que a posição do sol nesta região seja a mesma que no resto da região.
-
-Padrão: ligada
- </notification>
- <notification label="Sol fixo" name="HelpRegionFixedSun">
- Esta caixa de opção ajusta a posição do sol no equalizador de fuso e interrompe o movimento do sol.
-
-Padrão: desligada
- </notification>
- <notification label="Nivelar Terreno" name="HelpRegionBakeTerrain">
- Este botão salva a forma atual do terreno como o novo padrão para a região. Uma vez nivelado, o terreno pode reverter à forma que foi salva, sempre que você ou outros utilizarem a ferramenta &apos;Revert&apos; na edição de terreno. O terreno nivelado é também o ponto médio entre os limites de elevação e redução de terreno.
- </notification>
- <notification label="Gerentes da Propriedade" name="HelpEstateEstateManager">
- Um gerente da propriedade é um residente a quem você delegou o controle das configurações da região. Ele pode alterar qualquer configuração da região, com exceção de elevar, abaixar ou nivelar o terreno. Em particular, eles podem permitir ou banir residentes da sua propriedade. Gerentes da propriedade só podem ser adicionados ou removidos pelo dono da propriedade.
-
-Um gerente não pode adicionar ou remover outro gerente. Por favor, escolha somente residentes em quem você confia para serem gerentes da propriedade, pois você poderá ser responsabilizado pelas ações deles.
- </notification>
- <notification label="Usar hora Global" name="HelpEstateUseGlobalTime">
- Esta caixa de opção faz com que o Sol em sua propriedade siga a mesma posição do Sol nas propriedades da &apos;mainland&apos; do Linden Lab.
-
-Padrão: ligado
- </notification>
- <notification label="Sol fixo" name="HelpEstateFixedSun">
- Esta caixa de opção ajusta a posição do sol no equalizador de fuso e interrompe o movimento do sol.
- </notification>
- <notification label="Acesso público" name="HelpEstateExternallyVisible">
- Esta caixa de verificação define se os Residentes que estão em outras propriedades podem entrar nesta, sem estar em uma lista de acesso.
-
-Padrão: on
- </notification>
- <notification label="Permitir Teletransporte direto" name="HelpEstateAllowDirectTeleport">
- Quando marcada, permite que os residentes se teletransportem diretamente para qualquer ponto da sua propriedade. Quando desmarcada, os residentes serão teleportados para o telehub mais próximo.
-
-Padrão: desmarcada
- </notification>
- <notification label="Permitir acesso" name="HelpEstateAllowResident">
- Acesso a esta propriedade estará limitado aos Residentes listados aqui e em quaisquer grupos abaixo.
-Esta definição está disponível apenas quando o Acesso Público estiver desmarcado.
- </notification>
- <notification label="Permitir acesso de grupo" name="HelpEstateAllowGroup">
- Acesso a esta propriedade estará limitado aos grupos listados aqui e a quaisquer Residentes acima.
-Esta definição está disponível apenas quando o Acesso Público estiver desmarcado.
- </notification>
- <notification label="Endereço de Email do Abuso" name="HelpEstateAbuseEmailAddress">
- Configurar isto para um endereço de email válido, fará com que relatos de abuso nesta propriedade sejam enviados para esse endereço.
-Definí-lo em branco fará com que os relatórios de abuso sejam enviados apenas para a Linden Lab.
- </notification>
- <notification label="Negar acesso" name="HelpEstateBanResident">
- Residentes desta lista estão proibidos de acessar a sua propriedade, independentemente de outras configurações.
- </notification>
- <notification label="Permitir Conversa por Voz" name="HelpEstateVoiceChat">
- Lotes nesta propriedade têm permissão para ter seus canais de voz próprios, nos quais os residentes podem ouvir e falar com os outros residentes próximos.
-
-Padrão: desligado
- </notification>
<notification label="Discordância de Versão de Voz" name="VoiceVersionMismatch">
- Esta versão do [APP_NAME] não é compatível com as características do Canal de Voz desta região. Para que a Conversa por Voz funcione corretamente, você precisará atualizar o [APP_NAME].
- </notification>
- <notification label="Corretor da Propriedade" name="HelpEstateCovenant">
- Definir um corretor da propriedade lhe permite vender lotes nesta propriedade. Se um corretor não for definido, você não pode vender terras. O cartão do seu corretor pode ficar vazio se você não desejar aplicar quaisquer regras ou avisar os compradores sobre qualquer coisa em relação ao lote antes da compra.
-
-Um corretor pode ser usado para comunicar regras, orientações, informações culturais ou simplesmente suas expectativas quanto ao futuro comprador. Isto pode incluir zoneamento, regulamentos para construções, opções de pagamento ou qualquer outra informação que você julgar importante que o novo proprietário veja e concorde antes da compra.
-
-O comprador precisa concordar com o corretor marcando a caixa de verificação antes de concluir a compra. Corretores são sempre visíveis na caixa de diálogo &apos;Sobre a Terra&apos; para todos os lotes que têm corretores definidos.
+ Esta versão do [APP_NAME] não é compatível com o recurso &apos;Bate-papo de voz&apos; desta região. Para o bate-papo de voz funcionar, atualize o [APP_NAME].
</notification>
<notification label="Impossível Comprar Objetos" name="BuyObjectOneOwner">
Não é possível comprar objetos de diferentes proprietários ao mesmo tempo.
@@ -1956,53 +1665,36 @@ Por favor, re-insira sua senha e clique &apos;Confirmar Compra&apos;.
Estes itens serão movidos para o seu inventário, não copiados.
Mover os itens do inventário?
- <usetemplate ignoretext="Quando estiver movendo inventário não copiável a partir de objetos." name="okcancelignore" notext="Não mover" yestext="Mover"/>
+ <usetemplate ignoretext="Avisar antes de eu pegar items &apos;cópia proibida&apos; de um objeto" name="okcancelignore" notext="Não mover" yestext="Mover"/>
</notification>
<notification name="MoveInventoryFromScriptedObject">
Você selecionou itens de inventário não copiáveis.
Estes itens serão movidos para seu inventário, não copiados. Pelo fato de o objeto ter scripts, mover estes itens ao inventário pode provocar um mal funcionamento do script.
Mover para o inventário o(s) item(s)?
- <usetemplate ignoretext="Quando movendo objetos com scripts não copiáveis ao inventário" name="okcancelignore" notext="Não mover" yestext="Mover"/>
+ <usetemplate ignoretext="Avisar antes de eu pegar items &apos;cópia proibida&apos; que podem quebrar objetos com script" name="okcancelignore" notext="Não mover" yestext="Mover"/>
</notification>
<notification name="ClickActionNotPayable">
- Aviso: A ação de &apos;Pagar Objeto&apos; com clique foi definida, mas funcionará apenas se for adicionado um script com o evento money().
+ Aviso: O clique em &apos;Pagar por objeto&apos; foi processado, mas só pode funcionar se um script tiver um evento money().
<form name="form">
- <ignore name="ignore" text="Quando Definindo &apos;Pagar&apos; em objetos sem eventos money()"/>
+ <ignore name="ignore" text="Definir &apos;Pagar por objeto&apos; ao construir um objeto sem script money()"/>
</form>
</notification>
<notification name="OpenObjectCannotCopy">
Não há itens neste objeto que você está autorizado a copiar.
</notification>
<notification name="WebLaunchAccountHistory">
- Ir para o site do [SECOND_LIFE] para visualizar o histórico de sua conta?
- <usetemplate ignoretext="Ao abrir a página web de histórico de conta" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
- </notification>
- <notification name="ClickOpenF1Help">
- Visitar o website de Suporte do [SECOND_LIFE]?
- <usetemplate ignoretext="Quando visitando o website de Suporte do [SECOND_LIFE]" name="okcancelignore" notext="Cancelar" yestext="Ir"/>
+ Deseja abrir o [http://secondlife.com/account/ Painel] para ver o histórico da sua conta?
+ <usetemplate ignoretext="Abrir o navegador para acessar minha conta" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
</notification>
<notification name="ConfirmQuit">
Tem certeza que deseja sair?
- <usetemplate ignoretext="Quando Saindo do [APP_NAME]." name="okcancelignore" notext="Continuar" yestext="Sair"/>
+ <usetemplate ignoretext="Confirmar antes de sair" name="okcancelignore" notext="Não sair" yestext="Sair"/>
</notification>
<notification name="HelpReportAbuseEmailLL">
- Use esta ferramenta para reportar violações aos [http://secondlife.com/corporate/tos.php?lang=pt-BR Termos de Serviço] e aos [http://secondlife.com/corporate/cs.php?lang=pt-BR Padrões da Comunidade].
-
-Todos os abusos aos Termos de Serviço e aos Padrões da Comunidade reportados, são investigados e resolvidos. Você pode ver a resolução do incidente na Reportagem de Incidentes em:
-
-http://secondlife.com/support/incidentreport.php
- </notification>
- <notification name="HelpReportAbuseEmailEO">
- IMPORTANTE: Esta reportagem irá para o dono da região em que você se encontra atualmente e não para a Linden Lab.
-
-Como um serviço aos residentes e visitantes, o dono da região em que você se encontra foi eleito para receber e resolver todas as reportagens originadas nesta região. A Linden Lab não irá investigar reportagens que você envia desta localidade.
+ Use esta ferramenta para denunciar infrações dos [http://secondlife.com/corporate/tos.php Termos do Serviço] e das [http://secondlife.com/corporate/cs.php Normas da Comunidade].
-O dono da região resolverá as reportagens baseado nas regras locais desta região, como definido na Declaração da propriedade.
-(Veja as declarações indo ao menu Mundo e selecionando Sobre a Terra.)
-
-A resolução desta reportagem se aplica apenas a esta região; o acesso de Residentes às outras áreas do [SECOND_LIFE] não será afetado pelas decisões desta reportagem.
-Apenas a Linden Lab pode restringir acesso a todo o [SECOND_LIFE].
+Todas as denúncias de abuso são investigadas e resolvidas. Para saber o que foi feito, consulte o [http://secondlife.com/support/incidentreport.php relatório de ocorrências].
</notification>
<notification name="HelpReportAbuseSelectCategory">
Por favor, selecione uma categoria para a reportagem deste abuso.
@@ -2026,17 +1718,18 @@ Seja tão específico quanto você puder, incluindo nomes e os detalhes do incid
Fazer uma descrição precisa nos ajuda a arquivar e processar as reportagens de abuso.
</notification>
<notification name="HelpReportAbuseContainsCopyright">
- Caro Residente,
+ Caro residente,
+
+Aparentemente você fez uma denúncia de infranção de propriedade intelectual. Certifique-se de que sua denúncia está correta:
-Você parece estar relatando violação de propriedade intelectual. Por favor, certifique-se de que está relatando corretamente:
+(1) Procedimento do abuso Se você tem motivos para acreditar que um residente está burlando o sistema de autorização do [SECOND_LIFE] usando o CopyBot ou ferramentas parecidas para infringir direitos de propriedade intelectual, envie um relatório de abuso. A equipe anti-abuso investiga e impõe sanções em casos de infranção dos [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Termos de Serviço] ou das [http://secondlife.com/corporate/cs.php Normas da Comunidade]. Entretando, a equipe anti-abuso não lida com pedidos de remoção de conteúdo do [SECOND_LIFE]. Tais pedidos não serão atendidos.
-(1) O Processo de abuso. Você pode apresentar um relatório de abuso se você acredita que um Residente está infringindo o sistema de permissões do [SECOND_LIFE], por exemplo, utilizando ferramentas CopyBot para copiar ou similar, para violar os direitos de propriedade intelectual. A Equipe de Abuso investiga e divulga a ação disciplinar adequada para o comportamento que viola o Estatuto da Comunidade do [SECOND_LIFE] ou os Termos de Serviço. No entanto, a mesma não controla e não irá responder aos pedidos para remover o conteúdo do mundo [SECOND_LIFE].
+(2) Procedimentos DMCA ou remoção de conteúdo. Para solicitar a remoção de conteúdo do [SECOND_LIFE], é imprescindível enviar uma notificação de infração elaborada conforme as disposicões da [http://secondlife.com/corporate/dmca.php Política DMCA].
-(2) O processo de remoção de conteúdo ou DMCA. Para solicitar a remoção de conteúdo do [SECOND_LIFE], você deve enviar uma notificação válida de infração, conforme previsto em nossa Política de DMCA em http://secondlife.com/corporate/dmca.php.
+Se você deseja continuar o procedimento de denúncia de abuso, feche esta janela e termine o relatório. A categoria &apos;CopyBot or Permissions Exploit&apos; (robô de cópia ou exploit de autorização)
-Se você ainda deseja prosseguir com o processo de abuso, por favor, feche esta janela e termine de enviar seu relatório. Pode ser necessário selecionar a categoria específica &apos;CopyBot Infração de Permissões&apos;.
+Obrigado.
-Obrigado,
Linden Lab
</notification>
<notification name="FailedRequirementsCheck">
@@ -2047,9 +1740,9 @@ Linden Lab
Já existe um objeto anexado a este ponto do seu corpo.
Você deseja substituí-lo pelo objeto selecionado?
<form name="form">
- <ignore name="ignore" save_option="true" text="Ao substituir os anexos existentes"/>
- <button name="Yes" text="Sim"/>
- <button name="No" text="Não"/>
+ <ignore name="ignore" save_option="true" text="Trocar um anexo atual pelo item selecionado"/>
+ <button ignore="Replace Automatically" name="Yes" text="Sim"/>
+ <button ignore="Never Replace" name="No" text="Não"/>
</form>
</notification>
<notification label="Aviso de Modo Ocupado" name="BusyModePay">
@@ -2057,18 +1750,22 @@ Você deseja substituí-lo pelo objeto selecionado?
Você gostaria de deixar o modo Ocupado antes de completar esta transação?
<form name="form">
- <ignore name="ignore" save_option="true" text="Ao pagar uma pessoa ou objeto no modo ocupado"/>
- <button name="Yes" text="Sim"/>
- <button name="No" text="Não"/>
+ <ignore name="ignore" save_option="true" text="Estou prestes a pagar alguém ou um objeto no modo ocupado"/>
+ <button ignore="Always leave Busy Mode" name="Yes" text="Sim"/>
+ <button ignore="Never leave Busy Mode" name="No" text="Não"/>
</form>
</notification>
+ <notification name="ConfirmDeleteProtectedCategory">
+ A pasta &apos;[FOLDERNAME]&apos; é uma pasta do sistema. Excluir pastas de sistema pode deixar o sistema instável. Tem certeza de que quer prosseguir?
+ <usetemplate ignoretext="Confirmar antes de excluir pastas do sistema." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ </notification>
<notification name="ConfirmEmptyTrash">
- Tem certeza de que deseja remover permanentemente o conteúdo da lixeira de seu inventário?
- <usetemplate ignoretext="Ao esvaziar a pasta da lixeira no seu inventário" name="okcancelignore" notext="Não" yestext="Sim"/>
+ Tem certeza de que deseja excluir o conteúdo da Lixeira? Para sempre?
+ <usetemplate ignoretext="Confirmar antes de esvaziar a pasta Lixeira" name="okcancelignore" notext="Não" yestext="Sim"/>
</notification>
<notification name="ConfirmClearBrowserCache">
- Você tem certeza que deseja limpar o cache do seu navegador?
- <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
+ Tem certeza de que quer apagar todo o histórico de viagens, web e buscas?
+ <usetemplate name="okcancelbuttons" notext="Não" yestext="OK"/>
</notification>
<notification name="ConfirmClearCookies">
Você tem certeza de que deseja limpar os cookies?
@@ -2079,39 +1776,18 @@ Você gostaria de deixar o modo Ocupado antes de completar esta transação?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/>
</notification>
<notification name="ConfirmEmptyLostAndFound">
- Deseja realmente remover permanentemente o conteúdo da pasta achados e perdidos?
- <usetemplate ignoretext="Ao esvaziar pasta Achados e Perdidos do seu inventário" name="okcancelignore" notext="Não" yestext="Sim"/>
+ Tem certeza de que deseja excluir o conteúdo dos Achados e Perdidos? Para sempre?
+ <usetemplate ignoretext="Confirmar antes de esvaziar a pasta Achados e Perdidos" name="okcancelignore" notext="Não" yestext="Sim"/>
</notification>
<notification name="CopySLURL">
- A seguinte SLurl foi copiada para o seu clipboard:
+ O seguinte SLurl foi copiado para a área de transferência:
[SLURL]
-Coloque-a em uma página web para dar aos outros um fácil acesso a este local ou tente você, colando-a na barra de endereços do seu navegador.
+Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de endereço de qualquer navegador da web.
<form name="form">
- <ignore name="ignore" text="Ao copiar a SURL para o seu clipboard"/>
+ <ignore name="ignore" text="SLurl copiado para área de transferência."/>
</form>
</notification>
- <notification name="GraphicsPreferencesHelp">
- Este painel controla o tamanho da janela, resolução e a qualidade dos gráficos do computador cliente. O Preferências &gt; Interface Gráfica permite escolher entre quatro níveis gráficos: Baixo, Médio, Alto e Ultra. Você também pode personalizar suas configurações de gráficos selecionando a opção Personalizar e manipulando as seguintes definições:
-
-Sombreamento: Ativar ou desativar vários tipos de sombreadores de pixel.
-
-Detalhes de Reflexão: Define os tipos de objetos que a água pode refletir.
-
-Renderização de Avatar: Define opções que afetam a forma como o cliente renderizará os avatares.
-
-Alcance: Afeta a distância do seu ponto de vista que os objetos serão renderizados na cena.
-
-Número máximo de partículas: Define o número máximo de partículas que será capaz de ver na sua tela de uma só vez.
-
-Qualidade de Pós-Processamento: Define a resolução com a qual o brilho será renderizado.
-
-Detalhes de malha: Ajusta a quantidade de detalhes ou número de triângulos utilizados na renderização de certos objetos. Um valor mais alto leva mais tempo para renderizar, mas torna esses objetos mais detalhados.
-
-Detalhe de Iluminação: Seleciona os tipos de luzes que você gostaria de renderizar.
-
-Detalhe de Terreno: Ajusta a quantidade de detalhes que você gostaria de ver para a textura do terreno.
- </notification>
<notification name="WLSavePresetAlert">
Você deseja substituir a pré-configuração salva?
<usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
@@ -2130,149 +1806,6 @@ Detalhe de Terreno: Ajusta a quantidade de detalhes que você gostaria de ver pa
Existe efeito de Pós-Processamento. Você deseja substituí-lo?
<usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
</notification>
- <notification name="HelpEditSky">
- Editar os controles graduais do WindLight para configurar e salvar um conjunto de céus.
- </notification>
- <notification name="HelpEditDayCycle">
- Definir quais céus colocar durante todo o dia.
- </notification>
- <notification name="EnvSettingsHelpButton">
- Essas configurações ajustam a forma como o ambiente parece localmente no seu computador. Sua placa de vídeo precisa suportar o sombreador atmosférico, a fim de ter acesso a todas as definições.
-
-Ajuste o controle gradual &quot;Hora do Dia&quot; para alterar a fase do dia localmente no visualizador.
-
-Ajuste o controle gradual de &quot;Cobertura das nuvens&quot; para controlar quantas nuvens cobrem o céu.
-
-Pegue uma cor na paleta de cores de &quot;Cor da Água&quot; para mudar a cor desta.
-
-Ajuste o controle gradual de &quot;Névoa de Água&quot; para controlar o quão densa é a névoa dentro da água.
-
-Clique &quot;Usar Horário da Propriedade&quot; para redefinir a hora do dia para o horário atual do dia da região e permanecer atrelado a ela.
-
-Clique &quot;Céu Avançado &quot; para abrir um editor com configurações mais avançadas para o céu.
-
-Clique &quot;Água Avançada &quot; para abrir um editor com configurações mais avançadas para a água.
- </notification>
- <notification name="HelpDayCycle">
- O editor de Ciclo do Dia dá a você o controle do céu durante um ciclo de dia/noite do [SECOND_LIFE]. Este é o ciclo usado pelo controle gradual da hora do dia do editor de ambiente básico.
-
-O editor do ciclo de dia trabalha configurando quadros-chave. Estes são pontos (representados pelos ícones cinza no gráfico de horário) que possuem um pré-ajuste de céu associado a eles. Conforme o dia passa, o céu do Windlight &quot; anima &quot; a interpolação entre esses quadros-chave.
-
-A seta amarela acima da linha de tempo representa a sua vista atual, baseada no horário do dia. Clique e arraste para ver como o seu dia será animado. Você pode adicionar ou deletar os quadros-chave pressionando os botões Adicionar Chave e Deletar chave ao lado direito da linha de tempo.
-
-Você pode configurar a posição do tempo de um quadro-chave arrastando-o pela linha do tempo, ou configurando manualmente no quadro de configurações do seu quadro-chave. Será possível a você associar o seu quadro-chave a este respectivo padrão WindLight.
-
-A duração do ciclo determina a duração geral do &quot;dia&quot;. Configurá-la para um valor baixo (por exmplo, 2 min.) quer dizer que a linha do tempo de 24 horas será animada completamente em apenas dois minutos reais! Assim que estiver satisfeito com a linha do tempo e o ciclo dos quadros-chave, use os botões Play e Stop para uma prévia de como ficará o resultado. Lembre-se, você também pode utilizar a seta amarela indicadora do tempo acima da linha do tempo para ver o ciclo animado interativamente. Usando o botão do tempo da popriedade irá sincronizar a duração do seu dia ao ciclo diário da propriedade.
-
-Assim que estiver satisfeito com o seu ciclo diário, você pode salvá-lo ou carregá-lo através dos botões Salvar Dia Teste e Carregar Dia Teste. Note que, por enquanto, nós permitimos apenas um Ciclo de dia.
- </notification>
- <notification name="HelpBlueHorizon">
- Use os cursores Vermelho/Verde/Azul ( Red/Green/Blue -RGB) para ajustar as cores do céu. Você também pode usar o controle de Intensidade (I) para mover os três controles RGB simultaneamente.
- </notification>
- <notification name="HelpHazeHorizon">
- Haze Horizon é um dos parâmetros mais úteis para ajuste global de exposição de luz na cena. Ele é eficaz para simular diversas configurações de exposição, tais como configurações para super-exposição do sol e escuros halos de Iris.
- </notification>
- <notification name="HelpBlueDensity">
- A densidade global azul afeta a saturação da cor do céu e nevoeiro. Se você mover o controle gradual de intensidade (I) para a direita, as cores vão se tornar mais brilhantes e vibrantes. Se você movê-lo totalmente para a esquerda, as cores perdem intensidade e cor, eventualmente chegando a preto e branco. Se pretende um ajuste fino do equilíbrio de cor do céu, você pode controlar os diversos elementos da saturação, utilizando os controles graduais para vermelho / verde / azul (RGB).
- </notification>
- <notification name="HelpHazeDensity">
- Densidade de Poeira controla o nível de fumaça, poeira cinza na atmosfera. Eficaz para simular cenas com altos níveis de poeira e poluentes. É também efetivo em simular névoa e nevoeiro.
- </notification>
- <notification name="HelpDensityMult">
- O Multiplicador de Densidade pode ser usado para afetar a densidade atmosférica global. Com definições mais baixas, ele cria uma sensação de &quot;ar rarefeito&quot; e em definições mais altas, ele cria um efeito mais denso, mais esfumaçado.
- </notification>
- <notification name="HelpDistanceMult">
- Ajusta como a distância no WindLight é percebida. Um valor zero efetivamente desativa a influência do WindLight sobre terrenos e objetos. Valores superiores a 1 simulam os efeitos atmosféricos mais espessos a maiores distâncias.
- </notification>
- <notification name="HelpMaxAltitude">
- Max Altitude ajusta os cálculos de performance de altitude do WindLight, quando computa sua iluminação atmosférica. Em períodos vespertinos do dia, é útil para ajustar a &quot;profundidade&quot; de como o pôr-do-sol aparece.
- </notification>
- <notification name="HelpSunlightColor">
- Ajustar a cor e intensidade da luz direta na cena.
- </notification>
- <notification name="HelpSunAmbient">
- Ajusta a cor e a intensidade da luz ambiente atmosférica na cena.
- </notification>
- <notification name="HelpSunGlow">
- O controle gradual de Tamanho controla o tamanho do sol.
-O controle gradual de Foco controla o quanto o sol aparecerá desfocado no céu.
- </notification>
- <notification name="HelpSceneGamma">
- Ajusta a distribuição na tela de luz e escuridão.
- </notification>
- <notification name="HelpStarBrightness">
- Ajusta o brilho das estrelas no céu.
- </notification>
- <notification name="HelpTimeOfDay">
- Controla a localização do sol no céu. Semelhante a elevação.
- </notification>
- <notification name="HelpEastAngle">
- Controla a localização do sol no céu.
-Similar ao azimute.
- </notification>
- <notification name="HelpCloudColor">
- Edita as cores das nuvens, É normalmente recomendado manter o tom esbranquiçado, mas hey! Você pode se divertir se desejar.
- </notification>
- <notification name="HelpCloudDetail">
- Controla os detalhes da camada de imagem superior na imagem de nuvem principal. X e Y controla sua posição. D (Densidade) controla o quão cheio ou estratificada as nuvens devem aparecer.
- </notification>
- <notification name="HelpCloudDensity">
- Permite que você controle a posição das nuvens com os cursores X e Y e a densidade deles com o cursor D.
- </notification>
- <notification name="HelpCloudCoverage">
- Controla o quanto as nuvens cobrem o céu.
- </notification>
- <notification name="HelpCloudScale">
- Controla o dimensionamento da imagem de nuvens na cúpula celeste.
- </notification>
- <notification name="HelpCloudScrollX">
- Controla a velocidade das nuvens que se movem na direção X.
- </notification>
- <notification name="HelpCloudScrollY">
- Controla a velocidade que as núvens se movem na direção Y.
- </notification>
- <notification name="HelpClassicClouds">
- Marque esta check box para permitir a reprodução das nuvens clássicas mais velhas do [SECOND_LIFE], além das nuvens WindLight.
- </notification>
- <notification name="HelpWaterFogColor">
- Escolhe a cor da neblina subaquática.
- </notification>
- <notification name="HelpWaterFogDensity">
- Controla a densidade da neblina da água e a distância de visibilidade debaixo d&apos;água.
- </notification>
- <notification name="HelpUnderWaterFogMod">
- Modifica o efeito do expoente de densidade de Neblina para controlar até onde você pode ver quando o seu avatar está imerso.
- </notification>
- <notification name="HelpWaterGlow">
- Controla o quanto a superfície da água deve brilhar.
- </notification>
- <notification name="HelpWaterNormalScale">
- Controla o escalonamento das três marolas que compõem a água.
- </notification>
- <notification name="HelpWaterFresnelScale">
- Controla o quanto de luz será refletido por ângulos diferentes.
- </notification>
- <notification name="HelpWaterFresnelOffset">
- Controla o quanto da intensidade da luz é refletida.
- </notification>
- <notification name="HelpWaterScaleAbove">
- Controla o quanto de luz será refratado olhando acima da superfície da água.
- </notification>
- <notification name="HelpWaterScaleBelow">
- Controla o quanto de luz sera refratado visto debaixo da superfície da água.
- </notification>
- <notification name="HelpWaterBlurMultiplier">
- Controla como ondas e reflexos são misturados.
- </notification>
- <notification name="HelpWaterNormalMap">
- Controla o mapeamento normal em todos os níveis da água para determinar reflexões / refrações.
- </notification>
- <notification name="HelpWaterWave1">
- Controla aonde e com que velocidade a versão em escala maior do mapa normal se move nas direções X e Y .
- </notification>
- <notification name="HelpWaterWave2">
- Controla onde e a velocidade com que o mapa normal em escala menor se move nas direções X e Y.
- </notification>
<notification name="NewSkyPreset">
Me dê o nome para o novo céu.
<form name="form">
@@ -2318,35 +1851,33 @@ Similar ao azimute.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="Cannot_Purchase_an_Attachment">
- Os itens não podem ser comprados enquanto forem parte de um anexo.
+ Objetos não podem ser adquiridos quando estão anexados.
</notification>
<notification label="Sobre o pedido de Permissão de Débito" name="DebitPermissionDetails">
Conceder esse pedido dá permissão ao script para tirar Linden dólares (L$) de sua conta. Para revogar esta permissão, o proprietário do objeto deve excluir o objeto ou resetar os scripts dele.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="AutoWearNewClothing">
- Você gostaria de vestir automaticamente o item de vestuário que você criar?
- <usetemplate ignoretext="Automaticamente vestir novo vestuário" name="okcancelignore" notext="Não" yestext="Sim"/>
+ Vestir automaticamente a roupa que você vai criar?
+ <usetemplate ignoretext="Vestir as roupas que eu criar enquanto edito minha aparência" name="okcancelignore" notext="Não" yestext="Sim"/>
</notification>
<notification name="NotAgeVerified">
- Você precisa ter a idade verificada para acessar este lote.
-Gostaria de visitar o site do [SECOND_LIFE] para verificação de idade?
+ Área restrita a residentes com idade comprovada. Deseja ir ao site do [SECOND_LIFE] para comprovar sua idade?
[_URL]
<url name="url" option="0">
https://secondlife.com/account/verification.php?lang=pt
</url>
- <usetemplate ignoretext="Alertar sobre a falta de verificação de idade" name="okcancelignore" notext="Não" yestext="Sim"/>
+ <usetemplate ignoretext="Ainda não comprovei minha idade" name="okcancelignore" notext="Não" yestext="Sim"/>
</notification>
<notification name="Cannot enter parcel: no payment info on file">
- Este lote exige que você tenha informações de pagamento no arquivo antes de poder acessá-lo.
-Gostaria de visitar o site do [SECOND_LIFE] para configurá-lo?
+ Área restrita a residentes que já cadastraram seus dados de pagamento Deseja ir ao site do [SECOND_LIFE] para cuidar disso?
[_URL]
<url name="url" option="0">
https://secondlife.com/account/index.php?lang=pt
</url>
- <usetemplate ignoretext="Avisar sobre a falta de informação de pagamento." name="okcancelignore" notext="Não" yestext="Sim"/>
+ <usetemplate ignoretext="Ainda não tenho cadastro de pagamento" name="okcancelignore" notext="Não" yestext="Sim"/>
</notification>
<notification name="MissingString">
A sequência [STRING_NAME] está faltando do strings.xml
@@ -2376,7 +1907,7 @@ Gostaria de visitar o site do [SECOND_LIFE] para configurá-lo?
[FIRST] [LAST] está Offline
</notification>
<notification name="AddSelfFriend">
- Você não pode adicionar a si mesmo como amigo
+ Você é o máximo! Mesmo assim, não dá para adicionar a si mesmo(a) como amigo(a).
</notification>
<notification name="UploadingAuctionSnapshot">
Fazendo o upload das fotos do site da web e do mundo...
@@ -2395,7 +1926,7 @@ Gostaria de visitar o site do [SECOND_LIFE] para configurá-lo?
Feito o download de Terrain.raw
</notification>
<notification name="GestureMissing">
- O Gesto [NAME] não se encontra na base de dados
+ O gesto [NAME] não está no banco de dados.
</notification>
<notification name="UnableToLoadGesture">
Impossível de carregar o gesto [NAME].
@@ -2408,14 +1939,14 @@ Por favor, tente novamente.
Impossível carregar o landmark. Por favor, tente de novo.
</notification>
<notification name="CapsKeyOn">
- Seu botão CAPS LOCK está ativado.
-Como isto afeta a senha digitada, você provavelmente desejará desativá-lo.
+ A tecla Maiúsc. está ligada.
+Ela pode afetar a digitação da senha.
</notification>
<notification name="NotecardMissing">
Notecard foi perdido no banco de dados.
</notification>
<notification name="NotecardNoPermissions">
- Permissões insuficientes para visualizar o notecard
+ Você não está autorizado a ler esta nota.
</notification>
<notification name="RezItemNoPermissions">
Sem permissões suficientes para criar objetos.
@@ -2453,11 +1984,11 @@ Por favor, tente novamente.
Por favor, tente novamente.
</notification>
<notification name="CannotBuyObjectsFromDifferentOwners">
- Impossível comprar objetos de diferentes compradores ao mesmo tempo.
-Por favor, compre apenas um objeto.
+ Só dá para comprar objetos de um dono por vez.
+Selecione só um objeto.
</notification>
<notification name="ObjectNotForSale">
- Este objeto não está a venda.
+ Este objeto não está à venda.
</notification>
<notification name="EnteringGodMode">
Entrando em god mode, nível [LEVEL]
@@ -2466,10 +1997,10 @@ Por favor, compre apenas um objeto.
Saindo do god mode, nível [LEVEL]
</notification>
<notification name="CopyFailed">
- A cópia falhou porque você não tem permissão para copiar.
+ Você não está autorizado a copiar isso.
</notification>
<notification name="InventoryAccepted">
- [NAME] aceitou sua oferta de inventário.
+ [NAME] recebeu sua oferta de inventário.
</notification>
<notification name="InventoryDeclined">
[NAME] rejeitou sua oferta de inventário.
@@ -2484,12 +2015,14 @@ Por favor, compre apenas um objeto.
Seu cartão de visita foi negado.
</notification>
<notification name="TeleportToLandmark">
- Agora que você chegou à mainland, você pode se teletransportar para locais como &apos;[NAME]&apos; clicando no botão de Inventário, no canto direito inferior de sua tela, e selecionando a pasta Landmarks.
-Dê um duplo-clique na landmark e clique Teletransportar para viajar para o local desejado.
+ Para se teletransportar para lugares como &apos;[NAME]&apos;, abra o painel &apos;Lugares&apos; à direita da tela e selecione a guia Marcos.
+Basta clicar em qualquer marco e depois clicar em &apos;Teletransportar&apos; na parte inferior da tela.
+(Também é possível clicar duas vezes no marco, ou clicar no marco com o botão direito e selecionar &apos;Teletransportar&apos;.)
</notification>
<notification name="TeleportToPerson">
- Agora que você chegou à mainland, você pode contatar residentes como &apos;[NAME]&apos; clicando no botão de Inventário, canto direito inferior de sua tela, e selecionando a pasta Cartões de Visita.
-Dê um duplo-clique num cartão de visita e em Mensagem Instantânea, digite sua mensagem.
+ Para entrar em contato com residentes como &apos;&apos;[NAME]&apos;, abra o painel &apos;Pessoas&apos; à direita da tela.
+Selecione o residente da lista e clique em &apos;MI&apos; na parte de baixo do painel.
+(Também é possível clicar duas vezes no nome, ou clicar no nome com o botão direito e selecionar &apos;MI&apos;.)
</notification>
<notification name="CantSelectLandFromMultipleRegions">
Impossível selecionar terra nas fronteiras do servidor. Tente selecionar um pedaço menor de terra.
@@ -2511,6 +2044,9 @@ Dê um duplo-clique num cartão de visita e em Mensagem Instantânea, digite sua
<notification name="SystemMessage">
[MESSAGE]
</notification>
+ <notification name="PaymentRecived">
+ [MESSAGE]
+ </notification>
<notification name="EventNotification">
Notificação de evento:
@@ -2533,8 +2069,20 @@ Dê um duplo-clique num cartão de visita e em Mensagem Instantânea, digite sua
[NAMES]
</notification>
<notification name="NoQuickTime">
- O software QuickTime da Apple parece não estar instalado em seu sistema.
-Se você deseja ver fluxo de mídia em terrenos que aceitem isso, você deverá ir ao site do QickTime (http://www.apple.com/quicktime) e instalar o player do QuickTime.
+ Aparentemente o QuickTime da Apple ainda não foi instalado no seu computador.
+Para ver mídia em stream nas regiões que oferecem esse formato, vá ao [http://www.apple.com/quicktime site do QuickTime] e instale o QuickTime Player.
+ </notification>
+ <notification name="NoPlugin">
+ Nenhum plugin de mídia detectado para lidar com o tipo de mime &quot;[MIME_TYPE]&quot;. Este tipo de mídia não poderão ser acessados.
+ </notification>
+ <notification name="MediaPluginFailed">
+ Falha no plugin de mídia abaixo:
+ [PLUGIN]
+
+Instale o plugin novamente ou contate o fabricante se o problema persistir.
+ <form name="form">
+ <ignore name="ignore" text="Falha do plugin de mídia"/>
+ </form>
</notification>
<notification name="OwnedObjectsReturned">
Os objetos que lhe pertencem no lote selecionado do terreno, voltaram ao seu inventário.
@@ -2553,23 +2101,26 @@ Objetos não transferíveis dados ao grupo foram deletados.
<notification name="UnOwnedObjectsReturned">
Os objetos no lote selecionado que NÃO são seus, voltaram aos seus donos.
</notification>
+ <notification name="ServerObjectMessage">
+ Mensagem de [NAME]:
+[MSG]
+ </notification>
<notification name="NotSafe">
- Esta terra permite que você sofra ataques.
-Você pode ser ferido aqui. Se você morrer, você será teletransportado à sua posição inicial.
+ A opção &apos;danos&apos; desta região está ativada.
+Você pode se dar mal aqui. Se você morre, você será teletransportado de volta para casa.
</notification>
<notification name="NoFly">
- Este terreno tem a opção Voar desabilitada.
-Ou seja, você não pode voar aqui.
+ Esta área desativou a opção de voar.
+Logo, não é possível voar aqui.
</notification>
<notification name="PushRestricted">
- Esta terra é “Não empurre”.
-Você não pode empurrar os outros, a não ser que seja o proprietário da terra.
+ Esta área não tolera empurrões. Não é possível empurrar os outros aqui, a não ser que você seja o proprietário.
</notification>
<notification name="NoVoice">
- O uso de voz está desabilitado nesta terra.
+ Esta área desativou o bate-papo de voz. Você não vai ouvir ninguém falar.
</notification>
<notification name="NoBuild">
- Este terreno tem a opção de construir desabilitada, ou seja, você não pode criar objetos aqui.
+ Esta área desativou a opção de construir. Não é possível construir ou fazer rez de objetos nesta área.
</notification>
<notification name="ScriptsStopped">
Um administrador não permitiu scripts temporariamente nesta região.
@@ -2578,10 +2129,12 @@ Você não pode empurrar os outros, a não ser que seja o proprietário da terra
Esta região não roda nenhum script.
</notification>
<notification name="NoOutsideScripts">
- Neste terreno, nenhum script funcionará, a não ser os scripts do próprio dono da terra.
+ Esta região não permite scripts de fora.
+
+Os únicos scripts que funcionam são os do proprietário do terreno.
</notification>
<notification name="ClaimPublicLand">
- Pode apenas reclamar terreno público na região em que você está.
+ Você só pode reivindicar terrenos públicos na região onde você está.
</notification>
<notification name="RegionTPAccessBlocked">
Você não é permitido na Região devido à sua Classificação de maturidade. Você precisa validar sua idade e/ou instalar o último Visualizador.
@@ -2594,16 +2147,9 @@ Por favor, vá ao Banco de Conhecimento para detalhes sobre o acesso de áreas c
<notification name="NoTeenGridAccess">
Sua conta não pode conectar a esta região da grade teen.
</notification>
- <notification name="NoHelpIslandTP">
- Você não pode se tele-transportar de volta à Ilha de Ajuda.
-Vá para a Ilha de Ajuda Pública para repetir este tutorial.
- </notification>
<notification name="ImproperPaymentStatus">
Você não tem o status de pagamento adequado para entrar nesta região.
</notification>
- <notification name="MustGetAgeRegion">
- Você precisa ter sua idade verificada para entrar nesta região.
- </notification>
<notification name="MustGetAgeParcel">
Você precisa ter a idade verificada para entrar neste lote.
</notification>
@@ -2666,31 +2212,35 @@ Por favor, tente novamente em alguns instantes.
Nenhum lote válido foi encontrado.
</notification>
<notification name="ObjectGiveItem">
- Um objeto nomeado [OBJECTFROMNAME] do dono [FIRST] [LAST] deu a você [OBJECTTYPE] nomeado &apos;[OBJECTNAME]&apos;.
+ Um objeto chamado [OBJECTFROMNAME] de [NAME_SLURL] lhe deu [OBJECTTYPE]:
+[ITEM_SLURL]
<form name="form">
<button name="Keep" text="Segure"/>
<button name="Discard" text="Descarte"/>
- <button name="Mute" text="Mudo"/>
+ <button name="Mute" text="Bloquear"/>
</form>
</notification>
<notification name="ObjectGiveItemUnknownUser">
- Um objeto nomeado [OBJECTFROMNAME], de dono desconhecido, deu a você um [OBJECTTYPE] nomeado [OBJECTNAME].
+ Um objeto chamado [OBJECTFROMNAME] de (residente desconhecido) lhe deu [OBJECTTYPE]:
+[ITEM_SLURL]
<form name="form">
<button name="Keep" text="Segure"/>
<button name="Discard" text="Descarte"/>
- <button name="Mute" text="Mudo"/>
+ <button name="Mute" text="Bloquear"/>
</form>
</notification>
<notification name="UserGiveItem">
- [NAME]deu a voce um [OBJECTTYPE] nomeado &apos;[OBJECTNAME]&apos;.
+ [NAME_SLURL] lhe deu [OBJECTTYPE]:
+[ITEM_SLURL]
<form name="form">
<button name="Keep" text="Mantenha"/>
+ <button name="Show" text="Mostrar"/>
<button name="Discard" text="Descarte"/>
- <button name="Mute" text="Mudo"/>
</form>
</notification>
<notification name="GodMessage">
[NAME]
+
[MESSAGE]
</notification>
<notification name="JoinGroup">
@@ -2702,7 +2252,7 @@ Por favor, tente novamente em alguns instantes.
</form>
</notification>
<notification name="TeleportOffered">
- [NAME] ofereceu um teletransporte para seu local:
+ [NAME] quer te teletransportar para a região deles:
[MESSAGE]
<form name="form">
@@ -2729,6 +2279,9 @@ Por favor, tente novamente em alguns instantes.
<button name="Decline" text="Recusar"/>
</form>
</notification>
+ <notification name="FriendshipOffered">
+ Você convidou [TO_NAME] para ser seu amigo(a)
+ </notification>
<notification name="OfferFriendshipNoMessage">
[NAME] está lhe oferecendo sua amizade.
@@ -2753,12 +2306,12 @@ Isto adicionará uma anotação em seu inventário, de modo que você possa mand
</form>
</notification>
<notification name="RegionRestartMinutes">
- A região será reiniciada em [MINUTES] minutos.
-Se permanecer nesta região, você será desconectado.
+ Esta região será reiniciada em [MINUTES] minutos.
+Se permanecer aqui, você será desconectado.
</notification>
<notification name="RegionRestartSeconds">
- Região será reiniciada em [SECONDS] segundos.
-Se permanecer nesta região, você será desconectado.
+ Esta região será reiniciada em [SECONDS] segundos.
+Se permanecer aqui, você será desconectado.
</notification>
<notification name="LoadWebPage">
Carregar página da web [URL]?
@@ -2778,7 +2331,7 @@ Do objeto: [OBJECTNAME], dono: [NAME]?
Falhou ao procurar [TYPE] nomeado [DESC] no banco de dados.
</notification>
<notification name="InvalidWearable">
- O item que você está tentando vestir usa uma característica que seu Visualizador não lê. Por favor, atualize sua versão do [APP_NAME] para vestir este item.
+ O item que você está tentando usar tem um recurso que seu Visualizador não consegue ler. Atualize o [APP_NAME] para poder vestir esse item.
</notification>
<notification name="ScriptQuestion">
&apos;[OBJECTNAME]&apos;, um objeto pertencente a &apos;[NAME]&apos;, gostaria de:
@@ -2788,16 +2341,16 @@ Está OK?
<form name="form">
<button name="Yes" text="Sim"/>
<button name="No" text="Não"/>
- <button name="Mute" text="Mudo"/>
+ <button name="Mute" text="Bloquear"/>
</form>
</notification>
<notification name="ScriptQuestionCaution">
- &apos;[OBJECTNAME]&apos;, um objeto de &apos;[NAME]&apos;, gostaria de:
+ Um objeto chamado &apos;[OBJECTNAME]&apos;, de &apos;[NAME]&apos; gostaria de:
[QUESTIONS]
-Se você não confia neste objeto ou em seu criador, você deveria negar o pedido. Para informações adicionais clique no botão Detalhes.
+Se você não confia nos objetos deste autor, recuse-o.
-Autorizar este pedido?
+Deixar?
<form name="form">
<button name="Grant" text="Autorizar"/>
<button name="Deny" text="Negar"/>
@@ -2818,39 +2371,44 @@ Autorizar este pedido?
<button name="Ignore" text="Ignorar"/>
</form>
</notification>
+ <notification name="ScriptToast">
+ [FIRST] [LAST], &apos;[TITLE]&apos; está pedindo dados de usuário.
+ <form name="form">
+ <button name="Open" text="Abrir diálogo"/>
+ <button name="Ignore" text="Ignorar"/>
+ <button name="Block" text="Bloquear"/>
+ </form>
+ </notification>
<notification name="FirstBalanceIncrease">
- Você recebeu uma quantia de L$[AMOUNT].
-Objetos e outros usuários podem dar L$ a você.
-Seu saldo é mostrado no canto superior direito da tela.
+ Você acaba de ganhar L$[AMOUNT].
+Seu saldo em L$ está no canto direito superior.
</notification>
<notification name="FirstBalanceDecrease">
- Você pagou L$[AMOUNT].
-O seu balanço de dinheiro está sendo mostrado no canto superior direito da tela.
+ Você acaba de pagar L$[AMOUNT].
+Seu saldo em L$ está no canto direito superior.
+ </notification>
+ <notification name="BuyLindenDollarSuccess">
+ Obrigado e volte sempre!
+
+Seu saldo L$ será atualizado findo o processamento da transação. Se o processamento levar mais de 20 min, a transação pode vir a ser cancelada. Neste caso, o valor da compra será creditado ao seu saldo em US$.
+
+Para checar o status do pagamento, consulte seu Histórico de transações no [http://secondlife.com/account/ Painel]
</notification>
<notification name="FirstSit">
- Você está sentado.
-Use as setas (ou AWSD) para mudar a visão.
-Clique em &apos;Levantar&apos; para levantar.
+ Você está sentado(a).
+Use as teclas de seta (ou AWSD) para olhar à sua volta.
+Clique o botão &apos;Ficar de pé&apos; para ficar de pé.
</notification>
<notification name="FirstMap">
- Clique e arraste para movimentar o mapa.
-Dê um duplo clique para teletransportar-se.
-Use os controles à direita para achar coisas e mostrar fundos diferentes.
+ Clique a arraste o mapa para olhar à sua volta.
+Clique duas vezes para se teletransportar.
+Use os controles à direita para achar coisas e exibir outros planos de fundo.
</notification>
<notification name="FirstBuild">
- Você pode construir novos objetos em algumas áreas do [SECOND_LIFE].
-Use as ferramentas acima, à esquerda para construir e tente manter apertadas as teclas Ctrl ou Alt para mudar rapidamente as ferramentas.
-Aperte ESC para parar de construir.
- </notification>
- <notification name="FirstLeftClickNoHit">
- Clicando com esquerdo, você interage com os objetos especiais.
-Se o ponteiro do mouse mudar a uma mão, você pode interagir com o objeto.
-Clique com o direito que será mostrado sempre um menu das ações que você pode fazer.
+ Você abriu as Ferramentas de construção. Todos os objetos à sua volta foram criados com essas ferrametnas.
</notification>
<notification name="FirstTeleport">
- Esta região não permite teletransporte ponto-a-ponto. Assim, você foi teletransportado para o telehub mais próximo.
-Seu destino está assinalado com um farol alto.
-Siga a flecha vermelha até o farol, ou clique nela para apagar o farol.
+ Você só pode se teletransportar para certas áreas nesta região. A seta aponta o seu destino específico. Clique na seta para ignorá-la.
</notification>
<notification name="FirstOverrideKeys">
Suas chaves do movimento estão sendo seguras agora por um objeto.
@@ -2859,87 +2417,81 @@ Alguns objetos (como armas) requerem que você passe para mouselook para usá-lo
Pressione &apos;M&apos; para fazer isto.
</notification>
<notification name="FirstAppearance">
- Você está editando sua aparência.
-Para girar e ver em zoom, use as teclas de setas.
-Quando terminar, aperte &apos;Salvar Tudo&apos; para salvar sua aparência e sair.
-Você pode editar sua aparência quantas vezes quiser.
+ Você está editando sua aparência.
+Use as teclas de seta para olhar à sua volta.
+Quando terminar, clique em &apos;Salvar tudo&apos;.
</notification>
<notification name="FirstInventory">
- Este é o seu inventário, que contém objetos, notecards, roupas e outras coisas suas.
-* Para vestir um objeto ou uma pasta completa, arraste-o para si mesmo(a).
-* Para trzer um objeto ao mundo, arraste-o ao chão.
-* Para ler um notecard, dê um duplo-click nele.
+ Este é seu inventário, onde ficam todos os seus pertences.
+
+* Para vestir uma peça, arraste-a para o seu corpo.
+* Para fazer rez de um objeto, arraste-o para o chão.
+* Para ler uma anotação, clique duas vezes nela.
</notification>
<notification name="FirstSandbox">
- Esta é a região conhecida como sandbox.
-Os objetos que você constrói aqui podem ser deletados depois que você deixa a área.
-As sandboxes são limpas de forma periódica.
-Por favor, veja a informação no alto da tela, próxima ao nome da região.
-As regiões de sandbox não são comuns e são marcadas com símbolos.
+ Este é um sandbox, uma área onde residentes podem aprender a construir.
+
+Qualquer objeto deixado aqui será apagado quando você sair. Não se esqueça de clicar duas vezes e selecionar &apos;Pegar&apos; para levar seu projeto para o seu inventário.
</notification>
<notification name="FirstFlexible">
- Este objeto tem a propriedade flexível.
-Objetos flexíveis não podem ser físicos e devem ser fantasmas até que a caixa de verificação seja desmarcada.
+ Este objeto é flexível. Flexis devem ser phantom, não físicos.
</notification>
<notification name="FirstDebugMenus">
- Você ativou o menu Avançado.
-Este menu contém funcionalidades úteis para desenvolvedores debugarem o [SECOND_LIFE].
-Para mostrar esse menu no Windows pressione Ctrl+Alt+D. No Mac pressione &#8997;&#8984;D.
+ Você abriu o menu Avançado.
+
+Para alternar este menu,
+ Windows Ctrl+Alt+D
+ Mac: ⌥⌘D
</notification>
<notification name="FirstSculptedPrim">
- Você está editando uma primitiva esculpida.
-Primitivas esculpidas requerem uma textura especial para especificar suas formas.
-Você encontrará exemplos dessas texturas na Biblioteca do Inventário.
- </notification>
- <notification name="FirstMedia">
- Você começou a tocar uma mídia. Mídias podem ser autorizadas a iniciar automaticamente se você assim escolher na janela de Preferências, sob Áudio/Vídeo. Atente para o risco de segurança que pode haver ao acessar websites de mídia que você não confia.
+ Você está editando um prim esculpido. Prims esculpidos requerem uma textura especial para definir o formato.
</notification>
<notification name="MaxListSelectMessage">
Você pode selecionar até [MAX_SELECT] itens desta lista.
</notification>
<notification name="VoiceInviteP2P">
- [NAME] está lhe convidando para uma conversa com voz.
-Clique Aceitar para atender, ou Recusar para recusar o convite. Clique Mudo para calar quem está chamando.
+ [NAME] está te convidando para um bate-papo de voz.
+Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique em Bloquear para bloquear ligações deste avatar.
<form name="form">
<button name="Accept" text="Aceitar"/>
<button name="Decline" text="Recusar"/>
- <button name="Mute" text="Mudo"/>
+ <button name="Mute" text="Bloquear"/>
</form>
</notification>
<notification name="AutoUnmuteByIM">
- [FIRST] [LAST] recebeu uma Mensagem Instantânea sua e automaticamente não está mais no modo mudo.
+ [FIRST] [LAST] recebeu uma MI e foi desbloqueado(a) automaticamente.
</notification>
<notification name="AutoUnmuteByMoney">
- [FIRST] [LAST] recebeu pagamento seu e automaticamente não está mais no modo mudo.
+ [FIRST] [LAST] recebeu dinheiro e foi desbloqueado(a) automaticamente.
</notification>
<notification name="AutoUnmuteByInventory">
- [FIRST] [LAST] recebeu inventário seu e automaticamente não está mais mudo.
+ [FIRST] [LAST] recebeu dinheiro e foi desbloqueado(a) automaticamente.
</notification>
<notification name="VoiceInviteGroup">
- [NAME] juntou-se a uma conversa com voz do grupo [GROUP].
-Clique Aceitar para atender, ou Recusar para recusar o convite. Clique Mudo para calar quem está chamando.
+ [NAME] atendeu uma ligação de bate-papo de voz com o grupo [GROUP].
+Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique em Bloquear para bloquear ligações deste avatar.
<form name="form">
<button name="Accept" text="Aceitar"/>
<button name="Decline" text="Recusar"/>
- <button name="Mute" text="Mudo"/>
+ <button name="Mute" text="Bloquear"/>
</form>
</notification>
<notification name="VoiceInviteAdHoc">
- [NAME] juntou-se a uma chamada de Conferência com voz...
-Clique Aceitar para juntar-se à chamada ou Recusar para recusar o convite. Clique Mudo para calar este usuário.
+ [NAME] atendeu uma ligação de teleconferência.
+Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique em Bloquear para bloquear ligações deste avatar.
<form name="form">
<button name="Accept" text="Aceitar"/>
<button name="Decline" text="Recusar"/>
- <button name="Mute" text="Mudo"/>
+ <button name="Mute" text="Bloquear"/>
</form>
</notification>
<notification name="InviteAdHoc">
- [NAME] está lhe convidando para uma conversa em conferência...
- Clique Aceitar para se juntar à conversa, ou Recusar para recusar o convite. Clique Mudo para calar este usuário.
+ [NAME] está te convidando para uma teleconferência de bate-papo.
+Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique em Bloquear para bloquear ligações deste avatar.
<form name="form">
<button name="Accept" text="Aceitar"/>
<button name="Decline" text="Recusar"/>
- <button name="Mute" text="Mudo"/>
+ <button name="Mute" text="Bloquear"/>
</form>
</notification>
<notification name="VoiceChannelFull">
@@ -2949,25 +2501,25 @@ Clique Aceitar para juntar-se à chamada ou Recusar para recusar o convite. Cliq
Desculpe-nos. Esta área atingiu seu limite de capacidade para conversas com voz. Favor tentar usar voz em outra área.
</notification>
<notification name="VoiceChannelDisconnected">
- Você foi desconectado de [VOICE_CHANNEL_NAME]. Voce será reconectado agora à Conversa com voz local.
+ Você saiu da ligação com [VOICE_CHANNEL_NAME]. Agora você será reconectado ao bate-papo local.
</notification>
<notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] desligou a chamada. Voce será reconectado agora à Conversa com voz local.
+ [VOICE_CHANNEL_NAME] encerrou a ligação. Agora você será reconectado ao bate-papo local.
</notification>
<notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] recusou sua chamada. Voce será reconectado agora à Conversa com voz local.
+ [VOICE_CHANNEL_NAME] recusou a ligação. Agora você será reconectado ao bate-papo local.
</notification>
<notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] não está disponível para aceitar sua chamada. Voce será reconectado agora à Conversa com voz local.
+ [VOICE_CHANNEL_NAME] não está disponível para atender sua ligação. Agora você será reconectado ao bate-papo local.
</notification>
<notification name="VoiceChannelJoinFailed">
- Falha na conexão com [VOICE_CHANNEL_NAME], tente novamente mais tarde. Voce será reconectado agora à Conversa com voz local.
+ Falha de conexão com [VOICE_CHANNEL_NAME]. Tente novamente mais tarde. Agora você será reconectado ao bate-papo local.
</notification>
<notification name="VoiceLoginRetry">
Estamos criando uma canal de voz para você. Isto pode levar até um minuto.
</notification>
<notification name="Cannot enter parcel: not a group member">
- Você não pode entrar nessa terra, você não é membro do grupo autorizado.
+ Só membros de um grupo podem acessar esta área.
</notification>
<notification name="Cannot enter parcel: banned">
Você não pode entrar nessa terra, você foi banido.
@@ -2982,18 +2534,58 @@ Clique Aceitar para juntar-se à chamada ou Recusar para recusar o convite. Cliq
Ocorreu um erro enquanto você tentava se conectar à conversa de voz de [VOICE_CHANNEL_NAME]. Favor tentar novamente mais tarde.
</notification>
<notification name="ServerVersionChanged">
- A região em que você entrou está rodando uma versão diferente de simulador. Clique aqui para mais detalhes.
+ Você chegou a uma região com uma versão diferente de servidor, que pode afetar o desempenho. [[URL] Consultar notas da versão.]
+ </notification>
+ <notification name="UnsupportedCommandSLURL">
+ O SLurl no qual você clicou não é suportado.
+ </notification>
+ <notification name="BlockedSLURL">
+ Um SLurl recebido de um navegador inidôneo foi bloqueado para a sua segurança.
</notification>
- <notification name="UnableToOpenCommandURL">
- A URL que vocÊ clicou não pode ser aberta no navegador web.
+ <notification name="ThrottledSLURL">
+ Vários SLurls foram recebidos de um navegador inidôneo em pouco tempo.
+Para sua segurança, os SLurls serão bloqueados por alguns instantes.
+ </notification>
+ <notification name="IMToast">
+ [MESSAGE]
+ <form name="form">
+ <button name="respondbutton" text="Responder"/>
+ </form>
+ </notification>
+ <notification name="AttachmentSaved">
+ Anexo salvo.
+ </notification>
+ <notification name="UnableToFindHelpTopic">
+ Nenhum tópico de ajuda foi encontrado com relação a este elemento.
+ </notification>
+ <notification name="ObjectMediaFailure">
+ Erro do servidor: Falha ao atualizar ou executar a mídia.
+&apos;[ERROR]&apos;
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TextChatIsMutedByModerator">
+ Seu texto de bate-papo foi silenciado pelo moderador.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="VoiceIsMutedByModerator">
+ Sua voz foi silenciada pelo moderador.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmClearTeleportHistory">
+ Tem certeza que deseja apagar todo o seu histórico de teletransporte?
+ <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+ </notification>
+ <notification name="BottomTrayButtonCanNotBeShown">
+ O botão selecionado não pode ser exibido no momento.
+O botão será exibido quando houver espaço suficente.
</notification>
<global name="UnsupportedCPU">
- A velocidade da sua CPU não suporta os requisitos mínimos exigidos.
</global>
<global name="UnsupportedGLRequirements">
- Você não parece ter os requisitos de hardware recomendados para rodar o [APP_NAME]. O [APP_NAME] exige uma placa gráfica OpenGL que tem apoio a multi- texturas. Se este for o caso, você pode se certificar de que tem os drivers mais recentes para sua placa gráfica, e os patches e pacotes de serviços para seu sistema operacional.
+ Aparentemente a sua máquina não atende os requisitos de hardware do [APP_NAME]. [APP_NAME] requer placas de vídeo OpenGL com suporte a multitexturas. Se sua place de vídeo tiver este perfil, atualize o driver da placa de vídeo, assim como patches e service packs do sistema operacional.
-Se continuar com problemas, por favor visite: http://www.secondlife.com/support
+Se você continuar a receber esta mensagem, consulte o [SUPPORT_SITE].
</global>
<global name="UnsupportedCPUAmount">
796
@@ -3007,10 +2599,8 @@ Se continuar com problemas, por favor visite: http://www.secondlife.com/support
<global name="UnsupportedRAM">
- A memória do seu sistema não suporta os requisitos mínimos exigidos.
</global>
- <global name="PermYes">
- Sim
- </global>
- <global name="PermNo">
- Não
+ <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+ Se você tem um terreno, seu terreno pode ser sua casa.
+Outra opção é procurar por lugares com a tag &apos;Infohub&apos; no mapa.
</global>
</notifications>
diff --git a/indra/newview/skins/default/xui/pt/panel_active_object_row.xml b/indra/newview/skins/default/xui/pt/panel_active_object_row.xml
new file mode 100644
index 0000000000..73f6b2225f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_active_object_row.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+ <string name="unknown_obj">
+ Objeto desconhecido
+ </string>
+ <text name="object_name">
+ Objeto sem nome
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml
new file mode 100644
index 0000000000..aa8fd0b2d2
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <panel name="panel_call_buttons">
+ <button label="Ligar" name="call_btn"/>
+ <button label="Desligar" name="end_call_btn"/>
+ <button label="Controles de voz" name="voice_ctrls_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
new file mode 100644
index 0000000000..ecaf062e41
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_list_item">
+ <string name="FormatSeconds">
+ [COUNT]s
+ </string>
+ <string name="FormatMinutes">
+ [COUNT]min
+ </string>
+ <string name="FormatHours">
+ [COUNT]h
+ </string>
+ <string name="FormatDays">
+ [COUNT]dias
+ </string>
+ <string name="FormatWeeks">
+ [COUNT]semanas
+ </string>
+ <string name="FormatMonths">
+ [COUNT]meses
+ </string>
+ <string name="FormatYears">
+ [COUNT]anos
+ </string>
+ <text name="avatar_name" value="Desconhecido"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
new file mode 100644
index 0000000000..c5f93d719a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="block_list_panel">
+ <text name="title_text">
+ Lista de bloqueados
+ </text>
+ <scroll_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
+ <button label="Bloquear residente..." label_selected="Bloquear residente..." name="Block resident..." tool_tip="Selecione o residente a bloquear"/>
+ <button label="Bloquear objeto por nome..." label_selected="Bloquear objeto por nome..." name="Block object by name..."/>
+ <button label="Desbloquear" label_selected="Desbloquear" name="Unblock" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_bottomtray.xml b/indra/newview/skins/default/xui/pt/panel_bottomtray.xml
new file mode 100644
index 0000000000..2a66620800
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_bottomtray.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+ <string name="SpeakBtnToolTip">
+ Liga e desliga o microfone
+ </string>
+ <string name="VoiceControlBtnToolTip">
+ Mostra/oculta os controles de voz
+ </string>
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="gesture_panel">
+ <gesture_combo_box label="Gesto" name="Gesture" tool_tip="Mostra/oculta os gestos"/>
+ </layout_panel>
+ <layout_panel name="movement_panel">
+ <button label="Movimentar" name="movement_btn" tool_tip="Mostra/oculta os controles de movimento"/>
+ </layout_panel>
+ <layout_panel name="cam_panel">
+ <button label="Exibir" name="camera_btn" tool_tip="Mostra/oculta os controles da câmera"/>
+ </layout_panel>
+ <layout_panel name="snapshot_panel">
+ <button label="" name="snapshots" tool_tip="Tirar foto"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_classified_info.xml b/indra/newview/skins/default/xui/pt/panel_classified_info.xml
new file mode 100644
index 0000000000..6f48a36182
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_classified_info.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_classified_info">
+ <text name="title" value="Dados do anúncio"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="classified_name" value="[nome]"/>
+ <text name="classified_location" value="[carregando...]"/>
+ <text name="content_type" value="[content type]"/>
+ <text name="category" value="[category]"/>
+ <check_box label="Renovar automaticamente todas as semanas" name="auto_renew"/>
+ <text name="price_for_listing" tool_tip="Preço do anúncio.">
+ L$ [PRICE]
+ </text>
+ <text name="classified_desc" value="[descrição]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <button label="Teletransportar" name="teleport_btn"/>
+ <button label="Mapa" name="show_on_map_btn"/>
+ <button label="Editar" name="edit_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml b/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml
new file mode 100644
index 0000000000..f8be9daf1b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+ <panel name="avatar_alpha_color_panel">
+ <texture_picker label="Alpha inferior" name="Lower Alpha" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Alpha de cima" name="Upper Alpha" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Cabeça Alpha" name="Head Alpha" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Olhos Alpha" name="Eye Alpha" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Cabelo alpha" name="Hair Alpha" tool_tip="Selecionar imagem"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_classified.xml b/indra/newview/skins/default/xui/pt/panel_edit_classified.xml
new file mode 100644
index 0000000000..a754c5f070
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_classified.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Editar anúncio" name="panel_edit_classified">
+ <panel.string name="location_notice">
+ (salvar para atualizar)
+ </panel.string>
+ <text name="title">
+ Editar anúncio
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <icon label="" name="edit_icon" tool_tip="Selecione uma imagem"/>
+ <text name="Name:">
+ Cargo:
+ </text>
+ <text name="description_label">
+ Descrição:
+ </text>
+ <text name="location_label">
+ Localização:
+ </text>
+ <text name="classified_location">
+ Carregando...
+ </text>
+ <button label="Usar configuração local" name="set_to_curr_location_btn"/>
+ <spinner label="L$" name="price_for_listing" tool_tip="Preço do anúncio" value="50"/>
+ <check_box label="Renovação automática semanal" name="auto_renew"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <button label="Salvar" name="save_changes_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml b/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml
new file mode 100644
index 0000000000..2c73e67c4a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_eyes_panel">
+ <panel name="avatar_eye_color_panel">
+ <texture_picker label="Íris" name="Iris" tool_tip="Selecionar imagem"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="eyes_main_tab" title="Olhos"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml b/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml
new file mode 100644
index 0000000000..6b4141e4a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+ <panel name="avatar_gloves_color_panel">
+ <texture_picker label="Tecido" name="Fabric" tool_tip="Selecionar imagem"/>
+ <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="gloves_main_tab" title="Luvas"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_hair.xml b/indra/newview/skins/default/xui/pt/panel_edit_hair.xml
new file mode 100644
index 0000000000..b49f5850aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_hair.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_hair_panel">
+ <panel name="avatar_hair_color_panel">
+ <texture_picker label="Texture" name="Texture" tool_tip="Selecionar imagem"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="hair_color_tab" title="Cor"/>
+ <accordion_tab name="hair_style_tab" title="Estilo"/>
+ <accordion_tab name="hair_eyebrows_tab" title="Sombrancelhas"/>
+ <accordion_tab name="hair_facial_tab" title="Faciais"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml b/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml
new file mode 100644
index 0000000000..dcccf76c26
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+ <panel name="avatar_jacket_color_panel">
+ <texture_picker label="Tecido de cima" name="Upper Fabric" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Tecido de baixo" name="Lower Fabric" tool_tip="Selecionar imagem"/>
+ <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="jacket_main_tab" title="Jaqueta"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pants.xml b/indra/newview/skins/default/xui/pt/panel_edit_pants.xml
new file mode 100644
index 0000000000..8cfa6933eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_pants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+ <panel name="avatar_pants_color_panel">
+ <texture_picker label="Tecido" name="Fabric" tool_tip="Selecionar imagem"/>
+ <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="pants_main_tab" title="Calças"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pick.xml b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml
new file mode 100644
index 0000000000..f56533652d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Editar destaques" name="panel_edit_pick">
+ <text name="title">
+ Editar destaques
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <icon label="" name="edit_icon" tool_tip="Selecione uma imagem"/>
+ <text name="Name:">
+ Cargo:
+ </text>
+ <text name="description_label">
+ Descrição:
+ </text>
+ <text name="location_label">
+ Localização:
+ </text>
+ <text name="pick_location">
+ Carregando...
+ </text>
+ <button label="Usar configuração local" name="set_to_curr_location_btn"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <button label="Salvar [WHAT]" name="save_changes_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
index a989cab167..d7e7d30a73 100644
--- a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
@@ -1,45 +1,48 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident"
- value="Residente" />
- <string name="AcctTypeTrial"
- value="Teste" />
- <string name="AcctTypeCharterMember"
- value="Estatuto do membro" />
- <string name="AcctTypeEmployee"
- value="Contratado da Linden Lab" />
- <string name="PaymentInfoUsed"
- value="Infor. de pagamento utilizadas" />
- <string name="PaymentInfoOnFile"
- value="Infor. de pagamento no arquivo" />
- <string name="NoPaymentInfoOnFile"
- value="Sem infor. de pagamento no arquivo" />
- <string name="AgeVerified"
- value="Idade Verificada" />
- <string name="NotAgeVerified"
- value="Idade não Verificada" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=pt
- </string>
- <panel name="scroll_content_panel">
- <panel name="data_panel" >
- <panel name="lifes_images_panel">
- <panel name="second_life_image_panel">
- <text name="second_life_photo_title_text">
- [SECOND_LIFE]:
- </text>
- </panel>
- </panel>
- <text name="title_partner_text" value="Parceiro:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="text_box3">
- Resposta no Modo Ocupado:
- </text>
- </panel>
- </panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Editar perfil" name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <string name="AcctTypeResident" value="Residente"/>
+ <string name="AcctTypeTrial" value="Teste"/>
+ <string name="AcctTypeCharterMember" value="Estatuto do membro"/>
+ <string name="AcctTypeEmployee" value="Contratado da Linden Lab"/>
+ <string name="PaymentInfoUsed" value="Infor. de pagamento utilizadas"/>
+ <string name="PaymentInfoOnFile" value="Infor. de pagamento no arquivo"/>
+ <string name="NoPaymentInfoOnFile" value="Sem infor. de pagamento no arquivo"/>
+ <string name="AgeVerified" value="Idade Verificada"/>
+ <string name="NotAgeVerified" value="Idade não Verificada"/>
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=pt
+ </string>
+ <string name="no_partner_text" value="Nenhum"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="data_panel">
+ <panel name="lifes_images_panel">
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Selecione uma imagem"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="real_world_photo_title_text" value="Mundo real:"/>
+ </panel>
+ <icon label="" name="real_world_edit_icon" tool_tip="Selecione uma imagem"/>
+ <text name="title_homepage_text">
+ Página web:
+ </text>
+ <check_box label="Mostrar nos resultados de busca" name="show_in_search_checkbox"/>
+ <text name="title_acc_status_text" value="Minha conta:"/>
+ <text name="my_account_link" value="[[URL] Abrir meu painel]"/>
+ <text name="acc_status_text" value="Residente. Dados de pagamento: não constam"/>
+ <text name="title_partner_text" value="Parceiro(a):"/>
+ <text name="partner_edit_link" value="[[URL] Editar]"/>
+ </panel>
+ </panel>
+ </scroll_container>
+ <panel name="profile_me_buttons_panel">
+ <button label="Salvar alterações" name="save_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml
new file mode 100644
index 0000000000..6a03c2e2ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shape_panel">
+ <panel name="avatar_sex_panel">
+ <text name="gender_text">
+ Sexo:
+ </text>
+ <radio_group name="sex_radio">
+ <radio_item label="Feminino" name="radio"/>
+ <radio_item label="Masculino" name="radio2"/>
+ </radio_group>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shape_body_tab" title="Corpo"/>
+ <accordion_tab name="shape_head_tab" title="Cabeça"/>
+ <accordion_tab name="shape_eyes_tab" title="Olhos"/>
+ <accordion_tab name="shape_ears_tab" title="Orelhas"/>
+ <accordion_tab name="shape_nose_tab" title="Nariz"/>
+ <accordion_tab name="shape_mouth_tab" title="Boca"/>
+ <accordion_tab name="shape_chin_tab" title="Queixo"/>
+ <accordion_tab name="shape_torso_tab" title="Tronco"/>
+ <accordion_tab name="shape_legs_tab" title="Pernas"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml
new file mode 100644
index 0000000000..e9d4207e49
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shirt_panel">
+ <panel name="avatar_shirt_color_panel">
+ <texture_picker label="tecido" name="Fabric" tool_tip="Clique para escolher uma foto"/>
+ <color_swatch label="Cor/Matiz" name="Color/Tint" tool_tip="Clique para abrir o selecionador de cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shirt_main_tab" title="Camisa"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml b/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml
new file mode 100644
index 0000000000..79cb641079
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+ <panel name="avatar_shoes_color_panel">
+ <texture_picker label="Tecido" name="Fabric" tool_tip="Selecionar imagem"/>
+ <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shoes_main_tab" title="Sapatos"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skin.xml b/indra/newview/skins/default/xui/pt/panel_edit_skin.xml
new file mode 100644
index 0000000000..e3caf9f6f7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_skin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skin_panel">
+ <panel name="avatar_skin_color_panel">
+ <texture_picker label="Tatuagens na cabeça" name="Head Tattoos" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Tatuagem parte de cima" name="Upper Tattoos" tool_tip="Selecionar imagem"/>
+ <texture_picker label="Tatuagem de baixo" name="Lower Tattoos" tool_tip="Selecionar imagem"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skin_color_tab" title="Cor da pele"/>
+ <accordion_tab name="skin_face_tab" title="Detalhe do rosto"/>
+ <accordion_tab name="skin_makeup_tab" title="Maquilagem"/>
+ <accordion_tab name="skin_body_tab" title="Detalhe do corpo"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml
new file mode 100644
index 0000000000..00ec0691ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skirt_panel">
+ <panel name="avatar_skirt_color_panel">
+ <texture_picker label="Tecido" name="Fabric" tool_tip="Selecionar imagem"/>
+ <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skirt_main_tab" title="Saia"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_socks.xml b/indra/newview/skins/default/xui/pt/panel_edit_socks.xml
new file mode 100644
index 0000000000..88abc74716
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_socks.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_socks_panel">
+ <panel name="avatar_socks_color_panel">
+ <texture_picker label="Tecido" name="Fabric" tool_tip="Selecionar imagem"/>
+ <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="socks_main_tab" title="Meias"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml
new file mode 100644
index 0000000000..c11d800171
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_tattoo_panel">
+ <panel name="avatar_tattoo_color_panel">
+ <texture_picker label="Tatoo de cabeça" name="Head Tattoo" tool_tip="Clique para escolher uma foto"/>
+ <texture_picker label="Tatoo da parte superior do corpo" name="Upper Tattoo" tool_tip="Clique para escolher uma foto"/>
+ <texture_picker label="Tatoo da parte inferior do corpo" name="Lower Tattoo" tool_tip="Clique para escolher uma foto"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml b/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml
new file mode 100644
index 0000000000..10c34a1c0a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+ <panel name="avatar_underpants_color_panel">
+ <texture_picker label="Tecido" name="Fabric" tool_tip="Selecionar imagem"/>
+ <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="underpants_main_tab" title="Roupa de baixo"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml
new file mode 100644
index 0000000000..fb7b919365
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+ <panel name="avatar_undershirt_color_panel">
+ <texture_picker label="Tecido" name="Fabric" tool_tip="Selecionar imagem"/>
+ <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>
+ </panel>
+ <accordion name="wearable_accordion">
+ <accordion_tab name="undershirt_main_tab" title="Camiseta"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml
new file mode 100644
index 0000000000..b85d481941
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Vestível" name="panel_edit_wearable">
+ <string name="edit_shape_title">
+ Editando forma
+ </string>
+ <string name="edit_skin_title">
+ Editando pele
+ </string>
+ <string name="edit_hair_title">
+ Editando cabelo
+ </string>
+ <string name="edit_eyes_title">
+ Editando os olhos
+ </string>
+ <string name="edit_shirt_title">
+ Editando camisa
+ </string>
+ <string name="edit_pants_title">
+ Editando calças
+ </string>
+ <string name="edit_shoes_title">
+ Editando sapatos
+ </string>
+ <string name="edit_socks_title">
+ Editando meias
+ </string>
+ <string name="edit_jacket_title">
+ Editando jaqueta
+ </string>
+ <string name="edit_skirt_title">
+ Editando saia
+ </string>
+ <string name="edit_gloves_title">
+ Editando luvas
+ </string>
+ <string name="edit_undershirt_title">
+ Editando camiseta
+ </string>
+ <string name="edit_underpants_title">
+ Editando roupa de baixo
+ </string>
+ <string name="edit_alpha_title">
+ Editando máscara Alpha
+ </string>
+ <string name="edit_tattoo_title">
+ Editando tatuagem
+ </string>
+ <string name="shape_desc_text">
+ Forma:
+ </string>
+ <string name="skin_desc_text">
+ Pele:
+ </string>
+ <string name="hair_desc_text">
+ Cabelo:
+ </string>
+ <string name="eyes_desc_text">
+ Olhos:
+ </string>
+ <string name="shirt_desc_text">
+ Camisa:
+ </string>
+ <string name="pants_desc_text">
+ Calças:
+ </string>
+ <string name="shoes_desc_text">
+ Sapatos:
+ </string>
+ <string name="socks_desc_text">
+ Meias:
+ </string>
+ <string name="jacket_desc_text">
+ Jaqueta:
+ </string>
+ <string name="skirt_skirt_desc_text">
+ Saia:
+ </string>
+ <string name="gloves_desc_text">
+ Luvas:
+ </string>
+ <string name="undershirt_desc_text">
+ Camiseta:
+ </string>
+ <string name="underpants_desc_text">
+ Roupa de baixo:
+ </string>
+ <string name="alpha_desc_text">
+ Máscara alpha:
+ </string>
+ <string name="tattoo_desc_text">
+ Tatuagem:
+ </string>
+ <text name="edit_wearable_title" value="Editando forma"/>
+ <panel label="Camisa" name="wearable_type_panel">
+ <text name="description_text" value="Forma:"/>
+ </panel>
+ <panel name="button_panel">
+ <button label="Salvar como" name="save_as_button"/>
+ <button label="Reverter" name="revert_button"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_friends.xml b/indra/newview/skins/default/xui/pt/panel_friends.xml
index d430d637ad..1bf7986825 100644
--- a/indra/newview/skins/default/xui/pt/panel_friends.xml
+++ b/indra/newview/skins/default/xui/pt/panel_friends.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="friends">
<string name="Multiple">
- Múltiplos amigos...
+ Diversos amigos
</string>
<scroll_list name="friend_list" tool_tip="Aperte shift ou control enquanto clica para selecionar múltiplos amigos">
<column name="icon_online_status" tool_tip="Status Online"/>
@@ -11,10 +11,10 @@
<column name="icon_edit_mine" tool_tip="Amigo pode editar, apagar ou pegar seus objetos"/>
<column name="icon_edit_theirs" tool_tip="Você pode editar os objetos deste amigo"/>
</scroll_list>
- <button width="86" label="MI/Chamar" name="im_btn" tool_tip="Abrir sessão de Mensagem Instantânea"/>
- <button width="86" label="Perfil" name="profile_btn" tool_tip="Mostrar foto, grupos e outras informações"/>
- <button width="86" label="Teletransp..." name="offer_teleport_btn" tool_tip="Oferecer a este amigo o teletransporte para sua localização atual"/>
- <button width="86" label="Pagar..." name="pay_btn" tool_tip="Dar Linden dólares (L$) a este amigo"/>
- <button width="86" label="Remover..." name="remove_btn" tool_tip="Remover esta pessoa de sua lista de amigos"/>
- <button width="86" label="Adicionar..." name="add_btn" tool_tip="Oferecer amizade a um residente"/>
+ <button label="MI/Chamar" name="im_btn" tool_tip="Abrir sessão de Mensagem Instantânea" width="86"/>
+ <button label="Perfil" name="profile_btn" tool_tip="Mostrar foto, grupos e outras informações" width="86"/>
+ <button label="Teletransportar" name="offer_teleport_btn" tool_tip="Oferecer a este amigo o teletransporte para sua localização atual" width="86"/>
+ <button label="Pagar" name="pay_btn" tool_tip="Dar Linden dólares (L$) a este amigo" width="86"/>
+ <button label="Tirar" name="remove_btn" tool_tip="Remover esta pessoa de sua lista de amigos" width="86"/>
+ <button label="Adicionar" name="add_btn" tool_tip="Oferecer amizade a um residente" width="86"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml
new file mode 100644
index 0000000000..9dc53d54eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <button label="Perfil do grupo" name="group_info_btn"/>
+ <panel name="panel_call_buttons">
+ <button label="Ligar para o grupo" name="call_btn"/>
+ <button label="Desligar" name="end_call_btn"/>
+ <button label="Abrir controles de voz" name="voice_ctrls_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_general.xml b/indra/newview/skins/default/xui/pt/panel_group_general.xml
index 226011c138..6ff4f82ba7 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_general.xml
@@ -1,70 +1,37 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Geral" name="general_tab">
- <string name="help_text">
- A aba Geral contém informações gerais sobre este grupo, a lista dos donos e membros visíveis, preferências gerais do grupo e opções dos membros. Passe o mouse sobre as opções para mais ajuda.
- </string>
- <string name="group_info_unchanged">
- Informações gerais do grupo foram modificadas
- </string>
- <button label="?" label_selected="?" name="help_button"/>
- <line_editor label="Digite o nome do seu novo grupo aqui" name="group_name_editor"/>
- <text name="group_name">
- Digite o nome do seu novo grupo aqui
- </text>
- <text name="prepend_founded_by">
- Fundado por:
- </text>
- <text name="founder_name" left_delta="74" >
- (espera)
- </text>
- <text name="group_charter_label">
- Declaração do Grupo
- </text>
- <texture_picker label="Insígnia do Grupo" name="insignia" tool_tip="Clique para escolher uma imagem"/>
+ <panel.string name="help_text">
+ A guia Geral contém informações gerais sobre o grupo, uma lista de membros, preferências do grupo e opções para membros.
+
+Para obter mais ajuda, passe o mouse sobre as opções.
+ </panel.string>
+ <panel.string name="group_info_unchanged">
+ Informações gerais do grupo modificadas.
+ </panel.string>
+ <panel.string name="incomplete_member_data_str">
+ Recuperando dados do membro
+ </panel.string>
<text_editor name="charter">
Declaração do grupo
</text_editor>
- <button label="Unir (L$0)" label_selected="Unir (L$0)" name="join_button"/>
- <button label="Vista detalhada" label_selected="Vista detalhada" name="info_button"/>
- <text name="text_owners_and_visible_members">
- Proprietários &amp; Membros visíveis
- </text>
- <text name="text_owners_are_shown_in_bold">
- (Proprietários são mostrados em negrito )
- </text>
<name_list name="visible_members">
- <name_list.columns label="Nome do membro" name="name"/>
+ <name_list.columns label="Membro" name="name"/>
<name_list.columns label="Título" name="title"/>
- <name_list.columns label="Último login" name="online"/>
</name_list>
- <text name="text_group_preferences">
- Preferências do Grupo
+ <text name="active_title_label">
+ Meu cargo
</text>
+ <combo_box name="active_title" tool_tip="Define o cargo que é exibido com o nome do seu avatar quando o grupo está ativo."/>
+ <check_box label="Receber avisos do grupo" name="receive_notices" tool_tip="Define o seu recebimento de avisos deste grupo. Desmarque esta opção se o grupo envia spam."/>
+ <check_box label="Mostrar no meu perfil" name="list_groups_in_profile" tool_tip="Define se você deseja incluir este grupo no seu perfil."/>
<panel name="preferences_container">
- <check_box label="Mostre na busca" name="show_in_group_list" tool_tip="Deixe as pessoas verem este grupo nos resultados de busca."/>
- <check_box label="Adesão aberta" name="open_enrollement" tool_tip="Definir se este grupo permite que novos membros entrem sem serem convidados"/>
- <check_box label="Taxa de adesão:" name="check_enrollment_fee" tool_tip="Define se é necessária uma taxa de adesão para se unir ao grupo."/>
- <spinner width="60" left_delta="120" name="spin_enrollment_fee" tool_tip="Os novos membros devem pagar esta taxa para se unir ao grupo quando a Taxa de Adesão está marcada."/>
- <combo_box width="170" name="group_mature_check" tool_tip="Define se a informação do seu grupo é considerada mature.">
- <combo_box.item name="select_mature" label="- Selecionar Maturidade -"/>
- <combo_box.item name="mature" label="Conteúdo Mature"/>
- <combo_box.item name="pg" label="Conteúdo PG"/>
+ <check_box label="Adesão aberta" name="open_enrollement" tool_tip="Controla a entrada de novos membros, com ou sem convite."/>
+ <check_box label="Taxa de associação" name="check_enrollment_fee" tool_tip="Controla a cobrança de uma taxa de associação ao grupo."/>
+ <spinner label="L$" left_delta="120" name="spin_enrollment_fee" tool_tip="Se a opção &apos;Taxa de associação&apos; estiver marcada, novos membros precisam pagar o valor definido para entrar no grupo." width="60"/>
+ <combo_box name="group_mature_check" tool_tip="Define se a informação do seu grupo é considerada mature." width="170">
+ <combo_box.item label="Conteúdo PG" name="pg"/>
+ <combo_box.item label="Conteúdo Mature" name="mature"/>
</combo_box>
- <panel name="title_container">
- <text name="active_title_label">
- Meu título ativo
- </text>
- <combo_box name="active_title" tool_tip="Define o título que aparece em seu avatar quando o grupo estiver ativo."/>
- </panel>
- <check_box label="Receber notícias do grupo" name="receive_notices" tool_tip="Define se Você deseja receber notícias deste grupo. Desmarque esta caixa se o grupo está lhe fazendo spam."/>
- <check_box label="Listar grupo no meu perfil" name="list_groups_in_profile" tool_tip="Define se você deseja listar este grupo no seu Perfil"/>
+ <check_box initial_value="true" label="Mostre na busca" name="show_in_group_list" tool_tip="Incluir o grupo nos resultados de busca"/>
</panel>
- <string name="incomplete_member_data_str">
- Recuperando dados do membro
- </string>
- <string name="confirm_group_create_str">
- Criar este grupo irá custar L$100.
-Você está realmente, realmente, REALMENTE seguro que deseja gastar L$100 para criar este grupo?
-Esteja consciente de que se ninguém mais se juntar a este grupo dentro de 48 horas, este será dissolvido e o nome não estará disponível para uso futuro.
- </string>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml
new file mode 100644
index 0000000000..c547e4c646
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sobre o grupo" name="GroupInfo">
+ <panel.string name="default_needs_apply_text">
+ As mudanças feitas nesta guia ainda não foram salvas
+ </panel.string>
+ <panel.string name="want_apply_text">
+ Deseja salvar essas mudanças?
+ </panel.string>
+ <panel.string name="group_join_btn">
+ Entrar (L$[AMOUNT])
+ </panel.string>
+ <panel.string name="group_join_free">
+ Grátis
+ </panel.string>
+ <text name="group_name" value="Carregando..."/>
+ <line_editor label="Digite o nome do grupo aqui" name="group_name_editor"/>
+ <texture_picker label="" name="insignia" tool_tip="Selecionar imagem"/>
+ <text name="prepend_founded_by">
+ Fundador:
+ </text>
+ <name_box initial_value="(pesquisando)" name="founder_name"/>
+ <text name="join_cost_text">
+ Grátis
+ </text>
+ <button label="ENTRAR AGORA!" name="btn_join"/>
+ <accordion name="groups_accordion">
+ <accordion_tab name="group_general_tab" title="Público geral"/>
+ <accordion_tab name="group_roles_tab" title="Cargos"/>
+ <accordion_tab name="group_notices_tab" title="Avisos"/>
+ <accordion_tab name="group_land_tab" title="Terrenos/Bens"/>
+ </accordion>
+ <panel name="button_row">
+ <button label="Crie" label_selected="Novo grupo" name="btn_create"/>
+ <button label="Salvar" label_selected="Salvar" name="btn_apply"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_invite.xml b/indra/newview/skins/default/xui/pt/panel_group_invite.xml
index a02a17139b..4ed1b950a4 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_invite.xml
@@ -1,23 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Convidar um membro" name="invite_panel" width="224">
+ <panel.string name="confirm_invite_owner_str">
+ Você tem certeza de que deseja convidar novo(s) proprietário(s)? Esta ação é permanente!
+ </panel.string>
+ <panel.string name="loading">
+ (carregando...)
+ </panel.string>
+ <panel.string name="already_in_group">
+ Alguns avatares já estão nesse grupo e portanto não foram convidados.
+ </panel.string>
<text name="help_text" width="214">
Voce pode selecionar vários residentes
para convidar ao seu grupo. Clique
&apos;Abrir Seletor de Residente&apos; para iniciar.
</text>
<button label="Abrir Seletor de Residente" name="add_button" tool_tip=""/>
- <name_list name="invitee_list" tool_tip="Mantenha apertada a tecla Control e clique nos nomes dos residentes para uma seleção múltipla."/>
- <button left_delta="-7" width="214" label="Remove os selecionados acima da lista" name="remove_button" tool_tip="Remove os residentes selecionados acima da lista de convite."/>
+ <name_list name="invitee_list" tool_tip="Pressione Ctrl enquanto clica nos nomes dos residentes"/>
+ <button label="Remove os selecionados acima da lista" left_delta="-7" name="remove_button" tool_tip="Exclui os residentes selecionados acima da lista de convidados" width="214"/>
<text name="role_text">
Escolha que Função atribuir a eles:
</text>
- <combo_box name="role_name" tool_tip="Escolha a partir da lista de Funções autorizadas a você para inclusão de membros."/>
+ <combo_box name="role_name" tool_tip="Selecione o cargo da lista de cargos que você pode designar a membros"/>
<button label="Mandar convites" name="ok_button"/>
<button label="Cancelar" name="cancel_button"/>
- <string name="confirm_invite_owner_str">
- Você tem certeza de que deseja convidar novo(s) proprietário(s)? Esta ação é permanente!
- </string>
- <string name="loading">
- (carregando...)
+ <string name="GroupInvitation">
+ Convite
</string>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml
index 5b09363e3c..aa7c7de75f 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Terra &amp; L$" name="land_money_tab">
<string name="help_text">
- Lotes pertencentes ao grupo são listados adiante, com os detalhes de contribuição. Um aviso aparece até que o Total de Terra em Uso seja menor ou igual à Contribuição Total. As abas de Planejamento, Detalhes e Vendas fornecem informações sobre as finanças do grupo.
+ Será exibido um aviso até o Total de terrenos usados for igual ou inferior à contribuição total.
</string>
<button label="?" name="help_button"/>
<string name="cant_view_group_land_text">
- Você não tem permissão para ver as terras pertencentes ao grupo.
+ Você não está autorizado a acessar terrenos de grupos
</string>
<string name="cant_view_group_accounting_text">
- Você não tem permissão para ver as informações sobre as contas do grupo.
+ Você não está autorizado a acessar os dados de contabilidade do grupo.
</string>
<string name="loading_txt">
Carregando...
@@ -17,68 +17,67 @@
Terra percentente ao grupo
</text>
<scroll_list name="group_parcel_list">
- <column label="Nome do Lote" name="name"/>
+ <column label="Lote" name="name"/>
<column label="Região" name="location"/>
<column label="Tipo" name="type"/>
<column label="Área" name="area"/>
</scroll_list>
- <button label="Mostrar no Mapa" label_selected="Mostrar no Mapa" name="map_button" left="282" width="130"/>
+ <button label="Mapa" label_selected="Mapa" left="282" name="map_button" width="130"/>
<text name="total_contributed_land_label">
- Contribuição Total:
+ Total contribuído:
</text>
<text name="total_contributed_land_value">
[AREA] m²
</text>
<text name="total_land_in_use_label">
- Total de Terra em Uso:
+ Total em uso:
</text>
<text name="total_land_in_use_value">
[AREA] m²
</text>
<text name="land_available_label">
- Terra Disponível:
+ Disponíveis:
</text>
<text name="land_available_value">
[AREA] m²
</text>
<text name="your_contribution_label">
- Sua Contribuição:
+ Sua contribuição:
</text>
<string name="land_contrib_error">
- Não é possível definir sua contribuição para o terreno.
+ Não foi possível definir sua contribuição
</string>
<text name="your_contribution_units">
- ( m² )
+ m²
</text>
<text name="your_contribution_max_value">
- ([AMOUNT] máxima)
+ ([AMOUNT] max)
</text>
<text name="group_over_limit_text">
- Membros do grupo precisam contribuir com mais créditos de Terra para
-garantir a terra em uso.
+ O terreno em uso requer mais créditos
</text>
<text name="group_money_heading">
Grupo L$
</text>
<tab_container name="group_money_tab_container">
- <panel label="Planejamento" name="group_money_planning_tab">
+ <panel label="PLANEJAMENTO" name="group_money_planning_tab">
<text_editor name="group_money_planning_text">
- Computando..
+ Carregando...
</text_editor>
</panel>
- <panel label="Detalhes" name="group_money_details_tab">
+ <panel label="DETALHES" name="group_money_details_tab">
<text_editor name="group_money_details_text">
- Computando...
+ Carregando...
</text_editor>
- <button label="&lt; Mais Cedo" label_selected="&lt; Cedo" name="earlier_details_button" tool_tip="Voltar no Tempo"/>
- <button label="Mais Tarde &gt;" label_selected="Tarde &gt;" name="later_details_button" tool_tip="Adiantar o Tempo"/>
+ <button label="&lt; Mais Cedo" label_selected="&lt; Cedo" name="earlier_details_button" tool_tip="Atrás"/>
+ <button label="Mais Tarde &gt;" label_selected="Tarde &gt;" name="later_details_button" tool_tip="Próximo"/>
</panel>
- <panel label="Vendas" name="group_money_sales_tab">
+ <panel label="VENDAS" name="group_money_sales_tab">
<text_editor name="group_money_sales_text">
- Computando...
+ Carregando...
</text_editor>
- <button label="&lt; Mais Cedo" label_selected="&lt; Mais Cedo" name="earlier_sales_button" tool_tip="Voltar no Tempo"/>
- <button label="Mais Tarde &gt;" label_selected="Mais Tarde &gt;" name="later_sales_button" tool_tip="Adiantar o Tempo"/>
+ <button label="&lt; Mais Cedo" label_selected="&lt; Mais Cedo" name="earlier_sales_button" tool_tip="Atrás"/>
+ <button label="Mais Tarde &gt;" label_selected="Mais Tarde &gt;" name="later_sales_button" tool_tip="Próximo"/>
</panel>
</tab_container>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
new file mode 100644
index 0000000000..c9fd7cdfe3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+ <text name="group_name" value="Desconhecido"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_notices.xml b/indra/newview/skins/default/xui/pt/panel_group_notices.xml
index d5c0f01e33..66252a0473 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_notices.xml
@@ -1,58 +1,54 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Notícias" name="notices_tab">
- <text name="help_text">
+ <panel.string name="help_text">
As notícias são uma maneira rápida de comunicar-se através de um grupo transmitindo uma mensagem e entregando um item anexo, opcionalmente. As notícias vão apenas a membros do grupo que têm a função habilitada para receber notícias. Você pode desligar Notícias na aba Geral.
- </text>
- <text name="no_notices_text">
- Não existem notícias anteriores.
- </text>
- <button label="?" label_selected="?" name="help_button"/>
- <text name="lbl">
- Arquivo de notícias do grupo
- </text>
+ </panel.string>
+ <panel.string name="no_notices_text">
+ Não há nenhum aviso antigo
+ </panel.string>
<text name="lbl2">
- As notícias são mantidas por 14 dias.
-Listas de aviso estão limitadas a 200 por grupo, diariamente.
+ Cada aviso é armazenado por 14 dias.
+Cada grupo pode enviar no máximo 200 avisos/dia
</text>
<scroll_list name="notice_list">
- <column label="Assunto" name="subject"/>
- <column label="Para" name="from"/>
- <column label="Data" name="date"/>
+ <scroll_list.columns label="Assunto" name="subject"/>
+ <scroll_list.columns label="Para" name="from"/>
+ <scroll_list.columns label="Data" name="date"/>
</scroll_list>
<text name="notice_list_none_found">
- Nenhum encontrado.
+ Nenhum resultado foi encontrado.
</text>
- <button label="Criar nova notícia" label_selected="Criar nova notícia" name="create_new_notice"/>
- <button label="Atualizar" label_selected="Atualizar Lista" name="refresh_notices"/>
+ <button label="Criar um novo aviso" label_selected="Criar nova notícia" name="create_new_notice" tool_tip="Criar um novo aviso"/>
+ <button label="Atualizar" label_selected="Atualizar Lista" name="refresh_notices" tool_tip="Atualizar lista de avisos"/>
<panel label="Criar nova notícia" name="panel_create_new_notice">
<text name="lbl">
Criar uma notícia
</text>
- <text name="lbl2">
- Você pode adicionar um item simples à notícia, arrastando-o do seu Inventário para o painel. Itens anexados devem ser copiáveis e transferíveis e você não pode mandar uma pasta.
- </text>
- <text name="lbl3" left="20">
+ <text left="20" name="lbl3">
Assunto:
</text>
- <line_editor name="create_subject" width="251" left_delta="61"/>
- <text name="lbl4" left="15" width="60">
+ <line_editor left_delta="61" name="create_subject" width="251"/>
+ <text left="15" name="lbl4" width="60">
Mensagem:
</text>
- <text_editor name="create_message" left_delta="66" width="330"/>
+ <text_editor left_delta="66" name="create_message" width="330"/>
<text name="lbl5" width="68">
Anexo:
</text>
- <line_editor name="create_inventory_name" width="190" left_delta="74"/>
- <button label="Remover o anexo" label_selected="Remover o anexo" name="remove_attachment"/>
+ <line_editor left_delta="74" name="create_inventory_name" width="190"/>
+ <text name="string">
+ Arrastar e soltar o item aqui para anexá-lo:
+ </text>
+ <button label="Tirar" label_selected="Remover o anexo" name="remove_attachment"/>
<button label="Enviar" label_selected="Enviar" name="send_notice"/>
- <panel name="drop_target" tool_tip="Arraste um item do inventário para dentro da caixa de mensagem para enviá-lo com a notícia. Você deve ter permissão para copiar e transferir o objeto, para enviá-lo com a notícia."/>
+ <group_drop_target name="drop_target" tool_tip="Arrastar um item do inventário para a caixa para enviá-lo com o aviso. É preciso ter autorização de cópia e transferência do item para anexá-lo ao aviso."/>
</panel>
<panel label="Visualizar Notícia Anterior" name="panel_view_past_notice">
<text name="lbl">
Notícia arquivada
</text>
<text name="lbl2">
- Para enviar uma notícia nova, clique no botão &apos;Criar Nova Notícia&apos; acima.
+ Para enviar um novo aviso, clique no botão +
</text>
<text name="lbl3">
Asunto:
@@ -60,6 +56,6 @@ Listas de aviso estão limitadas a 200 por grupo, diariamente.
<text name="lbl4">
Mensagem:
</text>
- <button label="Abrir o anexo" label_selected="Abrir o anexo" name="open_attachment"/>
+ <button label="Abrir anexo" label_selected="Abrir o anexo" name="open_attachment"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_notify.xml b/indra/newview/skins/default/xui/pt/panel_group_notify.xml
new file mode 100644
index 0000000000..5a8ea81074
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_group_notify.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_group_notify">
+ <panel label="header" name="header">
+ <text name="title" value="Nome do remetente / grupo"/>
+ </panel>
+ <text name="attachment" value="Anexo"/>
+ <button label="OK" name="btn_ok"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml
index 087cf0c107..cf9e9f2b8d 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_roles.xml
@@ -1,146 +1,104 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Membros e Funções" name="roles_tab">
- <string name="default_needs_apply_text">
- Existem alterações não aplicadas na sub-aba atual.
- </string>
- <string name="want_apply_text">
- Você quer submeter essas alterações?
- </string>
- <button label="?" name="help_button"/>
- <panel name="members_header">
- <text name="static">
- Membros e Funções
- </text>
- <text name="static2">
- São atribuídas funções com habilidades aos membros do grupo.
-Estes ajustes podem ser facilmente customizados para uma flexibilidade
-e organização maiores.
- </text>
- </panel>
- <panel name="roles_header">
- <text name="static">
- Funções
- </text>
- <text name="role_properties_modifiable">
- Selecionar uma função abaixo. Você pode modificar o nome, a descrição
-e o título do membro.
- </text>
- <text name="role_properties_not_modifiable">
- Selecione uma função abaixo para ver suas propriedades, membros e
-habilidades permitidas.
- </text>
- <text bottom_delta="-28" name="role_actions_modifiable">
- Você também pode atribuir habilidades à função.
- </text>
- <text name="role_actions_not_modifiable">
- Você pode ver, mas não pode alterar habilidades atribuídas.
- </text>
- </panel>
- <panel name="actions_header">
- <text name="static">
- Habilidades
- </text>
- <text name="static2">
- Você pode ver a descrição de uma habilidade e quais funções e membros
-podem executar essa habilidade.
- </text>
- </panel>
+ <panel.string name="default_needs_apply_text">
+ As mudanças feitas nesta guia ainda não foram salvas
+ </panel.string>
+ <panel.string name="want_apply_text">
+ Deseja salvar essas mudanças?
+ </panel.string>
<tab_container height="164" name="roles_tab_container">
- <panel height="148" label="Membros" name="members_sub_tab" tool_tip="Membros">
- <line_editor bottom="127" name="search_text"/>
- <button label="Pesquisar" name="search_button" width="75"/>
- <button label="Mostrar todos" name="show_all_button" left_delta="80"/>
- <name_list name="member_list" bottom_delta="-105" height="104" >
- <column label="Nome do membro" name="name"/>
- <column label="Tarifa doada" name="donated"/>
- <column label="Último login" name="online"/>
- </name_list>
- <button label="Convidar Novo Membro..." name="member_invite" width="165"/>
- <button label="Ejetar do Grupo" name="member_eject"/>
- <string name="help_text">
+ <panel height="148" label="MEMBROS" name="members_sub_tab" tool_tip="Membros">
+ <panel.string name="help_text">
Você pode adicionar ou remover as funções designadas aos membros. Selecione vários membros, segurando a tecla Ctrl e clicando em seus nomes.
- </string>
+ </panel.string>
+ <filter_editor label="Filtrar por membro" name="filter_input"/>
+ <name_list bottom_delta="-105" height="104" name="member_list">
+ <name_list.columns label="Membro" name="name"/>
+ <name_list.columns label="Doações" name="donated"/>
+ <name_list.columns label="Status" name="online"/>
+ </name_list>
+ <button label="Convidar" name="member_invite" width="165"/>
+ <button label="Ejetar" name="member_eject"/>
</panel>
- <panel height="148" label="Funções" name="roles_sub_tab">
- <line_editor bottom="127" name="search_text"/>
- <button label="Busca" name="search_button" width="75"/>
- <button label="Mostrar todos" name="show_all_button" left_delta="80"/>
- <scroll_list name="role_list" bottom_delta="-104" height="104">
- <column label="Nome da função" name="name"/>
- <column label="Título" name="title"/>
- <column label="Membro" name="members"/>
+ <panel height="148" label="CARGOS" name="roles_sub_tab">
+ <panel.string name="help_text">
+ Cada cargo tem um nome e uma lista das funções que membros designados podem desempenhar.
+ Os membros podem ter um ou mais cargos.
+ Cada grupo pode ter 10 cargos, incluindo Membro e Dono do Grupo.
+ </panel.string>
+ <panel.string name="cant_delete_role">
+ As funções &apos;Todos&apos; e &apos;Owners&apos; são especiais e não podem ser apagadas.
+ </panel.string>
+ <panel.string name="power_folder_icon">
+ Inv_FolderClosed
+ </panel.string>
+ <filter_editor label="Filtrar por cargo" name="filter_input"/>
+ <scroll_list bottom_delta="-104" height="104" name="role_list">
+ <scroll_list.columns label="Cargo" name="name"/>
+ <scroll_list.columns label="Título" name="title"/>
+ <scroll_list.columns label="#" name="members"/>
</scroll_list>
- <button label="Criar nova função..." name="role_create"/>
+ <button label="Adicionar cargo" name="role_create"/>
<button label="Apagar função" name="role_delete"/>
- <string name="help_text">
- As funções têm um título e uma lista de habilidades
-permitidas que os membros podem executar. Os membros poderão ter um ou mais funções.
- Um grupo poderá ter até 10 funções, incluíndo as funções dos membros e do dono do grupo.
- </string>
- <string name="cant_delete_role">
- As funções &apos;todos&apos; e &apos;donos&apos; são especiais e não podem ser deletadas.
- </string>
</panel>
- <panel height="148" label="Habilidades" name="actions_sub_tab">
- <line_editor bottom="127" name="search_text"/>
- <button label="Busca" name="search_button" width="75"/>
- <button label="Mostrar todos" name="show_all_button" left_delta="80"/>
- <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Selecione uma habilidade para ver mais detalhes."/>
- <string name="help_text">
+ <panel height="148" label="FUNÇÕES" name="actions_sub_tab" tool_tip="Você pode ver a descrição de uma função e quais cargos e membros podem desempenhá-la.">
+ <panel.string name="help_text">
As habilidades permitem que os membros nas funções façam coisas específicas dentro do grupo.
Há uma grande variedade de habilidades.
- </string>
+ </panel.string>
+ <filter_editor label="Filtrar por função" name="filter_input"/>
+ <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Selecione uma função para ver mais detalhes"/>
</panel>
</tab_container>
<panel name="members_footer">
<text name="static">
- Funções atribuídas
+ Membros atribuídos
</text>
<text name="static2">
Habilidades permitidas
</text>
- <scroll_list name="member_allowed_actions" tool_tip="Para detalhes de cada habilidade permitida, veja a aba Habilidades."/>
+ <scroll_list name="member_allowed_actions" tool_tip="Clique na guia Funções para ver mais detalhes"/>
</panel>
<panel name="roles_footer">
<text name="static">
- Nome
- </text>
- <text name="static2">
- Descrição
+ Nome da função
</text>
<line_editor name="role_name">
Empregados
</line_editor>
<text name="static3">
- Título
+ Título da função
</text>
<line_editor name="role_title">
(esperando)
</line_editor>
+ <text name="static2">
+ Descrição
+ </text>
<text_editor name="role_description">
(esperando)
</text_editor>
<text name="static4">
- Membros atribuídos
+ Cargos desempenhados
</text>
+ <check_box label="Revelar membros" name="role_visible_in_list" tool_tip="Define se os membros dessa função são visíveis na guia geral para pessoas de fora do grupo."/>
<text name="static5" tool_tip="Uma lista de habilidades que a função selecionada atualmente pode executar.">
Habilidades permitidas
</text>
- <check_box label="Membros estão visíveis" name="role_visible_in_list" tool_tip="Selecione se os membros desta função estarão visíveis na aba Diversos, para as pessoas de fora do grupo."/>
- <scroll_list name="role_allowed_actions" tool_tip="Para ver detalhes de cada habilidade permitida, veja a aba correspondente."/>
+ <scroll_list name="role_allowed_actions" tool_tip="Clique na guia Funções para ver mais detalhes"/>
</panel>
<panel name="actions_footer">
<text name="static">
- Descrição
+ Descrição da função
</text>
<text_editor name="action_description">
Essa habilidade permite tirar alguem do grupo. Somente o dono do grupo poderá retirar outro dono do grupo.
</text_editor>
<text name="static2">
- Funções com habilidades
+ Cargos com esta função
</text>
<text name="static3">
- Membros com habilidades
+ Membros com esta função
</text>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml
new file mode 100644
index 0000000000..f7102f2fb2
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <text name="avatar_name" value="Desconhecido"/>
+ <button label="Perfil" name="view_profile_btn"/>
+ <button label="Adicionar amigo" name="add_friend_btn"/>
+ <button label="Teletransportar" name="teleport_btn"/>
+ <button label="Compartilhar" name="share_btn"/>
+ <panel name="panel_call_buttons">
+ <button label="Ligar" name="call_btn"/>
+ <button label="Desligar" name="end_call_btn"/>
+ <button label="Controles de voz" name="voice_ctrls_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
new file mode 100644
index 0000000000..97e7f51beb
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="landmark_info">
+ <string name="title_create_landmark" value="Criar Landmark"/>
+ <string name="title_edit_landmark" value="Editar Landmark"/>
+ <string name="title_landmark" value="Landmark"/>
+ <string name="not_available" value="(N\A)"/>
+ <string name="unknown" value="(desconhecido)"/>
+ <string name="public" value="(público)"/>
+ <string name="server_update_text">
+ Informação do lugar não disponível sem atualização do servidor.
+ </string>
+ <string name="server_error_text">
+ Informações sobre esta localização não está disponível neste momento, por favor, tente novamente mais tarde.
+ </string>
+ <string name="server_forbidden_text">
+ Informações sobre esta localização está indisponível devido a restrições de acesso. Por favor, verifique as permissões com o proprietário da parcela.
+ </string>
+ <string name="acquired_date">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </string>
+ <text name="title" value="Perfil do Lugar"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="maturity_value" value="desconhecido"/>
+ <panel name="landmark_info_panel">
+ <text name="owner_label" value="Proprietário:"/>
+ <text name="creator_label" value="Criador:"/>
+ <text name="created_label" value="Criado:"/>
+ </panel>
+ <panel name="landmark_edit_panel">
+ <text name="title_label" value="Título:"/>
+ <text name="notes_label" value="Minhas notas:"/>
+ <text name="folder_label" value="Localização da Landmark:"/>
+ </panel>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_landmarks.xml b/indra/newview/skins/default/xui/pt/panel_landmarks.xml
new file mode 100644
index 0000000000..693905e04c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_landmarks.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Landmarks">
+ <accordion name="landmarks_accordion">
+ <accordion_tab name="tab_favorites" title="Barra &apos;Destaques&apos;"/>
+ <accordion_tab name="tab_landmarks" title="Marcos"/>
+ <accordion_tab name="tab_inventory" title="Meu inventário"/>
+ <accordion_tab name="tab_library" title="Biblioteca"/>
+ </accordion>
+ <panel name="bottom_panel">
+ <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/>
+ <button name="add_btn" tool_tip="Adicionar marco"/>
+ <dnd_button name="trash_btn" tool_tip="Excluir marco selecionado"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_login.xml b/indra/newview/skins/default/xui/pt/panel_login.xml
index d7ff3f29df..3540a338ea 100644
--- a/indra/newview/skins/default/xui/pt/panel_login.xml
+++ b/indra/newview/skins/default/xui/pt/panel_login.xml
@@ -1,39 +1,34 @@
<?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=pt-BR
+ http://join.secondlife.com/
</panel.string>
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=pt
</panel.string>
-<panel name="login_widgets">
- <text name="first_name_text">
- Primeiro nome:
- </text>
- <text name="last_name_text">
- Sobrenome:
- </text>
- <text name="password_text">
- Senha:
- </text>
- <text name="start_location_text">
- Posição inicial:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item name="MyHome" label="Minha casa" />
- <combo_box.item name="MyLastLocation" label="Minha última localização" />
- <combo_box.item name="Typeregionname" label="&lt; Digite o nome da região &gt;" />
- </combo_box>
- <check_box label="Lembrar senha" name="remember_check"/>
- <button label="Entrar" label_selected="Entrar" name="connect_btn"/>
- <text name="create_new_account_text">
- Registrar-se para uma conta
- </text>
- <text name="forgot_password_text" left="-240" width="230">
- Esqueceu seu nome de usuário ou senha?
- </text>
- <text name="channel_text">
- [VERSION]
- </text>
-</panel>
+ <layout_stack name="login_widgets">
+ <layout_panel name="login">
+ <text name="first_name_text">
+ Primeiro nome:
+ </text>
+ <line_editor label="Nome" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/>
+ <line_editor label="Sobrenome" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/>
+ <check_box label="Lembrar" name="remember_check"/>
+ <text name="start_location_text">
+ Começar em:
+ </text>
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Minha casa" name="MyHome"/>
+ </combo_box>
+ <button label="conectar" name="connect_btn"/>
+ </layout_panel>
+ <layout_panel name="links">
+ <text name="create_new_account_text">
+ Cadastre-se
+ </text>
+ <text name="login_help">
+ Precisa de ajuda ao conectar?
+ </text>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml
new file mode 100644
index 0000000000..1bc080886d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Coisas" name="main inventory panel">
+ <panel.string name="Title">
+ Coisas
+ </panel.string>
+ <filter_editor label="Filtro" name="inventory search editor"/>
+ <tab_container name="inventory filter tabs">
+ <inventory_panel label="Todos os itens" name="All Items"/>
+ <inventory_panel label="Itens recentes" name="Recent Items"/>
+ </tab_container>
+ <panel name="bottom_panel">
+ <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/>
+ <button name="add_btn" tool_tip="Adicionar novo item"/>
+ <dnd_button name="trash_btn" tool_tip="Remover item selecionado"/>
+ </panel>
+ <menu_bar name="Inventory Menu">
+ <menu label="Arquivo" name="File">
+ <menu_item_call label="Abrir" name="Open"/>
+ <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>
+ <menu_item_call label="Nova janela" name="New Window"/>
+ <menu_item_call label="Mostrar filtros" name="Show Filters"/>
+ <menu_item_call label="Restabelecer filtros" name="Reset Current"/>
+ <menu_item_call label="Fechar todas as pastas" name="Close All Folders"/>
+ <menu_item_call label="Esvaziar lixeira" name="Empty Trash"/>
+ <menu_item_call label="Esvaziar achados e perdidos" name="Empty Lost And Found"/>
+ </menu>
+ <menu label="Crie" name="Create">
+ <menu_item_call label="Nova pasta" name="New Folder"/>
+ <menu_item_call label="Novo script" name="New Script"/>
+ <menu_item_call label="Nova nota" 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 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>
+ <menu label="Classificar" name="Sort">
+ <menu_item_check label="Por nome" name="By Name"/>
+ <menu_item_check label="Por data" name="By Date"/>
+ <menu_item_check label="Pastas sempre por nome" name="Folders Always By Name"/>
+ <menu_item_check label="Pastas do sistema no topo" name="System Folders To Top"/>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_me.xml b/indra/newview/skins/default/xui/pt/panel_me.xml
new file mode 100644
index 0000000000..c3fda2e886
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_me.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Meu perfil" name="panel_me">
+ <tab_container name="tabs">
+ <panel label="PERFIL" name="panel_profile"/>
+ <panel label="DESTAQUES" name="panel_picks"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml
new file mode 100644
index 0000000000..9815b8d0b4
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Público geral" name="Media Settings General">
+ <text name="home_label">
+ Página web:
+ </text>
+ <text name="home_fails_whitelist_label">
+ (Esta página não atende à lista de páginas aprovadas)
+ </text>
+ <line_editor name="home_url" tool_tip="Website desta mídia"/>
+ <text name="preview_label">
+ Visualizar
+ </text>
+ <text name="current_url_label">
+ Página atual:
+ </text>
+ <text name="current_url" tool_tip="Website desta mídia" value=""/>
+ <button label="Redefinir" name="current_url_reset_btn"/>
+ <check_box initial_value="false" label="Loop contínuo" name="auto_loop"/>
+ <check_box initial_value="false" label="Interagir no primeiro clique" name="first_click_interact"/>
+ <check_box initial_value="false" label="Zoom automático" name="auto_zoom"/>
+ <check_box initial_value="false" label="Mídia auto-executável" name="auto_play"/>
+ <text name="media_setting_note">
+ Nota: Residentes podem redefinir a configuração.
+ </text>
+ <check_box initial_value="false" label="Dimensionamento automático na frente do objeto" name="auto_scale"/>
+ <text name="size_label">
+ Tamanho:
+ </text>
+ <text name="X_label">
+ X
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml
new file mode 100644
index 0000000000..009dd0d752
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Customizar" name="Media settings for controls">
+ <text name="controls_label">
+ Controles:
+ </text>
+ <combo_box name="controls">
+ <combo_item name="Standard">
+ Padrão
+ </combo_item>
+ <combo_item name="Mini">
+ Mini
+ </combo_item>
+ </combo_box>
+ <check_box initial_value="false" label="Permitir navegação &amp; interatividade" name="perms_owner_interact"/>
+ <check_box initial_value="false" label="Exibir barra de controle" name="perms_owner_control"/>
+ <check_box initial_value="false" label="Permitir navegação &amp; interatividade" name="perms_group_interact"/>
+ <check_box initial_value="false" label="Exibir barra de controle" name="perms_group_control"/>
+ <check_box initial_value="false" label="Permitir navegação &amp; interatividade" name="perms_anyone_interact"/>
+ <check_box initial_value="false" label="Exibir barra de controle" name="perms_anyone_control"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml
new file mode 100644
index 0000000000..adc93cc2f0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Segurança" name="Media Settings Security">
+ <check_box initial_value="false" label="Acesso restrito a URLs especificados (pelo prefixo)" name="whitelist_enable"/>
+ <text name="home_url_fails_some_items_in_whitelist">
+ URLs com falha de acesso na página inicial são indicados com um:
+ </text>
+ <button label="Adicionar" name="whitelist_add"/>
+ <button label="Excluir" name="whitelist_del"/>
+ <text name="home_url_fails_whitelist">
+ Aviso: A página inicial especificada na aba Geral não consta na lista de acesso. Seu acesso será autorizado quando a lista for retificada.
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_my_profile.xml b/indra/newview/skins/default/xui/pt/panel_my_profile.xml
new file mode 100644
index 0000000000..8fd30873a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_my_profile.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Perfil" name="panel_profile">
+ <string name="no_partner_text" value="Nenhum"/>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="second_life_image_panel">
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Clique no botão Editar para trocar a imagem"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <icon label="" name="real_world_edit_icon" tool_tip="Clique no botão Editar para trocar a imagem"/>
+ <text name="title_rw_descr_text" value="Mundo real:"/>
+ </panel>
+ <text name="me_homepage_text">
+ Página web:
+ </text>
+ <text name="title_member_text" value="Membro desde:"/>
+ <text name="title_acc_status_text" value="Conta:"/>
+ <text name="acc_status_text" value="Residente. Dados de pagamento: não constam"/>
+ <text name="title_partner_text" value="Parceiro(a):"/>
+ <text name="title_groups_text" value="Grupos:"/>
+ </panel>
+ </scroll_container>
+ <panel name="profile_buttons_panel">
+ <button label="Adicionar amigo" name="add_friend"/>
+ <button label="MI" name="im"/>
+ <button label="Ligar" name="call"/>
+ <button label="Mapa" name="show_on_map_btn"/>
+ <button label="Teletransportar" name="teleport"/>
+ </panel>
+ <panel name="profile_me_buttons_panel">
+ <button label="Editar perfil" name="edit_profile_btn" tool_tip="Editar dados pessoais"/>
+ <button label="Editar aparência" name="edit_appearance_btn" tool_tip="Criar/editar aparência: corpo, roupa, etc."/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
new file mode 100644
index 0000000000..49e1d916c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="navigation_bar">
+ <panel name="navigation_panel">
+ <button name="back_btn" tool_tip="Voltar para região anterior"/>
+ <button name="forward_btn" tool_tip="Avançar uma região"/>
+ <button name="home_btn" tool_tip="Teletransportar para minha casa"/>
+ <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">
+ <chevron_button name="&gt;&gt;" tool_tip="Mostrar mais favoritos"/>
+ </favorites_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml
new file mode 100644
index 0000000000..bdbf29e70b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- All our XML is utf-8 encoded. -->
+<panel name="nearby_chat">
+ <panel name="chat_caption">
+ <text name="sender_name">
+ Bate-papo local
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml
new file mode 100644
index 0000000000..a8c74d50e4
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+ <string name="min_width">
+ 192
+ </string>
+ <string name="max_width">
+ 320
+ </string>
+ <line_editor label="Clique aqui para bater papo." name="chat_box" tool_tip="Tecle Enter para falar, Ctrl+Enter para gritar"/>
+ <button name="show_nearby_chat" tool_tip="Mostra/oculta o histórico do bate-papo local"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_notes.xml b/indra/newview/skins/default/xui/pt/panel_notes.xml
new file mode 100644
index 0000000000..a5b2542e77
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_notes.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Anotações e Privacidade" name="panel_notes">
+ <layout_stack name="layout">
+ <panel name="notes_stack">
+ <scroll_container name="profile_scroll">
+ <panel name="profile_scroll_panel">
+ <text name="status_message" value="Minhas anotações privadas:"/>
+ <text name="status_message2" value="Deixar esta pessoa:"/>
+ <check_box label="Ver meu status" name="status_check"/>
+ <check_box label="Ver minha localização no mapa" name="map_check"/>
+ <check_box label="Pegar, editar ou excluir objetos meus" name="objects_check"/>
+ </panel>
+ </scroll_container>
+ </panel>
+ <panel name="notes_buttons_panel">
+ <button label="Adicionar" name="add_friend" tool_tip="Oferecer amizade ao residente"/>
+ <button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/>
+ <button label="Ligar" name="call" tool_tip="Ligar para este residente"/>
+ <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir o residente no mapa"/>
+ <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/>
+ </panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml
new file mode 100644
index 0000000000..98a9be29c8
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Outfits">
+ <accordion name="outfits_accordion">
+ <accordion_tab name="tab_cof" title="Vestimenta atual"/>
+ <accordion_tab name="tab_outfits" title="Minhas vestimentas"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml
new file mode 100644
index 0000000000..5ef6edf9ec
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+ <menu_item_call label="Substituir look atual" name="wear"/>
+ <menu_item_call label="Adicionar ao look atual" name="add"/>
+ <menu_item_call label="Tirar do look atual" name="remove"/>
+ <menu_item_call label="Renomear" name="rename"/>
+ <menu_item_call label="Tirar" name="remove_link"/>
+ <menu_item_call label="Excluir" name="delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml
new file mode 100644
index 0000000000..9d71c37c55
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_people.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray panel -->
+<panel label="Pessoas" name="people_panel">
+ <string name="no_people" value="Nenhuma pessoa"/>
+ <string name="no_one_near" value="Ninguém por perto"/>
+ <string name="no_friends_online" value="Nenhum amigo online"/>
+ <string name="no_friends" value="Nenhum amigo"/>
+ <string name="no_groups" value="Nenhum grupo"/>
+ <string name="people_filter_label" value="Filtro de pessoas"/>
+ <string name="groups_filter_label" value="Filtro de grupos"/>
+ <filter_editor label="Filtro" name="filter_input"/>
+ <tab_container name="tabs">
+ <panel label="PROXIMIDADE" name="nearby_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <button name="nearby_view_sort_btn" tool_tip="Opções"/>
+ <button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
+ </panel>
+ </panel>
+ <panel label="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">
+ <button name="friends_viewsort_btn" tool_tip="Opções"/>
+ <button name="add_btn" tool_tip="Oferecer amizade para o residente"/>
+ <button name="del_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/>
+ </panel>
+ </panel>
+ <panel label="GRUPOS" name="groups_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <button name="groups_viewsort_btn" tool_tip="Opções"/>
+ <button name="plus_btn" tool_tip="Ingressar em um grupo/Criar novo grupo"/>
+ <button name="activate_btn" tool_tip="Ativar o grupo selecionado"/>
+ </panel>
+ </panel>
+ <panel label="RECENTE" name="recent_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <button name="recent_viewsort_btn" tool_tip="Opções"/>
+ <button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
+ </panel>
+ </panel>
+ </tab_container>
+ <panel name="button_bar">
+ <button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
+ <button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
+ <button label="Chamada" name="call_btn" tool_tip="Chamar este residente"/>
+ <button label="Compartilhar" name="share_btn"/>
+ <button label="Teletransporte" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
+ <button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir informação de grupo"/>
+ <button label="Bate- papo de grupo" name="chat_btn" tool_tip="abrir sessão de bate- papo"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_pick_info.xml b/indra/newview/skins/default/xui/pt/panel_pick_info.xml
new file mode 100644
index 0000000000..007965a8c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_pick_info.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+ <text name="title" value="Detalhes do destaque"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="pick_name" value="[NAME]"/>
+ <text name="pick_location" value="[carregando...]"/>
+ <text name="pick_desc" value="[descrição]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <button label="Teletransportar" name="teleport_btn"/>
+ <button label="Mapa" name="show_on_map_btn"/>
+ <button label="Editar" name="edit_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_picks.xml b/indra/newview/skins/default/xui/pt/panel_picks.xml
new file mode 100644
index 0000000000..453954bc3e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_picks.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Destaques" name="panel_picks">
+ <string name="no_picks" value="Sem destaques"/>
+ <string name="no_classifieds" value="Sem classificados"/>
+ <text name="empty_picks_panel_text">
+ Não ha nenhum destaque/ classificado aqui
+ </text>
+ <accordion name="accordion">
+ <accordion_tab name="tab_picks" title="Destaques"/>
+ <accordion_tab name="tab_classifieds" title="Classificados"/>
+ </accordion>
+ <panel label="bottom_panel" name="edit_panel">
+ <button name="new_btn" tool_tip="Criar um novo destaque ou classificado na localização atual"/>
+ </panel>
+ <panel name="buttons_cucks">
+ <button label="Info" name="info_btn" tool_tip="Exibir informação de destaque"/>
+ <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área correspondente"/>
+ <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir a área correspondente no Mapa Mundi"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
new file mode 100644
index 0000000000..371f7bdb1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+ <string name="on" value="Ligar"/>
+ <string name="off" value="Desligar"/>
+ <string name="anyone" value="Todos"/>
+ <string name="available" value="disponível"/>
+ <string name="allocated" value="alocados"/>
+ <string name="title_place" value="Perfil da região"/>
+ <string name="title_teleport_history" value="Localização do histórico de teletransportes"/>
+ <string name="not_available" value="(N\A)"/>
+ <string name="unknown" value="(Desconhecido)"/>
+ <string name="public" value="(público)"/>
+ <string name="none_text" value="(nenhum)"/>
+ <string name="sale_pending_text" value="(Venda em andamento)"/>
+ <string name="group_owned_text" value="(Propriedade do grupo)"/>
+ <string name="price_text" value="L$"/>
+ <string name="area_text" value="m²"/>
+ <string name="all_residents_text" value="Todos os residentes"/>
+ <string name="group_text" value="Grupo"/>
+ <string name="can_resell">
+ Esta região permite a compra e venda de lotes.
+ </string>
+ <string name="can_not_resell">
+ Esta região não permite a compra e venda de lotes.
+ </string>
+ <string name="can_change">
+ Esta região permite a junção ou subdivisão de lotes.
+ </string>
+ <string name="can_not_change">
+ Esta região não permite a junção ou subdivisão de lotes.
+ </string>
+ <string name="server_update_text">
+ Dados sobre o local requerem atualização do servidor.
+ </string>
+ <string name="server_error_text">
+ Dados sobre o local não disponíveis no momento. Favor tentar mais tarde.
+ </string>
+ <string name="server_forbidden_text">
+ Dados sobre o local controlados por lista de acesso. Verifique se você está autorizado a acessá-los com o dono do lote.
+ </string>
+ <string name="acquired_date">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </string>
+ <text name="title" value="Perfil da região"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="owner_label" value="Proprietário:"/>
+ <text name="maturity_value" value="(Desconhecido)"/>
+ <accordion name="advanced_info_accordion">
+ <accordion_tab name="parcel_characteristics_tab" title="Lote">
+ <panel>
+ <text name="rating_label" value="Classificação:"/>
+ <text name="rating_value" value="(Desconhecido)"/>
+ <text name="voice_label" value="Voz:"/>
+ <text name="voice_value" value="Ligar"/>
+ <text name="fly_label" value="Voar:"/>
+ <text name="fly_value" value="Ligar"/>
+ <text name="push_label" value="Push:"/>
+ <text name="push_value" value="Desligar"/>
+ <text name="build_label" value="Construir:"/>
+ <text name="build_value" value="Ligar"/>
+ <text name="scripts_label" value="Scripts:"/>
+ <text name="scripts_value" value="Ligar"/>
+ <text name="damage_label" value="Dano:"/>
+ <text name="damage_value" value="Desligar"/>
+ <button label="Sobre terrenos" name="about_land_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="region_information_tab" title="Região">
+ <panel>
+ <text name="region_name_label" value="Região:"/>
+ <text name="region_type_label" value="Tipo:"/>
+ <text name="region_rating_label" value="Classificação:"/>
+ <text name="region_owner_label" value="Proprietário:"/>
+ <text name="region_group_label" value="Grupo:"/>
+ <button label="Região/Propriedade" name="region_info_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="estate_information_tab" title="Propriedade">
+ <panel>
+ <text name="estate_name_label" value="Propriedade:"/>
+ <text name="estate_rating_label" value="Classificação:"/>
+ <text name="estate_owner_label" value="Proprietário:"/>
+ <text name="covenant_label" value="Contrato:"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="sales_tab" title="À venda">
+ <panel>
+ <text name="sales_price_label" value="Preço:"/>
+ <text name="area_label" value="Área:"/>
+ <text name="traffic_label" value="Trânsito:"/>
+ <text name="primitives_label" value="Prims:"/>
+ <text name="parcel_scripts_label" value="Scripts:"/>
+ <text name="terraform_limits_label" value="Limite de terraplenagem:"/>
+ <text name="subdivide_label" value="Juntar/subdividir:"/>
+ <text name="resale_label" value="Revenda:"/>
+ <text name="sale_to_label" value="À venda para:"/>
+ </panel>
+ </accordion_tab>
+ </accordion>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml
new file mode 100644
index 0000000000..5c0f3cd11d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_places.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Lugares" name="places panel">
+ <string name="landmarks_tab_title" value="MEUS MARCOS"/>
+ <string name="teleport_history_tab_title" value="HISTÓRICO DE TELETRANSPORTES"/>
+ <filter_editor label="Filtrar lugares" name="Filter"/>
+ <panel name="button_panel">
+ <button label="Teletransportar" name="teleport_btn"/>
+ <button label="Mapa" name="map_btn"/>
+ <button label="Editar" name="edit_btn"/>
+ <button label="Fechar" name="close_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ <button label="Salvar" name="save_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
index 5ca80bd74d..431f3ca8e1 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
@@ -1,7 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="advanced">
+ <panel.string name="resolution_format">
+ [RES_X] x [RES_Y]
+ </panel.string>
+ <panel.string name="aspect_ratio_text">
+ [NUM]:[DEN]
+ </panel.string>
+ <check_box label="Balão de bate-papo" name="bubble_text_chat"/>
+ <color_swatch name="background" tool_tip="Escolha a cor do balão de bate-papo"/>
+ <slider label="Opacidade" name="bubble_chat_opacity"/>
<text name="AspectRatioLabel1" tool_tip="largura / altura">
- Relação de Aspecto:
+ Relação de aspecto
</text>
<combo_box name="aspect_ratio" tool_tip="largura / altura">
<combo_box.item label="4:3 (CRT Padrão)" name="item1"/>
@@ -9,4 +18,31 @@
<combo_box.item label="8:5 (tela ampla)" name="item3"/>
<combo_box.item label="16:9 (tela ampla)" name="item4"/>
</combo_box>
+ <check_box label="Auto-detectar" name="aspect_auto_detect"/>
+ <text name="heading1">
+ Câmera:
+ </text>
+ <slider label="Ângulo de visão" name="camera_fov"/>
+ <slider label="Distância" name="camera_offset_scale"/>
+ <text name="heading2">
+ Posicionamento automático da:
+ </text>
+ <check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Use o posicionamento automático da câmera quando entrar e sair do modo de edição"/>
+ <check_box label="Aparência" name="appearance_camera_movement" tool_tip="Use o posicionamento automático da câmera quando em modo de edição"/>
+ <text name="heading3">
+ Avatares:
+ </text>
+ <check_box label="Mostre-me em visão de mouse" name="first_person_avatar_visible"/>
+ <check_box label="Teclas de seta sempre me movem" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Dê dois toques e pressione para correr" name="tap_tap_hold_to_run"/>
+ <check_box label="Mover os lábios do avatar quando estiver falando" name="enable_lip_sync"/>
+ <check_box label="Mostrar erros de script" name="show_script_errors"/>
+ <radio_group name="show_location">
+ <radio_item label="No bate papo" name="0"/>
+ <radio_item label="Em uma janela" name="1"/>
+ </radio_group>
+ <check_box label="Alternar para o modo microfone quando eu pressionar a tecla de falar:" name="push_to_talk_toggle_check" tool_tip="Quando em modo de alternância, pressione e solte o botão UMA vez para ligar e desligar o microfone. Quando em modo de alternância, o microfone só transmite sua enquanto o botão estiver pressionado."/>
+ <line_editor label="Botao apertar e falar" name="modifier_combo"/>
+ <button label="Definir chave" name="set_voice_hotkey_button"/>
+ <button label="Botão do meio do mouse" name="set_voice_middlemouse_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml
index e060d784da..4cb823d432 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml
@@ -1,18 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Popups" name="popups" title="Popups">
- <text name="dont_show_label">
- Não mostrar estas popups:
+ <text name="tell_me_label">
+ Avisar:
</text>
- <button label="Habilitar esta popup" label_selected="Habilitar este popup" name="enable_popup"/>
- <button label="Habilitar todas as popups..." label_selected="Reiniciar Dialogos que serão mostrados na próxima vez..." name="reset_dialogs_btn" tool_tip="Habilitar todas as popups opcionais e notificações de “primeiro uso”." width="200"/>
+ <check_box label="Quando eu gasto ou recebo L$" name="notify_money_change_checkbox"/>
+ <check_box label="Quando meus amigos entram e saem" name="friends_online_notify_checkbox"/>
<text name="show_label">
- Mostrar estas popups:
+ Sempre mostrar esses alertas:
</text>
- <button label="Desabilitar todas estas popups..." name="skip_dialogs_btn" tool_tip="Desabilitar todas as popups opcionais e notificações de “primeiro uso”." width="200"/>
- <text name="text_box2">
- Ofertas de notecards, texturas e landmarks:
+ <text name="dont_show_label">
+ Nunca mostrar esses alertas:
</text>
- <check_box label="Aceitar automaticamente" name="accept_new_inventory"/>
- <check_box label="Visualizar automaticamente após aceitar" name="show_new_inventory"/>
- <check_box label="Mostrar automaticamente objetos aceitos recentemente no inventário." name="show_in_inventory"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
index aa40f97fe3..d6d8be7dc7 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
@@ -1,17 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Chat" name="chat">
- <text name="text_box">
- Tamanho da Fonte
-do Chat:
- </text>
<radio_group name="chat_font_size">
- <radio_item name="radio" label="Pequeno" />
- <radio_item name="radio2" label="Médio" />
- <radio_item name="radio3" label="Grande" />
+ <radio_item label="Pequeno" name="radio"/>
+ <radio_item label="Média" name="radio2"/>
+ <radio_item label="Grande" name="radio3"/>
</radio_group>
<color_swatch label="Você" name="user"/>
<text name="text_box1">
- Você
+ Eu
</text>
<color_swatch label="Outros" name="agent"/>
<text name="text_box2">
@@ -37,23 +33,14 @@ do Chat:
<text name="text_box7">
Dono
</text>
- <color_swatch label="Bolha" name="background"/>
- <text name="text_box8">
- Bolha
- </text>
<color_swatch label="URLs" name="links"/>
<text name="text_box9">
URLs
</text>
- <check_box label="Mostrar Erros de Script e avisos como chat comum" name="script_errors_as_chat"/>
- <spinner label="Ocultar Chat depois" label_width="108" name="fade_chat_time" width="160"/>
- <spinner left="373" name="max_chat_count"/>
- <slider label="Opacidade" name="console_opacity"/>
- <check_box label="Use a largura total da tela (Precisa reiniciar)" name="chat_full_width_check"/>
- <check_box label="Feche a barra de conversa após pressionar retornar" name="close_chat_on_return_check"/>
- <check_box label="Teclas de Setas sempre movem o avatar durante a conversa" name="arrow_keys_move_avatar_check"/>
- <check_box label="Mostrar a hora na conversa local" name="show_timestamps_check"/>
- <check_box label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
- <check_box label="Mostrar bolhas do chat" name="bubble_text_chat"/>
- <slider label="Opacidade" name="bubble_chat_opacity"/>
+ <check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
+ <check_box label="Envie MIs por email quando eu estiver desconectado" name="send_im_to_email"/>
+ <radio_group name="chat_window" tool_tip="Exibir cada bate-papo em uma janela ou em uma única janela com uma aba para cada pessoa (requer reinício)">
+ <radio_item label="Janelas diferentes" name="radio"/>
+ <radio_item label="Uma janela" name="radio2"/>
+ </radio_group>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
index 8bde39545c..17f43943c1 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
@@ -1,90 +1,64 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Geral" name="general_panel">
- <combo_box name="start_location_combo">
- <combo_box.item name="MyHome" tool_tip="Como padrão, registrar na minha casa." label="Minha Casa"/>
- <combo_box.item name="MyLastLocation" tool_tip="Por padrão, registrar na minha última localidade." label="Minha Última Localidade"/>
- </combo_box>
- <check_box label="Mostrar Posição Inicial na Tela de Login" name="show_location_checkbox"/>
- <combo_box name="fade_out_combobox">
- <combo_box.item name="Never" label="Nunca"/>
- <combo_box.item name="Show Temporarily" label="Mostrar Temporariamente"/>
- <combo_box.item name="Always" label="Sempre"/>
- </combo_box>
- <check_box label="Avatar com Nomes Pequenos" name="small_avatar_names_checkbox"/>
- <check_box label="Ocultar meu Nome na minha Tela" name="show_my_name_checkbox"/>
- <text name="group_titles_textbox">
- Títulos dos Grupos:
- </text>
- <check_box label="Ocultar todos os Títulos de Grupos" name="show_all_title_checkbox"/>
- <check_box label="Ocultar meu Título no Grupo" name="show_my_title_checkbox"/>
- <color_swatch label="" name="effect_color_swatch" tool_tip="Clique para abrir o seletor de cores"/>
- <text name="UI Size:">
- Tamanho da UI:
+ <text name="language_textbox">
+ Linguagem:
</text>
- <check_box label="Usar escala independente da resolução" name="ui_auto_scale"/>
- <spinner label="Tempo para ficar Ausente:" name="afk_timeout_spinner"/>
- <check_box label="Avisar quando receber ou gastar Linden dollars (L$)" name="notify_money_change_checkbox"/>
- <text name="maturity_desired_label">
- Classificação:
+ <combo_box name="language_combobox">
+ <combo_box.item label="Padrão" name="System Default Language"/>
+ <combo_box.item label="English (Inglês)" name="English"/>
+ <combo_box.item label="Dansk (Dinamarquês) - Beta" name="Danish"/>
+ <combo_box.item label="Deutsch (Alemão) - Beta" name="Deutsch(German)"/>
+ <combo_box.item label="Español (Espanhol) - Beta" name="Spanish"/>
+ <combo_box.item label="Français (Francês) - Beta" name="French"/>
+ <combo_box.item label="Italiano - Beta" name="Italian"/>
+ <combo_box.item label="Nederlands (Holandês) - Beta" name="Dutch"/>
+ <combo_box.item label="Polski (Polonês) - Beta" name="Polish"/>
+ <combo_box.item label="Português - Beta" name="Portugese"/>
+ <combo_box.item label="日本語 (Japonês) - Beta" name="(Japanese)"/>
+ </combo_box>
+ <text name="language_textbox2">
+ (Reinicie para mostrar o novo idioma)
</text>
<text name="maturity_desired_prompt">
Eu quero acessar conteúdo classificado:
</text>
+ <text name="maturity_desired_textbox"/>
<combo_box name="maturity_desired_combobox">
- <combo_box.item name="Desired_Adult" label="PG, Mature e Adult"/>
- <combo_box.item name="Desired_Mature" label="PG e Mature"/>
- <combo_box.item name="Desired_PG" label="PG"/>
+ <combo_box.item label="PG, Mature e Adult" name="Desired_Adult"/>
+ <combo_box.item label="PG e Mature" name="Desired_Mature"/>
+ <combo_box.item label="PG" name="Desired_PG"/>
</combo_box>
- <text name="maturity_desired_textbox">
- PG
- </text>
<text name="start_location_textbox">
- Posição Inicial:
+ Ponto de partida:
</text>
- <text name="show_names_textbox">
- Mostrar Nomes:
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Minha Última Localidade" name="MyLastLocation" tool_tip="Por padrão, registrar na minha última localidade."/>
+ <combo_box.item label="Minha Casa" name="MyHome" tool_tip="Como padrão, registrar na minha casa."/>
+ </combo_box>
+ <check_box initial_value="true" label="Mostrar ao entrar" name="show_location_checkbox"/>
+ <text name="name_tags_textbox">
+ Mostrar nomes:
</text>
+ <radio_group name="Name_Tag_Preference">
+ <radio_item label="Desligar" name="radio"/>
+ <radio_item label="Ligar" name="radio2"/>
+ <radio_item label="Brevemente" name="radio3"/>
+ </radio_group>
+ <check_box label="Mostrar meu nome" name="show_my_name_checkbox1"/>
+ <check_box initial_value="true" label="Nomes pequenos" name="small_avatar_names_checkbox"/>
+ <check_box label="Mostrar cargo" name="show_all_title_checkbox1"/>
<text name="effects_color_textbox">
- Cores para Meus Efeitos:
+ Meus efeitos:
+ </text>
+ <color_swatch label="" name="effect_color_swatch" tool_tip="Clique para abrir o seletor de cores"/>
+ <text name="title_afk_text">
+ Entrar no modo ausente em:
</text>
+ <spinner label="Tempo para ficar Ausente:" name="afk_timeout_spinner"/>
<text name="seconds_textbox">
segundos
</text>
- <text name="crash_report_textbox">
- Relatórios de Falhas:
- </text>
- <text name="language_textbox">
- Linguagem:
- </text>
- <text name="language_textbox2">
- (Precisa de reinício para efetivar)
+ <text name="text_box3">
+ Mensagem do modo ocupado:
</text>
- <string name="region_name_prompt">
- Digite o nome da Região
- </string>
- <combo_box name="crash_behavior_combobox">
- <combo_box.item name="Askbeforesending" label="Perguntar antes de enviar"/>
- <combo_box.item name="Alwayssend" label="Sempre enviar"/>
- <combo_box.item name="Neversend" label="Nunca Enviar"/>
- </combo_box>
- <combo_box name="language_combobox">
- <combo_box.item name="System Default Language" label="Padrão do Sistema"/>
- <combo_box.item name="English" label="English (Inglês)"/>
- <combo_box.item name="Danish" label="Dansk (Dinamarquês) - Beta"/>
- <combo_box.item name="Deutsch(German)" label="Deutsch (Alemão) - Beta"/>
- <combo_box.item name="Spanish" label="Español (Espanhol) - Beta"/>
- <combo_box.item name="French" label="Français (Francês) - Beta"/>
- <combo_box.item name="Italian" label="Italiano - Beta"/>
- <combo_box.item name="Hungarian" label="Magyar (Húngaro) - Beta"/>
- <combo_box.item name="Dutch" label="Nederlands (Holandês) - Beta"/>
- <combo_box.item name="Polish" label="Polski (Polonês) - Beta"/>
- <combo_box.item name="Portugese" label="Português - Beta"/>
- <combo_box.item name="Russian" label="Русский (Russo) - Beta"/>
- <combo_box.item name="Turkish" label="Türkçe (Turco) - Beta"/>
- <combo_box.item name="Ukrainian" label="Українська (Ucraniano) - Beta"/>
- <combo_box.item name="Chinese" label="中文 (简体) (Chinês) - Beta"/>
- <combo_box.item name="(Japanese)" label="日本語 (Japonês) - Beta"/>
- <combo_box.item name="(Korean)" label="한국어 (Coreano) - Beta"/>
- </combo_box>
- <check_box label="Compartilhar a linguagem com objetos" name="language_is_public" tool_tip="Isto permite que os objetos no mundo conheçam sua linguagem preferida."/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
index d7982ab940..252415ae2d 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
@@ -1,43 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Gráficos" name="Display panel">
- <button label="?" name="GraphicsPreferencesHelpButton"/>
- <check_box label="Execute Second Life em uma janela" name="windowed mode"/>
- <text_editor bottom="-56" height="40" name="FullScreenInfo" width="480">
- Se desmarcado, o visualizador exibirá tela inteira quando fizer o acesso.
- </text_editor>
- <text name="WindowSizeLabel">
- Tamanho da Janela:
+ <text name="UI Size:">
+ Interface:
</text>
- <combo_box name="windowsize combo">
- <combo_box.item name="640x480" label="640x480" />
- <combo_box.item name="800x600" label="800x600" />
- <combo_box.item name="720x480" label="720x480 (NTSC)" />
- <combo_box.item name="768x576" label="768x576 (PAL)" />
- <combo_box.item name="1024x768" label="1024x768" />
- </combo_box>
- <text name="DisplayResLabel">
- Resolução de Display:
- </text>
- <text name="AspectRatioLabel1" tool_tip="largura / altura">
- Relação de Aspecto:
- </text>
- <combo_box name="aspect_ratio" tool_tip="largura / altura">
- <combo_box.item name="4:3(StandardCRT)" label="4:3 (CRT Padrão)" />
- <combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)" />
- <combo_box.item name="8:5(Widescreen)" label="8:5 (tela ampla)" />
- <combo_box.item name="16:9(Widescreen)" label="16:9 (tela ampla)" />
- </combo_box>
- <check_box label="Auto-detectar a relação" name="aspect_auto_detect"/>
- <text name="HigherText">
- Qualidade e
- </text>
- <text name="QualityText">
- Performance:
+ <text name="QualitySpeed">
+ Qualidade e velocidade:
</text>
<text name="FasterText">
Mais
rápido
</text>
+ <text name="BetterText">
+ Melhor
+ </text>
<text name="ShadersPrefText">
Baixo
</text>
@@ -50,96 +25,82 @@ rápido
<text name="ShadersPrefText4">
Ultra
</text>
- <text name="HigherText2">
- Mais alto
- </text>
- <text name="QualityText2">
- Qualidade
- </text>
- <check_box label="Personalizar" left="395" name="CustomSettings"/>
- <panel name="CustomGraphics Panel">
- <text name="ShadersText">
- Sombreadores:
- </text>
- <check_box label="Bump de Mapeamento e Brilho" name="BumpShiny"/>
- <check_box label="Sombreadores básicos" name="BasicShaders" tool_tip="Desabilitar esta opção poderá impedir que alguns drivers de placa de vídeo a travem."/>
- <check_box label="Sombreadores Atmosféricos" name="WindLightUseAtmosShaders"/>
- <check_box label="Reflexos de Água" name="Reflections"/>
- <text name="ReflectionDetailText">
- Detalhes de Reflexão:
- </text>
- <radio_group name="ReflectionDetailRadio">
- <radio_item name="0" label="Terreno e Árvores" />
- <radio_item name="1" label="Todos os objetos estáticos" />
- <radio_item name="2" label="Todos os avatares e Objetos" />
- <radio_item name="3" label="Tudo" />
- </radio_group>
- <text name="AvatarRenderingText">
- Renderização de Avatar:
- </text>
- <check_box label="Atributos do Avatar" name="AvatarImpostors"/>
- <check_box label="Melhoria de Hardware" name="AvatarVertexProgram"/>
- <check_box label="Vestimenta do Avatar" name="AvatarCloth"/>
- <text name="DrawDistanceMeterText1">
- m
- </text>
- <text name="DrawDistanceMeterText2">
- m
- </text>
- <slider label="Distancia de desenho:" label_width="150" name="DrawDistance" width="255"/>
- <slider label="Contador máx. de partículas:" label_width="150" name="MaxParticleCount" width="262"/>
- <slider label="Qualidade de Pós-processamento:" label_width="178" name="RenderPostProcess" width="223"/>
- <text name="MeshDetailText">
- Detalhes de Malha:
- </text>
- <slider label=" Objetos:" name="ObjectMeshDetail"/>
- <slider label=" Primitivas Flexiveis:" name="FlexibleMeshDetail"/>
- <slider label=" Árvores:" name="TreeMeshDetail"/>
- <slider label=" Avatares:" name="AvatarMeshDetail"/>
- <slider label=" Terreno:" name="TerrainMeshDetail"/>
- <slider label=" Céu:" name="SkyMeshDetail"/>
- <text name="PostProcessText">
- Baixo
- </text>
- <text name="ObjectMeshDetailText">
- Baixo
- </text>
- <text name="FlexibleMeshDetailText">
- Baixo
- </text>
- <text name="TreeMeshDetailText">
- Baixo
- </text>
- <text name="AvatarMeshDetailText">
- Baixo
- </text>
- <text name="TerrainMeshDetailText">
- Baixo
- </text>
- <text name="SkyMeshDetailText">
- Baixo
- </text>
- <text name="LightingDetailText">
- Detalhes de Iluminação:
- </text>
- <radio_group name="LightingDetailRadio">
- <radio_item name="SunMoon" label="Sol e Lua apenas" />
- <radio_item name="LocalLights" label="Luzes locais nas proximidades" />
- </radio_group>
- <text name="TerrainDetailText">
- Detalhe do Terreno:
- </text>
- <radio_group left_delta="45" name="TerrainDetailRadio" width="276">
- <radio_item name="0" label="Baixo" />
- <radio_item name="2" label="Alto" />
- </radio_group>
+ <panel label="CustomGraphics" name="CustomGraphics Panel">
+ <text name="ShadersText">
+ Sombreadores:
+ </text>
+ <check_box initial_value="true" label="Bump de Mapeamento e Brilho" name="BumpShiny"/>
+ <check_box initial_value="true" label="Sombreadores básicos" name="BasicShaders" tool_tip="Desabilitar esta opção poderá impedir que alguns drivers de placa de vídeo a travem."/>
+ <check_box initial_value="true" label="Sombreadores Atmosféricos" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Reflexos de Água" name="Reflections"/>
+ <text name="ReflectionDetailText">
+ Detalhes de Reflexão:
+ </text>
+ <radio_group name="ReflectionDetailRadio">
+ <radio_item label="Terreno e árvores" name="0"/>
+ <radio_item label="Todos os objetos estáticos" name="1"/>
+ <radio_item label="Todos os avatares e Objetos" name="2"/>
+ <radio_item label="Tudo" name="3"/>
+ </radio_group>
+ <text name="AvatarRenderingText">
+ Renderização de Avatar:
+ </text>
+ <check_box initial_value="true" label="Atributos do Avatar" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="Melhoria de Hardware" name="AvatarVertexProgram"/>
+ <check_box initial_value="true" label="Vestimenta do Avatar" name="AvatarCloth"/>
+ <slider label="Distancia de desenho:" label_width="150" name="DrawDistance" width="255"/>
+ <text name="DrawDistanceMeterText2">
+ m
+ </text>
+ <slider label="Contador máx. de partículas:" label_width="150" name="MaxParticleCount" width="262"/>
+ <slider label="Qualidade de Pós-processamento:" label_width="178" name="RenderPostProcess" width="223"/>
+ <text name="MeshDetailText">
+ Detalhes de Malha:
+ </text>
+ <slider label=" Objetos:" name="ObjectMeshDetail"/>
+ <slider label=" Primitivas Flexiveis:" name="FlexibleMeshDetail"/>
+ <slider label=" Árvores:" name="TreeMeshDetail"/>
+ <slider label=" Avatares:" name="AvatarMeshDetail"/>
+ <slider label=" Terreno:" name="TerrainMeshDetail"/>
+ <slider label=" Céu:" name="SkyMeshDetail"/>
+ <text name="PostProcessText">
+ Baixo
+ </text>
+ <text name="ObjectMeshDetailText">
+ Baixo
+ </text>
+ <text name="FlexibleMeshDetailText">
+ Baixo
+ </text>
+ <text name="TreeMeshDetailText">
+ Baixo
+ </text>
+ <text name="AvatarMeshDetailText">
+ Baixo
+ </text>
+ <text name="TerrainMeshDetailText">
+ Baixo
+ </text>
+ <text name="SkyMeshDetailText">
+ Baixo
+ </text>
+ <text name="LightingDetailText">
+ Detalhes de Iluminação:
+ </text>
+ <radio_group name="LightingDetailRadio">
+ <radio_item label="Sol e Lua apenas" name="SunMoon"/>
+ <radio_item label="Luzes locais nas proximidades" name="LocalLights"/>
+ </radio_group>
+ <text name="TerrainDetailText">
+ Detalhe do Terreno:
+ </text>
+ <radio_group left_delta="45" name="TerrainDetailRadio" width="276">
+ <radio_item label="Baixo" name="0"/>
+ <radio_item label="Alto" name="2"/>
+ </radio_group>
</panel>
- <button label="Configurações Recomendadas" name="Defaults" width="190" left="110"/>
- <button label="Opções de Hardware" label_selected="Opções de Hardware" name="GraphicsHardwareButton"/>
- <panel.string name="resolution_format">
- [RES_X] x [RES_Y]
- </panel.string>
- <panel.string name="aspect_ratio_text">
- [NUM]:[DEN]
- </panel.string>
+ <button label="Aplicar" label_selected="Aplicar" name="Apply"/>
+ <button label="Redefinir" left="110" name="Defaults" width="190"/>
+ <button label="Avançado" name="Advanced"/>
+ <button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
index 84c6c934c8..fc83a0e97a 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
@@ -1,33 +1,27 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Comunicação" name="im">
- <text name="text_box">
- Minha situação online:
+ <panel.string name="log_in_to_change">
+ autentique-se para mudar
+ </panel.string>
+ <button label="Limpar histórico" name="clear_cache"/>
+ <text name="cache_size_label_l">
+ (Locações, imagens, web, histórico de busca)
</text>
- <check_box label="Apenas meus Amigos e Grupos podem me ver online" name="online_visibility"/>
- <text name="text_box2">
- Opções MI:
+ <check_box label="Apenas amigos e grupos sabem que estou online" name="online_visibility"/>
+ <check_box label="Apenas amigos e grupos podem me chamar ou enviar MI" name="voice_call_friends_only_check"/>
+ <check_box label="Desligar o microfone quando terminar chamadas" name="auto_disengage_mic_check"/>
+ <check_box label="Aceitar cookies" name="cookies_enabled"/>
+ <check_box label="Permitir toque automático da mídia" name="autoplay_enabled"/>
+ <text name="Logs:">
+ Logs:
</text>
- <string name="log_in_to_change">
- Logar para Alterar
- </string>
- <check_box label="Enviar MI para o e-mail ([EMAIL])" name="send_im_to_email"/>
- <check_box label="Incluir MIs no console do chat" name="include_im_in_chat_console"/>
- <check_box label="Mostrar data e hora na MI" name="show_timestamps_check"/>
- <check_box label="Mostrar notificação de Amigo online" name="friends_online_notify_checkbox"/>
- <text name="text_box3" width="134">
- Resposta no Modo
-Ocupado:
- </text>
- <text name="text_box4">
- Opções de Registro:
- </text>
- <check_box label="Salvar um registro das MIs em meu computador" name="log_instant_messages"/>
- <check_box label="Mostrar a hora nas MIs" name="log_instant_messages_timestamp"/>
- <check_box label="Mostrar o final da última conversa em MI" name="log_show_history"/>
- <check_box label="Salvar um registro da Conversa local em meu computador" name="log_chat"/>
- <check_box label="Mostrar a hora no registro da Conversa local" name="log_chat_timestamp"/>
- <check_box label="Mostrar MIs recebidas no registro de Conversa local" name="log_chat_IM"/>
- <check_box label="Incluir data e hora" name="log_date_timestamp"/>
- <button label="Mudar Local" label_selected="Alterar Caminho" name="log_path_button" width="120"/>
+ <check_box label="Salvar logs de bate- papo das proximidades no meu computador" name="log_nearby_chat"/>
+ <check_box label="Salvar logs de MI no meu computador" name="log_instant_messages"/>
+ <check_box label="Adicionar timestamp" name="show_timestamps_check_im"/>
<line_editor left="278" name="log_path_string" right="-20"/>
+ <text name="log_path_desc">
+ Localização dos logs
+ </text>
+ <button label="Navegar" label_selected="Navegar" name="log_path_button" width="120"/>
+ <button label="Lista dos bloqueados" name="block_list"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
index 3c94090131..002b3fa8a7 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
@@ -1,33 +1,46 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Câmera" name="Input panel">
- <text name=" Mouselook Options:">
- Mouselook:
+<panel label="Entrada e câmera" name="Input panel">
+ <button bottom_delta="-40" label="Outros dispositivos" name="joystick_setup_button" width="165"/>
+ <text name="Mouselook:">
+ Visão subjetiva:
</text>
- <text name=" Mouse Sensitivity:">
- Sensibilidade do Mouse:
+ <text name=" Mouse Sensitivity">
+ Sensibilidade do mouse
</text>
- <check_box label="Inverter o Mouse" name="invert_mouse"/>
- <text name=" Auto Fly Options:">
- Vôo Automático:
+ <check_box label="Inverter" name="invert_mouse"/>
+ <text name="Network:">
+ Rede:
</text>
- <check_box label="Voar/Aterrissar pressionando teclas para cima/baixo" name="automatic_fly"/>
- <text name=" Camera Options:">
- Opções de Câmera:
+ <text name="Maximum bandwidth">
+ Largura de banda máxima
</text>
- <text name="camera_fov_label" width="218">
- Angulo de Visão da Câmera:
+ <text name="text_box2">
+ kbps
</text>
- <slider bottom_delta="-6" width="128" left="360" name="camera_fov" />
- <text name="Camera Follow Distance:" width="218">
- Distância de Acompanhamento da Camêra:
+ <check_box label="Personalizar porta" name="connection_port_enabled"/>
+ <spinner label="Número da porta:" name="web_proxy_port"/>
+ <text name="cache_size_label_l">
+ Tamanho do cache
</text>
- <slider bottom_delta="-6" width="128" left="360" name="camera_offset_scale" />
- <check_box label="Edição automática do movimento da câmera" name="edit_camera_movement" tool_tip="Usar posicionamento automático da câmera quando entrar e sair do modo de edição"/>
- <check_box label="Movimento Automático da Câmera na edição de aparência" name="appearance_camera_movement" tool_tip="Usar posicionamento automático da câmera em modo de edição"/>
- <text name="text2">
- Opções de Exibição
-do Avatar:
+ <text name="text_box5">
+ MB
+ </text>
+ <button label="Navegar" label_selected="Navegar" name="set_cache"/>
+ <button label="Redefinir" label_selected="Definir" name="reset_cache"/>
+ <text name="Cache location">
+ Localização do cache
+ </text>
+ <text name="Web:">
+ Web:
+ </text>
+ <radio_group name="use_external_browser">
+ <radio_item label="Usar navegador incluso" name="internal" tool_tip="Use este navegador para consultar a ajuda, abrir links da web, etc. As janelas abrem dentro do [APP_NAME]."/>
+ <radio_item label="Usar meu navegador (IE, Firefox)" name="external" tool_tip="Use o navegador incluso para consultar a ajuda, abrir links da web, etc. Uso em tela inteira não recomendado."/>
+ </radio_group>
+ <check_box initial_value="false" label="Proxy web" name="web_proxy_enabled"/>
+ <line_editor name="web_proxy_editor" tool_tip="O nome ou endereço IP do proxy da sua preferência"/>
+ <button label="Navegar" label_selected="Navegar" name="set_proxy"/>
+ <text name="Proxy location">
+ Localização do proxy
</text>
- <check_box label="Mostra o avatar em primeira pessoa" name="first_person_avatar_visible"/>
- <button bottom_delta="-40" label="Configuração do Joystick" name="joystick_setup_button" width="165"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
index 5574679cde..37855672c9 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
@@ -1,39 +1,38 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Áudio &amp; Vídeo" name="Preference Media panel">
- <slider label="Mestre" name="System Volume"/>
+<panel label="Sons" name="Preference Media panel">
+ <slider label="Volume principal" name="System Volume"/>
+ <check_box initial_value="true" label="Silenciar ao minimizar" name="mute_when_minimized"/>
<slider label="Ambiente" name="Wind Volume"/>
- <slider label="Sons" name="SFX Volume"/>
+ <slider label="Botões" name="UI Volume"/>
<slider label="Mídia" name="Media Volume"/>
- <slider label="UI" name="UI Volume"/>
- <slider label="Música" name="Music Volume"/>
+ <slider label="Efeitos sonoros" name="SFX Volume"/>
+ <slider label="Streaming de música" name="Music Volume"/>
+ <check_box label="Voz" name="enable_voice_check"/>
<slider label="Voz" name="Voice Volume"/>
- <text_editor name="voice_unavailable">
- Bate-papo de Voz nâo está disponível
- </text_editor>
- <check_box label="Habilitar bate-papo de Voz" name="enable_voice_check"/>
+ <text name="Listen from">
+ Ouvir a partir de:
+ </text>
<radio_group name="ear_location">
- <radio_item name="0" label="Ouvir o bate-papo de voz pela posição de câmera" />
- <radio_item name="1" label="Ouvir o bate-papo de voz pela posição do avatar" />
+ <radio_item label="Posição de câmera" name="0"/>
+ <radio_item label="Posição do avatar" name="1"/>
</radio_group>
- <button label="Configurações do dispositivo" name="device_settings_btn" width="180"/>
- <text name="muting_text">
- Volume:
- </text>
- <text name="streaming_prefs_text">
- Preferências de
-Streaming:
- </text>
- <text name="audio_prefs_text">
- Preferências de Áudio:
- </text>
- <panel label="Volume" name="Volume Panel"/>
- <check_box label="Tocar música em streaming" name="streaming_music"/>
- <check_box label="Tocar streaming de Mídia" name="streaming_video"/>
- <check_box label="Tocar mídia automaticamente" name="auto_streaming_video"/>
- <check_box label="Silenciar Áudio quando minimizar janela" name="mute_when_minimized"/>
- <slider label="Efeito Doppler" name="Doppler Effect"/>
- <slider label="Fator Distância" name="Distance Factor"/>
- <slider label="Fator Rolloff" name="Rolloff Factor"/>
- <spinner label="Mudar nível de alerta de L$" name="L$ Change Threshold" label_width="165" width="229"/>
- <spinner label="Mudar nível de alerta de Saúde" name="Health Change Threshold" label_width="165" width="229"/>
+ <button label="Controles de entrada/saída" name="device_settings_btn" width="180"/>
+ <panel label="Configuração dos dispositivo" name="device_settings_panel">
+ <panel.string name="default_text">
+ Padrão
+ </panel.string>
+ <text name="Input">
+ Entrada
+ </text>
+ <text name="My volume label">
+ Meu volume:
+ </text>
+ <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Mude o volume usando o controle deslizante"/>
+ <text name="wait_text">
+ Aguarde
+ </text>
+ <text name="Output">
+ Saída
+ </text>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml
new file mode 100644
index 0000000000..d8013c974f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+ <layout_stack name="media_controls">
+ <layout_panel name="media_address">
+ <line_editor name="media_address_url" tool_tip="URL da mídia"/>
+ <layout_stack name="media_address_url_icons">
+ <layout_panel>
+ <icon name="media_whitelist_flag" tool_tip="Lista ativada"/>
+ </layout_panel>
+ <layout_panel>
+ <icon name="media_secure_lock_flag" tool_tip="Navegação segura"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="media_play_position">
+ <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Andamento do vídeo"/>
+ </layout_panel>
+ <layout_panel name="media_volume">
+ <button name="media_mute_button" tool_tip="Silenciar esta mídia"/>
+ <slider name="volume_slider" tool_tip="Volume"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack>
+ <panel name="media_progress_indicator">
+ <progress_bar name="media_progress_bar" tool_tip="Carregando mídia"/>
+ </panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_profile.xml b/indra/newview/skins/default/xui/pt/panel_profile.xml
index ff53aa6a41..a9a5116d3c 100644
--- a/indra/newview/skins/default/xui/pt/panel_profile.xml
+++ b/indra/newview/skins/default/xui/pt/panel_profile.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_profile">
+<panel label="Perfil" name="panel_profile">
<string name="CaptionTextAcctInfo">
[ACCTTYPE]
[PAYMENTINFO] [AGEVERIFICATION]
@@ -11,4 +11,38 @@
http://www.secondlife.com/account/partners.php?lang=pt
</string>
<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=pt-BR"/>
+ <string name="no_partner_text" value="Ninguém"/>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="second_life_image_panel">
+ <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="title_rw_descr_text" value="Mundo real:"/>
+ </panel>
+ <text name="me_homepage_text">
+ Homepage:
+ </text>
+ <text name="title_member_text" value="Membro desde:"/>
+ <text name="title_acc_status_text" value="Status da conta:"/>
+ <text name="acc_status_text" value="Residente. Nenhuma info de pagamento no arquivo."/>
+ <text name="title_partner_text" value="Parceiro:"/>
+ <text name="title_groups_text" value="Grupos:"/>
+ </panel>
+ </scroll_container>
+ <panel name="profile_buttons_panel">
+ <button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade para o residente"/>
+ <button label="MI" name="im" tool_tip="Abrir sessão de Mensagem instantânea"/>
+ <button label="Chamada" name="call" tool_tip="Chamar este residente"/>
+ <button label="Mapa" name="show_on_map_btn" tool_tip="exibir o residente no mapa"/>
+ <button label="Teletransporte" name="teleport" tool_tip="Oferecer teletransporte"/>
+ <button label="▼" name="overflow_btn" tool_tip="Pagar dinheiro ou compartilhar inventário com o residente"/>
+ </panel>
+ <panel name="profile_me_buttons_panel">
+ <button label="Editar perfil" name="edit_profile_btn"/>
+ <button label="Editar aparência" name="edit_appearance_btn"/>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_profile_view.xml b/indra/newview/skins/default/xui/pt/panel_profile_view.xml
new file mode 100644
index 0000000000..62a16c6fbe
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_profile_view.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_target_profile">
+ <string name="status_online">
+ Conectado
+ </string>
+ <string name="status_offline">
+ Desconectado
+ </string>
+ <text_editor name="user_name" value="Carregando..."/>
+ <text name="status" value="Conectado"/>
+ <tab_container name="tabs">
+ <panel label="PERFIL" name="panel_profile"/>
+ <panel label="DESTAQUES" name="panel_picks"/>
+ <panel label="ANOTAÇÕES E PRIVACIDADE" name="panel_notes"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml
index 4977a1fac9..122cae940c 100644
--- a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Corretagem" name="Covenant">
<text name="estate_section_lbl">
- Propriedade:
+ Propriedade
</text>
<text bottom_delta="-19" name="estate_name_lbl">
Nome:
@@ -22,7 +22,7 @@
Última modificação: Quarta, 31 de dezembro de 1969 às 16:00:00 horas
</text>
<button label="?" name="covenant_help"/>
- <text_editor name="covenant_editor" bottom="-247" height="162" >
+ <text_editor bottom="-247" height="162" name="covenant_editor">
Não há nenhuma regra fornecida para esta Propriedade.
</text_editor>
<button label="Resetar" name="reset_covenant"/>
@@ -30,12 +30,11 @@
As mudanças das regras serão mostradas em todos os lotes
da propriedade.
</text>
- <text bottom_delta="-36" name="covenant_instructions">
- Arraste e solte um notecard, para mudar as Regras desta
- Propriedade.
+ <text bottom_delta="-36" name="covenant_instructions">
+ Arrastar e soltar um notecard para alterar o Covenant para esta propriedade.
</text>
<text bottom_delta="-36" name="region_section_lbl">
- Região:
+ Região
</text>
<text name="region_name_lbl">
Nome:
diff --git a/indra/newview/skins/default/xui/pt/panel_region_debug.xml b/indra/newview/skins/default/xui/pt/panel_region_debug.xml
index 724df20155..2119a06e55 100644
--- a/indra/newview/skins/default/xui/pt/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/pt/panel_region_debug.xml
@@ -22,18 +22,18 @@
<line_editor name="target_avatar_name">
(nenhum)
</line_editor>
- <button label="Escolher..." name="choose_avatar_btn"/>
+ <button label="Selecionar" name="choose_avatar_btn"/>
<text name="options_text_lbl">
Opções:
</text>
- <check_box label="Retornar apenas aqueles objetos que contenham scripts" name="return_scripts" tool_tip="Retornar apenas objetos que contenham scripts."/>
- <check_box label="Retornar apenas aqueles objetos na terra de alguém" name="return_other_land" tool_tip="Retornar apenas objetos que estejam na terra pertencente a alguém"/>
- <check_box label="Retornar objetos em cada região desta propriedade" name="return_estate_wide" tool_tip="Retornar objetos em todas as regiões que constituem esta propriedade"/>
+ <check_box label="Com scripts" name="return_scripts" tool_tip="Só devolver objetos com scripts"/>
+ <check_box label="No terreno de outra pessoa" name="return_other_land" tool_tip="Retornar apenas objetos que estejam na terra pertencente a alguém"/>
+ <check_box label="Em todas as regiões desta propriedade" name="return_estate_wide" tool_tip="Retornar objetos em todas as regiões que constituem esta propriedade"/>
<button label="Retornar" name="return_btn"/>
- <button width="280" label="Pegar os principais colidentes..." name="top_colliders_btn" tool_tip="Lista dos objetos que experimentam as mais potenciais colisões"/>
- <button label="?" name="top_colliders_help" left="297"/>
- <button width="280" label="Pegar Principais Scripts..." name="top_scripts_btn" tool_tip="Lista de objetos gastando mais tempo rodando scripts"/>
- <button label="?" name="top_scripts_help" left="297"/>
+ <button label="Pegar os principais colidentes..." name="top_colliders_btn" tool_tip="Lista dos objetos que experimentam as mais potenciais colisões" width="280"/>
+ <button label="?" left="297" name="top_colliders_help"/>
+ <button label="Pegar Principais Scripts..." name="top_scripts_btn" tool_tip="Lista de objetos gastando mais tempo rodando scripts" width="280"/>
+ <button label="?" left="297" name="top_scripts_help"/>
<button label="Reiniciar a Região" name="restart_btn" tool_tip="Dar 2 minutos de contagem regressiva e reiniciar a região"/>
<button label="?" name="restart_help"/>
<button label="Atrasar o Reinicio" name="cancel_restart_btn" tool_tip="Atrasar o reinicio da região por uma hora"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_region_estate.xml b/indra/newview/skins/default/xui/pt/panel_region_estate.xml
index f43402be15..c893472de1 100644
--- a/indra/newview/skins/default/xui/pt/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/pt/panel_region_estate.xml
@@ -11,7 +11,7 @@ todas as regiões desta propriedade.
(desconhecido)
</text>
<text name="owner_text">
- Proprietário:
+ Proprietário do imóvel:
</text>
<text name="estate_owner">
(desconhecido)
@@ -24,10 +24,10 @@ todas as regiões desta propriedade.
<check_box label="Permitir acesso público" name="externally_visible_check"/>
<button label="?" name="externally_visible_help"/>
<text name="Only Allow">
- Acesso restrito a Residentes...
+ Restringir acesso a contas confirmardas por:
</text>
- <check_box label="com info. de pagamento em arquivo" name="limit_payment" tool_tip="Banir residentes não identificados."/>
- <check_box label="Adultos com idade verificada" name="limit_age_verified" tool_tip="Banir residentes que não tenham confirmado a sua idade. Ver support.secondlife.com para mais informações."/>
+ <check_box label="Dados de pagamento fornecidos" name="limit_payment" tool_tip="Banir residentes sem identificação"/>
+ <check_box label="Verificação de idade" name="limit_age_verified" tool_tip="Banir residentes que não comprovaram a idade. Consulte o [SUPPORT_SITE] para saber mais."/>
<check_box label="Permitir conversa de voz" name="voice_chat_check"/>
<button label="?" name="voice_chat_help"/>
<check_box label="Permitir Tele-transporte direto" name="allow_direct_teleport"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_region_texture.xml b/indra/newview/skins/default/xui/pt/panel_region_texture.xml
index 4787b59a8d..7f37919af2 100644
--- a/indra/newview/skins/default/xui/pt/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/pt/panel_region_texture.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Texturas de Chão" name="Textures">
<text name="region_text_lbl">
Região:
@@ -36,22 +36,22 @@
<text name="height_text_lbl9">
Noroeste
</text>
- <spinner label="Baixo" name="height_start_spin_0" />
- <spinner label="Baixo" name="height_start_spin_1" />
- <spinner label="Baixo" name="height_start_spin_2" />
- <spinner label="Baixo" name="height_start_spin_3" />
- <spinner label="Alto" name="height_range_spin_0" />
- <spinner label="Alto" name="height_range_spin_1" />
- <spinner label="Alto" name="height_range_spin_2" />
- <spinner label="Alto" name="height_range_spin_3" />
+ <spinner label="Baixo" name="height_start_spin_0"/>
+ <spinner label="Baixo" name="height_start_spin_1"/>
+ <spinner label="Baixo" name="height_start_spin_2"/>
+ <spinner label="Baixo" name="height_start_spin_3"/>
+ <spinner label="Alto" name="height_range_spin_0"/>
+ <spinner label="Alto" name="height_range_spin_1"/>
+ <spinner label="Alto" name="height_range_spin_2"/>
+ <spinner label="Alto" name="height_range_spin_3"/>
<text name="height_text_lbl10">
- Estes valores respresentam o tipo de escala para as texturas acima.
+ Os valores representam o intervalo de mistura das texturas acima.
</text>
<text name="height_text_lbl11">
- Medido em metros, o valor Baixo é a altura máxima da Textura #1,
+ Em metros, o valor BAIXO é a altura MÁXIMA da Textura 1, e HIGH é a altura MÍNIMA da Textura 4.
</text>
<text name="height_text_lbl12">
e o valor Alto é a altura Mínima da Textura #4.
</text>
- <button label="Aplicar" name="apply_btn" />
+ <button label="Aplicar" name="apply_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_script_ed.xml b/indra/newview/skins/default/xui/pt/panel_script_ed.xml
new file mode 100644
index 0000000000..6f022945c2
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_script_ed.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+ <panel.string name="loading">
+ Carregando...
+ </panel.string>
+ <panel.string name="can_not_view">
+ Você não pode ver ou editar o script, uma vez que está definido como &quot;não&quot; copiar &quot;. Você precisa de permissões para ver ou editar um script dentro de um objeto.
+ </panel.string>
+ <panel.string name="public_objects_can_not_run">
+ Objetos públicos não podem executar scripts
+ </panel.string>
+ <panel.string name="script_running">
+ Executando
+ </panel.string>
+ <panel.string name="Title">
+ Script: [NOME]
+ </panel.string>
+ <text_editor name="Script Editor">
+ Carregando...
+ </text_editor>
+ <button label="Salvar" label_selected="Salvar" name="Save_btn"/>
+ <combo_box label="Inserir..." name="Insert..."/>
+ <menu_bar name="script_menu">
+ <menu label="Arquivo" name="File">
+ <menu_item_call label="Salvar" name="Save"/>
+ <menu_item_call label="Reverter todas as alterações" name="Revert All Changes"/>
+ </menu>
+ <menu label="Editar" name="Edit">
+ <menu_item_call label="desfazer" name="Undo"/>
+ <menu_item_call label="Refazer" 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="Selecionar tudo" name="Select All"/>
+ <menu_item_call label="Desmarcar" name="Deselect"/>
+ <menu_item_call label="Buscar / Substituir..." name="Search / Replace..."/>
+ </menu>
+ <menu label="Ajuda" name="Help">
+ <menu_item_call label="ajuda..." name="Help..."/>
+ <menu_item_call label="ajuda palavra- chave..." name="Keyword Help..."/>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_side_tray.xml b/indra/newview/skins/default/xui/pt/panel_side_tray.xml
new file mode 100644
index 0000000000..7892fc9e0c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_side_tray.xml
@@ -0,0 +1,26 @@
+<?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">
+ <sidetray_tab description="Casa." name="sidebar_home" tab_title="Home">
+ <panel label="casa" name="panel_home"/>
+ </sidetray_tab>
+ <sidetray_tab description="Encontre seus amigos, contatos e pessoas nas proximidades." name="sidebar_people" tab_title="People">
+ <panel_container name="panel_container">
+ <panel label="Info de grupo" name="panel_group_info_sidetray"/>
+ <panel label="Residentes&amp; Objetos bloqueados" name="panel_block_list_sidetray"/>
+ </panel_container>
+ </sidetray_tab>
+ <sidetray_tab description="Encontre lugares para ir e lugares que você ja visitou." label="Lugares" name="sidebar_places" tab_title="Places">
+ <panel label="Lugares" name="panel_places"/>
+ </sidetray_tab>
+ <sidetray_tab description="Editar seu perfil público e destaques ." name="sidebar_me" tab_title="My Profile">
+ <panel label="Eu" name="panel_me"/>
+ </sidetray_tab>
+ <sidetray_tab description="Muda sua aparência e visual atual." name="sidebar_appearance" tab_title="My Appearance">
+ <panel label="Editar aparência" name="sidepanel_appearance"/>
+ </sidetray_tab>
+ <sidetray_tab description="Busca no seu inventário." name="sidebar_inventory" tab_title="My Inventory">
+ <panel label="Editar inventário" name="sidepanel_inventory"/>
+ </sidetray_tab>
+</side_tray>
diff --git a/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml
new file mode 100644
index 0000000000..7c06119901
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="sidetray_tab_panel">
+ <text name="sidetray_tab_title" value="Bandeja lateral"/>
+ <button name="show_help" tool_tip="Mostrar ajuda"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml
new file mode 100644
index 0000000000..05869cf67a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
+<panel name="panel_stand_stop_flying">
+ <button label="Levantar-se" name="stand_btn" tool_tip="Clique aqui para ficar de pé."/>
+ <button label="Parar de voar" name="stop_fly_btn" tool_tip="Parar de voar"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml
index 7f3d2b34a6..9485915263 100644
--- a/indra/newview/skins/default/xui/pt/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/pt/panel_status_bar.xml
@@ -1,38 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="status">
- <text name="ParcelNameText" tool_tip="Nome do pedaço de terra em que você está. Clique Sobre a Terra para informações.">
- Nome do pedaço de terra vai aqui
- </text>
- <text name="BalanceText" tool_tip="Saldo">
- Carregando...
- </text>
- <button label="" label_selected="" name="buycurrency" tool_tip="Comprar dinheiro"/>
- <text name="TimeText" tool_tip="Hora atual (do Pacífico)">
- 12:00 AM
- </text>
- <string name="StatBarDaysOfWeek">
+ <panel.string name="StatBarDaysOfWeek">
Domingo:Segunda-feira:Terça-feira:Quarta-feira:Quinta-feira:Sexta-feira:Sábado
- </string>
- <string name="StatBarMonthsOfYear">
+ </panel.string>
+ <panel.string name="StatBarMonthsOfYear">
Janeiro:Fevereiro:Março:Abril:Maio:Junho:Julho:Agosto:Setembro:Outubro:Novembro:Dezembro
- </string>
- <button label="" label_selected="" name="scriptout" tool_tip="Erros e avisos do Script"/>
- <button label="" label_selected="" name="health" tool_tip="Saúde"/>
- <text name="HealthText" tool_tip="Saúde">
- 100%
- </text>
- <button label="" label_selected="" name="no_fly" tool_tip="Não é permitido Voar"/>
- <button label="" label_selected="" name="no_build" tool_tip="Construir/Rezzar não permitido"/>
- <button label="" label_selected="" name="no_scripts" tool_tip="Scripts não permitidos"/>
- <button label="" label_selected="" name="restrictpush" tool_tip="Não Empurrar"/>
- <button label="" label_selected="" name="status_no_voice" tool_tip="Voz não disponível aqui"/>
- <button label="" label_selected="" name="buyland" tool_tip="Comprar este lote"/>
- <line_editor label="Buscar" name="search_editor" tool_tip="Buscar no [SECOND_LIFE]"/>
- <button label="" label_selected="" name="search_btn" tool_tip="Buscar no [SECOND_LIFE]"/>
- <string name="packet_loss_tooltip">
+ </panel.string>
+ <panel.string name="packet_loss_tooltip">
Perda de pacote
- </string>
- <string name="bandwidth_tooltip">
+ </panel.string>
+ <panel.string name="bandwidth_tooltip">
Banda
- </string>
+ </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>
+ <button label="" label_selected="" name="buycurrency" tool_tip="Meu saldo: Comprar mais L$"/>
+ <text name="TimeText" tool_tip="Hora atual (Pacífico)">
+ 12:00 AM
+ </text>
+ <button name="volume_btn" tool_tip="Volume geral"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_teleport_history.xml b/indra/newview/skins/default/xui/pt/panel_teleport_history.xml
new file mode 100644
index 0000000000..9dc5aed91e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_teleport_history.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Teleport History">
+ <accordion name="history_accordion">
+ <accordion_tab name="today" title="Hoje"/>
+ <accordion_tab name="yesterday" title="Ontem"/>
+ <accordion_tab name="2_days_ago" title="2 dias atrás"/>
+ <accordion_tab name="3_days_ago" title="3 dias atrás"/>
+ <accordion_tab name="4_days_ago" title="4 dias atrás"/>
+ <accordion_tab name="5_days_ago" title="5 dias atrás"/>
+ <accordion_tab name="6_days_and_older" title="6 dias e mais velhos"/>
+ <accordion_tab name="1_month_and_older" title="1 mês e mais velhos"/>
+ <accordion_tab name="6_months_and_older" title="6 meses e mais velhos"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_world_map.xml b/indra/newview/skins/default/xui/pt/panel_world_map.xml
index 2fda713ec7..584ef8a666 100644
--- a/indra/newview/skins/default/xui/pt/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/pt/panel_world_map.xml
@@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="world_map">
+ <panel.string name="Loading">
+ Carregando...
+ </panel.string>
+ <panel.string name="InvalidLocation">
+ Localização inválida
+ </panel.string>
<panel.string name="world_map_north">
N
</panel.string>
diff --git a/indra/newview/skins/default/xui/pt/role_actions.xml b/indra/newview/skins/default/xui/pt/role_actions.xml
index 8d192d4002..2e6e4dd133 100644
--- a/indra/newview/skins/default/xui/pt/role_actions.xml
+++ b/indra/newview/skins/default/xui/pt/role_actions.xml
@@ -1,186 +1,71 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<role_actions>
- <action_set
- description="Esta habilidades incluem poderes de adicionar ou remover membros do grupo e permitir que novos membros se juntem sem um convite."
- name="Membership">
- <action description="Convidar pessoas para este grupo"
- longdescription="Convide pessoas para este grupo usando o botão &apos;Convidar nova pessoa...&apos; em Membros &amp; aba Funções &gt; sub-aba Membros."
- name="member invite" />
- <action description="Expulsar membros deste grupo"
- longdescription="Expulse membros deste grupo usando o botão &apos;Expulsar do grupo&apos; em Membros &amp; aba Funções &gt; sub-aba Membros. Um proprietário pode expulsar qualquer um, exceto outro proprietário. Se você não é um proprietário, um membro pode expulsá-lo do grupo se, e somente se, ele apenas tiver a função de todos e não outras funções. Para remover membros de funções, você precisa ter a habilidade &apos;Remover membros de funções&apos;."
- name="member eject" />
- <action
- description="Ativar/desativar &apos;Abrir registro&apos; e mudar &apos;Taxa de assinatura&apos;"
- longdescription="Ative/desative &apos;Abrir registro&apos; para permitir que novos membros se unam sem um convite, e mude a &apos;Taxa de registro&apos; na seção Preferência de grupo da aba Geral."
- name="member options" />
+ <action_set description="Esta habilidades incluem poderes de adicionar ou remover membros do grupo e permitir que novos membros se juntem sem um convite." name="Membership">
+ <action description="Convidar pessoas para este grupo" longdescription="Em Membros &gt; Cargos, use o botão &apos;Convidar&apos; para convidar pessoas para entrar no grupo." name="member invite"/>
+ <action description="Expulsar membros deste grupo" longdescription="Em Membros &gt; Cargos, use o botão &apos;Ejetar&apos; para tirar pessoas do grupo. Proprietários podem expulsar qualquer pessoa, menos outro proprietário. Se você não é Proprietário, um membro só pode ser expulso se tiver cargo &apos;Todos&apos; e nenhum outro cargo. Para destituir um membro de seu cargo, você precisa ter a função &apos;Destituir membro com cargo&apos;." name="member eject"/>
+ <action description="Alterna entre &apos;Inscrições abertas&apos; e &apos;Taxa de associação&apos;." longdescription="Ative &apos;Inscrições abertas&apos; para que novos membros entrem no grupo sem convite, mude a &apos;Taxa de associação&apos; na seção Geral." name="member options"/>
</action_set>
- <action_set
- description="Estas habilidades incluem poderes de adicionar, remover e mudar funções do grupo; adicionar e remover membros em funções e designar habilidades a funções."
- name="Roles">
- <action description="Criar novas funções"
- longdescription="Crie novas funções em Membros &amp; aba Funções &gt; sub-aba Funções."
- name="role create" />
- <action description="Apagar funções"
- longdescription="Apague funções em Membros &amp; aba Funções &gt; sub-aba Funções."
- name="role delete" />
- <action description="Mudar nomes de função, títulos e descrições"
- longdescription="Mude o nome de funções, títulos e descrições na parte inferior de Membros &amp; aba Funções &gt; sub-aba Funções após selecionar uma função."
- name="role properties" />
- <action description="Designar membros para a função do designador"
- longdescription="Designe membros a funções na seção de funções designadas de Membros &amp; aba Funções &gt; sub-aba Membros. Um membro com este poder pode somente adicionar membros para a função que o designador já possui."
- name="role assign member limited" />
- <action description="Designar membros para qualquer função"
- longdescription="Designe membros a qualquer função na seção de funções designadas de Membros &amp; aba Funções &gt; sub-aba Membros. *AVISO* Quaisquer membros em uma função com esta habilidade podem designar a si próprios--e quaisquer outros membros não proprietários--para funções que têm mais poderes do que as atuais, elevando-os a poderes próximos ao do proprietário. Certifique-se de saber o que está fazendo antes de designar esta habilidade."
- name="role assign member" />
- <action description="Remover membros das funções"
- longdescription="Remova membros de funções na seção de funções designadas de Membros &amp; aba Funções &gt; sub-aba Membros. Proprietários não podem ser removidos."
- name="role remove member" />
- <action description="Determinar e remover habilidades em funções"
- longdescription="Designe e remova habilidades em funções na seção habilidades pertmitidas de Membros &amp; aba Funções &gt; sub-aba Funções. *AVISO* Quaisquer membros em uma função com esta habilidade podem desginar a si próprios--e quaisquer outros membros não proprietários--todas as habilidades, elevando-os a poderes próximos ao do proprietário. Certifique-se de saber o que está fazendo antes de designar esta habilidade."
- name="role change actions" />
+ <action_set description="Estas habilidades incluem poderes de adicionar, remover e mudar funções do grupo; adicionar e remover membros em funções e designar habilidades a funções." name="Roles">
+ <action description="Criar novas funções" longdescription="Crie novos cargos na guia Cargos." name="role create"/>
+ <action description="Apagar funções" longdescription="Exclua cargos na guia Cargos." name="role delete"/>
+ <action description="Modificar o nome, título e a descrição de cargos, e se o acesso a essas informações é público ou não" longdescription="Modificar o nome, título e a descrição de cargos, e se o acesso a essas informações é público ou não. Essas configurações ficam na guia Cargos, depois da seleção do cargo." name="role properties"/>
+ <action description="Designar membros para a função do designador" longdescription="Na lista Cargos desempenhados, distribua os cargos aos membros (em Cargos &gt; guia Membros). Membros exercendo esta função devem exercer um cargo para poder adicionar outros membros ao mesmo cargo." name="role assign member limited"/>
+ <action description="Designar membros para qualquer função" longdescription="Designe cargos aos membros na lista Cargos desempenhados (Cargos &gt; guia Membros). *ATENÇÃO* Qualquer membro exercendo um cargo com esta função pode se designar -- ou designar outros membros não-proprietários -- a cargos com mais poder do que têm. Ou seja, membros com essa função podem assumir poderes quase iguais aos do proprietário. Pense bem antes de dar esta função a alguém." name="role assign member"/>
+ <action description="Remover membros das funções" longdescription="Use a lista Cargos desempenhados para destituir membros de seus cargos (Cargos &gt; guia Membros). Proprietários não podem ser destituídos." name="role remove member"/>
+ <action description="Determinar e remover habilidades em funções" longdescription="Use a lista Funções autorizadas para adicionar e tirar as funções de cada cargo (Cargos &gt; guia Cargos). *ATENÇÃO* Qualquer membro exercendo um cargo com esta função pode dar a sim mesmo -- ou a outros membros não-proprietários -- todas as funções. Membros excercendo todas as funções podem assumir poderes quase iguais aos do proprietário. Pense bem antes de dar esta função a alguém." name="role change actions"/>
</action_set>
- <action_set
- description="Estas habilidade incluem poderes para modificar esta identidade de grupo, como mudar a visibilidade pública, apresentação e insígnia."
- name="Group Identity">
- <action
- description="Mudar apresentação, insígnia, &apos;Publicar na web&apos;, e quais membros estão publicamente visíveis em Informações do Grupo."
- longdescription="Mude a apresentação, insígnia, &apos;Publicar na web&apos; e quais membros estão publicamente visíveis em Informações do grupo. É feito na aba Geral."
- name="group change identity" />
+ <action_set description="Estas habilidade incluem poderes para modificar esta identidade de grupo, como mudar a visibilidade pública, apresentação e insígnia." name="Group Identity">
+ <action description="Mudar apresentação, insígnia, &apos;Publicar na web&apos;, e quais membros estão publicamente visíveis em Informações do Grupo." longdescription="Modificar o estatuto, símbolo e exibição nos resultados de busca. Use a seção Geral." name="group change identity"/>
</action_set>
- <action_set
- description="Estas habilidades incluem poderes para transferir, modificar e vender terrenos do grupo. Vá pra a janela Sobre o terreno, clique com o botão direito no terreno e selecione &apos;Sobre o terreno...&apos; ou clique na informação da parcela na barra do menu."
- name="Parcel Management">
- <action description="Transferir e comprar terreno para o grupo"
- longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno &gt; aba Geral."
- name="land deed" />
- <action description="Abandonar terreno para Governador Linden"
- longdescription="Abandone terreno para Governador Linden. *AVISO* Qualquer membro em uma função com esta habilidade pode abandonar o terreno pertencente ao grupo em Sobre o terreno &gt; aba Geral, revertendo à posse Linden sem uma venda! Certifique-se de saber o que está fazendo antes de designar esta habilidade."
- name="land release" />
- <action description="Definir terreno para informação de venda"
- longdescription="Defina informações de venda para terreno. *AVISO* Qualquer membro em uma função com esta habilidade pode vender terrenos pertencentes ao grupo em Sobre o terreno &gt; aba Geral como quiser! Certifique-se de sabe o que está fazendo antes de designar esta habilidade."
- name="land set sale info" />
- <action description="Subdividir e unir parcelas"
- longdescription="Subdivide and join parcels. This is done by right-clicking the ground, &apos;Edit Terrain&apos;, and dragging your mouse on the land to make a selection. To subdivide, select what you want to split and click &apos;Subdivide...&apos;. To join, select two or more contiguous parcels and click &apos;Join...&apos;. "
- name="land divide join" />
+ <action_set description="Estas funções incluem poderes de transferir, vender e modificar os terrenos do grupo. Para acessar a janela &apos;Sobre terrenos&apos;, clique no chão com o botão direito e selecione &apos;Sobre terrenos&apos;. Ou clique no ícone &apos;i&apos; da barra de navegação." name="Parcel Management">
+ <action description="Transferir e comprar terreno para o grupo" longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno &gt; aba Geral." name="land deed"/>
+ <action description="Abandonar terreno para Governador Linden" longdescription="Abandone terreno para Governador Linden. *AVISO* Qualquer membro em uma função com esta habilidade pode abandonar o terreno pertencente ao grupo em Sobre o terreno &gt; aba Geral, revertendo à posse Linden sem uma venda! Certifique-se de saber o que está fazendo antes de designar esta habilidade." name="land release"/>
+ <action description="Definir terreno para informação de venda" longdescription="Defina informações de venda para terreno. *AVISO* Qualquer membro em uma função com esta habilidade pode vender terrenos pertencentes ao grupo em Sobre o terreno &gt; aba Geral como quiser! Certifique-se de sabe o que está fazendo antes de designar esta habilidade." name="land set sale info"/>
+ <action description="Subdividir e unir parcelas" longdescription="Juntar ou dividir lotes. Clique no chão com o botão direito, selecione &apos;Editar terreno&apos; e arraste o mouse sobre o terreno para ver as opções. Para dividir um terreno, selecione a área a ser dividida e clique em &apos;Dividir&apos;. Para juntar terrenos, selecione dois ou mais lotes adjacentes e clique em &apos;Juntar&apos;." name="land divide join"/>
</action_set>
- <action_set
- description="Estas habilidades incluem poderes para mudar o nome da parcelas e configurações de publicação, visibilidade da busca de diretório e ponto de aterrissagem &amp; opções de rota de TP."
- name="Parcel Identity">
- <action
- description="Ativar/desativar &apos;Exibir em locais de encontro&apos; e definir categoria"
- longdescription="Ativar/desativar &apos;Exibir em locais de encontro&apos; e configurar uma categoria de parcela em Sobre o terreno &gt; aba Opções."
- name="land find places" />
- <action
- description="Mudar nome da parcela, descrição, e configurações &apos;Publicar na web&apos;"
- longdescription="Mude o nome da parcela, descrição e configurações de &apos;Publicar na web&apos;. É feito em Sobre o terreno &gt; aba Opções."
- name="land change identity" />
- <action description="Definir ponto de aterrissagem e rota de teletransporte"
- longdescription="Em uma parcela pertencente ao grupo, membros em uma função com esta habilidade podem definir um ponto de aterrissagem para especificar onde os teletransportes chegam e também definir a rota do teletransporte para um maior controle. É feito em Sobre o terreno &gt; aba Opções."
- name="land set landing point" />
+ <action_set description="Estas habilidades incluem poderes para mudar o nome da parcelas e configurações de publicação, visibilidade da busca de diretório e ponto de aterrissagem &amp; opções de rota de TP." name="Parcel Identity">
+ <action description="Alternar &apos;Exibir nos resultados de busca&apos; e selecionar a categoria" longdescription="Alterne entre &apos;Exibir nos resultados de busca&apos; ou não, e selecione a categoria do terreno em &apos;Sobre o terreno&apos;." name="land find places"/>
+ <action description="Mude o nome, a descrição e a exibição do terreno nos resultados de busca." longdescription="Mude o nome, a descrição e a exibição do terreno nos resultados de busca. Veja essas opções em Sobre o terreno &gt; guia Opções." name="land change identity"/>
+ <action description="Definir ponto de aterrissagem e rota de teletransporte" longdescription="Em uma parcela pertencente ao grupo, membros em uma função com esta habilidade podem definir um ponto de aterrissagem para especificar onde os teletransportes chegam e também definir a rota do teletransporte para um maior controle. É feito em Sobre o terreno &gt; aba Opções." name="land set landing point"/>
</action_set>
- <action_set
- description="Estas habilidade incluem poderes que afetam opções de parcela, como &apos;Criar objetos&apos;, &apos;Editar terreno&apos; e música &amp; configurações de mídia."
- name="Parcel Settings">
- <action description="Mudar música &amp; configurações de mídia"
- longdescription="Mude streaming de música e configurações de vídeo em Sobre o terreno &gt; aba Mídia."
- name="land change media" />
- <action description="Ativar/desativar &apos;Editar terreno&apos;"
- longdescription="Ative/desative &apos;Editar terreno&apos;. *AVISO* Sobre o terreno &gt; aba Opções &gt; Editar terreno permite a qualquer um alterar as formas de seu terreno, substituir e mover plantas Linden. Certifique-se de saber o que está fazendo antes de desginar esta habilidade. A edição de terreno é ativada/desativada em Sobre o terreno &gt; aba Opções."
- name="land edit" />
- <action
- description="Ativar/desativar variados Sobre o Terreno &gt; Opções de configuração"
- longdescription="Ative/desative &apos;Seguro (sem dano)&apos;, &apos;Voar&apos;, e permita a outros residentes: &apos;Criar objetos&apos;, &apos;Editar terreno&apos;, &apos;Criar pontos de referência&apos;, e &apos;Executar scripts&apos; em um terreno pertencente ao grupo em Sobre o terreno &gt; aba Opções."
- name="land options" />
+ <action_set description="Estas habilidade incluem poderes que afetam opções de parcela, como &apos;Criar objetos&apos;, &apos;Editar terreno&apos; e música &amp; configurações de mídia." name="Parcel Settings">
+ <action description="Mudar música &amp; configurações de mídia" longdescription="Mude streaming de música e configurações de vídeo em Sobre o terreno &gt; aba Mídia." name="land change media"/>
+ <action description="Ativar/desativar &apos;Editar terreno&apos;" longdescription="Ative/desative &apos;Editar terreno&apos;. *AVISO* Sobre o terreno &gt; aba Opções &gt; Editar terreno permite a qualquer um alterar as formas de seu terreno, substituir e mover plantas Linden. Certifique-se de saber o que está fazendo antes de desginar esta habilidade. A edição de terreno é ativada/desativada em Sobre o terreno &gt; aba Opções." name="land edit"/>
+ <action description="Ativar/desativar variados Sobre o Terreno &gt; Opções de configuração" longdescription="Alterna as opções &apos;Seguro (zero danos)&apos;, &apos;Voar&apos; e autorizar outros residentes a: &apos;Editar terreno&apos;, &apos;Contruir&apos;, &apos;Criar marcos&apos; e &apos;Executar scripts&apos; nos terrenos do grupo. Clique em Sobre o terreno &gt; guia Opções." name="land options"/>
</action_set>
- <action_set
- description="Estas habilidades incluem poderes que permitem a membros ultrapassar restrições em parcelas pertencentes ao grupo."
- name="Parcel Powers">
- <action description="Sempre permitir &apos;Editar terreno&apos;"
- longdescription="Membros em uma função com esta habilidade podem editar terreno em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções."
- name="land allow edit land" />
- <action description="Sempre permitir &apos;Voar&apos;"
- longdescription="Membros em uma função com esta habilidade podem voar sobre uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções."
- name="land allow fly" />
- <action description="Sempre permitir &apos;Criar objetos&apos;"
- longdescription="Membros em uma função com esta habilidade podem criar objetos em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções."
- name="land allow create" />
- <action description="Sempre permitir &apos;Criar ponto de referência&apos;"
- longdescription="Membros em uma função com esta habilidade podem colocar um ponto de referência uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções."
- name="land allow landmark" />
- <action description="Permitir &apos;Colocar casa aqui&apos; no terreno do grupo"
- longdescription="Membros em uma função com esta habilidade podem usar o menu Mundo &gt; Definir lar aqui em uma parcela do grupo (definir terreno ou transferir para este grupo)."
- name="land allow set home" />
+ <action_set description="Estas habilidades incluem poderes que permitem a membros ultrapassar restrições em parcelas pertencentes ao grupo." name="Parcel Powers">
+ <action description="Sempre permitir &apos;Editar terreno&apos;" longdescription="Membros em uma função com esta habilidade podem editar terreno em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções." name="land allow edit land"/>
+ <action description="Sempre permitir &apos;Voar&apos;" longdescription="Membros em uma função com esta habilidade podem voar sobre uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções." name="land allow fly"/>
+ <action description="Sempre permitir &apos;Criar objetos&apos;" longdescription="Membros em uma função com esta habilidade podem criar objetos em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções." name="land allow create"/>
+ <action description="Sempre permitir &apos;Criar ponto de referência&apos;" longdescription="Membros em uma função com esta habilidade podem colocar um ponto de referência uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções." name="land allow landmark"/>
+ <action description="Permitir &apos;Colocar casa aqui&apos; no terreno do grupo" longdescription="Membros exercendo cargos com esta função podem selecionar no menu Mundo &gt; Marcos &gt; Definir como casa em lotes doados ao grupo." name="land allow set home"/>
</action_set>
- <action_set
- description="Estas habilidades incluem poderes de permitir ou restringir acesso a parcelas pertencentes ao grupo, incluindo congelar e expulsar residentes."
- name="Parcel Access">
- <action description="Gerenciar listas de acesso à parcela"
- longdescription="Gerencie a lista de acesso à parcela em Sobre o terreno &gt; aba Acesso."
- name="land manage allowed" />
- <action description="Gerenciar lista de banidos da parcela"
- longdescription="Gerencie a lista de banidos da parcela em Sobre o terreno &gt; aba Banido."
- name="land manage banned" />
- <action description="Mudar configurações de parcela &apos;Vender passes...&apos;"
- longdescription="Mude configurações de &apos;Vender passes...&apos; em Sobre o terreno &gt; aba Acesso."
- name="land manage passes" />
- <action description="Expulsar e congelar residentes nas parcelas"
- longdescription="Membros em uma função com esta habilidade podem lidar com um residente indesejado em uma parcela pertencente ao grupo clicando com o botão direitos sobre ele, Mais &gt; e selecionado &apos;Expulsar...&apos; ou &apos;Congelar...&apos;."
- name="land admin" />
+ <action_set description="Estas habilidades incluem poderes de permitir ou restringir acesso a parcelas pertencentes ao grupo, incluindo congelar e expulsar residentes." name="Parcel Access">
+ <action description="Gerenciar listas de acesso à parcela" longdescription="Gerencie a lista de acesso à parcela em Sobre o terreno &gt; aba Acesso." name="land manage allowed"/>
+ <action description="Gerenciar lista de banidos da parcela" longdescription="Administre as listas de acesso e bloqueio em Sobre o terreno &gt; guia Acesso." name="land manage banned"/>
+ <action description="Modificar as opções &apos;Vender passes para&apos;" longdescription="Mude as opções &apos;Vender passes para&apos; em Sobre o terreno &gt; guia Acesso." name="land manage passes"/>
+ <action description="Expulsar e congelar residentes nas parcelas" longdescription="Membros exercendo cargos com esta função podem lidar com residentes problemáticos nos terrenos do grupo. Clique no residente com o botão direito, depois selecione &apos;Ejetar&apos; ou &apos;Congelar&apos;." name="land admin"/>
</action_set>
- <action_set
- description="Estas habilidades incluem poderes de permitir a membros retornar objetos e colocar e mover plantas Linden. Útil para que membros organizem a paisagem, porém deve ser usado com cuidado, devido a não ser possível desfazer a mudança dos objetos."
- name="Parcel Content">
- <action description="Retornar objetos que pertencem ao grupo"
- longdescription="Retorne objetos em parcelas pertencentes ao grupo que pertencem ao grupo em Sobre o terreno &gt; aba Objetos."
- name="land return group owned" />
- <action description="Retornar objetos definidos para o grupo"
- longdescription="Retorne objetos em parcelas pertencentes ao grupo que em Sobre o terrreno &gt; aba Objetos."
- name="land return group set" />
- <action description="Retornar objetos que não pertencem ao grupo"
- longdescription="Retorne objetos nas parcelas pertencentes a um grupo que estão sem grupo em em Sobre o terreno &gt; aba Objetos."
- name="land return non group" />
- <action description="Ajardinar usando plantas Linden"
- longdescription="A habilidade de ajardinar permite colocar e mover árvores Linden, plantas e gramas. Estes itens podem ser encontrando na Biblioteca de seu inventário &gt; pasta Objetos ou podem ser criados através do botão Construir."
- name="land gardening" />
+ <action_set description="Estas habilidades incluem poderes de permitir a membros retornar objetos e colocar e mover plantas Linden. Útil para que membros organizem a paisagem, porém deve ser usado com cuidado, devido a não ser possível desfazer a mudança dos objetos." name="Parcel Content">
+ <action description="Retornar objetos que pertencem ao grupo" longdescription="Retorne objetos em parcelas pertencentes ao grupo que pertencem ao grupo em Sobre o terreno &gt; aba Objetos." name="land return group owned"/>
+ <action description="Retornar objetos definidos para o grupo" longdescription="Retorne objetos em parcelas pertencentes ao grupo que em Sobre o terrreno &gt; aba Objetos." name="land return group set"/>
+ <action description="Retornar objetos que não pertencem ao grupo" longdescription="Retorne objetos nas parcelas pertencentes a um grupo que estão sem grupo em em Sobre o terreno &gt; aba Objetos." name="land return non group"/>
+ <action description="Ajardinar usando plantas Linden" longdescription="Função de paisagismo: poder de plantar e mudar árvores, plantas e grama Linden. A pasta Biblioteca &gt; Objetos do inventário contém material de paisagismo. Use o menu Construir para criar suas próprias plantas." name="land gardening"/>
</action_set>
- <action_set
- description="These Abilities include powers to deed, modify, and sell group-owned objects. These changes are done in the Edit Tools &gt; General Tab. Right-click an object and Edit to see its settings. "
- name="Object Management">
- <action description="Transferir objetos para o grupo"
- longdescription="Transfere objetos para o grupo em Editar ferramentas &gt; aba Geral."
- name="object deed" />
- <action description="Manipular (mover, copiar, modificar) objetos do grupo"
- longdescription="Manipule (mover,copiar, modificar) objetos pertencentes ao grupo em Editar Ferramentas &gt; aba Geral."
- name="object manipulate" />
- <action description="Definir objetos pertencentes ao grupo para venda"
- longdescription="Defina objetos pertencentes ao grupo para venda em Editar Ferramentas &gt; aba Geral."
- name="object set sale" />
+ <action_set description="Estas funções incluem poderes de transferir, vender e modificar os objetos do grupo. Essas opções ficam nas Ferramentas de contrução &gt; guia Geral. Clique em um objeto com o botão direito e selecione Editar para ver as configurações do objeto." name="Object Management">
+ <action description="Transferir objetos para o grupo" longdescription="Transfira objetos para o grupo em Ferramentas de construção &gt; guia Geral." name="object deed"/>
+ <action description="Manipular (mover, copiar, modificar) objetos do grupo" longdescription="Manipule (transportar, copiar, modificar) objetos do grupo nas Ferramentas de construção &gt; guia Geral." name="object manipulate"/>
+ <action description="Definir objetos pertencentes ao grupo para venda" longdescription="Ponha objetos do grupo à venda nas Ferramentas de construção &gt; guia Geral." name="object set sale"/>
</action_set>
- <action_set
- description="Estas habilidades incluem poderes que requerem que membros paguem dívidas e recebam dividendos do grupo, e restringem acesso ao histórico de conta do grupo."
- name="Accounting">
- <action description="Pagar débitos e receber dividendos do grupo"
- longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees. "
- name="accounting accountable" />
+ <action_set description="Estas habilidades incluem poderes que requerem que membros paguem dívidas e recebam dividendos do grupo, e restringem acesso ao histórico de conta do grupo." name="Accounting">
+ <action description="Pagar débitos e receber dividendos do grupo" longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees. " name="accounting accountable"/>
</action_set>
- <action_set
- description="Estas habilidade incluem poderes de permitir enviar, receber e ver avisos de grupo."
- name="Notices">
- <action description="Enviar aviso"
- longdescription="Membros em uma função com esta habiliade podem enviar avisos em Informações de grupo &gt; aba Avisos."
- name="notices send" />
- <action description="Receber novos avisos e ver os anteriores"
- longdescription="Membros em uma função com esta habilidade podem receber os novos avisos e ver os anteriores em Informações de grupo &gt; aba Avisos."
- name="notices receive" />
+ <action_set description="Estas habilidade incluem poderes de permitir enviar, receber e ver avisos de grupo." name="Notices">
+ <action description="Enviar aviso" longdescription="Membros que exercem cargos com esta função podem enviar avisos na seção Avisos." name="notices send"/>
+ <action description="Receber novos avisos e ver os anteriores" longdescription="Membros que exercem cargos com esta função podem receber e ler avisos antigos na seção Avisos." name="notices receive"/>
</action_set>
- <action_set
- description="Estas habilidades incluem poderes de permitir a membros definir e votar em propostas e ver histórico de votação."
- name="Proposals">
- <action description="Criar proposta"
- longdescription="Membros em uma função com esta habilidade podem criar proposta para serem votadas em Informações de grupo &gt; aba Propostas."
- name="proposal start" />
- <action description="Votar em propostas"
- longdescription="Membros em uma função com esta habilidade podem votar em propostas em Informações de grupo &gt; aba Propostas."
- name="proposal vote" />
+ <action_set description="Estas habilidades incluem poderes de permitir a membros definir e votar em propostas e ver histórico de votação." name="Proposals">
+ <action description="Criar proposta" longdescription="Membros em uma função com esta habilidade podem criar proposta para serem votadas em Informações de grupo &gt; aba Propostas." name="proposal start"/>
+ <action description="Votar em propostas" longdescription="Membros em uma função com esta habilidade podem votar em propostas em Informações de grupo &gt; aba Propostas." name="proposal vote"/>
</action_set>
</role_actions>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml
new file mode 100644
index 0000000000..73ec6fb068
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Looks" name="appearance panel">
+ <string name="No Outfit" value="Nenhum"/>
+ <filter_editor label="Filtrar looks" name="Filter"/>
+ <panel name="bottom_panel">
+ <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/>
+ <button name="newlook_btn" tool_tip="Novo look"/>
+ <dnd_button name="trash_btn" tool_tip="Remover item selecionado"/>
+ <button label="Vestir" name="wear_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml
new file mode 100644
index 0000000000..75b737b8bd
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Coisas" name="objects panel">
+ <panel label="" name="sidepanel__inventory_panel">
+ <panel name="button_panel">
+ <button label="Perfil" name="info_btn"/>
+ <button label="Vestir" name="wear_btn"/>
+ <button label="Tocar" name="play_btn"/>
+ <button label="Teletransportar" name="teleport_btn"/>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
new file mode 100644
index 0000000000..556c631bf7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="item properties" title="Propriedaded do item de inventário">
+ <panel.string name="unknown">
+ (desconhecido)
+ </panel.string>
+ <panel.string name="public">
+ (público)
+ </panel.string>
+ <panel.string name="you_can">
+ você pode:
+ </panel.string>
+ <panel.string name="owner_can">
+ Proprietário pode:
+ </panel.string>
+ <panel.string name="acquiredDate">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </panel.string>
+ <text name="title" value="Propriedade do item"/>
+ <panel label="">
+ <text name="LabelItemNameTitle">
+ Nome:
+ </text>
+ <text name="LabelItemDescTitle">
+ Descrição:
+ </text>
+ <text name="LabelCreatorTitle">
+ Criador:
+ </text>
+ <button label="Perfil..." name="BtnCreator"/>
+ <text name="LabelOwnerTitle">
+ Proprietário:
+ </text>
+ <button label="Perfil..." name="BtnOwner"/>
+ <text name="LabelAcquiredTitle">
+ Adquirido:
+ </text>
+ <text name="LabelAcquiredDate">
+ Quarta 24 de Maio 12:50:46 2006
+ </text>
+ <text name="OwnerLabel">
+ Você:
+ </text>
+ <check_box label="Editar" name="CheckOwnerModify"/>
+ <check_box label="Copiar" name="CheckOwnerCopy"/>
+ <check_box label="Revender" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Qualquer um:
+ </text>
+ <check_box label="Copiar" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Grupo:
+ </text>
+ <check_box label="Compartilhar" name="CheckShareWithGroup"/>
+ <text name="NextOwnerLabel">
+ Próximo proprietário:
+ </text>
+ <check_box label="Editar" name="CheckNextOwnerModify"/>
+ <check_box label="Copiar" name="CheckNextOwnerCopy"/>
+ <check_box label="Revender" name="CheckNextOwnerTransfer"/>
+ <check_box label="À venda" name="CheckPurchase"/>
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Copiar" name="Copy"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Preço:" name="Edit Cost"/>
+ <text name="CurrencySymbol">
+ L$
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
new file mode 100644
index 0000000000..3ae728e69d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="object properties" title="Propriedades do objeto">
+ <panel.string name="text deed continued">
+ Doar
+ </panel.string>
+ <panel.string name="text deed">
+ Doar
+ </panel.string>
+ <panel.string name="text modify info 1">
+ Você pode modificar este objeto
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Você pode modificar estes objetos
+ </panel.string>
+ <panel.string name="text modify info 3">
+ Você não pode modificar este objeto
+ </panel.string>
+ <panel.string name="text modify info 4">
+ Você não pode modificar estes objetos
+ </panel.string>
+ <panel.string name="text modify warning">
+ O objeto contém links ligando suas partes
+ </panel.string>
+ <panel.string name="Cost Default">
+ Preço: L$
+ </panel.string>
+ <panel.string name="Cost Total">
+ Preço total: L$
+ </panel.string>
+ <panel.string name="Cost Per Unit">
+ Preço unitário: L$
+ </panel.string>
+ <panel.string name="Cost Mixed">
+ Preço misto
+ </panel.string>
+ <panel.string name="Sale Mixed">
+ Venda mista
+ </panel.string>
+ <panel label="">
+ <text name="Name:">
+ Nome:
+ </text>
+ <text name="Description:">
+ Descrição:
+ </text>
+ <text name="Creator:">
+ Criador:
+ </text>
+ <text name="Owner:">
+ Proprietário:
+ </text>
+ <text name="Group:">
+ Grupo:
+ </text>
+ <button name="button set group" tool_tip="Selecione o grupo que terá acesso à autorização do objeto"/>
+ <name_box initial_value="Carregando..." name="Group Name Proxy"/>
+ <button label="Doar" label_selected="Doar" name="button deed" tool_tip="Ao doar este item, o próximo dono terá permissões de próximo dono. Objetos de grupos podem ser doados por um oficial do grupo."/>
+ <check_box label="Compartilhar" name="checkbox share with group" tool_tip="Permitir que todos os membros do grupo tenhas suas permissões de modificação para este objeto. Faça uma doação para ativar restrições de função."/>
+ <text name="label click action">
+ Clique para:
+ </text>
+ <combo_box name="clickaction">
+ <combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/>
+ <combo_box.item label="Sentar em objeto" name="Sitonobject"/>
+ <combo_box.item label="Comprar objeto" name="Buyobject"/>
+ <combo_box.item label="Pagar por objeto" name="Payobject"/>
+ <combo_box.item label="Abrir" name="Open"/>
+ </combo_box>
+ <check_box label="À venda" name="checkbox for sale"/>
+ <combo_box name="sale type">
+ <combo_box.item label="Copiar" name="Copy"/>
+ <combo_box.item label="Conteúdo" name="Contents"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Preço: L$" name="Edit Cost"/>
+ <check_box label="Mostrar nos resultados de busca" name="search_check" tool_tip="Incluir o objeto nos resultados de busca"/>
+ <panel name="perms_build">
+ <text name="perm_modify">
+ Você pode modificar este objeto
+ </text>
+ <text name="Anyone can:">
+ Todos:
+ </text>
+ <check_box label="Movimentar" name="checkbox allow everyone move"/>
+ <check_box label="Copiar" name="checkbox allow everyone copy"/>
+ <text name="Next owner can:">
+ Próximo proprietário:
+ </text>
+ <check_box label="Modificar" name="checkbox next owner can modify"/>
+ <check_box label="Copiar" name="checkbox next owner can copy"/>
+ <check_box label="Transferir" name="checkbox next owner can transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/>
+ <text name="B:">
+ B:
+ </text>
+ <text name="O:">
+ O:
+ </text>
+ <text name="G:">
+ G:
+ </text>
+ <text name="E:">
+ E:
+ </text>
+ <text name="N:">
+ N:
+ </text>
+ <text name="F:">
+ F:
+ </text>
+ </panel>
+ </panel>
+ <panel name="button_panel">
+ <button label="Abrir" name="open_btn"/>
+ <button label="Pagar" name="pay_btn"/>
+ <button label="Comprar" name="buy_btn"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ <button label="Salvar" name="save_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index 9acfce99dd..0e2a8a88f1 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -4,10 +4,21 @@
For example, the strings used in avatar chat bubbles, and strings
that are returned from one component and may appear in many places-->
<strings>
- <string name="create_account_url">http://join.secondlife.com/index.php?lang=pt-BR</string>
+ <string name="SUPPORT_SITE">
+ Portal de Apoio do Second Life
+ </string>
+ <string name="StartupDetectingHardware">
+ Detectando hardware...
+ </string>
+ <string name="StartupLoading">
+ Carregando
+ </string>
<string name="LoginInProgress">
Fazendo Login. [APP_NAME] pode parecer congelado. Por favor, aguarde.
</string>
+ <string name="LoginInProgressNoFrozen">
+ Logando...
+ </string>
<string name="LoginAuthenticating">
Autenticando
</string>
@@ -26,8 +37,11 @@
<string name="LoginInitializingMultimedia">
Inicializando multimídia...
</string>
+ <string name="LoginInitializingFonts">
+ Carregando fontes...
+ </string>
<string name="LoginVerifyingCache">
- Verificando arquivos no cache (pode levar 60-90 segundos)...
+ Verificando arquivos cache (pode levar de 60-90 segundos)...
</string>
<string name="LoginProcessingResponse">
Processando Resposta...
@@ -56,6 +70,15 @@
<string name="LoginDownloadingClothing">
Baixando roupas...
</string>
+ <string name="LoginFailedNoNetwork">
+ Erro de Rede: Não foi possível estabelecer a conexão, verifique sua conexão de rede.
+ </string>
+ <string name="Quit">
+ Sair
+ </string>
+ <string name="create_account_url">
+ http://join.secondlife.com/index.php?lang=pt-BR
+ </string>
<string name="AgentLostConnection">
Esta região pode estar passando por problemas. Por favor, verifique sua conexão com a internet.
</string>
@@ -74,39 +97,9 @@
<string name="TooltipIsGroup">
(Grupo)
</string>
- <string name="TooltipFlagScript">
- Script
- </string>
- <string name="TooltipFlagPhysics">
- Física
- </string>
- <string name="TooltipFlagTouch">
- Toque
- </string>
- <string name="TooltipFlagL$">
- L$
- </string>
- <string name="TooltipFlagDropInventory">
- Dar Inventário
- </string>
- <string name="TooltipFlagPhantom">
- Imaterial
- </string>
- <string name="TooltipFlagTemporary">
- Temporário
- </string>
- <string name="TooltipFlagRightClickMenu">
- (Clique com o botão direito para acessar o menu)
- </string>
- <string name="TooltipFreeToCopy">
- Cópia Permitida
- </string>
<string name="TooltipForSaleL$">
À venda: L$[AMOUNT]
</string>
- <string name="TooltipForSaleMsg">
- À venda: [MESSAGE]
- </string>
<string name="TooltipFlagGroupBuild">
Construído por Grupo
</string>
@@ -134,6 +127,76 @@
<string name="TooltipMustSingleDrop">
Apenas um item único pode ser arrastado para este local
</string>
+ <string name="TooltipHttpUrl">
+ Clique para ver essa página web
+ </string>
+ <string name="TooltipSLURL">
+ Clique para ver a informação desta localização
+ </string>
+ <string name="TooltipAgentUrl">
+ Clique para ver o perfil deste residente
+ </string>
+ <string name="TooltipGroupUrl">
+ Clique para ver a descrição deste Grupo
+ </string>
+ <string name="TooltipEventUrl">
+ Clique para ver a descrição deste evento
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Clique para ver este classificado
+ </string>
+ <string name="TooltipParcelUrl">
+ Clique para ver a descrição desta parcela
+ </string>
+ <string name="TooltipTeleportUrl">
+ Clique para teletransportar para esta localização
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Clique para ver a descrição deste objeto
+ </string>
+ <string name="TooltipMapUrl">
+ Clique para ver esta localização no mapa
+ </string>
+ <string name="TooltipSLAPP">
+ Clique para ativar no secondlife:// commando
+ </string>
+ <string name="CurrentURL" value="URL atual: [CurrentURL]"/>
+ <string name="SLurlLabelTeleport">
+ Teletransportar para
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Mostrar no mapa para
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Fechar (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Fechar (Ctrl+W)
+ </string>
+ <string name="BUTTON_RESTORE">
+ Restaurar
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimizar
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Separar-se da janela
+ </string>
+ <string name="BUTTON_DOCK">
+ conectar-se à barra
+ </string>
+ <string name="BUTTON_UNDOCK">
+ desconectar-se da barra
+ </string>
+ <string name="BUTTON_HELP">
+ Mostrar ajuda
+ </string>
+ <string name="Searching">
+ Buscando...
+ </string>
+ <string name="NoneFound">
+ Não encontrado.
+ </string>
<string name="RetrievingData">
Buscando...
</string>
@@ -188,8 +251,77 @@
<string name="AssetErrorUnknownStatus">
Status desconhecido
</string>
- <string name="AvatarEditingApparance">
- (Editando Aparência)
+ <string name="texture">
+ textura
+ </string>
+ <string name="sound">
+ som
+ </string>
+ <string name="calling card">
+ cartão de visitas
+ </string>
+ <string name="landmark">
+ landmark
+ </string>
+ <string name="legacy script">
+ script obsoleto
+ </string>
+ <string name="clothing">
+ roupas
+ </string>
+ <string name="object">
+ objeto
+ </string>
+ <string name="note card">
+ notecard
+ </string>
+ <string name="folder">
+ pasta
+ </string>
+ <string name="root">
+ raiz
+ </string>
+ <string name="lsl2 script">
+ script LSL2
+ </string>
+ <string name="lsl bytecode">
+ bytecode LSL
+ </string>
+ <string name="tga texture">
+ textura tga
+ </string>
+ <string name="body part">
+ parte do corpo
+ </string>
+ <string name="snapshot">
+ fotografia
+ </string>
+ <string name="lost and found">
+ Achados e Perdidos
+ </string>
+ <string name="targa image">
+ imagem targa
+ </string>
+ <string name="trash">
+ Lixo
+ </string>
+ <string name="jpeg image">
+ imagem jpeg
+ </string>
+ <string name="animation">
+ animação
+ </string>
+ <string name="gesture">
+ gesto
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ favorito
+ </string>
+ <string name="symbolic link">
+ link
</string>
<string name="AvatarAway">
Distante
@@ -411,7 +543,19 @@
Carregando...
</string>
<string name="worldmap_offline">
- Desconectado
+ Offline
+ </string>
+ <string name="worldmap_results_none_found">
+ Nenhum encontrado.
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ término prematuro do arquivo
+ </string>
+ <string name="ST_NO_JOINT">
+ Não é possível encontrar a raiz (ROOT) ou junção (JOINT).
</string>
<string name="whisper">
sussurra:
@@ -419,6 +563,57 @@
<string name="shout">
grita:
</string>
+ <string name="ringing">
+ Conectando à conversa de Voz no mundo
+ </string>
+ <string name="connected">
+ Conectado
+ </string>
+ <string name="unavailable">
+ Voz não disponível na sua localização atual
+ </string>
+ <string name="hang_up">
+ Desconectado da conversa de Voz no mundo
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ &apos;[OBJECTNAME]&apos;, um objeto de &apos;[OWNERNAME]&apos;, localizado em [REGIONNAME] a [REGIONPOS], obteve permissão para: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ &apos;[OBJECTNAME]&apos;, um objeto de &apos;[OWNERNAME]&apos;, localizado em [REGIONNAME] a [REGIONPOS], teve permissão negada para: [PERMISSIONS].
+ </string>
+ <string name="ScriptTakeMoney">
+ Tomar linden dólares (L$) de você
+ </string>
+ <string name="ActOnControlInputs">
+ Atue nas suas entradas de controle
+ </string>
+ <string name="RemapControlInputs">
+ Remapeie suas entradas de controle
+ </string>
+ <string name="AnimateYourAvatar">
+ Faça uma animação para o seu avatar
+ </string>
+ <string name="AttachToYourAvatar">
+ Anexe ao seu avatar
+ </string>
+ <string name="ReleaseOwnership">
+ Libere a propriedade e torne-a pública
+ </string>
+ <string name="LinkAndDelink">
+ Una e desuna de outros objetos
+ </string>
+ <string name="AddAndRemoveJoints">
+ Adicione e remova junções com outros objetos
+ </string>
+ <string name="ChangePermissions">
+ Modifique as permissões
+ </string>
+ <string name="TrackYourCamera">
+ Acompanhe sua câmera
+ </string>
+ <string name="ControlYourCamera">
+ Controle sua camera
+ </string>
<string name="SIM_ACCESS_PG">
PG
</string>
@@ -437,8 +632,6 @@
<string name="land_type_unknown">
(desconhecido)
</string>
- <string name="covenant_never_modified">Última modificação: (nunca)</string>
- <string name="covenant_modified">Última modificação: </string>
<string name="all_files">
Todos os Arquivos
</string>
@@ -484,17 +677,739 @@
<string name="choose_the_directory">
Escolher Diretório
</string>
+ <string name="AvatarSetNotAway">
+ deixar como não away
+ </string>
+ <string name="AvatarSetAway">
+ deixar como Away
+ </string>
+ <string name="AvatarSetNotBusy">
+ deixar como não Ocupado
+ </string>
+ <string name="AvatarSetBusy">
+ Deixar como Busy
+ </string>
+ <string name="shape">
+ Silhueta
+ </string>
+ <string name="skin">
+ Pele
+ </string>
+ <string name="hair">
+ Cabelo
+ </string>
+ <string name="eyes">
+ Olhos
+ </string>
+ <string name="shirt">
+ Camisa
+ </string>
+ <string name="pants">
+ calças
+ </string>
+ <string name="shoes">
+ Sapatos
+ </string>
+ <string name="socks">
+ Meias
+ </string>
+ <string name="jacket">
+ Blusa
+ </string>
+ <string name="gloves">
+ Luvas
+ </string>
+ <string name="undershirt">
+ camiseta
+ </string>
+ <string name="underpants">
+ roupa debaixo
+ </string>
+ <string name="skirt">
+ saia
+ </string>
+ <string name="alpha">
+ Alpha
+ </string>
+ <string name="tattoo">
+ Tattoo
+ </string>
+ <string name="invalid">
+ inválido
+ </string>
+ <string name="next">
+ Próximo
+ </string>
+ <string name="ok">
+ OK
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Anúncio de grupo
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Anúncios do grupo
+ </string>
+ <string name="GroupNotifySentBy">
+ Enviado por
+ </string>
+ <string name="GroupNotifyAttached">
+ Anexo:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Ver últimos anúncios ou optar por não receber essas mensagens aqui.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Abrir anexo
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Salvar anexo
+ </string>
+ <string name="TeleportOffer">
+ Oferta de teletransporte
+ </string>
+ <string name="StartUpNotification">
+ [%d] nova notificação chegou enquanto você estava fora...
+ </string>
+ <string name="StartUpNotifications">
+ [%d] Novas notificações chegaram enquanto você estava fora...
+ </string>
+ <string name="OverflowInfoChannelString">
+ Você tem mais [%d] notificações
+ </string>
+ <string name="BodyPartsRightArm">
+ Braço direito
+ </string>
+ <string name="BodyPartsHead">
+ Cabeça
+ </string>
+ <string name="BodyPartsLeftArm">
+ Braço esquerdo
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Perna esquerda
+ </string>
+ <string name="BodyPartsTorso">
+ Tronco
+ </string>
+ <string name="BodyPartsRightLeg">
+ Perna direita
+ </string>
+ <string name="GraphicsQualityLow">
+ Baixo
+ </string>
+ <string name="GraphicsQualityMid">
+ Meio
+ </string>
+ <string name="GraphicsQualityHigh">
+ Alto
+ </string>
+ <string name="LeaveMouselook">
+ Pressione ESC para retornar para visão do mundo
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Nenhum item correspondente encontrado no inventário.
+ </string>
+ <string name="InventoryNoTexture">
+ Você não possui uma cópia desta textura no seu inventário
+ </string>
+ <string name="no_transfer" value="(não transferível)"/>
+ <string name="no_modify" value="(não modificável)"/>
+ <string name="no_copy" value="(não copiável)"/>
+ <string name="worn" value="(vestido)"/>
+ <string name="link" value="(link)"/>
+ <string name="broken_link" value="(link_quebrado)&quot;"/>
+ <string name="LoadingContents">
+ Carregando conteúdo...
+ </string>
+ <string name="NoContents">
+ Nenhum conteúdo
+ </string>
+ <string name="WornOnAttachmentPoint" value="(vestido em [ATTACHMENT_POINT])"/>
+ <string name="Chat" value="Bate papo :"/>
+ <string name="Sound" value="Som :"/>
+ <string name="Wait" value="--- Aguarde :"/>
+ <string name="AnimFlagStop" value="Parar animação :"/>
+ <string name="AnimFlagStart" value="Iniciar animação :"/>
+ <string name="Wave" value="Aceno"/>
+ <string name="HelloAvatar" value="Olá, avatar!"/>
+ <string name="ViewAllGestures" value="Ver tudo &gt;&gt;"/>
+ <string name="Animations" value="Animações,"/>
+ <string name="Calling Cards" value="Cartões de visitas,"/>
+ <string name="Clothing" value="Vestuário,"/>
+ <string name="Gestures" value="Gestos,"/>
+ <string name="Landmarks" value="Landmarks,"/>
+ <string name="Notecards" value="Notecards,"/>
+ <string name="Objects" value="Objetos,"/>
+ <string name="Scripts" value="Scripts,"/>
+ <string name="Sounds" value="Sons,"/>
+ <string name="Textures" value="Texturas,"/>
+ <string name="Snapshots" value="Fotografias,"/>
+ <string name="No Filters" value="Não"/>
+ <string name="Since Logoff" value="- desde desligado"/>
+ <string name="InvFolder My Inventory">
+ Meu Inventorio
+ </string>
+ <string name="InvFolder My Favorites">
+ Meus Favoritos
+ </string>
+ <string name="InvFolder Library">
+ Biblioteca
+ </string>
+ <string name="InvFolder Textures">
+ Texturas
+ </string>
+ <string name="InvFolder Sounds">
+ Sons
+ </string>
+ <string name="InvFolder Calling Cards">
+ Cartões de Visitas
+ </string>
+ <string name="InvFolder Landmarks">
+ Landmarks
+ </string>
+ <string name="InvFolder Scripts">
+ Scripts
+ </string>
+ <string name="InvFolder Clothing">
+ Vestuário
+ </string>
+ <string name="InvFolder Objects">
+ Objetos
+ </string>
+ <string name="InvFolder Notecards">
+ Notecards
+ </string>
+ <string name="InvFolder New Folder">
+ Nova Pasta
+ </string>
+ <string name="InvFolder Inventory">
+ Inventário
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Imagens Descompactadas
+ </string>
+ <string name="InvFolder Body Parts">
+ Partes do Corpo
+ </string>
+ <string name="InvFolder Trash">
+ Lixo
+ </string>
+ <string name="InvFolder Photo Album">
+ Álbum de Fotografias
+ </string>
+ <string name="InvFolder Lost And Found">
+ Achados e Perdidos
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Sons Descompactados
+ </string>
+ <string name="InvFolder Animations">
+ Animações
+ </string>
+ <string name="InvFolder Gestures">
+ Gestos
+ </string>
+ <string name="InvFolder favorite">
+ Favoritos
+ </string>
+ <string name="InvFolder Current Outfit">
+ Vestimanta Atual
+ </string>
+ <string name="InvFolder My Outfits">
+ Minhas Vestimentas
+ </string>
+ <string name="InvFolder Friends">
+ Amigos
+ </string>
+ <string name="InvFolder All">
+ Tudo
+ </string>
+ <string name="Buy">
+ Comprar
+ </string>
+ <string name="BuyforL$">
+ Comprar por L$
+ </string>
+ <string name="Stone">
+ Pedra
+ </string>
+ <string name="Metal">
+ Metal
+ </string>
+ <string name="Glass">
+ Vidro
+ </string>
+ <string name="Wood">
+ Madeira
+ </string>
+ <string name="Flesh">
+ Carne
+ </string>
+ <string name="Plastic">
+ Plástico
+ </string>
+ <string name="Rubber">
+ Borrracha
+ </string>
+ <string name="Light">
+ Luz
+ </string>
+ <string name="KBShift">
+ Shift
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Peito
+ </string>
+ <string name="Skull">
+ Crânio
+ </string>
+ <string name="Left Shoulder">
+ Ombro esquerdo
+ </string>
+ <string name="Right Shoulder">
+ Ombro direito
+ </string>
+ <string name="Left Hand">
+ Mão esquerda
+ </string>
+ <string name="Right Hand">
+ Mão direita
+ </string>
+ <string name="Left Foot">
+ Pé esquerdo
+ </string>
+ <string name="Right Foot">
+ Pé direito
+ </string>
+ <string name="Spine">
+ Espinha
+ </string>
+ <string name="Pelvis">
+ Pelvis
+ </string>
+ <string name="Mouth">
+ Boca
+ </string>
+ <string name="Chin">
+ Queixo
+ </string>
+ <string name="Left Ear">
+ Orelha esquerda
+ </string>
+ <string name="Right Ear">
+ Orelha direita
+ </string>
+ <string name="Left Eyeball">
+ Globo ocular esquerdo
+ </string>
+ <string name="Right Eyeball">
+ Globo ocular direito
+ </string>
+ <string name="Nose">
+ Nariz
+ </string>
+ <string name="R Upper Arm">
+ Braço superior D
+ </string>
+ <string name="R Forearm">
+ Antebraço D
+ </string>
+ <string name="L Upper Arm">
+ Braço superior E
+ </string>
+ <string name="L Forearm">
+ Antebraço E
+ </string>
+ <string name="Right Hip">
+ Quadril direito
+ </string>
+ <string name="R Upper Leg">
+ Coxa D
+ </string>
+ <string name="R Lower Leg">
+ Perna inferior D
+ </string>
+ <string name="Left Hip">
+ Quadril esquerdo
+ </string>
+ <string name="L Upper Leg">
+ Coxa E
+ </string>
+ <string name="L Lower Leg">
+ Perna inferior E
+ </string>
+ <string name="Stomach">
+ Estômago
+ </string>
+ <string name="Left Pec">
+ Pec esquerdo
+ </string>
+ <string name="Right Pec">
+ Pec direito
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS] de idade
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS] de idade
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS] de idade
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS] de idade
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS] de idade
+ </string>
+ <string name="TodayOld">
+ Cadastrado hoje
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] ano
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] anos
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] anos
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] mês
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] meses
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] meses
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] semana
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] semanas
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] semanas
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] dia
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] dias
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] dias
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] membro
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] membros
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] membros
+ </string>
+ <string name="AcctTypeResident">
+ Residente
+ </string>
+ <string name="AcctTypeTrial">
+ Prova
+ </string>
+ <string name="AcctTypeCharterMember">
+ Lista de membros
+ </string>
+ <string name="AcctTypeEmployee">
+ Empregado da Linden Lab
+ </string>
+ <string name="PaymentInfoUsed">
+ Info de Pagamento usada
+ </string>
+ <string name="PaymentInfoOnFile">
+ Info de Pagamento no Arquivo
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Nenhuma Info de Pagamento no Arquivo
+ </string>
+ <string name="AgeVerified">
+ Idade-verificada
+ </string>
+ <string name="NotAgeVerified">
+ Idade não-verificada
+ </string>
+ <string name="Center 2">
+ Centro 2
+ </string>
+ <string name="Top Right">
+ Topo direita
+ </string>
+ <string name="Top">
+ Topo
+ </string>
+ <string name="Top Left">
+ Topo esquerda
+ </string>
+ <string name="Center">
+ Centro
+ </string>
+ <string name="Bottom Left">
+ Inferior esquerdo
+ </string>
+ <string name="Bottom">
+ Inferior
+ </string>
+ <string name="Bottom Right">
+ Inferior direito
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Downloaded, agora compilando
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Script não encontrado no servidor.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Problema no download
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Permissões insuficientes para fazer o download do script.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Permissões insuficientes para
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Falha desconhecida para download
+ </string>
+ <string name="CompileQueueTitle">
+ Progresso do Recompilamento
+ </string>
+ <string name="CompileQueueStart">
+ recompilar
+ </string>
+ <string name="ResetQueueTitle">
+ Reset Progresso
+ </string>
+ <string name="ResetQueueStart">
+ reset
+ </string>
+ <string name="RunQueueTitle">
+ Definir funcionamento do progresso
+ </string>
+ <string name="RunQueueStart">
+ deixar funcionando
+ </string>
+ <string name="NotRunQueueTitle">
+ Definir progresso não funcionando
+ </string>
+ <string name="NotRunQueueStart">
+ não deixar funcionando
+ </string>
+ <string name="CompileSuccessful">
+ Compilação bem sucedida
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Compilação bem sucedida, salvando...
+ </string>
+ <string name="SaveComplete">
+ Salvo.
+ </string>
+ <string name="ObjectOutOfRange">
+ Script (objecto fora de alcance)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Objeto [OBJECT] de propriedade de [OWNER]
+ </string>
+ <string name="GroupsNone">
+ nenhum
+ </string>
+ <string name="Group" value="(grupo)"/>
+ <string name="Unknown">
+ (Desconhecido)
+ </string>
+ <string name="SummaryForTheWeek" value="Resumo para esta semana, com início em"/>
+ <string name="NextStipendDay" value="Próximo dia de salário é"/>
+ <string name="GroupIndividualShare" value="Grupo Divisão individualI"/>
+ <string name="Balance">
+ Balanço
+ </string>
+ <string name="Credits">
+ Créditos
+ </string>
+ <string name="Debits">
+ Débitos
+ </string>
+ <string name="Total">
+ Total
+ </string>
+ <string name="NoGroupDataFound">
+ Não ha dados de grupo para o grupo
+ </string>
+ <string name="IMParentEstate">
+ propriedade dos pais
+ </string>
+ <string name="IMMainland">
+ continente
+ </string>
+ <string name="IMTeen">
+ adolescente
+ </string>
+ <string name="RegionInfoError">
+ erro
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ todas as propriedades pertencem a [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ todas as propriedades que você possui
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ todas as propriedades que você gerencia para [OWNER]
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Residentes permitidos : ([ALLOWEDAGENTS], max [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Grupos permitidos: ([ALLOWEDGROUPS], max [MAXACCESS])
+ </string>
+ <string name="CursorPos">
+ Linha [LINE], Coluna [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] encontrado
+ </string>
+ <string name="PanelContentsNewScript">
+ Novo Script
+ </string>
+ <string name="MuteByName">
+ (por nome)
+ </string>
+ <string name="MuteAgent">
+ (residente)
+ </string>
+ <string name="MuteObject">
+ (objeto)
+ </string>
+ <string name="MuteGroup">
+ (grupo)
+ </string>
+ <string name="RegionNoCovenant">
+ Não ha Contrato fornecido para essa Região.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Não ha Contrato fornecido para essa Região. O terreno nesta região está sendo vendido pelo Proprietário, não pela Linden Lab. Favor contatar o Proprietário da região para detalhes de venda.
+ </string>
+ <string name="covenant_last_modified">
+ Última modificação:
+ </string>
+ <string name="none_text" value="(nenhum)"/>
+ <string name="never_text" value="(nunca)"/>
+ <string name="GroupOwned">
+ Propriedade do Grupo
+ </string>
+ <string name="Public">
+ Público
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Cliques: [TELEPORT] teletransporte, [MAP] mapa, [PROFILE] perfil
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (vai atualizar depois de publicado)
+ </string>
+ <string name="MultiPreviewTitle">
+ Preview
+ </string>
+ <string name="MultiPropertiesTitle">
+ Propriedades
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ um objeto chamado
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ possuído pelo grupo
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ possuído por um grupo desconhecido
+ </string>
+ <string name="InvOfferOwnedBy">
+ possuído por
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ possuído por usuário desconhecido
+ </string>
+ <string name="InvOfferGaveYou">
+ deu a você
+ </string>
+ <string name="InvOfferYouDecline">
+ Você declina
+ </string>
+ <string name="InvOfferFrom">
+ de
+ </string>
+ <string name="GroupMoneyTotal">
+ Total
+ </string>
+ <string name="GroupMoneyBought">
+ comprou
+ </string>
+ <string name="GroupMoneyPaidYou">
+ pagou a você
+ </string>
+ <string name="GroupMoneyPaidInto">
+ depositado
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ comprou passe para
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ pagou taxa para o evento
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ pagou prêmio para o evento
+ </string>
+ <string name="GroupMoneyBalance">
+ Balanço
+ </string>
+ <string name="GroupMoneyCredits">
+ Créditos
+ </string>
+ <string name="GroupMoneyDebits">
+ Débitos
+ </string>
+ <string name="ViewerObjectContents">
+ Conteúdo
+ </string>
+ <string name="AcquiredItems">
+ Itens adquiridos
+ </string>
+ <string name="Cancel">
+ Cancelar
+ </string>
+ <string name="UploadingCosts">
+ Uploading [%s] custos
+ </string>
+ <string name="UnknownFileExtension">
+ Extensão de arquivo desconhecida [.%s]
+Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Adicionar Landmark...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Editar Landmark...
+ </string>
<string name="accel-mac-control">
- &#8963;
+ ⌃
</string>
<string name="accel-mac-command">
- &#8984;
+ ⌘
</string>
<string name="accel-mac-option">
- &#8997;
+ ⌥
</string>
<string name="accel-mac-shift">
- &#8679;
+ ⇧
</string>
<string name="accel-win-control">
Ctrl+
@@ -505,80 +1420,1789 @@
<string name="accel-win-shift">
Shift+
</string>
- <string name="GraphicsQualityLow">
- Baixo
+ <string name="FileSaved">
+ Arquivo salvo
</string>
- <string name="GraphicsQualityMid">
- Meio
+ <string name="Receiving">
+ Recebendo
</string>
- <string name="GraphicsQualityHigh">
- Alto
+ <string name="AM">
+ AM
+ </string>
+ <string name="PM">
+ PM
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Forward">
+ Avante
+ </string>
+ <string name="Left">
+ Esquerda
+ </string>
+ <string name="Right">
+ Direita
+ </string>
+ <string name="Back">
+ Atrás
+ </string>
+ <string name="North">
+ Norte
+ </string>
+ <string name="South">
+ Sul
+ </string>
+ <string name="West">
+ Oeste
+ </string>
+ <string name="East">
+ Leste
+ </string>
+ <string name="Up">
+ Acima
+ </string>
+ <string name="Down">
+ Abaixo
+ </string>
+ <string name="Any Category">
+ Qualquer categoria
+ </string>
+ <string name="Shopping">
+ Compras
+ </string>
+ <string name="Land Rental">
+ Aluguel de terrenos
+ </string>
+ <string name="Property Rental">
+ Aluguel de propriedade
</string>
+ <string name="Special Attraction">
+ Atração especial
+ </string>
+ <string name="New Products">
+ Novos Produtos
+ </string>
+ <string name="Employment">
+ Emprego
+ </string>
+ <string name="Wanted">
+ Desejado
+ </string>
+ <string name="Service">
+ Serviço
+ </string>
+ <string name="Personal">
+ Pessoal
+ </string>
+ <string name="None">
+ Nenhum
+ </string>
+ <string name="Linden Location">
+ Locação Linden
+ </string>
+ <string name="Adult">
+ Adult
+ </string>
+ <string name="Arts&amp;Culture">
+ Artes e Cultura
+ </string>
+ <string name="Business">
+ Negócios
+ </string>
+ <string name="Educational">
+ Educacional
+ </string>
+ <string name="Gaming">
+ Jogos
+ </string>
+ <string name="Hangout">
+ Moradia
+ </string>
+ <string name="Newcomer Friendly">
+ Amigável a Novos Usuários
+ </string>
+ <string name="Parks&amp;Nature">
+ Parques &amp; Natureza
+ </string>
+ <string name="Residential">
+ Residencial
+ </string>
+ <string name="Stage">
+ Estágio
+ </string>
+ <string name="Other">
+ Outros
+ </string>
+ <string name="Any">
+ Qualquer
+ </string>
+ <string name="You">
+ Você
+ </string>
+ <string name="Multiple Media">
+ Mídia múltipla
+ </string>
+ <string name="Play Media">
+ Tocar/Pausar mídia
+ </string>
+ <string name="MBCmdLineError">
+ Um erro foi encontrado analisando a linha de comando.
+Consulte: http://wiki.secondlife.com/wiki/Client_parameters
+Erro:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Uso de linha de comando:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] não é capaz de acessar um arquivo que ele precisa.
- <!-- PARCEL_CATEGORY_UI_STRING -->
- <string name="Linden Location">Locação Linden</string>
- <string name="Adult">Adult</string>
- <string name="Arts&amp;Culture">Artes e Cultura</string>
- <string name="Business">Negócios</string>
- <string name="Educational">Educacional</string>
- <string name="Gaming">Jogos</string>
- <string name="Hangout">Moradia</string>
- <string name="Newcomer Friendly">Amigável a Novos Usuários</string>
- <string name="Parks&amp;Nature">Parques &amp; Natureza</string>
- <string name="Residential">Residencial</string>
- <string name="Shopping">Compras</string>
- <string name="Other">Outros</string>
- <string name="ringing">
- Conectando à conversa de Voz no mundo
+Isto pode ocorrer porque você de alguma maneira tem várias cópias em execução, ou o seu sistema acredita de maneira incorreta que um arquivo está aberto.
+Se a mensagem persistir, reinicie o computador e tente novamente.
+Se o error persistir, pode ser necessário desinstalar completamente [APP_NAME] e reinstalá-lo.
</string>
- <string name="connected">
- Conectado
+ <string name="MBFatalError">
+ Erro Fatal
</string>
- <string name="unavailable">
- Voz não disponível na sua localização atual
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] exige um processador com AltiVec (G4 ou superior).
</string>
- <string name="hang_up">
- Desconectado da conversa de Voz no mundo
+ <string name="MBAlreadyRunning">
+ [APP_NAME] já está em execução.
+Verifique a sua barra de tarefas para obter uma cópia do programa minimizado.
+Se a mensagem persistir, reinicie o computador.
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] parece ter congelado ou falhado na execução anterior. Você gostaria de enviar um relatório de falha?
+ </string>
+ <string name="MBAlert">
+ Alerta
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] é incapaz de detectar o DirectX 9.0b ou superior.
+[APP_NAME] usa o DirectX para a detecção de hardware e / ou controladores desatualizados que podem causar problemas de estabilidade, desempenho ruim e falhas. Embora você possa executar [APP_NAME] sem ele, nós recomendamos fortemente que utilize o DirectX 9.0b.
+
+Deseja continuar?
+ </string>
+ <string name="MBWarning">
+ Aviso
+ </string>
+ <string name="MBNoAutoUpdate">
+ Atualização automática ainda não está implementada para o Linux.
+Faça o download da versão mais recente do www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass falhou
+ </string>
+ <string name="MBError">
+ Erro
+ </string>
+ <string name="MBFullScreenErr">
+ Incapaz de funcionar com tela cheia de [WIDTH] x [HEIGHT].
+Executando em janela.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Erro de desligamento ao destruir janela (DestroyWindow() failed)
+ </string>
+ <string name="MBShutdownErr">
+ Erro de desligamento
+ </string>
+ <string name="MBDevContextErr">
+ Não é possível fazer contexto do dispositivo GL
+ </string>
+ <string name="MBPixelFmtErr">
+ Não é possível encontrar um formato de pixel adequado
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Não é possível encontrar descrição de formato de pixel
+ </string>
+ <string name="MBTrueColorWindow">
+ [APP_NAME] requer True Color (32-bit) para ser executado.
+Por favor, vá para as configurações de vídeo do computador e defina o modo de cores para 32-bit.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] é incapaz de executar porque ele não consegue obter um canal alpha de 8 bits. Geralmente isso ocorre devido a problemas de drivers da placa de vídeo.
+Por favor, certifique-se que os últimos drivers da placa de vídeo estão instalados.
+Também não se esqueça de definir seu monitor para True Color (32-bit), em painéis de controle Configurações&gt; Display&gt;.
+Se você continuar a receber esta mensagem, contate o [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ ão é possível definir o formato de pixel
+ </string>
+ <string name="MBGLContextErr">
+ Não é possível criar o contexto de renderização GL
+ </string>
+ <string name="MBGLContextActErr">
+ Não é possível ativar o contexto de renderização GL
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] é incapaz de funcionar por causa do seu driver de video não ter sido instalado corretamente, estão desatualizados, ou não são suportados pelo hardware. Por favor certifique-se que você possui os drivers de placa de vídeo mais recente e mesmo assim, tente reinstalá-los.
+
+If you continue to receive this message, contact the [SUPPORT_SITE].
+ </string>
+ <string name="5 O&apos;Clock Shadow">
+ Sombra descuidada
+ </string>
+ <string name="All White">
+ Todo branco
+ </string>
+ <string name="Anime Eyes">
+ Olhos de Anime
+ </string>
+ <string name="Arced">
+ arqueado
+ </string>
+ <string name="Arm Length">
+ Comprimento do Braço
+ </string>
+ <string name="Attached">
+ Anexado
+ </string>
+ <string name="Attached Earlobes">
+ Lóbulos da orelha anexados
+ </string>
+ <string name="Back Bangs">
+ Franja traseira
+ </string>
+ <string name="Back Bangs Down">
+ franja traseira longa
+ </string>
+ <string name="Back Bangs Up">
+ franja traseira arrepiada
+ </string>
+ <string name="Back Fringe">
+ corte traseiro
+ </string>
+ <string name="Back Hair">
+ cabelo traseiro
+ </string>
+ <string name="Back Hair Down">
+ cabelo de trás longo
+ </string>
+ <string name="Back Hair Up">
+ cabelo de trás arrepiado
+ </string>
+ <string name="Baggy">
+ folgado
+ </string>
+ <string name="Bangs">
+ Franja
+ </string>
+ <string name="Bangs Down">
+ franja longa
+ </string>
+ <string name="Bangs Up">
+ franja arrepiada
+ </string>
+ <string name="Beady Eyes">
+ Olhos malévolos
+ </string>
+ <string name="Belly Size">
+ Tamanho da barriga
+ </string>
+ <string name="Big">
+ Grande
+ </string>
+ <string name="Big Butt">
+ Traseiro Grande
+ </string>
+ <string name="Big Eyeball">
+ Globo ocular grande
+ </string>
+ <string name="Big Hair Back">
+ Cabelo volumoso: Trás
+ </string>
+ <string name="Big Hair Front">
+ Cabelo volumoso: Frente
+ </string>
+ <string name="Big Hair Top">
+ cabelo volumoso: Topo
+ </string>
+ <string name="Big Head">
+ cabeça grande
+ </string>
+ <string name="Big Pectorals">
+ Peitorais grandes
+ </string>
+ <string name="Big Spikes">
+ espinhos grandes
+ </string>
+ <string name="Black">
+ Negro
+ </string>
+ <string name="Blonde">
+ Loiro
+ </string>
+ <string name="Blonde Hair">
+ Cabelo Loiro
+ </string>
+ <string name="Blush">
+ Blush
+ </string>
+ <string name="Blush Color">
+ cor do Blush
+ </string>
+ <string name="Blush Opacity">
+ Opacidade do Blush
+ </string>
+ <string name="Body Definition">
+ definição do Corpo
+ </string>
+ <string name="Body Fat">
+ Gordura corporal
+ </string>
+ <string name="Body Freckles">
+ Sardas do corpo
+ </string>
+ <string name="Body Thick">
+ Corpo cheio
+ </string>
+ <string name="Body Thickness">
+ Espessura do corpo
+ </string>
+ <string name="Body Thin">
+ Corpo magro
+ </string>
+ <string name="Bow Legged">
+ pernas arqueadas
+ </string>
+ <string name="Breast Buoyancy">
+ Flexibilidade dos seios
+ </string>
+ <string name="Breast Cleavage">
+ Separação dos seios
+ </string>
+ <string name="Breast Size">
+ Tamanho dos seios
+ </string>
+ <string name="Bridge Width">
+ Largura do nariz
+ </string>
+ <string name="Broad">
+ Largo
+ </string>
+ <string name="Brow Size">
+ tamanho da sobrancelha
+ </string>
+ <string name="Bug Eyes">
+ Olhos saltados
+ </string>
+ <string name="Bugged Eyes">
+ Olhos esbugalhados
+ </string>
+ <string name="Bulbous">
+ Bulbos
+ </string>
+ <string name="Bulbous Nose">
+ Nariz em bulbo
+ </string>
+ <string name="Bushy Eyebrows">
+ Sobrancelhas grossas
+ </string>
+ <string name="Bushy Hair">
+ Cabelo grosso
+ </string>
+ <string name="Butt Size">
+ Tamanho do traseiro
+ </string>
+ <string name="bustle skirt">
+ Movimentação de saia
+ </string>
+ <string name="no bustle">
+ Sem movimento
+ </string>
+ <string name="more bustle">
+ Mais movimento
+ </string>
+ <string name="Chaplin">
+ Chaplin
+ </string>
+ <string name="Cheek Bones">
+ Maças do rosto
+ </string>
+ <string name="Chest Size">
+ Tamanho do peito
+ </string>
+ <string name="Chin Angle">
+ ângulo do queixo
+ </string>
+ <string name="Chin Cleft">
+ Fissura do queixo
+ </string>
+ <string name="Chin Curtains">
+ Barba de contorno
+ </string>
+ <string name="Chin Depth">
+ Profundidade do queixo
+ </string>
+ <string name="Chin Heavy">
+ Queixo pronunciado
+ </string>
+ <string name="Chin In">
+ Queixo para dentro
+ </string>
+ <string name="Chin Out">
+ Queixo para fora
+ </string>
+ <string name="Chin-Neck">
+ Queixo-pescoço
+ </string>
+ <string name="Clear">
+ Limpar
+ </string>
+ <string name="Cleft">
+ Fenda
+ </string>
+ <string name="Close Set Eyes">
+ Fechar conjunto de olhos
+ </string>
+ <string name="Closed">
+ Fechado
+ </string>
+ <string name="Closed Back">
+ Trás fechada
+ </string>
+ <string name="Closed Front">
+ Frente fechada
+ </string>
+ <string name="Closed Left">
+ Esquerda fechada
+ </string>
+ <string name="Closed Right">
+ Direita fechada
+ </string>
+ <string name="Coin Purse">
+ Pubis
+ </string>
+ <string name="Collar Back">
+ Colarinho posterior
+ </string>
+ <string name="Collar Front">
+ Colarinho anterior
+ </string>
+ <string name="Corner Down">
+ Canto para baixo
+ </string>
+ <string name="Corner Normal">
+ Canto normal
+ </string>
+ <string name="Corner Up">
+ Canto para cima
+ </string>
+ <string name="Creased">
+ Vincado
+ </string>
+ <string name="Crooked Nose">
+ Nariz torto
+ </string>
+ <string name="Cropped Hair">
+ Cabelo curto rente
+ </string>
+ <string name="Cuff Flare">
+ bainha larga
+ </string>
+ <string name="Dark">
+ Escuro
+ </string>
+ <string name="Dark Green">
+ Verde escuro
+ </string>
+ <string name="Darker">
+ mais escuro
+ </string>
+ <string name="Deep">
+ Profundidade
+ </string>
+ <string name="Default Heels">
+ Salto Padrão
+ </string>
+ <string name="Default Toe">
+ Dedo do pé padrão
+ </string>
+ <string name="Dense">
+ Densidade
+ </string>
+ <string name="Dense hair">
+ Cabelo Denso
+ </string>
+ <string name="Double Chin">
+ Queixo duplo
+ </string>
+ <string name="Downturned">
+ Curvado para baixo
+ </string>
+ <string name="Duffle Bag">
+ pubis
+ </string>
+ <string name="Ear Angle">
+ ângulo da orelha
+ </string>
+ <string name="Ear Size">
+ Tamanho da orelha
+ </string>
+ <string name="Ear Tips">
+ Pontas das orelhas
+ </string>
+ <string name="Egg Head">
+ Cabeça oval
+ </string>
+ <string name="Eye Bags">
+ Olheiras
+ </string>
+ <string name="Eye Color">
+ Cor dos olhos
+ </string>
+ <string name="Eye Depth">
+ Profundidade dos olhos
+ </string>
+ <string name="Eye Lightness">
+ Luminosidade dos olhos
+ </string>
+ <string name="Eye Opening">
+ Abertura dos olhos
+ </string>
+ <string name="Eye Pop">
+ Olho Saltado
+ </string>
+ <string name="Eye Size">
+ Tamanho dos olhos
+ </string>
+ <string name="Eye Spacing">
+ Espaçamento dos olhos
+ </string>
+ <string name="Eyeball Size">
+ Tamanho do globo ocular
+ </string>
+ <string name="Eyebrow Arc">
+ Arco da sobrancelha
+ </string>
+ <string name="Eyebrow Density">
+ densidade da sobrancelha
+ </string>
+ <string name="Eyebrow Height">
+ Altura da sobrancelha
+ </string>
+ <string name="Eyebrow Points">
+ Pontas da sobrancelha
+ </string>
+ <string name="Eyebrow Size">
+ Tamanho da sobrancelha
+ </string>
+ <string name="Eyelash Length">
+ Comprimento das pestanas
+ </string>
+ <string name="Eyeliner">
+ Delineador
+ </string>
+ <string name="Eyeliner Color">
+ Cor do delineador
+ </string>
+ <string name="Eyes Back">
+ Eyes Back
+ </string>
+ <string name="Eyes Bugged">
+ Olhos esbugalhados
+ </string>
+ <string name="Eyes Forward">
+ Eyes Forward
+ </string>
+ <string name="Eyes Long Head">
+ Eyes Long Head
+ </string>
+ <string name="Eyes Shear Left Up">
+ Ponta esquerda dos olhos para cima
+ </string>
+ <string name="Eyes Shear Right Up">
+ Ponta direita dos olhos para cima
+ </string>
+ <string name="Eyes Short Head">
+ Eyes Short Head
+ </string>
+ <string name="Eyes Spread">
+ Extensão dos Olhos
+ </string>
+ <string name="Eyes Sunken">
+ Olhos afundados
+ </string>
+ <string name="Eyes Together">
+ Olhos juntos
+ </string>
+ <string name="Face Shear">
+ Face raspada
+ </string>
+ <string name="Facial Definition">
+ Definição facial
+ </string>
+ <string name="Far Set Eyes">
+ Distância entre os olhos
+ </string>
+ <string name="Fat">
+ Gordo
+ </string>
+ <string name="Fat Head">
+ Cabeça gorda
+ </string>
+ <string name="Fat Lips">
+ Lábios carnudos
+ </string>
+ <string name="Fat Lower">
+ Inferior carnudo
+ </string>
+ <string name="Fat Lower Lip">
+ Lábio superior carnudo
+ </string>
+ <string name="Fat Torso">
+ Tronco corpulento
+ </string>
+ <string name="Fat Upper">
+ Superior carnudo
+ </string>
+ <string name="Fat Upper Lip">
+ lábio superior carnudo
+ </string>
+ <string name="Female">
+ Feminino
+ </string>
+ <string name="Fingerless">
+ Dedos
+ </string>
+ <string name="Fingers">
+ Dedos
+ </string>
+ <string name="Flared Cuffs">
+ Punhos largos
+ </string>
+ <string name="Flat">
+ Chato
+ </string>
+ <string name="Flat Butt">
+ Traseiro chato
+ </string>
+ <string name="Flat Head">
+ Cabeça chata
+ </string>
+ <string name="Flat Toe">
+ Dedos dos pés chatos
+ </string>
+ <string name="Foot Size">
+ Tamanho dos pés
+ </string>
+ <string name="Forehead Angle">
+ ângulo da testa
+ </string>
+ <string name="Forehead Heavy">
+ Testa pronunciada
+ </string>
+ <string name="Freckles">
+ Sardas
+ </string>
+ <string name="Front Bangs Down">
+ Franja da frente longa
+ </string>
+ <string name="Front Bangs Up">
+ Franja da frene arrepiada
+ </string>
+ <string name="Front Fringe">
+ Franja
+ </string>
+ <string name="Front Hair">
+ Cabelo da frente
+ </string>
+ <string name="Front Hair Down">
+ Cabelo da frente baixo
+ </string>
+ <string name="Front Hair Up">
+ cabelo da frente arrepiado
+ </string>
+ <string name="Full Back">
+ Trás cheia
+ </string>
+ <string name="Full Eyeliner">
+ Delienador cheio
+ </string>
+ <string name="Full Front">
+ Frente cheia
+ </string>
+ <string name="Full Hair Sides">
+ Cabelos laterais cheios
+ </string>
+ <string name="Full Sides">
+ Lados cheios
+ </string>
+ <string name="Glossy">
+ Brilhante
+ </string>
+ <string name="Glove Fingers">
+ Dedos da luva
+ </string>
+ <string name="Glove Length">
+ comprimento das luvas
+ </string>
+ <string name="Hair">
+ Cabelo
+ </string>
+ <string name="Hair Back">
+ Cabelo: Trás
+ </string>
+ <string name="Hair Front">
+ Cabelo: Frente
+ </string>
+ <string name="Hair Sides">
+ Cabelos: Lateral
+ </string>
+ <string name="Hair Sweep">
+ Cabelo penteado
+ </string>
+ <string name="Hair Thickess">
+ Espessura do cabelo
+ </string>
+ <string name="Hair Thickness">
+ Espessura do cabelo
+ </string>
+ <string name="Hair Tilt">
+ Divisão do cabelo
+ </string>
+ <string name="Hair Tilted Left">
+ Divistão do cabelo esquerda
+ </string>
+ <string name="Hair Tilted Right">
+ Divisão do cabelo direita
+ </string>
+ <string name="Hair Volume">
+ Cabelo: Volume
+ </string>
+ <string name="Hand Size">
+ Tamanho das mãos
+ </string>
+ <string name="Handlebars">
+ bigode
+ </string>
+ <string name="Head Length">
+ Comprimento da cabeça
+ </string>
+ <string name="Head Shape">
+ Formato da cabeça
+ </string>
+ <string name="Head Size">
+ Tamanho da cabeça
+ </string>
+ <string name="Head Stretch">
+ Extensão da cabeça
+ </string>
+ <string name="Heel Height">
+ Altura do salto
+ </string>
+ <string name="Heel Shape">
+ Formato do salto
+ </string>
+ <string name="Height">
+ Altura
+ </string>
+ <string name="High">
+ alto
+ </string>
+ <string name="High Heels">
+ Salto alto
+ </string>
+ <string name="High Jaw">
+ Maxilar alto
+ </string>
+ <string name="High Platforms">
+ Plataformas alta
+ </string>
+ <string name="High and Tight">
+ Alto e justo
+ </string>
+ <string name="Higher">
+ Mais alto
+ </string>
+ <string name="Hip Length">
+ Comprimento do quadril
+ </string>
+ <string name="Hip Width">
+ Largura do quadril
+ </string>
+ <string name="In">
+ Dentro
+ </string>
+ <string name="In Shdw Color">
+ Cor da sombra interna
+ </string>
+ <string name="In Shdw Opacity">
+ Opacidade da sombra interna
+ </string>
+ <string name="Inner Eye Corner">
+ Canto interno dos olhos
+ </string>
+ <string name="Inner Eye Shadow">
+ Sombra interna dos olhos
+ </string>
+ <string name="Inner Shadow">
+ Sombra interna
+ </string>
+ <string name="Jacket Length">
+ Comprimento da blusa
+ </string>
+ <string name="Jacket Wrinkles">
+ Dobras da Blusa
+ </string>
+ <string name="Jaw Angle">
+ Ângulo da mandíbula
+ </string>
+ <string name="Jaw Jut">
+ Posição do maxilar
+ </string>
+ <string name="Jaw Shape">
+ Formato do maxilar
+ </string>
+ <string name="Join">
+ Juntar
+ </string>
+ <string name="Jowls">
+ Papo
+ </string>
+ <string name="Knee Angle">
+ Ângulo do joelho
+ </string>
+ <string name="Knock Kneed">
+ Joelhos para dentro
+ </string>
+ <string name="Large">
+ Grande
+ </string>
+ <string name="Large Hands">
+ Mãos grandes
+ </string>
+ <string name="Left Part">
+ Parte esquerda
+ </string>
+ <string name="Leg Length">
+ Comprimento da perna
+ </string>
+ <string name="Leg Muscles">
+ Musculatura da perna
+ </string>
+ <string name="Less">
+ Menos
+ </string>
+ <string name="Less Body Fat">
+ Menos gordura corporal
+ </string>
+ <string name="Less Curtains">
+ Menos barba
+ </string>
+ <string name="Less Freckles">
+ Menos sardas
+ </string>
+ <string name="Less Full">
+ Menos
+ </string>
+ <string name="Less Gravity">
+ Menos gravidade
+ </string>
+ <string name="Less Love">
+ Menos cintura
+ </string>
+ <string name="Less Muscles">
+ Menos músculos
+ </string>
+ <string name="Less Muscular">
+ Menos musculoso
+ </string>
+ <string name="Less Rosy">
+ Menos rosado
+ </string>
+ <string name="Less Round">
+ Menos arredondado
+ </string>
+ <string name="Less Saddle">
+ Menos ancas
+ </string>
+ <string name="Less Square">
+ Menos quadrado
+ </string>
+ <string name="Less Volume">
+ Menos volume
+ </string>
+ <string name="Less soul">
+ Menos alma
+ </string>
+ <string name="Lighter">
+ Lighter
+ </string>
+ <string name="Lip Cleft">
+ Fenda dos lábios
+ </string>
+ <string name="Lip Cleft Depth">
+ Prfundidade da fenda dos lábios
+ </string>
+ <string name="Lip Fullness">
+ Volume dos lábios
+ </string>
+ <string name="Lip Pinkness">
+ Rosado dos lábios
+ </string>
+ <string name="Lip Ratio">
+ Proporção dos lábios
+ </string>
+ <string name="Lip Thickness">
+ Espessura dos lábios
+ </string>
+ <string name="Lip Width">
+ Largura dos lábios
+ </string>
+ <string name="Lipgloss">
+ Brilho dos lábios
+ </string>
+ <string name="Lipstick">
+ Batom
+ </string>
+ <string name="Lipstick Color">
+ Cor do batom
+ </string>
+ <string name="Long">
+ Longo
+ </string>
+ <string name="Long Head">
+ Cabeça alongada
+ </string>
+ <string name="Long Hips">
+ Lábios longos
+ </string>
+ <string name="Long Legs">
+ Pernas longas
+ </string>
+ <string name="Long Neck">
+ Pescoço longo
+ </string>
+ <string name="Long Pigtails">
+ Chiquinhas longas
+ </string>
+ <string name="Long Ponytail">
+ Rabo de cavalo longo
+ </string>
+ <string name="Long Torso">
+ Torso longo
+ </string>
+ <string name="Long arms">
+ Braços longos
+ </string>
+ <string name="Longcuffs">
+ Punho longo
+ </string>
+ <string name="Loose Pants">
+ Pantalonas
+ </string>
+ <string name="Loose Shirt">
+ Saia folgada
+ </string>
+ <string name="Loose Sleeves">
+ Manga longa
+ </string>
+ <string name="Love Handles">
+ Pneu
+ </string>
+ <string name="Low">
+ baixo
+ </string>
+ <string name="Low Heels">
+ Salto baixo
+ </string>
+ <string name="Low Jaw">
+ maxilar baixo
+ </string>
+ <string name="Low Platforms">
+ Plataformas baixas
+ </string>
+ <string name="Low and Loose">
+ baixo e solto
+ </string>
+ <string name="Lower">
+ diminuir
+ </string>
+ <string name="Lower Bridge">
+ nariz baixo
+ </string>
+ <string name="Lower Cheeks">
+ bochechas abaixadas
+ </string>
+ <string name="Male">
+ Masculino
+ </string>
+ <string name="Middle Part">
+ Parte do meio
+ </string>
+ <string name="More">
+ Mais
+ </string>
+ <string name="More Blush">
+ Mais blush
+ </string>
+ <string name="More Body Fat">
+ Mais gordura corporal
+ </string>
+ <string name="More Curtains">
+ Mais barba
+ </string>
+ <string name="More Eyeshadow">
+ Mais sombra dos olhos
+ </string>
+ <string name="More Freckles">
+ Mais sardas
+ </string>
+ <string name="More Full">
+ Mais volume
+ </string>
+ <string name="More Gravity">
+ Mais gravidade
+ </string>
+ <string name="More Lipstick">
+ Mais batom
+ </string>
+ <string name="More Love">
+ Mais cintura
+ </string>
+ <string name="More Lower Lip">
+ Mais lábio inferior
+ </string>
+ <string name="More Muscles">
+ Mais músculos
+ </string>
+ <string name="More Muscular">
+ Mais musculoso
+ </string>
+ <string name="More Rosy">
+ Mais rosado
+ </string>
+ <string name="More Round">
+ Mais arredondado
+ </string>
+ <string name="More Saddle">
+ Mais ancas
+ </string>
+ <string name="More Sloped">
+ Mais inclinado
+ </string>
+ <string name="More Square">
+ Mais quadrado
+ </string>
+ <string name="More Upper Lip">
+ Mais lábios superiores
+ </string>
+ <string name="More Vertical">
+ Mais vertical
+ </string>
+ <string name="More Volume">
+ Mais Volume
+ </string>
+ <string name="More soul">
+ Mais alma
+ </string>
+ <string name="Moustache">
+ Bigode
+ </string>
+ <string name="Mouth Corner">
+ Canto da boca
+ </string>
+ <string name="Mouth Position">
+ Posição da boca
+ </string>
+ <string name="Mowhawk">
+ Moicano
+ </string>
+ <string name="Muscular">
+ Muscular
+ </string>
+ <string name="Mutton Chops">
+ Costeletas
+ </string>
+ <string name="Nail Polish">
+ Esmate das unhas
+ </string>
+ <string name="Nail Polish Color">
+ Cor do esmalte das unhas
+ </string>
+ <string name="Narrow">
+ Estreito
+ </string>
+ <string name="Narrow Back">
+ Costas estreitas
+ </string>
+ <string name="Narrow Front">
+ Frente estreita
+ </string>
+ <string name="Narrow Lips">
+ Lábios estreitos
+ </string>
+ <string name="Natural">
+ Natural
+ </string>
+ <string name="Neck Length">
+ Comprimento do pescoço
+ </string>
+ <string name="Neck Thickness">
+ Espessura do pescoço
+ </string>
+ <string name="No Blush">
+ Sem Blush
+ </string>
+ <string name="No Eyeliner">
+ Sem delineador
+ </string>
+ <string name="No Eyeshadow">
+ Sem Sombra dos olhos
+ </string>
+ <string name="No Heels">
+ Sem salto
+ </string>
+ <string name="No Lipgloss">
+ Sem brilho labial
+ </string>
+ <string name="No Lipstick">
+ Sem batom
+ </string>
+ <string name="No Part">
+ Sem parte
+ </string>
+ <string name="No Polish">
+ Sem esmalte
+ </string>
+ <string name="No Red">
+ Sem vermelho
+ </string>
+ <string name="No Spikes">
+ Sem espinhos
+ </string>
+ <string name="No White">
+ Sem branco
+ </string>
+ <string name="No Wrinkles">
+ Sem dobras
+ </string>
+ <string name="Normal Lower">
+ Normal inferior
+ </string>
+ <string name="Normal Upper">
+ Normal superior
+ </string>
+ <string name="Nose Left">
+ Nariz para esquerda
+ </string>
+ <string name="Nose Right">
+ Nariz para direita
+ </string>
+ <string name="Nose Size">
+ Tamanho do nariz
+ </string>
+ <string name="Nose Thickness">
+ Espessura do nariz
+ </string>
+ <string name="Nose Tip Angle">
+ Ângulo da ponta do nariz
+ </string>
+ <string name="Nose Tip Shape">
+ Formato da ponta do nariz
+ </string>
+ <string name="Nose Width">
+ Largura do nariz
+ </string>
+ <string name="Nostril Division">
+ Divisão das narinas
+ </string>
+ <string name="Nostril Width">
+ Largura das narinas
+ </string>
+ <string name="Old">
+ Velho
+ </string>
+ <string name="Opaque">
+ Opaco
+ </string>
+ <string name="Open">
+ Abrir
+ </string>
+ <string name="Open Back">
+ Aberto atrás
+ </string>
+ <string name="Open Front">
+ Aberto na frente
+ </string>
+ <string name="Open Left">
+ Aberto esquerdo
+ </string>
+ <string name="Open Right">
+ Aberto direito
+ </string>
+ <string name="Orange">
+ Laranja
+ </string>
+ <string name="Out">
+ Fora
+ </string>
+ <string name="Out Shdw Color">
+ Cor da sombra externa
+ </string>
+ <string name="Out Shdw Opacity">
+ Opacidade da sombra externa
+ </string>
+ <string name="Outer Eye Corner">
+ Canto externo do olho
+ </string>
+ <string name="Outer Eye Shadow">
+ Sombra externa do olho
+ </string>
+ <string name="Outer Shadow">
+ Sombra externa
+ </string>
+ <string name="Overbite">
+ Overbite
+ </string>
+ <string name="Package">
+ Pubis
+ </string>
+ <string name="Painted Nails">
+ Unhas pintadas
+ </string>
+ <string name="Pale">
+ Pálido
+ </string>
+ <string name="Pants Crotch">
+ Cavalo da calça
+ </string>
+ <string name="Pants Fit">
+ Pants Fit
+ </string>
+ <string name="Pants Length">
+ Comprimento das calças
+ </string>
+ <string name="Pants Waist">
+ Cintura da calça
+ </string>
+ <string name="Pants Wrinkles">
+ Dobras das calças
+ </string>
+ <string name="Part">
+ Parte
+ </string>
+ <string name="Part Bangs">
+ Parts da franja
+ </string>
+ <string name="Pectorals">
+ Peitoral
+ </string>
+ <string name="Pigment">
+ Pigmento
+ </string>
+ <string name="Pigtails">
+ Chiquinhas
+ </string>
+ <string name="Pink">
+ Rosa
+ </string>
+ <string name="Pinker">
+ Mais rosado
+ </string>
+ <string name="Platform Height">
+ Altura da plataforma
+ </string>
+ <string name="Platform Width">
+ Largura da plataforma
+ </string>
+ <string name="Pointy">
+ Pontudo
+ </string>
+ <string name="Pointy Heels">
+ Salto agulha
+ </string>
+ <string name="Pointy Toe">
+ Dedo dos pés pontudo
+ </string>
+ <string name="Ponytail">
+ Rabo de cavalo
+ </string>
+ <string name="Poofy Skirt">
+ Saia bufante
+ </string>
+ <string name="Pop Left Eye">
+ Olho saltado esquerdo
+ </string>
+ <string name="Pop Right Eye">
+ Olho saltado direito
+ </string>
+ <string name="Puffy">
+ Inchado
+ </string>
+ <string name="Puffy Eyelids">
+ Pálpebras inchadas
+ </string>
+ <string name="Rainbow Color">
+ Cor do arco iris
+ </string>
+ <string name="Red Hair">
+ Cabelo ruivo
+ </string>
+ <string name="Red Skin">
+ Pele vermelha
+ </string>
+ <string name="Regular">
+ Normal
+ </string>
+ <string name="Regular Muscles">
+ Músculos normais
+ </string>
+ <string name="Right Part">
+ Parte direita
+ </string>
+ <string name="Rosy Complexion">
+ Rosado da face
+ </string>
+ <string name="Round">
+ Arredondado
+ </string>
+ <string name="Round Forehead">
+ Testa arredonda
+ </string>
+ <string name="Ruddiness">
+ Rubor
+ </string>
+ <string name="Ruddy">
+ Corado
+ </string>
+ <string name="Rumpled Hair">
+ Cabelo desalinhado
+ </string>
+ <string name="Saddle Bags">
+ Saddle Bags
+ </string>
+ <string name="Saddlebags">
+ Saddlebags
+ </string>
+ <string name="Scrawny">
+ Magricela
+ </string>
+ <string name="Scrawny Leg">
+ Pernas magricelas
+ </string>
+ <string name="Separate">
+ Separar
+ </string>
+ <string name="Shading">
+ Sombreamento
+ </string>
+ <string name="Shadow hair">
+ Sombra do cabelo
+ </string>
+ <string name="Shallow">
+ raso
+ </string>
+ <string name="Shear Back">
+ Trás rente
+ </string>
+ <string name="Shear Face">
+ Face raspada
+ </string>
+ <string name="Shear Front">
+ Frente rente
+ </string>
+ <string name="Shear Left">
+ Rente esquerda
+ </string>
+ <string name="Shear Left Up">
+ Esquerda rente para cima
+ </string>
+ <string name="Shear Right">
+ Direita rente
+ </string>
+ <string name="Shear Right Up">
+ Trás rente para cima
+ </string>
+ <string name="Sheared Back">
+ Rente atrás
+ </string>
+ <string name="Sheared Front">
+ Rente frente
+ </string>
+ <string name="Shift Left">
+ Deslocar à esquerda
+ </string>
+ <string name="Shift Mouth">
+ Deslocar boca
+ </string>
+ <string name="Shift Right">
+ Deslocar direita
+ </string>
+ <string name="Shirt Bottom">
+ Deslocar inferior
+ </string>
+ <string name="Shirt Fit">
+ Deslocar ajuste
+ </string>
+ <string name="Shirt Wrinkles">
+ Deslocar dobras
+ </string>
+ <string name="Shoe Height">
+ Altura do sapato
+ </string>
+ <string name="Short">
+ Curto
+ </string>
+ <string name="Short Arms">
+ Braços curtos
+ </string>
+ <string name="Short Legs">
+ Pernas curtas
+ </string>
+ <string name="Short Neck">
+ Pescoço curto
+ </string>
+ <string name="Short Pigtails">
+ Chiquinhas curtas
+ </string>
+ <string name="Short Ponytail">
+ Rabo de cavalo curto
+ </string>
+ <string name="Short Sideburns">
+ Costeletas curtas
+ </string>
+ <string name="Short Torso">
+ Tronco curto
+ </string>
+ <string name="Short hips">
+ Quadril curto
+ </string>
+ <string name="Shoulders">
+ Ombros
+ </string>
+ <string name="Side Bangs">
+ Franja lateral
+ </string>
+ <string name="Side Bangs Down">
+ Franja lateral longa
+ </string>
+ <string name="Side Bangs Up">
+ Franja lateral arrepiada
+ </string>
+ <string name="Side Fringe">
+ pontas laterais
+ </string>
+ <string name="Sideburns">
+ Costeletas
+ </string>
+ <string name="Sides Hair">
+ Cabelo lateral
+ </string>
+ <string name="Sides Hair Down">
+ Cabelo lateral long
+ </string>
+ <string name="Sides Hair Up">
+ Cabelo lateral superior
+ </string>
+ <string name="Skinny">
+ Magro
+ </string>
+ <string name="Skinny Neck">
+ Pescoço fino
+ </string>
+ <string name="Skirt Fit">
+ Ajuste de saia
+ </string>
+ <string name="Skirt Length">
+ Comprimento da saia
+ </string>
+ <string name="Slanted Forehead">
+ Testa inclinada
+ </string>
+ <string name="Sleeve Length">
+ Comprimento da manga
+ </string>
+ <string name="Sleeve Looseness">
+ Folga da manga
+ </string>
+ <string name="Slit Back">
+ Abertura : Atrás
+ </string>
+ <string name="Slit Front">
+ Abertura: Frente
+ </string>
+ <string name="Slit Left">
+ Abertura: Esquerda
+ </string>
+ <string name="Slit Right">
+ Abertura: Direita
+ </string>
+ <string name="Small">
+ Pequeno
+ </string>
+ <string name="Small Hands">
+ Mãos pequenas
+ </string>
+ <string name="Small Head">
+ Cabeça pequena
+ </string>
+ <string name="Smooth">
+ Suavizar
+ </string>
+ <string name="Smooth Hair">
+ Suavizar cabelo
+ </string>
+ <string name="Socks Length">
+ Comprimento das meias
+ </string>
+ <string name="Some">
+ Alguns
+ </string>
+ <string name="Soulpatch">
+ Cavanhaque
+ </string>
+ <string name="Sparse">
+ Disperso
+ </string>
+ <string name="Spiked Hair">
+ Cabelo espetado
+ </string>
+ <string name="Square">
+ Quadrado
+ </string>
+ <string name="Square Toe">
+ Dedo quadrado
+ </string>
+ <string name="Squash Head">
+ Cabeça de Pera
+ </string>
+ <string name="Squash/Stretch Head">
+ Cabeça esticada/forma de pera
+ </string>
+ <string name="Stretch Head">
+ Cabeça esticada
+ </string>
+ <string name="Sunken">
+ Afundar
+ </string>
+ <string name="Sunken Chest">
+ Peito afundado
+ </string>
+ <string name="Sunken Eyes">
+ Olhos afundados
+ </string>
+ <string name="Sweep Back">
+ Pentear para trás
+ </string>
+ <string name="Sweep Forward">
+ Pentear para frente
+ </string>
+ <string name="Swept Back">
+ Pentear para trás
+ </string>
+ <string name="Swept Back Hair">
+ Cabelo penteado para trás
+ </string>
+ <string name="Swept Forward">
+ Penteado para frente
+ </string>
+ <string name="Swept Forward Hair">
+ Cabelo penteado para frente
+ </string>
+ <string name="Tall">
+ Alto
+ </string>
+ <string name="Taper Back">
+ Afinar atrás
+ </string>
+ <string name="Taper Front">
+ Afinar a frente
+ </string>
+ <string name="Thick Heels">
+ Salto grosso
+ </string>
+ <string name="Thick Neck">
+ Pescoço grosso
+ </string>
+ <string name="Thick Toe">
+ Dedo grosso
+ </string>
+ <string name="Thickness">
+ Espessura
+ </string>
+ <string name="Thin">
+ Fino
+ </string>
+ <string name="Thin Eyebrows">
+ Sobrancelhas finas
+ </string>
+ <string name="Thin Lips">
+ Lábios finos
+ </string>
+ <string name="Thin Nose">
+ Nariz fino
+ </string>
+ <string name="Tight Chin">
+ Queixo apertado
+ </string>
+ <string name="Tight Cuffs">
+ Punho justo
+ </string>
+ <string name="Tight Pants">
+ Calça justa
+ </string>
+ <string name="Tight Shirt">
+ Camisa justa
+ </string>
+ <string name="Tight Skirt">
+ Saia justa
+ </string>
+ <string name="Tight Sleeves">
+ Tight Sleeves
+ </string>
+ <string name="Tilt Left">
+ Inclinado à esquerda
+ </string>
+ <string name="Tilt Right">
+ Inclinado à direita
+ </string>
+ <string name="Toe Shape">
+ Formato dos dedos
+ </string>
+ <string name="Toe Thickness">
+ Espessura dos dos dedos
+ </string>
+ <string name="Torso Length">
+ Comprimento do tronco
+ </string>
+ <string name="Torso Muscles">
+ Músculos do tronco
+ </string>
+ <string name="Torso Scrawny">
+ Tronco magricela
+ </string>
+ <string name="Unattached">
+ Desanexado
+ </string>
+ <string name="Uncreased">
+ Uncreased
+ </string>
+ <string name="Underbite">
+ Underbite
+ </string>
+ <string name="Unnatural">
+ Não natural
+ </string>
+ <string name="Upper Bridge">
+ Parte alta do nariz
+ </string>
+ <string name="Upper Cheeks">
+ Bochechas altas
+ </string>
+ <string name="Upper Chin Cleft">
+ fenda do queixo alta
+ </string>
+ <string name="Upper Eyelid Fold">
+ Curvatura dos cílios supériores
+ </string>
+ <string name="Upturned">
+ Voltado para cima
+ </string>
+ <string name="Very Red">
+ Bem vermelho
+ </string>
+ <string name="Waist Height">
+ Altura da cintura
+ </string>
+ <string name="Well-Fed">
+ Corpulento
+ </string>
+ <string name="White Hair">
+ Grisalho
+ </string>
+ <string name="Wide">
+ Amplo
+ </string>
+ <string name="Wide Back">
+ Costas largas
+ </string>
+ <string name="Wide Front">
+ Testa larga
+ </string>
+ <string name="Wide Lips">
+ Lábios amplos
+ </string>
+ <string name="Wild">
+ Selvagem
+ </string>
+ <string name="Wrinkles">
+ Rugas
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Adicionar às minhas Landmarks
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Editar minhas Landmarks
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ Ver mais informações sobre a localização atual
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ Meu histórico de localizações
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] Atualização
+ </string>
+ <string name="UpdaterNowUpdating">
+ Atualizando agora o [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ Instalando [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Seu visualizador [APP_NAME] está sendo atualizado para a versão mais recente. Isso pode levar algum tempo, então por favor seja paciente.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Fazendo o download da atualização...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Fazendo o download da atualização
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Falha no download da atualização
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Um erro ocorreu ao atualizar [APP_NAME]. Por favor, faça o download da versão mais recente em www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Falha ao instalar a atualização
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Falha ao iniciar o visualizador
+ </string>
+ <string name="IM_logging_string">
+ -- Log de mensagem instantânea habilitado --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] está digitando...
+ </string>
+ <string name="Unnamed">
+ (Anônimo)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Moderado: Voz desativado por padrão)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Bate-papo de texto não está disponível para esta chamada.
+ </string>
+ <string name="IM_muted_text_label">
+ Seu bate- papo de texto foi desabilitado por um Moderador do Grupo.
+ </string>
+ <string name="IM_default_text_label">
+ Clique aqui para menagem instantânea.
+ </string>
+ <string name="IM_to_label">
+ Para
+ </string>
+ <string name="IM_moderator_label">
+ (Moderador)
</string>
- <string name="ScriptQuestionCautionChatGranted">
- &apos;[OBJECTNAME]&apos;, um objeto de &apos;[OWNERNAME]&apos;, localizado em [REGIONNAME] a [REGIONPOS], obteve permissão para: [PERMISSIONS].
- </string>
- <string name="ScriptQuestionCautionChatDenied">
- &apos;[OBJECTNAME]&apos;, um objeto de &apos;[OWNERNAME]&apos;, localizado em [REGIONNAME] a [REGIONPOS], teve permissão negada para: [PERMISSIONS].
- </string>
- <string name="ScriptTakeMoney">
- Tomar linden dólares (L$) de você
- </string>
- <string name="ActOnControlInputs">
- Atue nas suas entradas de controle
- </string>
- <string name="RemapControlInputs">
- Remapeie suas entradas de controle
- </string>
- <string name="AnimateYourAvatar">
- Faça uma animação para o seu avatar
- </string>
- <string name="AttachToYourAvatar">
- Anexe ao seu avatar
- </string>
- <string name="ReleaseOwnership">
- Libere a propriedade e torne-a pública
- </string>
- <string name="LinkAndDelink">
- Una e desuna de outros objetos
- </string>
- <string name="AddAndRemoveJoints">
- Adicione e remova junções com outros objetos
- </string>
- <string name="ChangePermissions">
- Modifique as permissões
- </string>
- <string name="TrackYourCamera">
- Acompanhe sua câmera
- </string>
- <string name="ControlYourCamera">
- Controle sua camera
- </string>
<string name="only_user_message">
Você é o único usuário desta sessão.
</string>
@@ -621,31 +3245,4 @@
<string name="close_on_no_ability">
Você não possui mais a habilidade de estar na sessão de bate-papo.
</string>
- <string name="AcctTypeResident">
- Residente
- </string>
- <string name="AcctTypeTrial">
- Teste
- </string>
- <string name="AcctTypeCharterMember">
- Estatuto do membro
- </string>
- <string name="AcctTypeEmployee">
- Contratado da Linden Lab
- </string>
- <string name="PaymentInfoUsed">
- Infor. de pagamento utilizadas
- </string>
- <string name="PaymentInfoOnFile">
- Infor. de pagamento no arquivo
- </string>
- <string name="NoPaymentInfoOnFile">
- Sem infor. de pagamento no arquivo
- </string>
- <string name="AgeVerified">
- Idade Verificada
- </string>
- <string name="NotAgeVerified">
- Idade não Verificada
- </string>
</strings>
diff --git a/indra/newview/skins/default/xui/pt/teleport_strings.xml b/indra/newview/skins/default/xui/pt/teleport_strings.xml
index 6eecc45bcf..1a0461082b 100644
--- a/indra/newview/skins/default/xui/pt/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pt/teleport_strings.xml
@@ -2,12 +2,12 @@
<teleport_messages>
<message_set name="errors">
<message name="invalid_tport">
- Problema encontrado ao processar seu pedido de Teletransporte. Você pode tentar reiniciar antes de tentar teletransportar-se. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em:
-www.secondlife.com/support
+ Houve um problema ao processar o teletransporte. Talvez seja preciso sair e entrar do Second Life para fazer o teletransporte.
+Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE].
</message>
<message name="invalid_region_handoff">
- Problema encontrado ao processar a passagem de regiões. Você pode tentar reiniciar antes de tentar atravessar regiões novamente. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em:
-www.secondlife.com/support
+ Problema encontrado ao processar a passagem de regiões. Talvez seja preciso sair e entrar do Second Life atravessar regiões novamente.
+Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE].
</message>
<message name="blocked_tport">
Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema.
diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp
index f7ac5361c5..ef93586c6e 100644
--- a/indra/newview/tests/lllogininstance_test.cpp
+++ b/indra/newview/tests/lllogininstance_test.cpp
@@ -2,7 +2,7 @@
* @file lllogininstance_test.cpp
* @brief Test for lllogininstance.cpp.
*
- * $LicenseInfo:firstyear=2008&license=internal$
+ * $LicenseInfo:firstyear=2008&license=viewergpl$
* Copyright (c) 2008, Linden Research, Inc.
* $/LicenseInfo$
*/
diff --git a/indra/newview/tests/llxmlrpclistener_test.cpp b/indra/newview/tests/llxmlrpclistener_test.cpp
index c94ba0a3e8..c2c7e963b9 100644
--- a/indra/newview/tests/llxmlrpclistener_test.cpp
+++ b/indra/newview/tests/llxmlrpclistener_test.cpp
@@ -4,7 +4,7 @@
* @date 2009-03-20
* @brief Test for llxmlrpclistener.
*
- * $LicenseInfo:firstyear=2009&license=internal$
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
* Copyright (c) 2009, Linden Research, Inc.
* $/LicenseInfo$
*/
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 15a51bbe14..3f379fcf75 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -854,16 +854,10 @@ class Linux_i686Manifest(LinuxManifest):
print "Skipping %s - not found" % libfile
pass
-
- if(self.args['buildtype'].lower() == 'release'):
- print "* packaging stripped viewer binary."
- self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin")
- else:
- print "* packaging un-stripped viewer binary."
- self.path("secondlife-bin","bin/do-not-directly-run-secondlife-bin")
+ self.path("secondlife-bin","bin/do-not-directly-run-secondlife-bin")
- self.path("../linux_crash_logger/linux-crash-logger-stripped","bin/linux-crash-logger.bin")
- self.path("../linux_updater/linux-updater-stripped", "bin/linux-updater.bin")
+ self.path("../linux_crash_logger/linux-crash-logger","bin/linux-crash-logger.bin")
+ self.path("../linux_updater/linux-updater", "bin/linux-updater.bin")
self.path("../llplugin/slplugin/SLPlugin", "bin/SLPlugin")
if self.prefix("res-sdl"):
self.path("*")
@@ -914,23 +908,16 @@ class Linux_i686Manifest(LinuxManifest):
if self.prefix(src="vivox-runtime/i686-linux", dst="lib"):
self.path("libortp.so")
self.path("libsndfile.so.1")
- #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OAL lib
+ #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib
self.path("libvivoxsdk.so")
self.path("libvivoxplatform.so")
self.end_prefix("lib")
-class Linux_x86_64Manifest(LinuxManifest):
- def construct(self):
- super(Linux_x86_64Manifest, self).construct()
- self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin")
- self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin")
- if self.prefix("res-sdl"):
- self.path("*")
- # recurse
- self.end_prefix("res-sdl")
+ if self.args['buildtype'].lower() == 'release':
+ print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
+ self.run_command("find %(d)r/bin %(d)r/lib -type f | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
- self.path("featuretable_linux.txt")
- self.path("secondlife-i686.supp")
+################################################################
if __name__ == "__main__":
main()
diff --git a/indra/test/llhttpclient_tut.cpp b/indra/test/llhttpclient_tut.cpp
index c541997e89..2b1496e912 100644
--- a/indra/test/llhttpclient_tut.cpp
+++ b/indra/test/llhttpclient_tut.cpp
@@ -269,6 +269,7 @@ namespace tut
template<> template<>
void HTTPClientTestObject::test<2>()
{
+ skip("error test depends on dev's local ISP not supplying \"helpful\" search page");
LLHTTPClient::get("http://www.invalid", newResult());
runThePump();
ensureStatusError();
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp
index d183aac208..0ff53f3e00 100644
--- a/indra/test_apps/llplugintest/llmediaplugintest.cpp
+++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp
@@ -1169,8 +1169,8 @@ void LLMediaPluginTest::keyboard( int key )
exit( 0 );
};
- mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_DOWN, key, 0 );
- mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_UP, key, 0 );
+ mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_DOWN, key, 0 , LLSD());
+ mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_UP, key, 0, LLSD());
};
////////////////////////////////////////////////////////////////////////////////
diff --git a/install.xml b/install.xml
index 797bde5756..ba5171c131 100644
--- a/install.xml
+++ b/install.xml
@@ -193,30 +193,30 @@
<key>darwin</key>
<map>
<key>md5sum</key>
- <string>609c469ee1857723260b5a9943b9c2c1</string>
+ <string>71defd179827bf172b76d6020023e0e8</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-darwin-20091202.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-darwin-20100222a.tar.bz2</uri>
</map>
<key>linux</key>
<map>
<key>md5sum</key>
- <string>7085044567999489d82b9ed28f16e480</string>
+ <string>d58ac1a8396ac983b67cc3e3541457e3</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20091202.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20100222a.tar.bz2</uri>
</map>
<key>linux64</key>
<map>
<key>md5sum</key>
- <string>b4aeefcba3d749f1e9f2a12c6f70192b</string>
+ <string>af4badd6b2c10bc4db82ff1256695892</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux64-20091202.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux64-20100119.tar.bz2</uri>
</map>
<key>windows</key>
<map>
<key>md5sum</key>
- <string>6746ae9fd9aff98b15f7b9f0f40334ab</string>
+ <string>94fd43f534e2055858d524086384907d</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-windows-20091204.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-windows-20100219.tar.bz2</uri>
</map>
</map>
</map>
@@ -298,6 +298,25 @@
</map>
</map>
</map>
+ <key>pulseaudio</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright 2004-2006 Lennart Poettering, Copyright 2006 Pierre Ossman (ossman@cendio.se) for Cendio AB</string>
+ <key>description</key>
+ <string>pulseaudio: headers only</string>
+ <key>license</key>
+ <string>lgpl</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>30cb00069fe2a545fbf7be1070386236</string>
+ <key>url</key>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/linux-pulse-headers-0.9.14.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
<key>elfio</key>
<map>
<key>license</key>
@@ -436,9 +455,9 @@
<key>linux</key>
<map>
<key>md5sum</key>
- <string>978ad7c67fe4a2419bfc841e2956ff9f</string>
+ <string>9de3f44be65645c7f6af236139596942</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.3.9-linux-20090521c.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.3.9-linux-2010-02-19a-nommap.tar.bz2</uri>
</map>
<key>linux64</key>
<map>
@@ -948,23 +967,23 @@ anguage Infrstructure (CLI) international standard</string>
<key>darwin</key>
<map>
<key>md5sum</key>
- <string>d97d843704514ae1b5f153fab2931920</string>
+ <string>95f44f0023dddc80be4398fc4f213861</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100120.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100208.tar.bz2</uri>
</map>
<key>linux</key>
<map>
<key>md5sum</key>
- <string>c4c40fca14a8bd32096f8a27c75c526f</string>
+ <string>4c75b2f1e8524c7844ee3ea1cd59a3db</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100105c.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100209b.tar.bz2</uri>
</map>
<key>windows</key>
<map>
<key>md5sum</key>
- <string>18c1a4059bad1504a457e70c8c218033</string>
+ <string>1e9798dc424a6f6c2bea50649bbcc7ae</string>
<key>url</key>
- <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100120.tar.bz2</uri>
+ <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100210.tar.bz2</uri>
</map>
</map>
</map>
@@ -1367,23 +1386,23 @@ anguage Infrstructure (CLI) international standard</string>
<key>darwin</key>
<map>
<key>md5sum</key>
- <string>51f3fa1ab39563505df83b48ba432a3c</string>
+ <string>316f86790b7afb5c9bd4f95bc193b80f</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-darwin-20100115.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7930-darwin-20100205.tar.bz2</uri>
</map>
<key>linux</key>
<map>
<key>md5sum</key>
- <string>ab9573d6aa2acdd79a553c144c9ecb09</string>
+ <string>13f6886fa3e6675838e47adcabb0f0ac</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-linux-20100115.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7930-linux-20100205.tar.bz2</uri>
</map>
<key>windows</key>
<map>
<key>md5sum</key>
- <string>88ab785eebdc4f53a7dfc4e0b95f67ec</string>
+ <string>2a81e3c42799c33742746925f16b54ca</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-windows-20100115.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7930-windows-20100205.tar.bz2</uri>
</map>
</map>
</map>
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
index c50ae4ad80..d4f791c202 100644
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -1383,6 +1383,10 @@ version 2.0
{ AgentID LLUUID }
{ KickedFromEstateID U32 }
}
+ {
+ AgentInfo Single
+ { AgentEffectiveMaturity U32 }
+ }
}
// DataHomeLocationReply data->sim